1 /* A Bison parser, made by GNU Bison 3.0.5.  */
2 
3 /* Bison implementation for Yacc-like parsers in C
4 
5    Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc.
6 
7    This program is free software: you can redistribute it and/or modify
8    it under the terms of the GNU General Public License as published by
9    the Free Software Foundation, either version 3 of the License, or
10    (at your option) any later version.
11 
12    This program is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15    GNU General Public License for more details.
16 
17    You should have received a copy of the GNU General Public License
18    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
19 
20 /* As a special exception, you may create a larger work that contains
21    part or all of the Bison parser skeleton and distribute that work
22    under terms of your choice, so long as that work isn't itself a
23    parser generator using the skeleton or a modified version thereof
24    as a parser skeleton.  Alternatively, if you modify or redistribute
25    the parser skeleton itself, you may (at your option) remove this
26    special exception, which will cause the skeleton and the resulting
27    Bison output files to be licensed under the GNU General Public
28    License without this special exception.
29 
30    This special exception was added by the Free Software Foundation in
31    version 2.2 of Bison.  */
32 
33 /* C LALR(1) parser skeleton written by Richard Stallman, by
34    simplifying the original so-called "semantic" parser.  */
35 
36 /* All symbols defined below should begin with yy or YY, to avoid
37    infringing on user name space.  This should be done even for local
38    variables, as they might otherwise be expanded by user macros.
39    There are some unavoidable exceptions within include files to
40    define necessary library symbols; they are noted "INFRINGES ON
41    USER NAME SPACE" below.  */
42 
43 /* Identify Bison output.  */
44 #define YYBISON 1
45 
46 /* Bison version.  */
47 #define YYBISON_VERSION "3.0.5"
48 
49 /* Skeleton name.  */
50 #define YYSKELETON_NAME "yacc.c"
51 
52 /* Pure parsers.  */
53 #define YYPURE 0
54 
55 /* Push parsers.  */
56 #define YYPUSH 0
57 
58 /* Pull parsers.  */
59 #define YYPULL 1
60 
61 
62 /* Substitute the variable and function names.  */
63 #define yyparse         rl78_parse
64 #define yylex           rl78_lex
65 #define yyerror         rl78_error
66 #define yydebug         rl78_debug
67 #define yynerrs         rl78_nerrs
68 
69 #define yylval          rl78_lval
70 #define yychar          rl78_char
71 
72 /* Copy the first part of user declarations.  */
73 #line 20 "./config/rl78-parse.y" /* yacc.c:339  */
74 
75 
76 #include "as.h"
77 #include "safe-ctype.h"
78 #include "rl78-defs.h"
79 
80 static int rl78_lex (void);
81 
82 /* Ok, here are the rules for using these macros...
83 
84    B*() is used to specify the base opcode bytes.  Fields to be filled
85         in later, leave zero.  Call this first.
86 
87    F() and FE() are used to fill in fields within the base opcode bytes.  You MUST
88         call B*() before any F() or FE().
89 
90    [UN]*O*(), PC*() appends operands to the end of the opcode.  You
91         must call P() and B*() before any of these, so that the fixups
92         have the right byte location.
93         O = signed, UO = unsigned, NO = negated, PC = pcrel
94 
95    IMM() adds an immediate and fills in the field for it.
96    NIMM() same, but negates the immediate.
97    NBIMM() same, but negates the immediate, for sbb.
98    DSP() adds a displacement, and fills in the field for it.
99 
100    Note that order is significant for the O, IMM, and DSP macros, as
101    they append their data to the operand buffer in the order that you
102    call them.
103 
104    Use "disp" for displacements whenever possible; this handles the
105    "0" case properly.  */
106 
107 #define B1(b1)             rl78_base1 (b1)
108 #define B2(b1, b2)         rl78_base2 (b1, b2)
109 #define B3(b1, b2, b3)     rl78_base3 (b1, b2, b3)
110 #define B4(b1, b2, b3, b4) rl78_base4 (b1, b2, b3, b4)
111 
112 /* POS is bits from the MSB of the first byte to the LSB of the last byte.  */
113 #define F(val,pos,sz)      rl78_field (val, pos, sz)
114 #define FE(exp,pos,sz)	   rl78_field (exp_val (exp), pos, sz);
115 
116 #define O1(v)              rl78_op (v, 1, RL78REL_DATA)
117 #define O2(v)              rl78_op (v, 2, RL78REL_DATA)
118 #define O3(v)              rl78_op (v, 3, RL78REL_DATA)
119 #define O4(v)              rl78_op (v, 4, RL78REL_DATA)
120 
121 #define PC1(v)             rl78_op (v, 1, RL78REL_PCREL)
122 #define PC2(v)             rl78_op (v, 2, RL78REL_PCREL)
123 #define PC3(v)             rl78_op (v, 3, RL78REL_PCREL)
124 
125 #define IMM(v,pos)	   F (immediate (v, RL78REL_SIGNED, pos), pos, 2); \
126 			   if (v.X_op != O_constant && v.X_op != O_big) rl78_linkrelax_imm (pos)
127 #define NIMM(v,pos)	   F (immediate (v, RL78REL_NEGATIVE, pos), pos, 2)
128 #define NBIMM(v,pos)	   F (immediate (v, RL78REL_NEGATIVE_BORROW, pos), pos, 2)
129 #define DSP(v,pos,msz)	   if (!v.X_md) rl78_relax (RL78_RELAX_DISP, pos); \
130 			   else rl78_linkrelax_dsp (pos); \
131 			   F (displacement (v, msz), pos, 2)
132 
133 #define id24(a,b2,b3)	   B3 (0xfb+a, b2, b3)
134 
135 static int         expr_is_sfr (expressionS);
136 static int         expr_is_saddr (expressionS);
137 static int         expr_is_word_aligned (expressionS);
138 static int         exp_val (expressionS exp);
139 
140 static int    need_flag = 0;
141 static int    rl78_in_brackets = 0;
142 static int    rl78_last_token = 0;
143 static char * rl78_init_start;
144 static char * rl78_last_exp_start = 0;
145 static int    rl78_bit_insn = 0;
146 
147 #define YYDEBUG 1
148 #define YYERROR_VERBOSE 1
149 
150 #define NOT_SADDR  rl78_error ("Expression not 0xFFE20 to 0xFFF1F")
151 #define SA(e) if (!expr_is_saddr (e)) NOT_SADDR;
152 
153 #define SET_SA(e) e.X_md = BFD_RELOC_RL78_SADDR
154 
155 #define NOT_SFR  rl78_error ("Expression not 0xFFF00 to 0xFFFFF")
156 #define SFR(e) if (!expr_is_sfr (e)) NOT_SFR;
157 
158 #define NOT_SFR_OR_SADDR  rl78_error ("Expression not 0xFFE20 to 0xFFFFF")
159 
160 #define NOT_ES if (rl78_has_prefix()) rl78_error ("ES: prefix not allowed here");
161 
162 #define WA(x) if (!expr_is_word_aligned (x)) rl78_error ("Expression not word-aligned");
163 
164 #define ISA_G10(s) if (!rl78_isa_g10()) rl78_error (s " is only supported on the G10")
165 #define ISA_G13(s) if (!rl78_isa_g13()) rl78_error (s " is only supported on the G13")
166 #define ISA_G14(s) if (!rl78_isa_g14()) rl78_error (s " is only supported on the G14")
167 
168 static void check_expr_is_bit_index (expressionS);
169 #define Bit(e) check_expr_is_bit_index (e);
170 
171 /* Returns TRUE (non-zero) if the expression is a constant in the
172    given range.  */
173 static int check_expr_is_const (expressionS, int vmin, int vmax);
174 
175 /* Convert a "regb" value to a "reg_xbc" value.  Error if other
176    registers are passed.  Needed to avoid reduce-reduce conflicts.  */
177 static int
reg_xbc(int reg)178 reg_xbc (int reg)
179 {
180   switch (reg)
181     {
182       case 0: /* X */
183         return 0x10;
184       case 3: /* B */
185         return 0x20;
186       case 2: /* C */
187         return 0x30;
188       default:
189         rl78_error ("Only X, B, or C allowed here");
190 	return 0;
191     }
192 }
193 
194 
195 #line 196 "rl78-parse.c" /* yacc.c:339  */
196 
197 # ifndef YY_NULLPTR
198 #  if defined __cplusplus && 201103L <= __cplusplus
199 #   define YY_NULLPTR nullptr
200 #  else
201 #   define YY_NULLPTR 0
202 #  endif
203 # endif
204 
205 /* Enabling verbose error messages.  */
206 #ifdef YYERROR_VERBOSE
207 # undef YYERROR_VERBOSE
208 # define YYERROR_VERBOSE 1
209 #else
210 # define YYERROR_VERBOSE 0
211 #endif
212 
213 /* In a future release of Bison, this section will be replaced
214    by #include "y.tab.h".  */
215 #ifndef YY_RL78_RL_PARSE_H_INCLUDED
216 # define YY_RL78_RL_PARSE_H_INCLUDED
217 /* Debug traces.  */
218 #ifndef YYDEBUG
219 # define YYDEBUG 0
220 #endif
221 #if YYDEBUG
222 extern int rl78_debug;
223 #endif
224 
225 /* Token type.  */
226 #ifndef YYTOKENTYPE
227 # define YYTOKENTYPE
228   enum yytokentype
229   {
230     A = 258,
231     X = 259,
232     B = 260,
233     C = 261,
234     D = 262,
235     E = 263,
236     H = 264,
237     L = 265,
238     AX = 266,
239     BC = 267,
240     DE = 268,
241     HL = 269,
242     SPL = 270,
243     SPH = 271,
244     PSW = 272,
245     CS = 273,
246     ES = 274,
247     PMC = 275,
248     MEM = 276,
249     FLAG = 277,
250     SP = 278,
251     CY = 279,
252     RB0 = 280,
253     RB1 = 281,
254     RB2 = 282,
255     RB3 = 283,
256     EXPR = 284,
257     UNKNOWN_OPCODE = 285,
258     IS_OPCODE = 286,
259     DOT_S = 287,
260     DOT_B = 288,
261     DOT_W = 289,
262     DOT_L = 290,
263     DOT_A = 291,
264     DOT_UB = 292,
265     DOT_UW = 293,
266     ADD = 294,
267     ADDC = 295,
268     ADDW = 296,
269     AND_ = 297,
270     AND1 = 298,
271     BF = 299,
272     BH = 300,
273     BNC = 301,
274     BNH = 302,
275     BNZ = 303,
276     BR = 304,
277     BRK = 305,
278     BRK1 = 306,
279     BT = 307,
280     BTCLR = 308,
281     BZ = 309,
282     CALL = 310,
283     CALLT = 311,
284     CLR1 = 312,
285     CLRB = 313,
286     CLRW = 314,
287     CMP = 315,
288     CMP0 = 316,
289     CMPS = 317,
290     CMPW = 318,
291     DEC = 319,
292     DECW = 320,
293     DI = 321,
294     DIVHU = 322,
295     DIVWU = 323,
296     EI = 324,
297     HALT = 325,
298     INC = 326,
299     INCW = 327,
300     MACH = 328,
301     MACHU = 329,
302     MOV = 330,
303     MOV1 = 331,
304     MOVS = 332,
305     MOVW = 333,
306     MULH = 334,
307     MULHU = 335,
308     MULU = 336,
309     NOP = 337,
310     NOT1 = 338,
311     ONEB = 339,
312     ONEW = 340,
313     OR = 341,
314     OR1 = 342,
315     POP = 343,
316     PUSH = 344,
317     RET = 345,
318     RETI = 346,
319     RETB = 347,
320     ROL = 348,
321     ROLC = 349,
322     ROLWC = 350,
323     ROR = 351,
324     RORC = 352,
325     SAR = 353,
326     SARW = 354,
327     SEL = 355,
328     SET1 = 356,
329     SHL = 357,
330     SHLW = 358,
331     SHR = 359,
332     SHRW = 360,
333     SKC = 361,
334     SKH = 362,
335     SKNC = 363,
336     SKNH = 364,
337     SKNZ = 365,
338     SKZ = 366,
339     STOP = 367,
340     SUB = 368,
341     SUBC = 369,
342     SUBW = 370,
343     XCH = 371,
344     XCHW = 372,
345     XOR = 373,
346     XOR1 = 374
347   };
348 #endif
349 /* Tokens.  */
350 #define A 258
351 #define X 259
352 #define B 260
353 #define C 261
354 #define D 262
355 #define E 263
356 #define H 264
357 #define L 265
358 #define AX 266
359 #define BC 267
360 #define DE 268
361 #define HL 269
362 #define SPL 270
363 #define SPH 271
364 #define PSW 272
365 #define CS 273
366 #define ES 274
367 #define PMC 275
368 #define MEM 276
369 #define FLAG 277
370 #define SP 278
371 #define CY 279
372 #define RB0 280
373 #define RB1 281
374 #define RB2 282
375 #define RB3 283
376 #define EXPR 284
377 #define UNKNOWN_OPCODE 285
378 #define IS_OPCODE 286
379 #define DOT_S 287
380 #define DOT_B 288
381 #define DOT_W 289
382 #define DOT_L 290
383 #define DOT_A 291
384 #define DOT_UB 292
385 #define DOT_UW 293
386 #define ADD 294
387 #define ADDC 295
388 #define ADDW 296
389 #define AND_ 297
390 #define AND1 298
391 #define BF 299
392 #define BH 300
393 #define BNC 301
394 #define BNH 302
395 #define BNZ 303
396 #define BR 304
397 #define BRK 305
398 #define BRK1 306
399 #define BT 307
400 #define BTCLR 308
401 #define BZ 309
402 #define CALL 310
403 #define CALLT 311
404 #define CLR1 312
405 #define CLRB 313
406 #define CLRW 314
407 #define CMP 315
408 #define CMP0 316
409 #define CMPS 317
410 #define CMPW 318
411 #define DEC 319
412 #define DECW 320
413 #define DI 321
414 #define DIVHU 322
415 #define DIVWU 323
416 #define EI 324
417 #define HALT 325
418 #define INC 326
419 #define INCW 327
420 #define MACH 328
421 #define MACHU 329
422 #define MOV 330
423 #define MOV1 331
424 #define MOVS 332
425 #define MOVW 333
426 #define MULH 334
427 #define MULHU 335
428 #define MULU 336
429 #define NOP 337
430 #define NOT1 338
431 #define ONEB 339
432 #define ONEW 340
433 #define OR 341
434 #define OR1 342
435 #define POP 343
436 #define PUSH 344
437 #define RET 345
438 #define RETI 346
439 #define RETB 347
440 #define ROL 348
441 #define ROLC 349
442 #define ROLWC 350
443 #define ROR 351
444 #define RORC 352
445 #define SAR 353
446 #define SARW 354
447 #define SEL 355
448 #define SET1 356
449 #define SHL 357
450 #define SHLW 358
451 #define SHR 359
452 #define SHRW 360
453 #define SKC 361
454 #define SKH 362
455 #define SKNC 363
456 #define SKNH 364
457 #define SKNZ 365
458 #define SKZ 366
459 #define STOP 367
460 #define SUB 368
461 #define SUBC 369
462 #define SUBW 370
463 #define XCH 371
464 #define XCHW 372
465 #define XOR 373
466 #define XOR1 374
467 
468 /* Value type.  */
469 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
470 
471 union YYSTYPE
472 {
473 #line 144 "./config/rl78-parse.y" /* yacc.c:355  */
474 
475   int regno;
476   expressionS exp;
477 
478 #line 479 "rl78-parse.c" /* yacc.c:355  */
479 };
480 
481 typedef union YYSTYPE YYSTYPE;
482 # define YYSTYPE_IS_TRIVIAL 1
483 # define YYSTYPE_IS_DECLARED 1
484 #endif
485 
486 
487 extern YYSTYPE rl78_lval;
488 
489 int rl78_parse (void);
490 
491 #endif /* !YY_RL78_RL_PARSE_H_INCLUDED  */
492 
493 /* Copy the second part of user declarations.  */
494 
495 #line 496 "rl78-parse.c" /* yacc.c:358  */
496 
497 #ifdef short
498 # undef short
499 #endif
500 
501 #ifdef YYTYPE_UINT8
502 typedef YYTYPE_UINT8 yytype_uint8;
503 #else
504 typedef unsigned char yytype_uint8;
505 #endif
506 
507 #ifdef YYTYPE_INT8
508 typedef YYTYPE_INT8 yytype_int8;
509 #else
510 typedef signed char yytype_int8;
511 #endif
512 
513 #ifdef YYTYPE_UINT16
514 typedef YYTYPE_UINT16 yytype_uint16;
515 #else
516 typedef unsigned short int yytype_uint16;
517 #endif
518 
519 #ifdef YYTYPE_INT16
520 typedef YYTYPE_INT16 yytype_int16;
521 #else
522 typedef short int yytype_int16;
523 #endif
524 
525 #ifndef YYSIZE_T
526 # ifdef __SIZE_TYPE__
527 #  define YYSIZE_T __SIZE_TYPE__
528 # elif defined size_t
529 #  define YYSIZE_T size_t
530 # elif ! defined YYSIZE_T
531 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
532 #  define YYSIZE_T size_t
533 # else
534 #  define YYSIZE_T unsigned int
535 # endif
536 #endif
537 
538 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
539 
540 #ifndef YY_
541 # if defined YYENABLE_NLS && YYENABLE_NLS
542 #  if ENABLE_NLS
543 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
544 #   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
545 #  endif
546 # endif
547 # ifndef YY_
548 #  define YY_(Msgid) Msgid
549 # endif
550 #endif
551 
552 #ifndef YY_ATTRIBUTE
553 # if (defined __GNUC__                                               \
554       && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
555      || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
556 #  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
557 # else
558 #  define YY_ATTRIBUTE(Spec) /* empty */
559 # endif
560 #endif
561 
562 #ifndef YY_ATTRIBUTE_PURE
563 # define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
564 #endif
565 
566 #ifndef YY_ATTRIBUTE_UNUSED
567 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
568 #endif
569 
570 #if !defined _Noreturn \
571      && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
572 # if defined _MSC_VER && 1200 <= _MSC_VER
573 #  define _Noreturn __declspec (noreturn)
574 # else
575 #  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
576 # endif
577 #endif
578 
579 /* Suppress unused-variable warnings by "using" E.  */
580 #if ! defined lint || defined __GNUC__
581 # define YYUSE(E) ((void) (E))
582 #else
583 # define YYUSE(E) /* empty */
584 #endif
585 
586 #if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
587 /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
588 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
589     _Pragma ("GCC diagnostic push") \
590     _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
591     _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
592 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
593     _Pragma ("GCC diagnostic pop")
594 #else
595 # define YY_INITIAL_VALUE(Value) Value
596 #endif
597 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
598 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
599 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
600 #endif
601 #ifndef YY_INITIAL_VALUE
602 # define YY_INITIAL_VALUE(Value) /* Nothing. */
603 #endif
604 
605 
606 #if ! defined yyoverflow || YYERROR_VERBOSE
607 
608 /* The parser invokes alloca or malloc; define the necessary symbols.  */
609 
610 # ifdef YYSTACK_USE_ALLOCA
611 #  if YYSTACK_USE_ALLOCA
612 #   ifdef __GNUC__
613 #    define YYSTACK_ALLOC __builtin_alloca
614 #   elif defined __BUILTIN_VA_ARG_INCR
615 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
616 #   elif defined _AIX
617 #    define YYSTACK_ALLOC __alloca
618 #   elif defined _MSC_VER
619 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
620 #    define alloca _alloca
621 #   else
622 #    define YYSTACK_ALLOC alloca
623 #    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
624 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
625       /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
626 #     ifndef EXIT_SUCCESS
627 #      define EXIT_SUCCESS 0
628 #     endif
629 #    endif
630 #   endif
631 #  endif
632 # endif
633 
634 # ifdef YYSTACK_ALLOC
635    /* Pacify GCC's 'empty if-body' warning.  */
636 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
637 #  ifndef YYSTACK_ALLOC_MAXIMUM
638     /* The OS might guarantee only one guard page at the bottom of the stack,
639        and a page size can be as small as 4096 bytes.  So we cannot safely
640        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
641        to allow for a few compiler-allocated temporary stack slots.  */
642 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
643 #  endif
644 # else
645 #  define YYSTACK_ALLOC YYMALLOC
646 #  define YYSTACK_FREE YYFREE
647 #  ifndef YYSTACK_ALLOC_MAXIMUM
648 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
649 #  endif
650 #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
651        && ! ((defined YYMALLOC || defined malloc) \
652              && (defined YYFREE || defined free)))
653 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
654 #   ifndef EXIT_SUCCESS
655 #    define EXIT_SUCCESS 0
656 #   endif
657 #  endif
658 #  ifndef YYMALLOC
659 #   define YYMALLOC malloc
660 #   if ! defined malloc && ! defined EXIT_SUCCESS
661 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
662 #   endif
663 #  endif
664 #  ifndef YYFREE
665 #   define YYFREE free
666 #   if ! defined free && ! defined EXIT_SUCCESS
667 void free (void *); /* INFRINGES ON USER NAME SPACE */
668 #   endif
669 #  endif
670 # endif
671 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
672 
673 
674 #if (! defined yyoverflow \
675      && (! defined __cplusplus \
676          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
677 
678 /* A type that is properly aligned for any stack member.  */
679 union yyalloc
680 {
681   yytype_int16 yyss_alloc;
682   YYSTYPE yyvs_alloc;
683 };
684 
685 /* The size of the maximum gap between one aligned stack and the next.  */
686 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
687 
688 /* The size of an array large to enough to hold all stacks, each with
689    N elements.  */
690 # define YYSTACK_BYTES(N) \
691      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
692       + YYSTACK_GAP_MAXIMUM)
693 
694 # define YYCOPY_NEEDED 1
695 
696 /* Relocate STACK from its old location to the new one.  The
697    local variables YYSIZE and YYSTACKSIZE give the old and new number of
698    elements in the stack, and YYPTR gives the new location of the
699    stack.  Advance YYPTR to a properly aligned location for the next
700    stack.  */
701 # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
702     do                                                                  \
703       {                                                                 \
704         YYSIZE_T yynewbytes;                                            \
705         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
706         Stack = &yyptr->Stack_alloc;                                    \
707         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
708         yyptr += yynewbytes / sizeof (*yyptr);                          \
709       }                                                                 \
710     while (0)
711 
712 #endif
713 
714 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
715 /* Copy COUNT objects from SRC to DST.  The source and destination do
716    not overlap.  */
717 # ifndef YYCOPY
718 #  if defined __GNUC__ && 1 < __GNUC__
719 #   define YYCOPY(Dst, Src, Count) \
720       __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
721 #  else
722 #   define YYCOPY(Dst, Src, Count)              \
723       do                                        \
724         {                                       \
725           YYSIZE_T yyi;                         \
726           for (yyi = 0; yyi < (Count); yyi++)   \
727             (Dst)[yyi] = (Src)[yyi];            \
728         }                                       \
729       while (0)
730 #  endif
731 # endif
732 #endif /* !YYCOPY_NEEDED */
733 
734 /* YYFINAL -- State number of the termination state.  */
735 #define YYFINAL  180
736 /* YYLAST -- Last index in YYTABLE.  */
737 #define YYLAST   844
738 
739 /* YYNTOKENS -- Number of terminals.  */
740 #define YYNTOKENS  129
741 /* YYNNTS -- Number of nonterminals.  */
742 #define YYNNTS  56
743 /* YYNRULES -- Number of rules.  */
744 #define YYNRULES  324
745 /* YYNSTATES -- Number of states.  */
746 #define YYNSTATES  744
747 
748 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
749    by yylex, with out-of-bounds checking.  */
750 #define YYUNDEFTOK  2
751 #define YYMAXUTOK   374
752 
753 #define YYTRANSLATE(YYX)                                                \
754   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
755 
756 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
757    as returned by yylex, without out-of-bounds checking.  */
758 static const yytype_uint8 yytranslate[] =
759 {
760        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
761        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
762        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
763        2,     2,     2,   122,     2,   121,   127,     2,     2,     2,
764        2,     2,     2,   125,   120,     2,   126,     2,     2,     2,
765        2,     2,     2,     2,     2,     2,     2,     2,   128,     2,
766        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
767        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
768        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
769        2,   123,     2,   124,     2,     2,     2,     2,     2,     2,
770        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
771        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
772        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
773        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
774        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
775        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
776        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
777        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
778        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
779        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
780        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
781        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
782        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
783        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
784        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
785        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
786        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
787       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
788       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
789       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
790       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
791       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
792       65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
793       75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
794       85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
795       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
796      105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
797      115,   116,   117,   118,   119
798 };
799 
800 #if YYDEBUG
801   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
802 static const yytype_uint16 yyrline[] =
803 {
804        0,   187,   187,   208,   211,   211,   214,   217,   220,   223,
805      223,   226,   229,   232,   235,   238,   241,   250,   253,   256,
806      256,   259,   262,   265,   268,   276,   276,   279,   279,   288,
807      288,   291,   291,   296,   299,   302,   305,   308,   311,   316,
808      319,   328,   331,   336,   339,   342,   345,   348,   353,   356,
809      361,   364,   367,   370,   373,   394,   397,   400,   409,   412,
810      415,   420,   422,   424,   426,   429,   429,   432,   437,   439,
811      444,   447,   450,   453,   456,   456,   459,   464,   469,   472,
812      472,   474,   476,   478,   480,   485,   488,   488,   491,   494,
813      499,   502,   507,   507,   510,   510,   513,   516,   516,   524,
814      524,   527,   527,   530,   530,   535,   543,   545,   548,   555,
815      555,   564,   567,   570,   573,   576,   576,   585,   588,   591,
816      594,   597,   597,   606,   606,   606,   609,   612,   619,   619,
817      619,   626,   629,   632,   635,   638,   641,   644,   647,   650,
818      653,   656,   659,   662,   665,   668,   671,   674,   677,   680,
819      683,   686,   689,   692,   695,   698,   701,   704,   704,   707,
820      707,   710,   710,   713,   713,   716,   716,   719,   719,   724,
821      733,   736,   739,   742,   751,   754,   757,   762,   767,   770,
822      773,   773,   782,   782,   791,   791,   800,   803,   806,   809,
823      812,   815,   818,   821,   824,   827,   830,   833,   836,   839,
824      842,   845,   848,   851,   854,   857,   860,   860,   863,   863,
825      866,   866,   869,   869,   872,   872,   875,   878,   881,   884,
826      887,   892,   897,   902,   905,   908,   911,   916,   919,   922,
827      927,   932,   937,   942,   947,   952,   959,   964,   971,   974,
828      977,   980,   985,   990,   995,  1000,  1005,  1012,  1017,  1024,
829     1027,  1030,  1033,  1036,  1039,  1044,  1049,  1056,  1059,  1062,
830     1065,  1068,  1071,  1074,  1077,  1088,  1097,  1098,  1102,  1103,
831     1104,  1105,  1106,  1107,  1108,  1109,  1112,  1113,  1114,  1115,
832     1116,  1117,  1118,  1121,  1122,  1123,  1124,  1127,  1128,  1129,
833     1132,  1133,  1134,  1135,  1136,  1137,  1138,  1144,  1145,  1146,
834     1147,  1148,  1149,  1150,  1151,  1154,  1155,  1156,  1159,  1160,
835     1161,  1164,  1165,  1166,  1169,  1170,  1173,  1174,  1177,  1178,
836     1181,  1182,  1185,  1186,  1189
837 };
838 #endif
839 
840 #if YYDEBUG || YYERROR_VERBOSE || 0
841 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
842    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
843 static const char *const yytname[] =
844 {
845   "$end", "error", "$undefined", "A", "X", "B", "C", "D", "E", "H", "L",
846   "AX", "BC", "DE", "HL", "SPL", "SPH", "PSW", "CS", "ES", "PMC", "MEM",
847   "FLAG", "SP", "CY", "RB0", "RB1", "RB2", "RB3", "EXPR", "UNKNOWN_OPCODE",
848   "IS_OPCODE", "DOT_S", "DOT_B", "DOT_W", "DOT_L", "DOT_A", "DOT_UB",
849   "DOT_UW", "ADD", "ADDC", "ADDW", "AND_", "AND1", "BF", "BH", "BNC",
850   "BNH", "BNZ", "BR", "BRK", "BRK1", "BT", "BTCLR", "BZ", "CALL", "CALLT",
851   "CLR1", "CLRB", "CLRW", "CMP", "CMP0", "CMPS", "CMPW", "DEC", "DECW",
852   "DI", "DIVHU", "DIVWU", "EI", "HALT", "INC", "INCW", "MACH", "MACHU",
853   "MOV", "MOV1", "MOVS", "MOVW", "MULH", "MULHU", "MULU", "NOP", "NOT1",
854   "ONEB", "ONEW", "OR", "OR1", "POP", "PUSH", "RET", "RETI", "RETB", "ROL",
855   "ROLC", "ROLWC", "ROR", "RORC", "SAR", "SARW", "SEL", "SET1", "SHL",
856   "SHLW", "SHR", "SHRW", "SKC", "SKH", "SKNC", "SKNH", "SKNZ", "SKZ",
857   "STOP", "SUB", "SUBC", "SUBW", "XCH", "XCHW", "XOR", "XOR1", "','",
858   "'#'", "'!'", "'['", "']'", "'+'", "'.'", "'$'", "':'", "$accept",
859   "statement", "$@1", "$@2", "$@3", "$@4", "$@5", "$@6", "$@7", "$@8",
860   "$@9", "$@10", "$@11", "$@12", "$@13", "$@14", "$@15", "$@16", "$@17",
861   "$@18", "$@19", "$@20", "$@21", "$@22", "$@23", "$@24", "$@25", "$@26",
862   "$@27", "$@28", "$@29", "$@30", "$@31", "$@32", "$@33", "$@34", "$@35",
863   "$@36", "$@37", "$@38", "opt_es", "regb", "regb_na", "regw", "regw_na",
864   "sfr", "addsub", "addsubw", "andor1", "bt_bf", "setclr1", "oneclrb",
865   "oneclrw", "incdec", "incdecw", "mov1", YY_NULLPTR
866 };
867 #endif
868 
869 # ifdef YYPRINT
870 /* YYTOKNUM[NUM] -- (External) token number corresponding to the
871    (internal) symbol number NUM (which must be that of a token).  */
872 static const yytype_uint16 yytoknum[] =
873 {
874        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
875      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
876      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
877      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
878      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
879      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
880      315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
881      325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
882      335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
883      345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
884      355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
885      365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
886       44,    35,    33,    91,    93,    43,    46,    36,    58
887 };
888 # endif
889 
890 #define YYPACT_NINF -212
891 
892 #define yypact_value_is_default(Yystate) \
893   (!!((Yystate) == (-212)))
894 
895 #define YYTABLE_NINF -1
896 
897 #define yytable_value_is_error(Yytable_value) \
898   0
899 
900   /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
901      STATE-NUM.  */
902 static const yytype_int16 yypact[] =
903 {
904      226,   -44,  -212,  -212,  -212,  -212,  -212,  -212,  -212,   -34,
905      -15,    14,    20,    42,  -212,  -212,  -212,  -212,    45,    91,
906      -80,  -212,  -212,  -212,  -212,   347,   134,  -212,  -212,  -212,
907     -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,    53,
908     -212,   136,   430,  -212,  -212,   153,  -212,   150,  -212,  -212,
909     -212,  -212,   413,   451,  -212,  -212,  -212,   181,   186,   198,
910      192,   212,   214,   225,   232,  -212,   368,   210,   236,   231,
911     -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,
912      242,   244,  -212,  -212,   261,   221,   107,   325,   162,   343,
913      403,   222,    10,   235,   362,   328,   341,   385,   394,   402,
914     -212,    38,    81,   411,  -212,  -212,  -212,  -212,    82,   263,
915     -212,   428,  -212,  -212,  -212,  -212,   300,  -212,   273,   351,
916     -212,  -212,  -212,  -212,   367,  -212,  -212,  -212,  -212,  -212,
917     -212,  -212,  -212,  -212,  -212,  -212,   376,  -212,  -212,   457,
918       11,   372,   383,   384,   386,  -212,  -212,  -212,   388,    36,
919      389,  -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,   390,
920      391,   392,   393,   395,   396,   397,   398,  -212,  -212,  -212,
921     -212,   401,   404,   405,   406,   407,   408,   409,   410,   412,
922     -212,   414,  -212,   415,   416,   418,   419,   420,   379,   300,
923      417,   421,   422,   423,  -212,   424,     0,   425,  -212,  -212,
924     -212,  -212,  -212,   431,  -212,  -212,  -212,  -212,  -212,  -212,
925     -212,  -212,  -212,  -212,   426,  -212,   485,   505,  -212,  -212,
926      233,  -212,   432,   427,   434,   436,   435,  -212,  -212,  -212,
927     -212,  -212,  -212,   491,  -212,   493,  -212,  -212,   494,   502,
928      439,  -212,  -212,   504,   136,    80,   440,   437,   -79,   184,
929       29,    72,   521,   123,    41,    79,   512,   239,   102,   513,
930      516,   517,   523,   526,   527,   535,   536,   537,   538,   539,
931      540,   541,   542,   543,   429,   399,    18,   453,   545,   572,
932       95,   455,   381,   548,   549,   565,   551,   552,   553,   554,
933      570,   556,  -212,   557,   267,  -212,  -212,   462,  -212,   559,
934      575,   561,   400,   562,   578,   564,  -212,  -212,  -212,  -212,
935     -212,  -212,   471,   566,    63,  -212,  -212,   567,     5,     6,
936      161,   473,   268,   280,   330,  -212,   569,    86,   571,   573,
937     -212,   474,  -212,   574,    65,  -212,  -212,   576,    55,   342,
938      481,   480,   335,   345,   348,  -212,  -212,  -212,   577,   486,
939     -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,
940     -212,  -212,  -212,  -212,  -212,  -212,   344,  -212,  -212,  -212,
941     -212,   580,   352,  -212,   489,   487,  -212,  -212,   582,   354,
942     -212,   583,   488,   490,   492,   495,   497,   498,   496,   499,
943     -212,  -212,   500,   501,  -212,  -212,   584,   608,   594,  -212,
944      503,   507,   506,   508,   510,   509,   511,   514,   519,   610,
945     -212,   518,   600,   433,   520,  -212,   601,  -212,   607,   522,
946      524,   525,   530,   531,   613,   532,   111,   533,   614,  -212,
947     -212,   615,  -212,  -212,   616,  -212,   534,   618,   438,  -212,
948     -212,   625,   544,   546,   547,   626,   555,   558,   627,   560,
949      629,   563,   630,  -212,  -212,   631,   632,   465,  -212,  -212,
950      633,   641,   634,   568,  -212,  -212,   635,   651,  -212,   637,
951      638,   655,   643,   550,   579,   581,   585,   644,   587,  -212,
952      586,   590,   645,   652,   650,   653,   667,   656,   660,   589,
953      662,   591,   363,  -212,  -212,   593,   356,   358,   360,     7,
954     -212,  -212,  -212,   588,   598,   599,     8,   684,   596,   685,
955      597,   602,   603,    27,   604,  -212,  -212,  -212,   605,   382,
956     -212,  -212,   606,   364,   366,   369,  -212,  -212,   611,   612,
957      617,  -212,   679,   680,   609,   681,   619,   682,   620,  -212,
958     -212,   371,   373,  -212,   375,  -212,   665,  -212,   377,  -212,
959     -212,   621,  -212,   666,   668,   669,   670,  -212,   671,   672,
960     -212,   622,  -212,  -212,  -212,   623,  -212,  -212,   673,  -212,
961      674,   624,   628,   636,  -212,  -212,   675,  -212,   114,  -212,
962      676,  -212,   693,  -212,    28,    30,    31,  -212,   694,  -212,
963      639,  -212,   642,   646,   647,  -212,   695,   648,  -212,  -212,
964      649,   640,   654,   657,  -212,  -212,   696,  -212,   705,  -212,
965      706,  -212,   698,   699,   725,  -212,  -212,   659,  -212,   663,
966     -212,   664,  -212,   709,  -212,   139,  -212,   165,  -212,  -212,
967      710,  -212,  -212,   661,  -212,  -212,  -212,   677,  -212,  -212,
968      658,  -212,   678,   683,   686,  -212,  -212,  -212,   687,   688,
969      689,   690,  -212,   691,  -212,  -212,   711,  -212,   712,  -212,
970      713,  -212,    32,   746,   747,    33,  -212,  -212,    35,   692,
971     -212,  -212,  -212,   697,   700,  -212,   701,  -212,  -212,  -212,
972      740,   742,  -212,   743,   702,   703,   704,   707,   708,   714,
973      715,   716,   726,   717,  -212,   727,   733,  -212,  -212,  -212,
974     -212,  -212,  -212,  -212,  -212,  -212,  -212,   729,  -212,  -212,
975     -212,   732,  -212,  -212,   734,  -212,  -212,  -212,  -212,  -212,
976     -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,
977     -212,   736,  -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,
978     -212,  -212,  -212,  -212
979 };
980 
981   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
982      Performed when YYTABLE does not specify something else to do.  Zero
983      means the default is an error.  */
984 static const yytype_uint16 yydefact[] =
985 {
986        0,     0,     2,   297,   298,   305,   302,   308,   312,     0,
987        0,     0,     0,     0,    48,    49,   311,   313,     0,     0,
988        0,   315,   317,   319,   301,   266,     0,   307,   321,   323,
989       90,    97,    99,    91,   105,   320,   322,   103,   101,   266,
990      324,   266,   266,    94,    92,     0,   221,     0,   316,   318,
991      303,   309,     0,     0,   227,   228,   229,     0,     0,     0,
992        0,     0,     0,     0,     0,   314,     0,     0,     0,     0,
993      249,   250,   251,   252,   253,   254,   255,   299,   300,   306,
994        0,     0,   304,   310,     0,   266,     0,     0,   266,   266,
995      266,     0,     0,   266,   266,     0,     0,     0,     0,     0,
996       43,     0,     0,     0,   283,   284,   285,   286,     0,     0,
997       50,     0,    70,    71,    72,    73,     0,    74,     0,     0,
998       98,   100,   104,   102,     0,   276,   278,   277,   280,   279,
999      282,   281,   290,   291,   292,   293,   294,   295,   296,     0,
1000        0,     0,     0,     0,     0,   287,   288,   289,     0,     0,
1001        0,    95,    93,    96,   222,   224,   223,   226,   225,     0,
1002        0,     0,     0,     0,     0,     0,     0,   238,   239,   240,
1003      241,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1004        1,     0,     4,     0,     0,     0,     0,     0,     0,   294,
1005        0,     0,     0,     0,    55,     0,     0,     0,    61,    62,
1006       63,    64,    65,     0,    68,    69,   269,   268,   271,   270,
1007      273,   272,   275,   274,     0,    79,     0,     0,    78,    86,
1008        0,    85,     0,     0,     0,     0,     0,    33,    37,    34,
1009       38,    36,    46,     0,    44,     0,    35,    52,     0,     0,
1010        0,   267,    75,     0,   266,   266,   267,     0,     0,     0,
1011      266,   266,     0,   266,     0,     0,     0,     0,   266,     0,
1012        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1013        0,     0,     0,     0,   266,     0,   266,     0,     0,     0,
1014      266,     0,   266,     0,     0,     0,     0,     0,     0,     0,
1015        0,     0,    66,     0,     0,    80,    81,     0,    87,     0,
1016        0,     0,   266,     0,     0,     0,    47,    45,    53,    51,
1017       54,    76,     0,     0,     0,   114,   126,     0,     0,     0,
1018        0,     0,     0,     0,     0,   113,     0,     0,     0,     0,
1019      127,     0,   219,     0,     0,   186,   218,     0,     0,     0,
1020        0,     0,     0,     0,     0,   187,   220,   214,     0,     0,
1021      230,   231,   232,   233,   234,   235,   236,   237,   242,   243,
1022      244,   245,   246,   247,   248,   264,     0,   256,   265,     6,
1023        9,     0,     0,     7,     0,     0,     8,    19,     0,     0,
1024       18,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1025       58,    57,     0,     0,    56,    67,     0,     0,     0,    88,
1026        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1027      106,   121,     0,     0,     0,   118,     0,   115,     0,     0,
1028        0,     0,     0,     0,     0,     0,     0,     0,     0,   107,
1029      123,     0,   108,   128,     0,   178,   182,     0,     0,   217,
1030      184,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1031        0,     0,     0,   215,   179,     0,     0,     0,    10,     3,
1032        0,     0,     0,     0,    20,    17,     0,     0,    24,     0,
1033        0,     0,     0,     0,     0,     0,     0,     0,     0,    82,
1034        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1035        0,     0,     0,   122,   117,     0,     0,     0,     0,     0,
1036      111,   116,   109,     0,     0,     0,     0,     0,     0,     0,
1037        0,     0,     0,     0,     0,   124,   120,   129,     0,     0,
1038      183,   188,     0,     0,     0,     0,   185,   180,     0,     0,
1039        0,   189,     0,     0,     0,     0,     0,     0,     0,   216,
1040      257,     0,     0,    11,     0,     5,     0,    21,     0,    29,
1041       27,     0,    25,     0,     0,     0,     0,    59,     0,     0,
1042       83,     0,   174,   170,   169,     0,   171,   173,     0,   175,
1043        0,     0,     0,     0,   154,   131,     0,   136,     0,   163,
1044        0,   119,     0,   110,     0,     0,     0,   156,     0,   132,
1045        0,   137,     0,     0,     0,   167,     0,     0,   125,   130,
1046        0,     0,     0,     0,   203,   190,     0,   194,     0,   208,
1047        0,   181,     0,     0,     0,   205,   191,     0,   195,     0,
1048      212,     0,   258,     0,   260,     0,    12,     0,    16,    23,
1049        0,    30,    28,     0,    26,    41,    40,     0,    39,    60,
1050        0,    89,     0,     0,     0,   146,   149,   153,     0,     0,
1051        0,     0,   164,     0,   112,   147,     0,   150,     0,   155,
1052        0,   152,     0,     0,     0,     0,   168,   159,     0,     0,
1053      198,   200,   202,     0,     0,   209,     0,   199,   201,   204,
1054        0,     0,   213,     0,     0,     0,     0,     0,     0,     0,
1055        0,     0,     0,     0,    84,     0,     0,    77,   134,   141,
1056      143,   139,   161,   145,   148,   151,   135,     0,   142,   144,
1057      140,     0,   160,   165,     0,   177,   192,   196,   206,   193,
1058      197,   210,   259,   262,   263,   261,    14,    15,    13,    22,
1059       31,     0,   172,   176,   162,   133,   138,   166,   157,   207,
1060      211,    32,    42,   158
1061 };
1062 
1063   /* YYPGOTO[NTERM-NUM].  */
1064 static const yytype_int16 yypgoto[] =
1065 {
1066     -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,
1067     -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,
1068     -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,
1069     -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,  -212,
1070      -39,   529,   -84,   -48,  -211,   -82,  -212,  -212,  -212,  -212,
1071     -212,  -212,  -212,  -212,  -212,  -212
1072 };
1073 
1074   /* YYDEFGOTO[NTERM-NUM].  */
1075 static const yytype_int16 yydefgoto[] =
1076 {
1077       -1,    84,   277,   458,   464,   634,   632,   631,   741,   292,
1078      242,   295,   298,   152,   151,   120,   121,   123,   122,   583,
1079      501,   493,   515,   598,   517,   599,   743,   712,   734,   652,
1080      737,   666,   611,   520,   526,   739,   675,   740,   682,   453,
1081      118,   218,   141,   110,   150,   142,    85,    86,    87,    88,
1082       89,    90,    91,    92,    93,    94
1083 };
1084 
1085   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
1086      positive, shift that token.  If negative, reduce the rule whose
1087      number is the opposite.  If YYTABLE_NINF, syntax error.  */
1088 static const yytype_uint16 yytable[] =
1089 {
1090      140,   184,   143,   149,   156,   158,   192,   197,   415,   417,
1091      581,   587,   226,   206,   207,   208,   209,   210,   211,   212,
1092      213,   369,   125,   126,   127,   128,   129,   130,   131,   214,
1093      595,   655,   325,   657,   659,   706,   710,   116,   713,   215,
1094      248,   319,   335,   111,   320,   221,   183,   370,   116,   191,
1095      196,   203,   336,   100,   220,   225,   124,   125,   126,   127,
1096      128,   129,   130,   131,   368,   255,   440,   232,   132,   133,
1097      134,   135,   136,   137,   138,   206,   207,   208,   209,   210,
1098      211,   212,   213,    95,   125,   126,   127,   128,   129,   130,
1099      131,   116,   411,    96,   436,   132,   133,   134,   135,   189,
1100      137,   138,   104,   105,   106,   107,   104,   105,   106,   107,
1101      234,   237,    97,   345,   116,   430,   510,   511,   185,   649,
1102      650,   116,   289,   290,   377,   346,   416,   418,   582,   588,
1103      186,   347,   216,   217,   249,   145,   146,   147,   119,   371,
1104      512,    98,   116,   651,   685,   686,   332,    99,   596,   656,
1105      326,   658,   660,   707,   711,   116,   714,   153,   256,   257,
1106      233,   315,   337,   316,   101,   188,   419,   420,   687,   102,
1107      688,   689,   103,   421,   154,   139,   441,   132,   133,   134,
1108      135,   189,   137,   138,   159,   412,   413,   437,   438,   160,
1109      367,   190,   373,   328,   690,   163,   321,   322,   323,   338,
1110      385,   313,   339,   235,   238,   312,   314,   324,   431,   161,
1111      162,   327,   329,   108,   334,   164,   378,   165,   109,   349,
1112      405,   174,   175,   348,   181,   125,   126,   127,   128,   129,
1113      130,   131,   380,   204,   205,   366,   166,   372,     1,   176,
1114      116,   379,   177,   384,   333,   178,   104,   105,   106,   107,
1115      182,   341,   342,   343,   116,   179,     2,   167,   168,   169,
1116      170,   180,   344,   404,   219,     3,     4,     5,     6,     7,
1117        8,     9,    10,    11,    12,    13,    14,    15,    16,    17,
1118       18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
1119       28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
1120       38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
1121       48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
1122       58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
1123       68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
1124       78,    79,    80,    81,    82,    83,   193,   442,   443,   187,
1125      112,   113,   114,   115,   444,   299,   300,   227,   132,   133,
1126      134,   135,   189,   137,   138,   222,   116,   194,   571,   572,
1127      228,   171,   195,   172,   173,   573,   117,   132,   133,   134,
1128      135,   189,   137,   138,   382,   239,   223,   601,   602,   396,
1129      397,   224,   423,   424,   603,   243,   132,   133,   134,   135,
1130      189,   137,   138,   402,   425,   426,   198,   199,   200,   201,
1131      383,   145,   146,   147,   229,   132,   133,   134,   135,   189,
1132      137,   138,   116,   230,   104,   105,   106,   107,   241,   403,
1133      155,   231,   202,   125,   126,   127,   128,   129,   130,   131,
1134      236,   144,   145,   146,   147,   495,   496,   497,   116,   116,
1135      522,   523,   524,   148,   427,   428,   498,   240,   365,   447,
1136      448,   525,   104,   105,   106,   107,   456,   457,   157,   449,
1137      450,   244,   451,   452,   460,   461,   466,   467,   541,   542,
1138      575,   576,   577,   578,   579,   580,   247,   245,   605,   606,
1139      607,   608,   250,   609,   610,   622,   623,   624,   625,   626,
1140      627,   629,   630,   251,   246,   283,   253,   252,   254,   258,
1141      259,   260,   261,   262,   296,   263,   264,   265,   266,   297,
1142      306,   267,   307,   308,   268,   269,   270,   271,   272,   273,
1143      274,   309,   275,   311,   276,   331,   279,   278,   280,   281,
1144      282,   340,   350,   284,   285,   351,   352,   302,   286,   287,
1145      288,   291,   353,   293,   294,   354,   355,   318,   301,   304,
1146      303,   305,   317,   310,   356,   357,   358,   359,   360,   361,
1147      362,   363,   364,   374,   375,   376,   381,   386,   387,   388,
1148      389,   390,   391,   392,   393,   394,   395,   398,   399,   400,
1149      401,   406,   407,   408,   409,   410,   414,   422,   429,   434,
1150      432,   445,   433,   435,   446,   439,   454,   463,   455,   459,
1151      462,   465,   468,   479,   469,   471,   470,   473,   474,   476,
1152      475,   472,   480,   481,   491,   478,   477,   483,   482,   494,
1153      500,   488,   484,   486,   485,   487,   502,   531,   489,   490,
1154      499,   492,   508,   514,   516,   518,   503,   521,   504,   505,
1155      506,   507,   509,   513,   527,   544,   534,   519,   536,   538,
1156      539,   540,   543,   545,   547,   548,   549,   550,   528,   551,
1157      529,   530,   552,   557,   561,   532,   562,   553,   533,   563,
1158      535,   565,   564,   537,   567,   566,   569,   589,   591,   546,
1159      615,   616,   618,   620,   628,   635,   715,   636,   637,   638,
1160      639,   640,   643,   644,   648,   653,   554,   555,   584,   677,
1161      678,   559,   556,   558,   560,   568,   570,   574,   585,   586,
1162      590,   592,   654,   661,   667,   673,   593,   594,   597,   600,
1163      604,   612,   613,   617,   674,   676,   679,   614,   684,   691,
1164      703,   704,   705,   619,   621,   633,   641,   642,   645,   708,
1165      709,   719,   646,   720,   721,   730,   732,   733,   735,   662,
1166      647,   736,   663,   738,   670,   742,   664,   665,   668,   669,
1167        0,     0,     0,     0,     0,     0,     0,     0,   671,   680,
1168      330,   672,   694,   681,   683,     0,     0,   692,     0,     0,
1169        0,     0,     0,     0,     0,     0,     0,   693,     0,     0,
1170        0,     0,     0,   696,   695,     0,     0,     0,     0,     0,
1171      697,   698,   699,   700,   701,   702,     0,     0,     0,     0,
1172        0,   716,     0,     0,   717,   718,   722,   723,   724,     0,
1173        0,   725,   726,     0,     0,     0,     0,     0,   727,   728,
1174      729,     0,     0,     0,   731
1175 };
1176 
1177 static const yytype_int16 yycheck[] =
1178 {
1179       39,    85,    41,    42,    52,    53,    88,    89,     3,     3,
1180        3,     3,    94,     3,     4,     5,     6,     7,     8,     9,
1181       10,     3,     4,     5,     6,     7,     8,     9,    10,    19,
1182        3,     3,     3,     3,     3,     3,     3,    19,     3,    29,
1183       29,   120,   253,   123,   123,    93,    85,    29,    19,    88,
1184       89,    90,    11,    11,    93,    94,     3,     4,     5,     6,
1185        7,     8,     9,    10,   275,    29,    11,    29,    15,    16,
1186       17,    18,    19,    20,    21,     3,     4,     5,     6,     7,
1187        8,     9,    10,   127,     4,     5,     6,     7,     8,     9,
1188       10,    19,    29,   127,    29,    15,    16,    17,    18,    19,
1189       20,    21,    11,    12,    13,    14,    11,    12,    13,    14,
1190       29,    29,   127,    11,    19,    29,     5,     6,    11,     5,
1191        6,    19,   122,   123,    29,    23,   121,   121,   121,   121,
1192       23,    29,   122,   123,   123,    12,    13,    14,     4,   121,
1193       29,   127,    19,    29,     5,     6,    23,   127,   121,   121,
1194      121,   121,   121,   121,   121,    19,   121,     4,   122,   123,
1195      122,   245,   121,   245,   122,     3,     5,     6,    29,   127,
1196        5,     6,   127,    12,    24,   122,   121,    15,    16,    17,
1197       18,    19,    20,    21,     3,   122,   123,   122,   123,     3,
1198      274,    29,   276,   121,    29,     3,    12,    13,    14,   120,
1199      282,   121,   123,   122,   122,   244,   245,    23,   122,    11,
1200       12,   250,   251,   122,   253,     3,   121,     3,   127,   258,
1201      302,    11,    12,   121,     3,     4,     5,     6,     7,     8,
1202        9,    10,   280,    11,    12,   274,    11,   276,    12,     3,
1203       19,   280,    11,   282,   121,     3,    11,    12,    13,    14,
1204       29,    12,    13,    14,    19,    11,    30,    25,    26,    27,
1205       28,     0,    23,   302,    29,    39,    40,    41,    42,    43,
1206       44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
1207       54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
1208       64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
1209       74,    75,    76,    77,    78,    79,    80,    81,    82,    83,
1210       84,    85,    86,    87,    88,    89,    90,    91,    92,    93,
1211       94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
1212      104,   105,   106,   107,   108,   109,   110,   111,   112,   113,
1213      114,   115,   116,   117,   118,   119,     3,     5,     6,    24,
1214        3,     4,     5,     6,    12,   122,   123,    29,    15,    16,
1215       17,    18,    19,    20,    21,     3,    19,    24,     5,     6,
1216       29,     3,    29,     5,     6,    12,    29,    15,    16,    17,
1217       18,    19,    20,    21,     3,   122,    24,     5,     6,   122,
1218      123,    29,   124,   125,    12,   122,    15,    16,    17,    18,
1219       19,    20,    21,     3,   124,   125,     3,     4,     5,     6,
1220       29,    12,    13,    14,    29,    15,    16,    17,    18,    19,
1221       20,    21,    19,    29,    11,    12,    13,    14,   128,    29,
1222       17,    29,    29,     4,     5,     6,     7,     8,     9,    10,
1223       29,    11,    12,    13,    14,    12,    13,    14,    19,    19,
1224       12,    13,    14,    23,   124,   125,    23,    29,    29,   124,
1225      125,    23,    11,    12,    13,    14,   122,   123,    17,   124,
1226      125,   120,   124,   125,   122,   123,   122,   123,    13,    14,
1227      124,   125,   124,   125,   124,   125,    29,   120,   124,   125,
1228      124,   125,   120,   124,   125,   124,   125,   124,   125,   124,
1229      125,   124,   125,   120,   128,   126,   120,   123,   120,   120,
1230      120,   120,   120,   120,    29,   120,   120,   120,   120,    14,
1231       29,   120,    29,    29,   120,   120,   120,   120,   120,   120,
1232      120,    29,   120,    29,   120,    14,   120,   122,   120,   120,
1233      120,    29,    29,   126,   123,    29,    29,   120,   126,   126,
1234      126,   126,    29,   122,   128,    29,    29,   120,   126,   123,
1235      126,   126,   122,   124,    29,    29,    29,    29,    29,    29,
1236       29,    29,    29,   120,    29,     3,   121,    29,    29,    14,
1237       29,    29,    29,    29,    14,    29,    29,   125,    29,    14,
1238       29,    29,    14,    29,   123,    29,    29,   124,    29,   125,
1239       29,   120,    29,    29,   124,    29,    29,   120,   122,    29,
1240      121,    29,    29,    29,   126,   123,   126,   120,   120,   120,
1241      124,   126,    14,    29,    14,   124,   126,   120,   125,    29,
1242       29,   120,   126,   123,   126,   126,    29,    11,   124,   120,
1243      120,   123,    29,    29,    29,    29,   124,    29,   124,   124,
1244      120,   120,   120,   120,    29,    14,    29,   123,    29,    29,
1245       29,    29,    29,    29,    29,    14,    29,    29,   124,    14,
1246      124,   124,    29,    29,    29,   120,    24,   127,   120,    29,
1247      120,    14,    29,   120,    24,    29,    24,     3,     3,   121,
1248       11,    11,    11,    11,    29,    29,     4,    29,    29,    29,
1249       29,    29,    29,    29,    29,    29,   127,   126,   120,    11,
1250       11,   125,   127,   126,   124,   126,   125,   124,   120,   120,
1251      124,   124,    29,    29,    29,    29,   124,   124,   124,   124,
1252      124,   120,   120,   124,    29,    29,    11,   120,    29,    29,
1253       29,    29,    29,   124,   124,   124,   124,   124,   124,     3,
1254        3,    11,   124,    11,    11,    29,    29,    24,    29,   120,
1255      124,    29,   120,    29,   124,    29,   120,   120,   120,   120,
1256       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   124,   120,
1257      251,   124,   124,   120,   120,    -1,    -1,   126,    -1,    -1,
1258       -1,    -1,    -1,    -1,    -1,    -1,    -1,   120,    -1,    -1,
1259       -1,    -1,    -1,   120,   126,    -1,    -1,    -1,    -1,    -1,
1260      124,   124,   124,   124,   124,   124,    -1,    -1,    -1,    -1,
1261       -1,   124,    -1,    -1,   124,   124,   124,   124,   124,    -1,
1262       -1,   124,   124,    -1,    -1,    -1,    -1,    -1,   124,   124,
1263      124,    -1,    -1,    -1,   127
1264 };
1265 
1266   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1267      symbol of state STATE-NUM.  */
1268 static const yytype_uint8 yystos[] =
1269 {
1270        0,    12,    30,    39,    40,    41,    42,    43,    44,    45,
1271       46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
1272       56,    57,    58,    59,    60,    61,    62,    63,    64,    65,
1273       66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
1274       76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
1275       86,    87,    88,    89,    90,    91,    92,    93,    94,    95,
1276       96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
1277      106,   107,   108,   109,   110,   111,   112,   113,   114,   115,
1278      116,   117,   118,   119,   130,   175,   176,   177,   178,   179,
1279      180,   181,   182,   183,   184,   127,   127,   127,   127,   127,
1280       11,   122,   127,   127,    11,    12,    13,    14,   122,   127,
1281      172,   123,     3,     4,     5,     6,    19,    29,   169,     4,
1282      144,   145,   147,   146,     3,     4,     5,     6,     7,     8,
1283        9,    10,    15,    16,    17,    18,    19,    20,    21,   122,
1284      169,   171,   174,   169,    11,    12,    13,    14,    23,   169,
1285      173,   143,   142,     4,    24,    17,   172,    17,   172,     3,
1286        3,    11,    12,     3,     3,     3,    11,    25,    26,    27,
1287       28,     3,     5,     6,    11,    12,     3,    11,     3,    11,
1288        0,     3,    29,   169,   171,    11,    23,    24,     3,    19,
1289       29,   169,   174,     3,    24,    29,   169,   174,     3,     4,
1290        5,     6,    29,   169,    11,    12,     3,     4,     5,     6,
1291        7,     8,     9,    10,    19,    29,   122,   123,   170,    29,
1292      169,   172,     3,    24,    29,   169,   174,    29,    29,    29,
1293       29,    29,    29,   122,    29,   122,    29,    29,   122,   122,
1294       29,   128,   139,   122,   120,   120,   128,    29,    29,   123,
1295      120,   120,   123,   120,   120,    29,   122,   123,   120,   120,
1296      120,   120,   120,   120,   120,   120,   120,   120,   120,   120,
1297      120,   120,   120,   120,   120,   120,   120,   131,   122,   120,
1298      120,   120,   120,   126,   126,   123,   126,   126,   126,   122,
1299      123,   126,   138,   122,   128,   140,    29,    14,   141,   122,
1300      123,   126,   120,   126,   123,   126,    29,    29,    29,    29,
1301      124,    29,   169,   121,   169,   171,   174,   122,   120,   120,
1302      123,    12,    13,    14,    23,     3,   121,   169,   121,   169,
1303      170,    14,    23,   121,   169,   173,    11,   121,   120,   123,
1304       29,    12,    13,    14,    23,    11,    23,    29,   121,   169,
1305       29,    29,    29,    29,    29,    29,    29,    29,    29,    29,
1306       29,    29,    29,    29,    29,    29,   169,   171,   173,     3,
1307       29,   121,   169,   171,   120,    29,     3,    29,   121,   169,
1308      172,   121,     3,    29,   169,   174,    29,    29,    14,    29,
1309       29,    29,    29,    14,    29,    29,   122,   123,   125,    29,
1310       14,    29,     3,    29,   169,   174,    29,    14,    29,   123,
1311       29,    29,   122,   123,    29,     3,   121,     3,   121,     5,
1312        6,    12,   124,   124,   125,   124,   125,   124,   125,    29,
1313       29,   122,    29,    29,   125,    29,    29,   122,   123,    29,
1314       11,   121,     5,     6,    12,   120,   124,   124,   125,   124,
1315      125,   124,   125,   168,    29,   122,   122,   123,   132,    29,
1316      122,   123,   121,   120,   133,    29,   122,   123,    29,   126,
1317      126,   123,   126,   120,   120,   124,   120,   126,   124,    29,
1318       14,    29,   125,   120,   126,   126,   123,   126,   120,   124,
1319      120,    14,   123,   150,    29,    12,    13,    14,    23,   120,
1320       29,   149,    29,   124,   124,   124,   120,   120,    29,   120,
1321        5,     6,    29,   120,    29,   151,    29,   153,    29,   123,
1322      162,    29,    12,    13,    14,    23,   163,    29,   124,   124,
1323      124,    11,   120,   120,    29,   120,    29,   120,    29,    29,
1324       29,    13,    14,    29,    14,    29,   121,    29,    14,    29,
1325       29,    14,    29,   127,   127,   126,   127,    29,   126,   125,
1326      124,    29,    24,    29,    29,    14,    29,    24,   126,    24,
1327      125,     5,     6,    12,   124,   124,   125,   124,   125,   124,
1328      125,     3,   121,   148,   120,   120,   120,     3,   121,     3,
1329      124,     3,   124,   124,   124,     3,   121,   124,   152,   154,
1330      124,     5,     6,    12,   124,   124,   125,   124,   125,   124,
1331      125,   161,   120,   120,   120,    11,    11,   124,    11,   124,
1332       11,   124,   124,   125,   124,   125,   124,   125,    29,   124,
1333      125,   136,   135,   124,   134,    29,    29,    29,    29,    29,
1334       29,   124,   124,    29,    29,   124,   124,   124,    29,     5,
1335        6,    29,   158,    29,    29,     3,   121,     3,   121,     3,
1336      121,    29,   120,   120,   120,   120,   160,    29,   120,   120,
1337      124,   124,   124,    29,    29,   165,    29,    11,    11,    11,
1338      120,   120,   167,   120,    29,     5,     6,    29,     5,     6,
1339       29,    29,   126,   120,   124,   126,   120,   124,   124,   124,
1340      124,   124,   124,    29,    29,    29,     3,   121,     3,     3,
1341        3,   121,   156,     3,   121,     4,   124,   124,   124,    11,
1342       11,    11,   124,   124,   124,   124,   124,   124,   124,   124,
1343       29,   127,    29,    24,   157,    29,    29,   159,    29,   164,
1344      166,   137,    29,   155
1345 };
1346 
1347   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
1348 static const yytype_uint8 yyr1[] =
1349 {
1350        0,   129,   130,   130,   131,   130,   130,   130,   130,   132,
1351      130,   130,   130,   130,   130,   130,   130,   130,   130,   133,
1352      130,   130,   130,   130,   130,   134,   130,   135,   130,   136,
1353      130,   137,   130,   130,   130,   130,   130,   130,   130,   130,
1354      130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
1355      130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
1356      130,   130,   130,   130,   130,   138,   130,   130,   130,   130,
1357      130,   130,   130,   130,   139,   130,   130,   130,   130,   140,
1358      130,   130,   130,   130,   130,   130,   141,   130,   130,   130,
1359      130,   130,   142,   130,   143,   130,   130,   144,   130,   145,
1360      130,   146,   130,   147,   130,   130,   130,   130,   130,   148,
1361      130,   130,   130,   130,   130,   149,   130,   130,   130,   130,
1362      130,   150,   130,   151,   152,   130,   130,   130,   153,   154,
1363      130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
1364      130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
1365      130,   130,   130,   130,   130,   130,   130,   155,   130,   156,
1366      130,   157,   130,   158,   130,   159,   130,   160,   130,   130,
1367      130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
1368      161,   130,   162,   130,   163,   130,   130,   130,   130,   130,
1369      130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
1370      130,   130,   130,   130,   130,   130,   164,   130,   165,   130,
1371      166,   130,   167,   130,   168,   130,   130,   130,   130,   130,
1372      130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
1373      130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
1374      130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
1375      130,   130,   130,   130,   130,   130,   130,   130,   130,   130,
1376      130,   130,   130,   130,   130,   130,   169,   169,   170,   170,
1377      170,   170,   170,   170,   170,   170,   171,   171,   171,   171,
1378      171,   171,   171,   172,   172,   172,   172,   173,   173,   173,
1379      174,   174,   174,   174,   174,   174,   174,   175,   175,   175,
1380      175,   175,   175,   175,   175,   176,   176,   176,   177,   177,
1381      177,   178,   178,   178,   179,   179,   180,   180,   181,   181,
1382      182,   182,   183,   183,   184
1383 };
1384 
1385   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
1386 static const yytype_uint8 yyr2[] =
1387 {
1388        0,     2,     1,     5,     0,     6,     4,     4,     4,     0,
1389        5,     6,     7,     9,     9,     9,     7,     5,     4,     0,
1390        5,     6,     9,     7,     5,     0,     7,     0,     7,     0,
1391        7,     0,    10,     3,     3,     3,     3,     3,     3,     7,
1392        7,     7,    10,     2,     3,     4,     3,     4,     1,     1,
1393        2,     4,     3,     4,     4,     2,     4,     4,     4,     6,
1394        7,     2,     2,     2,     2,     0,     3,     4,     2,     2,
1395        2,     2,     2,     2,     0,     3,     4,     9,     2,     0,
1396        3,     3,     5,     6,     8,     2,     0,     3,     4,     7,
1397        1,     1,     0,     2,     0,     2,     2,     0,     2,     0,
1398        2,     0,     2,     0,     2,     1,     5,     5,     5,     0,
1399        7,     6,     8,     4,     4,     0,     6,     6,     5,     7,
1400        6,     0,     6,     0,     0,     7,     4,     4,     0,     0,
1401        7,     7,     7,    10,     9,     9,     7,     7,    10,     9,
1402        9,     9,     9,     9,     9,     9,     8,     8,     9,     8,
1403        8,     9,     8,     8,     7,     8,     7,     0,    11,     0,
1404        9,     0,    10,     0,     8,     0,    10,     0,     8,     6,
1405        6,     6,     9,     6,     6,     6,     9,     9,     5,     5,
1406        0,     7,     0,     6,     0,     6,     4,     4,     6,     6,
1407        7,     7,     9,     9,     7,     7,     9,     9,     8,     8,
1408        8,     8,     8,     7,     8,     7,     0,    10,     0,     8,
1409        0,    10,     0,     8,     0,     5,     6,     5,     4,     4,
1410        4,     1,     2,     2,     2,     2,     2,     1,     1,     1,
1411        4,     4,     4,     4,     4,     4,     4,     4,     2,     2,
1412        2,     2,     4,     4,     4,     4,     4,     4,     4,     1,
1413        1,     1,     1,     1,     1,     1,     4,     6,     7,     9,
1414        7,     9,     9,     9,     4,     4,     0,     2,     1,     1,
1415        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1416        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1417        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1418        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1419        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1420        1,     1,     1,     1,     1
1421 };
1422 
1423 
1424 #define yyerrok         (yyerrstatus = 0)
1425 #define yyclearin       (yychar = YYEMPTY)
1426 #define YYEMPTY         (-2)
1427 #define YYEOF           0
1428 
1429 #define YYACCEPT        goto yyacceptlab
1430 #define YYABORT         goto yyabortlab
1431 #define YYERROR         goto yyerrorlab
1432 
1433 
1434 #define YYRECOVERING()  (!!yyerrstatus)
1435 
1436 #define YYBACKUP(Token, Value)                                  \
1437 do                                                              \
1438   if (yychar == YYEMPTY)                                        \
1439     {                                                           \
1440       yychar = (Token);                                         \
1441       yylval = (Value);                                         \
1442       YYPOPSTACK (yylen);                                       \
1443       yystate = *yyssp;                                         \
1444       goto yybackup;                                            \
1445     }                                                           \
1446   else                                                          \
1447     {                                                           \
1448       yyerror (YY_("syntax error: cannot back up")); \
1449       YYERROR;                                                  \
1450     }                                                           \
1451 while (0)
1452 
1453 /* Error token number */
1454 #define YYTERROR        1
1455 #define YYERRCODE       256
1456 
1457 
1458 
1459 /* Enable debugging if requested.  */
1460 #if YYDEBUG
1461 
1462 # ifndef YYFPRINTF
1463 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1464 #  define YYFPRINTF fprintf
1465 # endif
1466 
1467 # define YYDPRINTF(Args)                        \
1468 do {                                            \
1469   if (yydebug)                                  \
1470     YYFPRINTF Args;                             \
1471 } while (0)
1472 
1473 /* This macro is provided for backward compatibility. */
1474 #ifndef YY_LOCATION_PRINT
1475 # define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1476 #endif
1477 
1478 
1479 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
1480 do {                                                                      \
1481   if (yydebug)                                                            \
1482     {                                                                     \
1483       YYFPRINTF (stderr, "%s ", Title);                                   \
1484       yy_symbol_print (stderr,                                            \
1485                   Type, Value); \
1486       YYFPRINTF (stderr, "\n");                                           \
1487     }                                                                     \
1488 } while (0)
1489 
1490 
1491 /*----------------------------------------.
1492 | Print this symbol's value on YYOUTPUT.  |
1493 `----------------------------------------*/
1494 
1495 static void
yy_symbol_value_print(FILE * yyoutput,int yytype,YYSTYPE const * const yyvaluep)1496 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1497 {
1498   FILE *yyo = yyoutput;
1499   YYUSE (yyo);
1500   if (!yyvaluep)
1501     return;
1502 # ifdef YYPRINT
1503   if (yytype < YYNTOKENS)
1504     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1505 # endif
1506   YYUSE (yytype);
1507 }
1508 
1509 
1510 /*--------------------------------.
1511 | Print this symbol on YYOUTPUT.  |
1512 `--------------------------------*/
1513 
1514 static void
yy_symbol_print(FILE * yyoutput,int yytype,YYSTYPE const * const yyvaluep)1515 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1516 {
1517   YYFPRINTF (yyoutput, "%s %s (",
1518              yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
1519 
1520   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
1521   YYFPRINTF (yyoutput, ")");
1522 }
1523 
1524 /*------------------------------------------------------------------.
1525 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1526 | TOP (included).                                                   |
1527 `------------------------------------------------------------------*/
1528 
1529 static void
yy_stack_print(yytype_int16 * yybottom,yytype_int16 * yytop)1530 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
1531 {
1532   YYFPRINTF (stderr, "Stack now");
1533   for (; yybottom <= yytop; yybottom++)
1534     {
1535       int yybot = *yybottom;
1536       YYFPRINTF (stderr, " %d", yybot);
1537     }
1538   YYFPRINTF (stderr, "\n");
1539 }
1540 
1541 # define YY_STACK_PRINT(Bottom, Top)                            \
1542 do {                                                            \
1543   if (yydebug)                                                  \
1544     yy_stack_print ((Bottom), (Top));                           \
1545 } while (0)
1546 
1547 
1548 /*------------------------------------------------.
1549 | Report that the YYRULE is going to be reduced.  |
1550 `------------------------------------------------*/
1551 
1552 static void
yy_reduce_print(yytype_int16 * yyssp,YYSTYPE * yyvsp,int yyrule)1553 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
1554 {
1555   unsigned long int yylno = yyrline[yyrule];
1556   int yynrhs = yyr2[yyrule];
1557   int yyi;
1558   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
1559              yyrule - 1, yylno);
1560   /* The symbols being reduced.  */
1561   for (yyi = 0; yyi < yynrhs; yyi++)
1562     {
1563       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
1564       yy_symbol_print (stderr,
1565                        yystos[yyssp[yyi + 1 - yynrhs]],
1566                        &(yyvsp[(yyi + 1) - (yynrhs)])
1567                                               );
1568       YYFPRINTF (stderr, "\n");
1569     }
1570 }
1571 
1572 # define YY_REDUCE_PRINT(Rule)          \
1573 do {                                    \
1574   if (yydebug)                          \
1575     yy_reduce_print (yyssp, yyvsp, Rule); \
1576 } while (0)
1577 
1578 /* Nonzero means print parse trace.  It is left uninitialized so that
1579    multiple parsers can coexist.  */
1580 int yydebug;
1581 #else /* !YYDEBUG */
1582 # define YYDPRINTF(Args)
1583 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1584 # define YY_STACK_PRINT(Bottom, Top)
1585 # define YY_REDUCE_PRINT(Rule)
1586 #endif /* !YYDEBUG */
1587 
1588 
1589 /* YYINITDEPTH -- initial size of the parser's stacks.  */
1590 #ifndef YYINITDEPTH
1591 # define YYINITDEPTH 200
1592 #endif
1593 
1594 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1595    if the built-in stack extension method is used).
1596 
1597    Do not make this value too large; the results are undefined if
1598    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1599    evaluated with infinite-precision integer arithmetic.  */
1600 
1601 #ifndef YYMAXDEPTH
1602 # define YYMAXDEPTH 10000
1603 #endif
1604 
1605 
1606 #if YYERROR_VERBOSE
1607 
1608 # ifndef yystrlen
1609 #  if defined __GLIBC__ && defined _STRING_H
1610 #   define yystrlen strlen
1611 #  else
1612 /* Return the length of YYSTR.  */
1613 static YYSIZE_T
yystrlen(const char * yystr)1614 yystrlen (const char *yystr)
1615 {
1616   YYSIZE_T yylen;
1617   for (yylen = 0; yystr[yylen]; yylen++)
1618     continue;
1619   return yylen;
1620 }
1621 #  endif
1622 # endif
1623 
1624 # ifndef yystpcpy
1625 #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1626 #   define yystpcpy stpcpy
1627 #  else
1628 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1629    YYDEST.  */
1630 static char *
yystpcpy(char * yydest,const char * yysrc)1631 yystpcpy (char *yydest, const char *yysrc)
1632 {
1633   char *yyd = yydest;
1634   const char *yys = yysrc;
1635 
1636   while ((*yyd++ = *yys++) != '\0')
1637     continue;
1638 
1639   return yyd - 1;
1640 }
1641 #  endif
1642 # endif
1643 
1644 # ifndef yytnamerr
1645 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1646    quotes and backslashes, so that it's suitable for yyerror.  The
1647    heuristic is that double-quoting is unnecessary unless the string
1648    contains an apostrophe, a comma, or backslash (other than
1649    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
1650    null, do not copy; instead, return the length of what the result
1651    would have been.  */
1652 static YYSIZE_T
yytnamerr(char * yyres,const char * yystr)1653 yytnamerr (char *yyres, const char *yystr)
1654 {
1655   if (*yystr == '"')
1656     {
1657       YYSIZE_T yyn = 0;
1658       char const *yyp = yystr;
1659 
1660       for (;;)
1661         switch (*++yyp)
1662           {
1663           case '\'':
1664           case ',':
1665             goto do_not_strip_quotes;
1666 
1667           case '\\':
1668             if (*++yyp != '\\')
1669               goto do_not_strip_quotes;
1670             /* Fall through.  */
1671           default:
1672             if (yyres)
1673               yyres[yyn] = *yyp;
1674             yyn++;
1675             break;
1676 
1677           case '"':
1678             if (yyres)
1679               yyres[yyn] = '\0';
1680             return yyn;
1681           }
1682     do_not_strip_quotes: ;
1683     }
1684 
1685   if (! yyres)
1686     return yystrlen (yystr);
1687 
1688   return yystpcpy (yyres, yystr) - yyres;
1689 }
1690 # endif
1691 
1692 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
1693    about the unexpected token YYTOKEN for the state stack whose top is
1694    YYSSP.
1695 
1696    Return 0 if *YYMSG was successfully written.  Return 1 if *YYMSG is
1697    not large enough to hold the message.  In that case, also set
1698    *YYMSG_ALLOC to the required number of bytes.  Return 2 if the
1699    required number of bytes is too large to store.  */
1700 static int
yysyntax_error(YYSIZE_T * yymsg_alloc,char ** yymsg,yytype_int16 * yyssp,int yytoken)1701 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
1702                 yytype_int16 *yyssp, int yytoken)
1703 {
1704   YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
1705   YYSIZE_T yysize = yysize0;
1706   enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1707   /* Internationalized format string. */
1708   const char *yyformat = YY_NULLPTR;
1709   /* Arguments of yyformat. */
1710   char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1711   /* Number of reported tokens (one for the "unexpected", one per
1712      "expected"). */
1713   int yycount = 0;
1714 
1715   /* There are many possibilities here to consider:
1716      - If this state is a consistent state with a default action, then
1717        the only way this function was invoked is if the default action
1718        is an error action.  In that case, don't check for expected
1719        tokens because there are none.
1720      - The only way there can be no lookahead present (in yychar) is if
1721        this state is a consistent state with a default action.  Thus,
1722        detecting the absence of a lookahead is sufficient to determine
1723        that there is no unexpected or expected token to report.  In that
1724        case, just report a simple "syntax error".
1725      - Don't assume there isn't a lookahead just because this state is a
1726        consistent state with a default action.  There might have been a
1727        previous inconsistent state, consistent state with a non-default
1728        action, or user semantic action that manipulated yychar.
1729      - Of course, the expected token list depends on states to have
1730        correct lookahead information, and it depends on the parser not
1731        to perform extra reductions after fetching a lookahead from the
1732        scanner and before detecting a syntax error.  Thus, state merging
1733        (from LALR or IELR) and default reductions corrupt the expected
1734        token list.  However, the list is correct for canonical LR with
1735        one exception: it will still contain any token that will not be
1736        accepted due to an error action in a later state.
1737   */
1738   if (yytoken != YYEMPTY)
1739     {
1740       int yyn = yypact[*yyssp];
1741       yyarg[yycount++] = yytname[yytoken];
1742       if (!yypact_value_is_default (yyn))
1743         {
1744           /* Start YYX at -YYN if negative to avoid negative indexes in
1745              YYCHECK.  In other words, skip the first -YYN actions for
1746              this state because they are default actions.  */
1747           int yyxbegin = yyn < 0 ? -yyn : 0;
1748           /* Stay within bounds of both yycheck and yytname.  */
1749           int yychecklim = YYLAST - yyn + 1;
1750           int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1751           int yyx;
1752 
1753           for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1754             if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
1755                 && !yytable_value_is_error (yytable[yyx + yyn]))
1756               {
1757                 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1758                   {
1759                     yycount = 1;
1760                     yysize = yysize0;
1761                     break;
1762                   }
1763                 yyarg[yycount++] = yytname[yyx];
1764                 {
1765                   YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
1766                   if (! (yysize <= yysize1
1767                          && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1768                     return 2;
1769                   yysize = yysize1;
1770                 }
1771               }
1772         }
1773     }
1774 
1775   switch (yycount)
1776     {
1777 # define YYCASE_(N, S)                      \
1778       case N:                               \
1779         yyformat = S;                       \
1780       break
1781     default: /* Avoid compiler warnings. */
1782       YYCASE_(0, YY_("syntax error"));
1783       YYCASE_(1, YY_("syntax error, unexpected %s"));
1784       YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
1785       YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
1786       YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
1787       YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
1788 # undef YYCASE_
1789     }
1790 
1791   {
1792     YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
1793     if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
1794       return 2;
1795     yysize = yysize1;
1796   }
1797 
1798   if (*yymsg_alloc < yysize)
1799     {
1800       *yymsg_alloc = 2 * yysize;
1801       if (! (yysize <= *yymsg_alloc
1802              && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
1803         *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
1804       return 1;
1805     }
1806 
1807   /* Avoid sprintf, as that infringes on the user's name space.
1808      Don't have undefined behavior even if the translation
1809      produced a string with the wrong number of "%s"s.  */
1810   {
1811     char *yyp = *yymsg;
1812     int yyi = 0;
1813     while ((*yyp = *yyformat) != '\0')
1814       if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
1815         {
1816           yyp += yytnamerr (yyp, yyarg[yyi++]);
1817           yyformat += 2;
1818         }
1819       else
1820         {
1821           yyp++;
1822           yyformat++;
1823         }
1824   }
1825   return 0;
1826 }
1827 #endif /* YYERROR_VERBOSE */
1828 
1829 /*-----------------------------------------------.
1830 | Release the memory associated to this symbol.  |
1831 `-----------------------------------------------*/
1832 
1833 static void
yydestruct(const char * yymsg,int yytype,YYSTYPE * yyvaluep)1834 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1835 {
1836   YYUSE (yyvaluep);
1837   if (!yymsg)
1838     yymsg = "Deleting";
1839   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1840 
1841   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1842   YYUSE (yytype);
1843   YY_IGNORE_MAYBE_UNINITIALIZED_END
1844 }
1845 
1846 
1847 
1848 
1849 /* The lookahead symbol.  */
1850 int yychar;
1851 
1852 /* The semantic value of the lookahead symbol.  */
1853 YYSTYPE yylval;
1854 /* Number of syntax errors so far.  */
1855 int yynerrs;
1856 
1857 
1858 /*----------.
1859 | yyparse.  |
1860 `----------*/
1861 
1862 int
yyparse(void)1863 yyparse (void)
1864 {
1865     int yystate;
1866     /* Number of tokens to shift before error messages enabled.  */
1867     int yyerrstatus;
1868 
1869     /* The stacks and their tools:
1870        'yyss': related to states.
1871        'yyvs': related to semantic values.
1872 
1873        Refer to the stacks through separate pointers, to allow yyoverflow
1874        to reallocate them elsewhere.  */
1875 
1876     /* The state stack.  */
1877     yytype_int16 yyssa[YYINITDEPTH];
1878     yytype_int16 *yyss;
1879     yytype_int16 *yyssp;
1880 
1881     /* The semantic value stack.  */
1882     YYSTYPE yyvsa[YYINITDEPTH];
1883     YYSTYPE *yyvs;
1884     YYSTYPE *yyvsp;
1885 
1886     YYSIZE_T yystacksize;
1887 
1888   int yyn;
1889   int yyresult;
1890   /* Lookahead token as an internal (translated) token number.  */
1891   int yytoken = 0;
1892   /* The variables used to return semantic value and location from the
1893      action routines.  */
1894   YYSTYPE yyval;
1895 
1896 #if YYERROR_VERBOSE
1897   /* Buffer for error messages, and its allocated size.  */
1898   char yymsgbuf[128];
1899   char *yymsg = yymsgbuf;
1900   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1901 #endif
1902 
1903 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
1904 
1905   /* The number of symbols on the RHS of the reduced rule.
1906      Keep to zero when no symbol should be popped.  */
1907   int yylen = 0;
1908 
1909   yyssp = yyss = yyssa;
1910   yyvsp = yyvs = yyvsa;
1911   yystacksize = YYINITDEPTH;
1912 
1913   YYDPRINTF ((stderr, "Starting parse\n"));
1914 
1915   yystate = 0;
1916   yyerrstatus = 0;
1917   yynerrs = 0;
1918   yychar = YYEMPTY; /* Cause a token to be read.  */
1919   goto yysetstate;
1920 
1921 /*------------------------------------------------------------.
1922 | yynewstate -- Push a new state, which is found in yystate.  |
1923 `------------------------------------------------------------*/
1924  yynewstate:
1925   /* In all cases, when you get here, the value and location stacks
1926      have just been pushed.  So pushing a state here evens the stacks.  */
1927   yyssp++;
1928 
1929  yysetstate:
1930   *yyssp = yystate;
1931 
1932   if (yyss + yystacksize - 1 <= yyssp)
1933     {
1934       /* Get the current used size of the three stacks, in elements.  */
1935       YYSIZE_T yysize = yyssp - yyss + 1;
1936 
1937 #ifdef yyoverflow
1938       {
1939         /* Give user a chance to reallocate the stack.  Use copies of
1940            these so that the &'s don't force the real ones into
1941            memory.  */
1942         YYSTYPE *yyvs1 = yyvs;
1943         yytype_int16 *yyss1 = yyss;
1944 
1945         /* Each stack pointer address is followed by the size of the
1946            data in use in that stack, in bytes.  This used to be a
1947            conditional around just the two extra args, but that might
1948            be undefined if yyoverflow is a macro.  */
1949         yyoverflow (YY_("memory exhausted"),
1950                     &yyss1, yysize * sizeof (*yyssp),
1951                     &yyvs1, yysize * sizeof (*yyvsp),
1952                     &yystacksize);
1953 
1954         yyss = yyss1;
1955         yyvs = yyvs1;
1956       }
1957 #else /* no yyoverflow */
1958 # ifndef YYSTACK_RELOCATE
1959       goto yyexhaustedlab;
1960 # else
1961       /* Extend the stack our own way.  */
1962       if (YYMAXDEPTH <= yystacksize)
1963         goto yyexhaustedlab;
1964       yystacksize *= 2;
1965       if (YYMAXDEPTH < yystacksize)
1966         yystacksize = YYMAXDEPTH;
1967 
1968       {
1969         yytype_int16 *yyss1 = yyss;
1970         union yyalloc *yyptr =
1971           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1972         if (! yyptr)
1973           goto yyexhaustedlab;
1974         YYSTACK_RELOCATE (yyss_alloc, yyss);
1975         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1976 #  undef YYSTACK_RELOCATE
1977         if (yyss1 != yyssa)
1978           YYSTACK_FREE (yyss1);
1979       }
1980 # endif
1981 #endif /* no yyoverflow */
1982 
1983       yyssp = yyss + yysize - 1;
1984       yyvsp = yyvs + yysize - 1;
1985 
1986       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1987                   (unsigned long int) yystacksize));
1988 
1989       if (yyss + yystacksize - 1 <= yyssp)
1990         YYABORT;
1991     }
1992 
1993   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1994 
1995   if (yystate == YYFINAL)
1996     YYACCEPT;
1997 
1998   goto yybackup;
1999 
2000 /*-----------.
2001 | yybackup.  |
2002 `-----------*/
2003 yybackup:
2004 
2005   /* Do appropriate processing given the current state.  Read a
2006      lookahead token if we need one and don't already have one.  */
2007 
2008   /* First try to decide what to do without reference to lookahead token.  */
2009   yyn = yypact[yystate];
2010   if (yypact_value_is_default (yyn))
2011     goto yydefault;
2012 
2013   /* Not known => get a lookahead token if don't already have one.  */
2014 
2015   /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
2016   if (yychar == YYEMPTY)
2017     {
2018       YYDPRINTF ((stderr, "Reading a token: "));
2019       yychar = yylex ();
2020     }
2021 
2022   if (yychar <= YYEOF)
2023     {
2024       yychar = yytoken = YYEOF;
2025       YYDPRINTF ((stderr, "Now at end of input.\n"));
2026     }
2027   else
2028     {
2029       yytoken = YYTRANSLATE (yychar);
2030       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
2031     }
2032 
2033   /* If the proper action on seeing token YYTOKEN is to reduce or to
2034      detect an error, take that action.  */
2035   yyn += yytoken;
2036   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
2037     goto yydefault;
2038   yyn = yytable[yyn];
2039   if (yyn <= 0)
2040     {
2041       if (yytable_value_is_error (yyn))
2042         goto yyerrlab;
2043       yyn = -yyn;
2044       goto yyreduce;
2045     }
2046 
2047   /* Count tokens shifted since error; after three, turn off error
2048      status.  */
2049   if (yyerrstatus)
2050     yyerrstatus--;
2051 
2052   /* Shift the lookahead token.  */
2053   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
2054 
2055   /* Discard the shifted token.  */
2056   yychar = YYEMPTY;
2057 
2058   yystate = yyn;
2059   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2060   *++yyvsp = yylval;
2061   YY_IGNORE_MAYBE_UNINITIALIZED_END
2062 
2063   goto yynewstate;
2064 
2065 
2066 /*-----------------------------------------------------------.
2067 | yydefault -- do the default action for the current state.  |
2068 `-----------------------------------------------------------*/
2069 yydefault:
2070   yyn = yydefact[yystate];
2071   if (yyn == 0)
2072     goto yyerrlab;
2073   goto yyreduce;
2074 
2075 
2076 /*-----------------------------.
2077 | yyreduce -- Do a reduction.  |
2078 `-----------------------------*/
2079 yyreduce:
2080   /* yyn is the number of a rule to reduce with.  */
2081   yylen = yyr2[yyn];
2082 
2083   /* If YYLEN is nonzero, implement the default value of the action:
2084      '$$ = $1'.
2085 
2086      Otherwise, the following line sets YYVAL to garbage.
2087      This behavior is undocumented and Bison
2088      users should not rely upon it.  Assigning to YYVAL
2089      unconditionally makes the parser a bit smaller, and it avoids a
2090      GCC warning that YYVAL may be used uninitialized.  */
2091   yyval = yyvsp[1-yylen];
2092 
2093 
2094   YY_REDUCE_PRINT (yyn);
2095   switch (yyn)
2096     {
2097         case 2:
2098 #line 188 "./config/rl78-parse.y" /* yacc.c:1648  */
2099     { as_bad (_("Unknown opcode: %s"), rl78_init_start); }
2100 #line 2101 "rl78-parse.c" /* yacc.c:1648  */
2101     break;
2102 
2103   case 3:
2104 #line 209 "./config/rl78-parse.y" /* yacc.c:1648  */
2105     { B1 (0x0c|(yyvsp[-4].regno)); O1 ((yyvsp[0].exp)); }
2106 #line 2107 "rl78-parse.c" /* yacc.c:1648  */
2107     break;
2108 
2109   case 4:
2110 #line 211 "./config/rl78-parse.y" /* yacc.c:1648  */
2111     {SA((yyvsp[0].exp))}
2112 #line 2113 "rl78-parse.c" /* yacc.c:1648  */
2113     break;
2114 
2115   case 5:
2116 #line 212 "./config/rl78-parse.y" /* yacc.c:1648  */
2117     { B1 (0x0a|(yyvsp[-5].regno)); SET_SA ((yyvsp[-4].exp)); O1 ((yyvsp[-4].exp)); O1 ((yyvsp[0].exp)); }
2118 #line 2119 "rl78-parse.c" /* yacc.c:1648  */
2119     break;
2120 
2121   case 6:
2122 #line 215 "./config/rl78-parse.y" /* yacc.c:1648  */
2123     { B2 (0x61, 0x01|(yyvsp[-3].regno)); }
2124 #line 2125 "rl78-parse.c" /* yacc.c:1648  */
2125     break;
2126 
2127   case 7:
2128 #line 218 "./config/rl78-parse.y" /* yacc.c:1648  */
2129     { B2 (0x61, 0x08|(yyvsp[-3].regno)); F ((yyvsp[0].regno), 13, 3); }
2130 #line 2131 "rl78-parse.c" /* yacc.c:1648  */
2131     break;
2132 
2133   case 8:
2134 #line 221 "./config/rl78-parse.y" /* yacc.c:1648  */
2135     { B2 (0x61, 0x00|(yyvsp[-3].regno)); F ((yyvsp[-2].regno), 13, 3); }
2136 #line 2137 "rl78-parse.c" /* yacc.c:1648  */
2137     break;
2138 
2139   case 9:
2140 #line 223 "./config/rl78-parse.y" /* yacc.c:1648  */
2141     {SA((yyvsp[0].exp))}
2142 #line 2143 "rl78-parse.c" /* yacc.c:1648  */
2143     break;
2144 
2145   case 10:
2146 #line 224 "./config/rl78-parse.y" /* yacc.c:1648  */
2147     { B1 (0x0b|(yyvsp[-4].regno)); SET_SA ((yyvsp[-1].exp)); O1 ((yyvsp[-1].exp)); }
2148 #line 2149 "rl78-parse.c" /* yacc.c:1648  */
2149     break;
2150 
2151   case 11:
2152 #line 227 "./config/rl78-parse.y" /* yacc.c:1648  */
2153     { B1 (0x0f|(yyvsp[-5].regno)); O2 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); }
2154 #line 2155 "rl78-parse.c" /* yacc.c:1648  */
2155     break;
2156 
2157   case 12:
2158 #line 230 "./config/rl78-parse.y" /* yacc.c:1648  */
2159     { B1 (0x0d|(yyvsp[-6].regno)); }
2160 #line 2161 "rl78-parse.c" /* yacc.c:1648  */
2161     break;
2162 
2163   case 13:
2164 #line 233 "./config/rl78-parse.y" /* yacc.c:1648  */
2165     { B1 (0x0e|(yyvsp[-8].regno)); O1 ((yyvsp[-1].exp)); }
2166 #line 2167 "rl78-parse.c" /* yacc.c:1648  */
2167     break;
2168 
2169   case 14:
2170 #line 236 "./config/rl78-parse.y" /* yacc.c:1648  */
2171     { B2 (0x61, 0x80|(yyvsp[-8].regno)); }
2172 #line 2173 "rl78-parse.c" /* yacc.c:1648  */
2173     break;
2174 
2175   case 15:
2176 #line 239 "./config/rl78-parse.y" /* yacc.c:1648  */
2177     { B2 (0x61, 0x82|(yyvsp[-8].regno)); }
2178 #line 2179 "rl78-parse.c" /* yacc.c:1648  */
2179     break;
2180 
2181   case 16:
2182 #line 242 "./config/rl78-parse.y" /* yacc.c:1648  */
2183     { if ((yyvsp[-6].regno) != 0x40)
2184 	      { rl78_error ("Only CMP takes these operands"); }
2185 	    else
2186 	      { B1 (0x00|(yyvsp[-6].regno)); O2 ((yyvsp[-3].exp)); O1 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); }
2187 	  }
2188 #line 2189 "rl78-parse.c" /* yacc.c:1648  */
2189     break;
2190 
2191   case 17:
2192 #line 251 "./config/rl78-parse.y" /* yacc.c:1648  */
2193     { B1 (0x04|(yyvsp[-4].regno)); O2 ((yyvsp[0].exp)); }
2194 #line 2195 "rl78-parse.c" /* yacc.c:1648  */
2195     break;
2196 
2197   case 18:
2198 #line 254 "./config/rl78-parse.y" /* yacc.c:1648  */
2199     { B1 (0x01|(yyvsp[-3].regno)); F ((yyvsp[0].regno), 5, 2); }
2200 #line 2201 "rl78-parse.c" /* yacc.c:1648  */
2201     break;
2202 
2203   case 19:
2204 #line 256 "./config/rl78-parse.y" /* yacc.c:1648  */
2205     {SA((yyvsp[0].exp))}
2206 #line 2207 "rl78-parse.c" /* yacc.c:1648  */
2207     break;
2208 
2209   case 20:
2210 #line 257 "./config/rl78-parse.y" /* yacc.c:1648  */
2211     { B1 (0x06|(yyvsp[-4].regno)); SET_SA ((yyvsp[-1].exp)); O1 ((yyvsp[-1].exp)); }
2212 #line 2213 "rl78-parse.c" /* yacc.c:1648  */
2213     break;
2214 
2215   case 21:
2216 #line 260 "./config/rl78-parse.y" /* yacc.c:1648  */
2217     { B1 (0x02|(yyvsp[-5].regno)); O2 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); }
2218 #line 2219 "rl78-parse.c" /* yacc.c:1648  */
2219     break;
2220 
2221   case 22:
2222 #line 263 "./config/rl78-parse.y" /* yacc.c:1648  */
2223     { B2 (0x61, 0x09|(yyvsp[-8].regno)); O1 ((yyvsp[-1].exp)); }
2224 #line 2225 "rl78-parse.c" /* yacc.c:1648  */
2225     break;
2226 
2227   case 23:
2228 #line 266 "./config/rl78-parse.y" /* yacc.c:1648  */
2229     { B3 (0x61, 0x09|(yyvsp[-6].regno), 0); }
2230 #line 2231 "rl78-parse.c" /* yacc.c:1648  */
2231     break;
2232 
2233   case 24:
2234 #line 269 "./config/rl78-parse.y" /* yacc.c:1648  */
2235     { B1 ((yyvsp[-4].regno) ? 0x20 : 0x10); O1 ((yyvsp[0].exp));
2236 	    if ((yyvsp[-4].regno) == 0x40)
2237 	      rl78_error ("CMPW SP,#imm not allowed");
2238 	  }
2239 #line 2240 "rl78-parse.c" /* yacc.c:1648  */
2240     break;
2241 
2242   case 25:
2243 #line 276 "./config/rl78-parse.y" /* yacc.c:1648  */
2244     {Bit((yyvsp[0].exp))}
2245 #line 2246 "rl78-parse.c" /* yacc.c:1648  */
2246     break;
2247 
2248   case 26:
2249 #line 277 "./config/rl78-parse.y" /* yacc.c:1648  */
2250     { B3 (0x71, 0x08|(yyvsp[-6].regno), (yyvsp[-3].regno)); FE ((yyvsp[-1].exp), 9, 3); }
2251 #line 2252 "rl78-parse.c" /* yacc.c:1648  */
2252     break;
2253 
2254   case 27:
2255 #line 279 "./config/rl78-parse.y" /* yacc.c:1648  */
2256     {Bit((yyvsp[0].exp))}
2257 #line 2258 "rl78-parse.c" /* yacc.c:1648  */
2258     break;
2259 
2260   case 28:
2261 #line 280 "./config/rl78-parse.y" /* yacc.c:1648  */
2262     { if (expr_is_sfr ((yyvsp[-3].exp)))
2263 	      { B2 (0x71, 0x08|(yyvsp[-6].regno)); FE ((yyvsp[-1].exp), 9, 3); O1 ((yyvsp[-3].exp)); }
2264 	    else if (expr_is_saddr ((yyvsp[-3].exp)))
2265 	      { B2 (0x71, 0x00|(yyvsp[-6].regno)); FE ((yyvsp[-1].exp), 9, 3); SET_SA ((yyvsp[-3].exp)); O1 ((yyvsp[-3].exp)); }
2266 	    else
2267 	      NOT_SFR_OR_SADDR;
2268 	  }
2269 #line 2270 "rl78-parse.c" /* yacc.c:1648  */
2270     break;
2271 
2272   case 29:
2273 #line 288 "./config/rl78-parse.y" /* yacc.c:1648  */
2274     {Bit((yyvsp[0].exp))}
2275 #line 2276 "rl78-parse.c" /* yacc.c:1648  */
2276     break;
2277 
2278   case 30:
2279 #line 289 "./config/rl78-parse.y" /* yacc.c:1648  */
2280     { B2 (0x71, 0x88|(yyvsp[-6].regno));  FE ((yyvsp[-1].exp), 9, 3); }
2281 #line 2282 "rl78-parse.c" /* yacc.c:1648  */
2282     break;
2283 
2284   case 31:
2285 #line 291 "./config/rl78-parse.y" /* yacc.c:1648  */
2286     {Bit((yyvsp[0].exp))}
2287 #line 2288 "rl78-parse.c" /* yacc.c:1648  */
2288     break;
2289 
2290   case 32:
2291 #line 292 "./config/rl78-parse.y" /* yacc.c:1648  */
2292     { B2 (0x71, 0x80|(yyvsp[-9].regno));  FE ((yyvsp[-1].exp), 9, 3); }
2293 #line 2294 "rl78-parse.c" /* yacc.c:1648  */
2294     break;
2295 
2296   case 33:
2297 #line 297 "./config/rl78-parse.y" /* yacc.c:1648  */
2298     { B1 (0xdc); PC1 ((yyvsp[0].exp)); rl78_linkrelax_branch (); }
2299 #line 2300 "rl78-parse.c" /* yacc.c:1648  */
2300     break;
2301 
2302   case 34:
2303 #line 300 "./config/rl78-parse.y" /* yacc.c:1648  */
2304     { B1 (0xde); PC1 ((yyvsp[0].exp)); rl78_linkrelax_branch (); }
2305 #line 2306 "rl78-parse.c" /* yacc.c:1648  */
2306     break;
2307 
2308   case 35:
2309 #line 303 "./config/rl78-parse.y" /* yacc.c:1648  */
2310     { B1 (0xdd); PC1 ((yyvsp[0].exp)); rl78_linkrelax_branch (); }
2311 #line 2312 "rl78-parse.c" /* yacc.c:1648  */
2312     break;
2313 
2314   case 36:
2315 #line 306 "./config/rl78-parse.y" /* yacc.c:1648  */
2316     { B1 (0xdf); PC1 ((yyvsp[0].exp)); rl78_linkrelax_branch (); }
2317 #line 2318 "rl78-parse.c" /* yacc.c:1648  */
2318     break;
2319 
2320   case 37:
2321 #line 309 "./config/rl78-parse.y" /* yacc.c:1648  */
2322     { B2 (0x61, 0xc3); PC1 ((yyvsp[0].exp)); rl78_linkrelax_branch (); }
2323 #line 2324 "rl78-parse.c" /* yacc.c:1648  */
2324     break;
2325 
2326   case 38:
2327 #line 312 "./config/rl78-parse.y" /* yacc.c:1648  */
2328     { B2 (0x61, 0xd3); PC1 ((yyvsp[0].exp)); rl78_linkrelax_branch (); }
2329 #line 2330 "rl78-parse.c" /* yacc.c:1648  */
2330     break;
2331 
2332   case 39:
2333 #line 317 "./config/rl78-parse.y" /* yacc.c:1648  */
2334     { B3 (0x31, 0x80|(yyvsp[-6].regno), (yyvsp[-5].regno)); FE ((yyvsp[-3].exp), 9, 3); PC1 ((yyvsp[0].exp)); }
2335 #line 2336 "rl78-parse.c" /* yacc.c:1648  */
2336     break;
2337 
2338   case 40:
2339 #line 320 "./config/rl78-parse.y" /* yacc.c:1648  */
2340     { if (expr_is_sfr ((yyvsp[-5].exp)))
2341 	      { B2 (0x31, 0x80|(yyvsp[-6].regno)); FE ((yyvsp[-3].exp), 9, 3); O1 ((yyvsp[-5].exp)); PC1 ((yyvsp[0].exp)); }
2342 	    else if (expr_is_saddr ((yyvsp[-5].exp)))
2343 	      { B2 (0x31, 0x00|(yyvsp[-6].regno)); FE ((yyvsp[-3].exp), 9, 3); SET_SA ((yyvsp[-5].exp)); O1 ((yyvsp[-5].exp)); PC1 ((yyvsp[0].exp)); }
2344 	    else
2345 	      NOT_SFR_OR_SADDR;
2346 	  }
2347 #line 2348 "rl78-parse.c" /* yacc.c:1648  */
2348     break;
2349 
2350   case 41:
2351 #line 329 "./config/rl78-parse.y" /* yacc.c:1648  */
2352     { B2 (0x31, 0x01|(yyvsp[-6].regno)); FE ((yyvsp[-3].exp), 9, 3); PC1 ((yyvsp[0].exp)); }
2353 #line 2354 "rl78-parse.c" /* yacc.c:1648  */
2354     break;
2355 
2356   case 42:
2357 #line 332 "./config/rl78-parse.y" /* yacc.c:1648  */
2358     { B2 (0x31, 0x81|(yyvsp[-9].regno)); FE ((yyvsp[-3].exp), 9, 3); PC1 ((yyvsp[0].exp)); }
2359 #line 2360 "rl78-parse.c" /* yacc.c:1648  */
2360     break;
2361 
2362   case 43:
2363 #line 337 "./config/rl78-parse.y" /* yacc.c:1648  */
2364     { B2 (0x61, 0xcb); }
2365 #line 2366 "rl78-parse.c" /* yacc.c:1648  */
2366     break;
2367 
2368   case 44:
2369 #line 340 "./config/rl78-parse.y" /* yacc.c:1648  */
2370     { B1 (0xef); PC1 ((yyvsp[0].exp)); rl78_linkrelax_branch (); }
2371 #line 2372 "rl78-parse.c" /* yacc.c:1648  */
2372     break;
2373 
2374   case 45:
2375 #line 343 "./config/rl78-parse.y" /* yacc.c:1648  */
2376     { B1 (0xee); PC2 ((yyvsp[0].exp)); rl78_linkrelax_branch (); }
2377 #line 2378 "rl78-parse.c" /* yacc.c:1648  */
2378     break;
2379 
2380   case 46:
2381 #line 346 "./config/rl78-parse.y" /* yacc.c:1648  */
2382     { B1 (0xed); O2 ((yyvsp[0].exp)); rl78_linkrelax_branch (); }
2383 #line 2384 "rl78-parse.c" /* yacc.c:1648  */
2384     break;
2385 
2386   case 47:
2387 #line 349 "./config/rl78-parse.y" /* yacc.c:1648  */
2388     { B1 (0xec); O3 ((yyvsp[0].exp)); rl78_linkrelax_branch (); }
2389 #line 2390 "rl78-parse.c" /* yacc.c:1648  */
2390     break;
2391 
2392   case 48:
2393 #line 354 "./config/rl78-parse.y" /* yacc.c:1648  */
2394     { B2 (0x61, 0xcc); }
2395 #line 2396 "rl78-parse.c" /* yacc.c:1648  */
2396     break;
2397 
2398   case 49:
2399 #line 357 "./config/rl78-parse.y" /* yacc.c:1648  */
2400     { B1 (0xff); }
2401 #line 2402 "rl78-parse.c" /* yacc.c:1648  */
2402     break;
2403 
2404   case 50:
2405 #line 362 "./config/rl78-parse.y" /* yacc.c:1648  */
2406     { B2 (0x61, 0xca); F ((yyvsp[0].regno), 10, 2); }
2407 #line 2408 "rl78-parse.c" /* yacc.c:1648  */
2408     break;
2409 
2410   case 51:
2411 #line 365 "./config/rl78-parse.y" /* yacc.c:1648  */
2412     { B1 (0xfe); PC2 ((yyvsp[0].exp)); }
2413 #line 2414 "rl78-parse.c" /* yacc.c:1648  */
2414     break;
2415 
2416   case 52:
2417 #line 368 "./config/rl78-parse.y" /* yacc.c:1648  */
2418     { B1 (0xfd); O2 ((yyvsp[0].exp)); }
2419 #line 2420 "rl78-parse.c" /* yacc.c:1648  */
2420     break;
2421 
2422   case 53:
2423 #line 371 "./config/rl78-parse.y" /* yacc.c:1648  */
2424     { B1 (0xfc); O3 ((yyvsp[0].exp)); rl78_linkrelax_branch (); }
2425 #line 2426 "rl78-parse.c" /* yacc.c:1648  */
2426     break;
2427 
2428   case 54:
2429 #line 374 "./config/rl78-parse.y" /* yacc.c:1648  */
2430     { if ((yyvsp[-1].exp).X_op != O_constant)
2431 	      rl78_error ("CALLT requires a numeric address");
2432 	    else
2433 	      {
2434 	        int i = (yyvsp[-1].exp).X_add_number;
2435 		if (i < 0x80 || i > 0xbe)
2436 		  rl78_error ("CALLT address not 0x80..0xbe");
2437 		else if (i & 1)
2438 		  rl78_error ("CALLT address not even");
2439 		else
2440 		  {
2441 		    B2 (0x61, 0x84);
2442 	    	    F ((i >> 1) & 7, 9, 3);
2443 	    	    F ((i >> 4) & 7, 14, 2);
2444 		  }
2445 	      }
2446 	  }
2447 #line 2448 "rl78-parse.c" /* yacc.c:1648  */
2448     break;
2449 
2450   case 55:
2451 #line 395 "./config/rl78-parse.y" /* yacc.c:1648  */
2452     { B2 (0x71, (yyvsp[-1].regno) ? 0x88 : 0x80); }
2453 #line 2454 "rl78-parse.c" /* yacc.c:1648  */
2454     break;
2455 
2456   case 56:
2457 #line 398 "./config/rl78-parse.y" /* yacc.c:1648  */
2458     { B3 (0x71, 0x0a|(yyvsp[-3].regno), (yyvsp[-2].regno)); FE ((yyvsp[0].exp), 9, 3); }
2459 #line 2460 "rl78-parse.c" /* yacc.c:1648  */
2460     break;
2461 
2462   case 57:
2463 #line 401 "./config/rl78-parse.y" /* yacc.c:1648  */
2464     { if (expr_is_sfr ((yyvsp[-2].exp)))
2465 	      { B2 (0x71, 0x0a|(yyvsp[-3].regno)); FE ((yyvsp[0].exp), 9, 3); O1 ((yyvsp[-2].exp)); }
2466 	    else if (expr_is_saddr ((yyvsp[-2].exp)))
2467 	      { B2 (0x71, 0x02|(yyvsp[-3].regno)); FE ((yyvsp[0].exp), 9, 3); SET_SA ((yyvsp[-2].exp)); O1 ((yyvsp[-2].exp)); }
2468 	    else
2469 	      NOT_SFR_OR_SADDR;
2470 	  }
2471 #line 2472 "rl78-parse.c" /* yacc.c:1648  */
2472     break;
2473 
2474   case 58:
2475 #line 410 "./config/rl78-parse.y" /* yacc.c:1648  */
2476     { B2 (0x71, 0x8a|(yyvsp[-3].regno));  FE ((yyvsp[0].exp), 9, 3); }
2477 #line 2478 "rl78-parse.c" /* yacc.c:1648  */
2478     break;
2479 
2480   case 59:
2481 #line 413 "./config/rl78-parse.y" /* yacc.c:1648  */
2482     { B2 (0x71, 0x00+(yyvsp[-5].regno)*0x08); FE ((yyvsp[0].exp), 9, 3); O2 ((yyvsp[-2].exp)); rl78_linkrelax_addr16 (); }
2483 #line 2484 "rl78-parse.c" /* yacc.c:1648  */
2484     break;
2485 
2486   case 60:
2487 #line 416 "./config/rl78-parse.y" /* yacc.c:1648  */
2488     { B2 (0x71, 0x82|(yyvsp[-6].regno)); FE ((yyvsp[0].exp), 9, 3); }
2489 #line 2490 "rl78-parse.c" /* yacc.c:1648  */
2490     break;
2491 
2492   case 61:
2493 #line 421 "./config/rl78-parse.y" /* yacc.c:1648  */
2494     { B1 (0xe1|(yyvsp[-1].regno)); }
2495 #line 2496 "rl78-parse.c" /* yacc.c:1648  */
2496     break;
2497 
2498   case 62:
2499 #line 423 "./config/rl78-parse.y" /* yacc.c:1648  */
2500     { B1 (0xe0|(yyvsp[-1].regno)); }
2501 #line 2502 "rl78-parse.c" /* yacc.c:1648  */
2502     break;
2503 
2504   case 63:
2505 #line 425 "./config/rl78-parse.y" /* yacc.c:1648  */
2506     { B1 (0xe3|(yyvsp[-1].regno)); }
2507 #line 2508 "rl78-parse.c" /* yacc.c:1648  */
2508     break;
2509 
2510   case 64:
2511 #line 427 "./config/rl78-parse.y" /* yacc.c:1648  */
2512     { B1 (0xe2|(yyvsp[-1].regno)); }
2513 #line 2514 "rl78-parse.c" /* yacc.c:1648  */
2514     break;
2515 
2516   case 65:
2517 #line 429 "./config/rl78-parse.y" /* yacc.c:1648  */
2518     {SA((yyvsp[0].exp))}
2519 #line 2520 "rl78-parse.c" /* yacc.c:1648  */
2520     break;
2521 
2522   case 66:
2523 #line 430 "./config/rl78-parse.y" /* yacc.c:1648  */
2524     { B1 (0xe4|(yyvsp[-2].regno)); SET_SA ((yyvsp[-1].exp)); O1 ((yyvsp[-1].exp)); }
2525 #line 2526 "rl78-parse.c" /* yacc.c:1648  */
2526     break;
2527 
2528   case 67:
2529 #line 433 "./config/rl78-parse.y" /* yacc.c:1648  */
2530     { B1 (0xe5|(yyvsp[-3].regno)); O2 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); }
2531 #line 2532 "rl78-parse.c" /* yacc.c:1648  */
2532     break;
2533 
2534   case 68:
2535 #line 438 "./config/rl78-parse.y" /* yacc.c:1648  */
2536     { B1 (0xe6|(yyvsp[-1].regno)); }
2537 #line 2538 "rl78-parse.c" /* yacc.c:1648  */
2538     break;
2539 
2540   case 69:
2541 #line 440 "./config/rl78-parse.y" /* yacc.c:1648  */
2542     { B1 (0xe7|(yyvsp[-1].regno)); }
2543 #line 2544 "rl78-parse.c" /* yacc.c:1648  */
2544     break;
2545 
2546   case 70:
2547 #line 445 "./config/rl78-parse.y" /* yacc.c:1648  */
2548     { B1 (0xd1); }
2549 #line 2550 "rl78-parse.c" /* yacc.c:1648  */
2550     break;
2551 
2552   case 71:
2553 #line 448 "./config/rl78-parse.y" /* yacc.c:1648  */
2554     { B1 (0xd0); }
2555 #line 2556 "rl78-parse.c" /* yacc.c:1648  */
2556     break;
2557 
2558   case 72:
2559 #line 451 "./config/rl78-parse.y" /* yacc.c:1648  */
2560     { B1 (0xd3); }
2561 #line 2562 "rl78-parse.c" /* yacc.c:1648  */
2562     break;
2563 
2564   case 73:
2565 #line 454 "./config/rl78-parse.y" /* yacc.c:1648  */
2566     { B1 (0xd2); }
2567 #line 2568 "rl78-parse.c" /* yacc.c:1648  */
2568     break;
2569 
2570   case 74:
2571 #line 456 "./config/rl78-parse.y" /* yacc.c:1648  */
2572     {SA((yyvsp[0].exp))}
2573 #line 2574 "rl78-parse.c" /* yacc.c:1648  */
2574     break;
2575 
2576   case 75:
2577 #line 457 "./config/rl78-parse.y" /* yacc.c:1648  */
2578     { B1 (0xd4); SET_SA ((yyvsp[-1].exp)); O1 ((yyvsp[-1].exp)); }
2579 #line 2580 "rl78-parse.c" /* yacc.c:1648  */
2580     break;
2581 
2582   case 76:
2583 #line 460 "./config/rl78-parse.y" /* yacc.c:1648  */
2584     { B1 (0xd5); O2 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); }
2585 #line 2586 "rl78-parse.c" /* yacc.c:1648  */
2586     break;
2587 
2588   case 77:
2589 #line 465 "./config/rl78-parse.y" /* yacc.c:1648  */
2590     { B2 (0x61, 0xde); O1 ((yyvsp[-1].exp)); }
2591 #line 2592 "rl78-parse.c" /* yacc.c:1648  */
2592     break;
2593 
2594   case 78:
2595 #line 470 "./config/rl78-parse.y" /* yacc.c:1648  */
2596     { B1 (0x80|(yyvsp[-1].regno)); F ((yyvsp[0].regno), 5, 3); }
2597 #line 2598 "rl78-parse.c" /* yacc.c:1648  */
2598     break;
2599 
2600   case 79:
2601 #line 472 "./config/rl78-parse.y" /* yacc.c:1648  */
2602     {SA((yyvsp[0].exp))}
2603 #line 2604 "rl78-parse.c" /* yacc.c:1648  */
2604     break;
2605 
2606   case 80:
2607 #line 473 "./config/rl78-parse.y" /* yacc.c:1648  */
2608     { B1 (0xa4|(yyvsp[-2].regno)); SET_SA ((yyvsp[-1].exp)); O1 ((yyvsp[-1].exp)); }
2609 #line 2610 "rl78-parse.c" /* yacc.c:1648  */
2610     break;
2611 
2612   case 81:
2613 #line 475 "./config/rl78-parse.y" /* yacc.c:1648  */
2614     { B1 (0xa0|(yyvsp[-2].regno)); O2 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); }
2615 #line 2616 "rl78-parse.c" /* yacc.c:1648  */
2616     break;
2617 
2618   case 82:
2619 #line 477 "./config/rl78-parse.y" /* yacc.c:1648  */
2620     { B2 (0x11, 0xa0|(yyvsp[-4].regno)); O2 ((yyvsp[0].exp)); }
2621 #line 2622 "rl78-parse.c" /* yacc.c:1648  */
2622     break;
2623 
2624   case 83:
2625 #line 479 "./config/rl78-parse.y" /* yacc.c:1648  */
2626     { B2 (0x61, 0x59+(yyvsp[-5].regno)); O1 ((yyvsp[-1].exp)); }
2627 #line 2628 "rl78-parse.c" /* yacc.c:1648  */
2628     break;
2629 
2630   case 84:
2631 #line 481 "./config/rl78-parse.y" /* yacc.c:1648  */
2632     { B3 (0x11, 0x61, 0x59+(yyvsp[-7].regno)); O1 ((yyvsp[-1].exp)); }
2633 #line 2634 "rl78-parse.c" /* yacc.c:1648  */
2634     break;
2635 
2636   case 85:
2637 #line 486 "./config/rl78-parse.y" /* yacc.c:1648  */
2638     { B1 (0xa1|(yyvsp[-1].regno)); F ((yyvsp[0].regno), 5, 2); }
2639 #line 2640 "rl78-parse.c" /* yacc.c:1648  */
2640     break;
2641 
2642   case 86:
2643 #line 488 "./config/rl78-parse.y" /* yacc.c:1648  */
2644     {SA((yyvsp[0].exp))}
2645 #line 2646 "rl78-parse.c" /* yacc.c:1648  */
2646     break;
2647 
2648   case 87:
2649 #line 489 "./config/rl78-parse.y" /* yacc.c:1648  */
2650     { B1 (0xa6|(yyvsp[-2].regno)); SET_SA ((yyvsp[-1].exp)); O1 ((yyvsp[-1].exp)); }
2651 #line 2652 "rl78-parse.c" /* yacc.c:1648  */
2652     break;
2653 
2654   case 88:
2655 #line 492 "./config/rl78-parse.y" /* yacc.c:1648  */
2656     { B1 (0xa2|(yyvsp[-3].regno)); O2 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); }
2657 #line 2658 "rl78-parse.c" /* yacc.c:1648  */
2658     break;
2659 
2660   case 89:
2661 #line 495 "./config/rl78-parse.y" /* yacc.c:1648  */
2662     { B2 (0x61, 0x79+(yyvsp[-6].regno)); O1 ((yyvsp[-1].exp)); }
2663 #line 2664 "rl78-parse.c" /* yacc.c:1648  */
2664     break;
2665 
2666   case 90:
2667 #line 500 "./config/rl78-parse.y" /* yacc.c:1648  */
2668     { B3 (0x71, 0x7b, 0xfa); }
2669 #line 2670 "rl78-parse.c" /* yacc.c:1648  */
2670     break;
2671 
2672   case 91:
2673 #line 503 "./config/rl78-parse.y" /* yacc.c:1648  */
2674     { B3 (0x71, 0x7a, 0xfa); }
2675 #line 2676 "rl78-parse.c" /* yacc.c:1648  */
2676     break;
2677 
2678   case 92:
2679 #line 507 "./config/rl78-parse.y" /* yacc.c:1648  */
2680     { ISA_G14 ("MULHU"); }
2681 #line 2682 "rl78-parse.c" /* yacc.c:1648  */
2682     break;
2683 
2684   case 93:
2685 #line 508 "./config/rl78-parse.y" /* yacc.c:1648  */
2686     { B3 (0xce, 0xfb, 0x01); }
2687 #line 2688 "rl78-parse.c" /* yacc.c:1648  */
2688     break;
2689 
2690   case 94:
2691 #line 510 "./config/rl78-parse.y" /* yacc.c:1648  */
2692     { ISA_G14 ("MULH"); }
2693 #line 2694 "rl78-parse.c" /* yacc.c:1648  */
2694     break;
2695 
2696   case 95:
2697 #line 511 "./config/rl78-parse.y" /* yacc.c:1648  */
2698     { B3 (0xce, 0xfb, 0x02); }
2699 #line 2700 "rl78-parse.c" /* yacc.c:1648  */
2700     break;
2701 
2702   case 96:
2703 #line 514 "./config/rl78-parse.y" /* yacc.c:1648  */
2704     { B1 (0xd6); }
2705 #line 2706 "rl78-parse.c" /* yacc.c:1648  */
2706     break;
2707 
2708   case 97:
2709 #line 516 "./config/rl78-parse.y" /* yacc.c:1648  */
2710     { ISA_G14 ("DIVHU"); }
2711 #line 2712 "rl78-parse.c" /* yacc.c:1648  */
2712     break;
2713 
2714   case 98:
2715 #line 517 "./config/rl78-parse.y" /* yacc.c:1648  */
2716     { B3 (0xce, 0xfb, 0x03); }
2717 #line 2718 "rl78-parse.c" /* yacc.c:1648  */
2718     break;
2719 
2720   case 99:
2721 #line 524 "./config/rl78-parse.y" /* yacc.c:1648  */
2722     { ISA_G14 ("DIVWU"); }
2723 #line 2724 "rl78-parse.c" /* yacc.c:1648  */
2724     break;
2725 
2726   case 100:
2727 #line 525 "./config/rl78-parse.y" /* yacc.c:1648  */
2728     { B3 (0xce, 0xfb, 0x0b); }
2729 #line 2730 "rl78-parse.c" /* yacc.c:1648  */
2730     break;
2731 
2732   case 101:
2733 #line 527 "./config/rl78-parse.y" /* yacc.c:1648  */
2734     { ISA_G14 ("MACHU"); }
2735 #line 2736 "rl78-parse.c" /* yacc.c:1648  */
2736     break;
2737 
2738   case 102:
2739 #line 528 "./config/rl78-parse.y" /* yacc.c:1648  */
2740     { B3 (0xce, 0xfb, 0x05); }
2741 #line 2742 "rl78-parse.c" /* yacc.c:1648  */
2742     break;
2743 
2744   case 103:
2745 #line 530 "./config/rl78-parse.y" /* yacc.c:1648  */
2746     { ISA_G14 ("MACH"); }
2747 #line 2748 "rl78-parse.c" /* yacc.c:1648  */
2748     break;
2749 
2750   case 104:
2751 #line 531 "./config/rl78-parse.y" /* yacc.c:1648  */
2752     { B3 (0xce, 0xfb, 0x06); }
2753 #line 2754 "rl78-parse.c" /* yacc.c:1648  */
2754     break;
2755 
2756   case 105:
2757 #line 536 "./config/rl78-parse.y" /* yacc.c:1648  */
2758     { B2 (0x61, 0xed); }
2759 #line 2760 "rl78-parse.c" /* yacc.c:1648  */
2760     break;
2761 
2762   case 106:
2763 #line 544 "./config/rl78-parse.y" /* yacc.c:1648  */
2764     { B1 (0x51); O1 ((yyvsp[0].exp)); }
2765 #line 2766 "rl78-parse.c" /* yacc.c:1648  */
2766     break;
2767 
2768   case 107:
2769 #line 546 "./config/rl78-parse.y" /* yacc.c:1648  */
2770     { B1 (0x50); F((yyvsp[-3].regno), 5, 3); O1 ((yyvsp[0].exp)); }
2771 #line 2772 "rl78-parse.c" /* yacc.c:1648  */
2772     break;
2773 
2774   case 108:
2775 #line 549 "./config/rl78-parse.y" /* yacc.c:1648  */
2776     { if ((yyvsp[-3].regno) != 0xfd)
2777 	      { B2 (0xce, (yyvsp[-3].regno)); O1 ((yyvsp[0].exp)); }
2778 	    else
2779 	      { B1 (0x41); O1 ((yyvsp[0].exp)); }
2780 	  }
2781 #line 2782 "rl78-parse.c" /* yacc.c:1648  */
2782     break;
2783 
2784   case 109:
2785 #line 555 "./config/rl78-parse.y" /* yacc.c:1648  */
2786     {NOT_ES}
2787 #line 2788 "rl78-parse.c" /* yacc.c:1648  */
2788     break;
2789 
2790   case 110:
2791 #line 556 "./config/rl78-parse.y" /* yacc.c:1648  */
2792     { if (expr_is_sfr ((yyvsp[-4].exp)))
2793 	      { B1 (0xce); O1 ((yyvsp[-4].exp)); O1 ((yyvsp[-1].exp)); }
2794 	    else if (expr_is_saddr ((yyvsp[-4].exp)))
2795 	      { B1 (0xcd); SET_SA ((yyvsp[-4].exp)); O1 ((yyvsp[-4].exp)); O1 ((yyvsp[-1].exp)); }
2796 	    else
2797 	      NOT_SFR_OR_SADDR;
2798 	  }
2799 #line 2800 "rl78-parse.c" /* yacc.c:1648  */
2800     break;
2801 
2802   case 111:
2803 #line 565 "./config/rl78-parse.y" /* yacc.c:1648  */
2804     { B1 (0xcf); O2 ((yyvsp[-3].exp)); O1 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); }
2805 #line 2806 "rl78-parse.c" /* yacc.c:1648  */
2806     break;
2807 
2808   case 112:
2809 #line 568 "./config/rl78-parse.y" /* yacc.c:1648  */
2810     { B2 (0x11, 0xcf); O2 ((yyvsp[-3].exp)); O1 ((yyvsp[0].exp)); }
2811 #line 2812 "rl78-parse.c" /* yacc.c:1648  */
2812     break;
2813 
2814   case 113:
2815 #line 571 "./config/rl78-parse.y" /* yacc.c:1648  */
2816     { B1 (0x70); F ((yyvsp[-2].regno), 5, 3); }
2817 #line 2818 "rl78-parse.c" /* yacc.c:1648  */
2818     break;
2819 
2820   case 114:
2821 #line 574 "./config/rl78-parse.y" /* yacc.c:1648  */
2822     { B1 (0x60); F ((yyvsp[0].regno), 5, 3); }
2823 #line 2824 "rl78-parse.c" /* yacc.c:1648  */
2824     break;
2825 
2826   case 115:
2827 #line 576 "./config/rl78-parse.y" /* yacc.c:1648  */
2828     {NOT_ES}
2829 #line 2830 "rl78-parse.c" /* yacc.c:1648  */
2830     break;
2831 
2832   case 116:
2833 #line 577 "./config/rl78-parse.y" /* yacc.c:1648  */
2834     { if (expr_is_sfr ((yyvsp[-3].exp)))
2835 	      { B1 (0x9e); O1 ((yyvsp[-3].exp)); }
2836 	    else if (expr_is_saddr ((yyvsp[-3].exp)))
2837 	      { B1 (0x9d); SET_SA ((yyvsp[-3].exp)); O1 ((yyvsp[-3].exp)); }
2838 	    else
2839 	      NOT_SFR_OR_SADDR;
2840 	  }
2841 #line 2842 "rl78-parse.c" /* yacc.c:1648  */
2842     break;
2843 
2844   case 117:
2845 #line 586 "./config/rl78-parse.y" /* yacc.c:1648  */
2846     { B1 (0x8f); O2 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); }
2847 #line 2848 "rl78-parse.c" /* yacc.c:1648  */
2848     break;
2849 
2850   case 118:
2851 #line 589 "./config/rl78-parse.y" /* yacc.c:1648  */
2852     { B1 (0x9f); O2 ((yyvsp[-2].exp)); rl78_linkrelax_addr16 (); }
2853 #line 2854 "rl78-parse.c" /* yacc.c:1648  */
2854     break;
2855 
2856   case 119:
2857 #line 592 "./config/rl78-parse.y" /* yacc.c:1648  */
2858     { B2 (0x11, 0x9f); O2 ((yyvsp[-2].exp)); }
2859 #line 2860 "rl78-parse.c" /* yacc.c:1648  */
2860     break;
2861 
2862   case 120:
2863 #line 595 "./config/rl78-parse.y" /* yacc.c:1648  */
2864     { B1 (0xc9|reg_xbc((yyvsp[-4].regno))); O2 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); }
2865 #line 2866 "rl78-parse.c" /* yacc.c:1648  */
2866     break;
2867 
2868   case 121:
2869 #line 597 "./config/rl78-parse.y" /* yacc.c:1648  */
2870     {NOT_ES}
2871 #line 2872 "rl78-parse.c" /* yacc.c:1648  */
2872     break;
2873 
2874   case 122:
2875 #line 598 "./config/rl78-parse.y" /* yacc.c:1648  */
2876     { if (expr_is_saddr ((yyvsp[-1].exp)))
2877 	      { B1 (0x8d); SET_SA ((yyvsp[-1].exp)); O1 ((yyvsp[-1].exp)); }
2878 	    else if (expr_is_sfr ((yyvsp[-1].exp)))
2879 	      { B1 (0x8e); O1 ((yyvsp[-1].exp)); }
2880 	    else
2881 	      NOT_SFR_OR_SADDR;
2882 	  }
2883 #line 2884 "rl78-parse.c" /* yacc.c:1648  */
2884     break;
2885 
2886   case 123:
2887 #line 606 "./config/rl78-parse.y" /* yacc.c:1648  */
2888     {SA((yyvsp[0].exp))}
2889 #line 2890 "rl78-parse.c" /* yacc.c:1648  */
2890     break;
2891 
2892   case 124:
2893 #line 606 "./config/rl78-parse.y" /* yacc.c:1648  */
2894     {NOT_ES}
2895 #line 2896 "rl78-parse.c" /* yacc.c:1648  */
2896     break;
2897 
2898   case 125:
2899 #line 607 "./config/rl78-parse.y" /* yacc.c:1648  */
2900     { B1 (0xc8|reg_xbc((yyvsp[-5].regno))); SET_SA ((yyvsp[-2].exp)); O1 ((yyvsp[-2].exp)); }
2901 #line 2902 "rl78-parse.c" /* yacc.c:1648  */
2902     break;
2903 
2904   case 126:
2905 #line 610 "./config/rl78-parse.y" /* yacc.c:1648  */
2906     { B2 (0x8e, (yyvsp[0].regno)); }
2907 #line 2908 "rl78-parse.c" /* yacc.c:1648  */
2908     break;
2909 
2910   case 127:
2911 #line 613 "./config/rl78-parse.y" /* yacc.c:1648  */
2912     { if ((yyvsp[0].regno) != 1)
2913 	      rl78_error ("Only A allowed here");
2914 	    else
2915 	      { B2 (0x9e, (yyvsp[-2].regno)); }
2916 	  }
2917 #line 2918 "rl78-parse.c" /* yacc.c:1648  */
2918     break;
2919 
2920   case 128:
2921 #line 619 "./config/rl78-parse.y" /* yacc.c:1648  */
2922     {SA((yyvsp[0].exp))}
2923 #line 2924 "rl78-parse.c" /* yacc.c:1648  */
2924     break;
2925 
2926   case 129:
2927 #line 619 "./config/rl78-parse.y" /* yacc.c:1648  */
2928     {NOT_ES}
2929 #line 2930 "rl78-parse.c" /* yacc.c:1648  */
2930     break;
2931 
2932   case 130:
2933 #line 620 "./config/rl78-parse.y" /* yacc.c:1648  */
2934     { if ((yyvsp[-5].regno) != 0xfd)
2935 	      rl78_error ("Only ES allowed here");
2936 	    else
2937 	      { B2 (0x61, 0xb8); SET_SA ((yyvsp[-2].exp)); O1 ((yyvsp[-2].exp)); }
2938 	  }
2939 #line 2940 "rl78-parse.c" /* yacc.c:1648  */
2940     break;
2941 
2942   case 131:
2943 #line 627 "./config/rl78-parse.y" /* yacc.c:1648  */
2944     { B1 (0x89); }
2945 #line 2946 "rl78-parse.c" /* yacc.c:1648  */
2946     break;
2947 
2948   case 132:
2949 #line 630 "./config/rl78-parse.y" /* yacc.c:1648  */
2950     { B1 (0x99); }
2951 #line 2952 "rl78-parse.c" /* yacc.c:1648  */
2952     break;
2953 
2954   case 133:
2955 #line 633 "./config/rl78-parse.y" /* yacc.c:1648  */
2956     { B1 (0xca); O1 ((yyvsp[-4].exp)); O1 ((yyvsp[0].exp)); }
2957 #line 2958 "rl78-parse.c" /* yacc.c:1648  */
2958     break;
2959 
2960   case 134:
2961 #line 636 "./config/rl78-parse.y" /* yacc.c:1648  */
2962     { B1 (0x8a); O1 ((yyvsp[-1].exp)); }
2963 #line 2964 "rl78-parse.c" /* yacc.c:1648  */
2964     break;
2965 
2966   case 135:
2967 #line 639 "./config/rl78-parse.y" /* yacc.c:1648  */
2968     { B1 (0x9a); O1 ((yyvsp[-3].exp)); }
2969 #line 2970 "rl78-parse.c" /* yacc.c:1648  */
2970     break;
2971 
2972   case 136:
2973 #line 642 "./config/rl78-parse.y" /* yacc.c:1648  */
2974     { B1 (0x8b); }
2975 #line 2976 "rl78-parse.c" /* yacc.c:1648  */
2976     break;
2977 
2978   case 137:
2979 #line 645 "./config/rl78-parse.y" /* yacc.c:1648  */
2980     { B1 (0x9b); }
2981 #line 2982 "rl78-parse.c" /* yacc.c:1648  */
2982     break;
2983 
2984   case 138:
2985 #line 648 "./config/rl78-parse.y" /* yacc.c:1648  */
2986     { B1 (0xcc); O1 ((yyvsp[-4].exp)); O1 ((yyvsp[0].exp)); }
2987 #line 2988 "rl78-parse.c" /* yacc.c:1648  */
2988     break;
2989 
2990   case 139:
2991 #line 651 "./config/rl78-parse.y" /* yacc.c:1648  */
2992     { B1 (0x8c); O1 ((yyvsp[-1].exp)); }
2993 #line 2994 "rl78-parse.c" /* yacc.c:1648  */
2994     break;
2995 
2996   case 140:
2997 #line 654 "./config/rl78-parse.y" /* yacc.c:1648  */
2998     { B1 (0x9c); O1 ((yyvsp[-3].exp)); }
2999 #line 3000 "rl78-parse.c" /* yacc.c:1648  */
3000     break;
3001 
3002   case 141:
3003 #line 657 "./config/rl78-parse.y" /* yacc.c:1648  */
3004     { B2 (0x61, 0xc9); }
3005 #line 3006 "rl78-parse.c" /* yacc.c:1648  */
3006     break;
3007 
3008   case 142:
3009 #line 660 "./config/rl78-parse.y" /* yacc.c:1648  */
3010     { B2 (0x61, 0xd9); }
3011 #line 3012 "rl78-parse.c" /* yacc.c:1648  */
3012     break;
3013 
3014   case 143:
3015 #line 663 "./config/rl78-parse.y" /* yacc.c:1648  */
3016     { B2 (0x61, 0xe9); }
3017 #line 3018 "rl78-parse.c" /* yacc.c:1648  */
3018     break;
3019 
3020   case 144:
3021 #line 666 "./config/rl78-parse.y" /* yacc.c:1648  */
3022     { B2 (0x61, 0xf9); }
3023 #line 3024 "rl78-parse.c" /* yacc.c:1648  */
3024     break;
3025 
3026   case 145:
3027 #line 669 "./config/rl78-parse.y" /* yacc.c:1648  */
3028     { B1 (0x19); O2 ((yyvsp[-6].exp)); O1 ((yyvsp[0].exp)); }
3029 #line 3030 "rl78-parse.c" /* yacc.c:1648  */
3030     break;
3031 
3032   case 146:
3033 #line 672 "./config/rl78-parse.y" /* yacc.c:1648  */
3034     { B1 (0x09); O2 ((yyvsp[-3].exp)); }
3035 #line 3036 "rl78-parse.c" /* yacc.c:1648  */
3036     break;
3037 
3038   case 147:
3039 #line 675 "./config/rl78-parse.y" /* yacc.c:1648  */
3040     { B1 (0x18); O2 ((yyvsp[-5].exp)); }
3041 #line 3042 "rl78-parse.c" /* yacc.c:1648  */
3042     break;
3043 
3044   case 148:
3045 #line 678 "./config/rl78-parse.y" /* yacc.c:1648  */
3046     { B1 (0x38); O2 ((yyvsp[-6].exp)); O1 ((yyvsp[0].exp)); }
3047 #line 3048 "rl78-parse.c" /* yacc.c:1648  */
3048     break;
3049 
3050   case 149:
3051 #line 681 "./config/rl78-parse.y" /* yacc.c:1648  */
3052     { B1 (0x29); O2 ((yyvsp[-3].exp)); }
3053 #line 3054 "rl78-parse.c" /* yacc.c:1648  */
3054     break;
3055 
3056   case 150:
3057 #line 684 "./config/rl78-parse.y" /* yacc.c:1648  */
3058     { B1 (0x28); O2 ((yyvsp[-5].exp)); }
3059 #line 3060 "rl78-parse.c" /* yacc.c:1648  */
3060     break;
3061 
3062   case 151:
3063 #line 687 "./config/rl78-parse.y" /* yacc.c:1648  */
3064     { B1 (0x39); O2 ((yyvsp[-6].exp)); O1 ((yyvsp[0].exp)); }
3065 #line 3066 "rl78-parse.c" /* yacc.c:1648  */
3066     break;
3067 
3068   case 152:
3069 #line 690 "./config/rl78-parse.y" /* yacc.c:1648  */
3070     { B3 (0x39, 0, 0); O1 ((yyvsp[0].exp)); }
3071 #line 3072 "rl78-parse.c" /* yacc.c:1648  */
3072     break;
3073 
3074   case 153:
3075 #line 693 "./config/rl78-parse.y" /* yacc.c:1648  */
3076     { B1 (0x49); O2 ((yyvsp[-3].exp)); }
3077 #line 3078 "rl78-parse.c" /* yacc.c:1648  */
3078     break;
3079 
3080   case 154:
3081 #line 696 "./config/rl78-parse.y" /* yacc.c:1648  */
3082     { B3 (0x49, 0, 0); }
3083 #line 3084 "rl78-parse.c" /* yacc.c:1648  */
3084     break;
3085 
3086   case 155:
3087 #line 699 "./config/rl78-parse.y" /* yacc.c:1648  */
3088     { B1 (0x48); O2 ((yyvsp[-5].exp)); }
3089 #line 3090 "rl78-parse.c" /* yacc.c:1648  */
3090     break;
3091 
3092   case 156:
3093 #line 702 "./config/rl78-parse.y" /* yacc.c:1648  */
3094     { B3 (0x48, 0, 0); }
3095 #line 3096 "rl78-parse.c" /* yacc.c:1648  */
3096     break;
3097 
3098   case 157:
3099 #line 704 "./config/rl78-parse.y" /* yacc.c:1648  */
3100     {NOT_ES}
3101 #line 3102 "rl78-parse.c" /* yacc.c:1648  */
3102     break;
3103 
3104   case 158:
3105 #line 705 "./config/rl78-parse.y" /* yacc.c:1648  */
3106     { B1 (0xc8); O1 ((yyvsp[-5].exp)); O1 ((yyvsp[-1].exp)); }
3107 #line 3108 "rl78-parse.c" /* yacc.c:1648  */
3108     break;
3109 
3110   case 159:
3111 #line 707 "./config/rl78-parse.y" /* yacc.c:1648  */
3112     {NOT_ES}
3113 #line 3114 "rl78-parse.c" /* yacc.c:1648  */
3114     break;
3115 
3116   case 160:
3117 #line 708 "./config/rl78-parse.y" /* yacc.c:1648  */
3118     { B2 (0xc8, 0); O1 ((yyvsp[-1].exp)); }
3119 #line 3120 "rl78-parse.c" /* yacc.c:1648  */
3120     break;
3121 
3122   case 161:
3123 #line 710 "./config/rl78-parse.y" /* yacc.c:1648  */
3124     {NOT_ES}
3125 #line 3126 "rl78-parse.c" /* yacc.c:1648  */
3126     break;
3127 
3128   case 162:
3129 #line 711 "./config/rl78-parse.y" /* yacc.c:1648  */
3130     { B1 (0x88); O1 ((yyvsp[-2].exp)); }
3131 #line 3132 "rl78-parse.c" /* yacc.c:1648  */
3132     break;
3133 
3134   case 163:
3135 #line 713 "./config/rl78-parse.y" /* yacc.c:1648  */
3136     {NOT_ES}
3137 #line 3138 "rl78-parse.c" /* yacc.c:1648  */
3138     break;
3139 
3140   case 164:
3141 #line 714 "./config/rl78-parse.y" /* yacc.c:1648  */
3142     { B2 (0x88, 0); }
3143 #line 3144 "rl78-parse.c" /* yacc.c:1648  */
3144     break;
3145 
3146   case 165:
3147 #line 716 "./config/rl78-parse.y" /* yacc.c:1648  */
3148     {NOT_ES}
3149 #line 3150 "rl78-parse.c" /* yacc.c:1648  */
3150     break;
3151 
3152   case 166:
3153 #line 717 "./config/rl78-parse.y" /* yacc.c:1648  */
3154     { B1 (0x98); O1 ((yyvsp[-4].exp)); }
3155 #line 3156 "rl78-parse.c" /* yacc.c:1648  */
3156     break;
3157 
3158   case 167:
3159 #line 719 "./config/rl78-parse.y" /* yacc.c:1648  */
3160     {NOT_ES}
3161 #line 3162 "rl78-parse.c" /* yacc.c:1648  */
3162     break;
3163 
3164   case 168:
3165 #line 720 "./config/rl78-parse.y" /* yacc.c:1648  */
3166     { B2 (0x98, 0); }
3167 #line 3168 "rl78-parse.c" /* yacc.c:1648  */
3168     break;
3169 
3170   case 169:
3171 #line 725 "./config/rl78-parse.y" /* yacc.c:1648  */
3172     { if (expr_is_saddr ((yyvsp[-2].exp)))
3173 	      { B2 (0x71, 0x04); FE ((yyvsp[0].exp), 9, 3); SET_SA ((yyvsp[-2].exp)); O1 ((yyvsp[-2].exp)); }
3174 	    else if (expr_is_sfr ((yyvsp[-2].exp)))
3175 	      { B2 (0x71, 0x0c); FE ((yyvsp[0].exp), 9, 3); O1 ((yyvsp[-2].exp)); }
3176 	    else
3177 	      NOT_SFR_OR_SADDR;
3178 	  }
3179 #line 3180 "rl78-parse.c" /* yacc.c:1648  */
3180     break;
3181 
3182   case 170:
3183 #line 734 "./config/rl78-parse.y" /* yacc.c:1648  */
3184     { B2 (0x71, 0x8c); FE ((yyvsp[0].exp), 9, 3); }
3185 #line 3186 "rl78-parse.c" /* yacc.c:1648  */
3186     break;
3187 
3188   case 171:
3189 #line 737 "./config/rl78-parse.y" /* yacc.c:1648  */
3190     { B3 (0x71, 0x0c, (yyvsp[-2].regno)); FE ((yyvsp[0].exp), 9, 3); }
3191 #line 3192 "rl78-parse.c" /* yacc.c:1648  */
3192     break;
3193 
3194   case 172:
3195 #line 740 "./config/rl78-parse.y" /* yacc.c:1648  */
3196     { B2 (0x71, 0x84); FE ((yyvsp[0].exp), 9, 3); }
3197 #line 3198 "rl78-parse.c" /* yacc.c:1648  */
3198     break;
3199 
3200   case 173:
3201 #line 743 "./config/rl78-parse.y" /* yacc.c:1648  */
3202     { if (expr_is_saddr ((yyvsp[-4].exp)))
3203 	      { B2 (0x71, 0x01); FE ((yyvsp[-2].exp), 9, 3); SET_SA ((yyvsp[-4].exp)); O1 ((yyvsp[-4].exp)); }
3204 	    else if (expr_is_sfr ((yyvsp[-4].exp)))
3205 	      { B2 (0x71, 0x09); FE ((yyvsp[-2].exp), 9, 3); O1 ((yyvsp[-4].exp)); }
3206 	    else
3207 	      NOT_SFR_OR_SADDR;
3208 	  }
3209 #line 3210 "rl78-parse.c" /* yacc.c:1648  */
3210     break;
3211 
3212   case 174:
3213 #line 752 "./config/rl78-parse.y" /* yacc.c:1648  */
3214     { B2 (0x71, 0x89); FE ((yyvsp[-2].exp), 9, 3); }
3215 #line 3216 "rl78-parse.c" /* yacc.c:1648  */
3216     break;
3217 
3218   case 175:
3219 #line 755 "./config/rl78-parse.y" /* yacc.c:1648  */
3220     { B3 (0x71, 0x09, (yyvsp[-4].regno)); FE ((yyvsp[-2].exp), 9, 3); }
3221 #line 3222 "rl78-parse.c" /* yacc.c:1648  */
3222     break;
3223 
3224   case 176:
3225 #line 758 "./config/rl78-parse.y" /* yacc.c:1648  */
3226     { B2 (0x71, 0x81); FE ((yyvsp[-2].exp), 9, 3); }
3227 #line 3228 "rl78-parse.c" /* yacc.c:1648  */
3228     break;
3229 
3230   case 177:
3231 #line 763 "./config/rl78-parse.y" /* yacc.c:1648  */
3232     { B2 (0x61, 0xce); O1 ((yyvsp[-3].exp)); }
3233 #line 3234 "rl78-parse.c" /* yacc.c:1648  */
3234     break;
3235 
3236   case 178:
3237 #line 768 "./config/rl78-parse.y" /* yacc.c:1648  */
3238     { B1 (0x30); O2 ((yyvsp[0].exp)); }
3239 #line 3240 "rl78-parse.c" /* yacc.c:1648  */
3240     break;
3241 
3242   case 179:
3243 #line 771 "./config/rl78-parse.y" /* yacc.c:1648  */
3244     { B1 (0x30); F ((yyvsp[-3].regno), 5, 2); O2 ((yyvsp[0].exp)); }
3245 #line 3246 "rl78-parse.c" /* yacc.c:1648  */
3246     break;
3247 
3248   case 180:
3249 #line 773 "./config/rl78-parse.y" /* yacc.c:1648  */
3250     {NOT_ES}
3251 #line 3252 "rl78-parse.c" /* yacc.c:1648  */
3252     break;
3253 
3254   case 181:
3255 #line 774 "./config/rl78-parse.y" /* yacc.c:1648  */
3256     { if (expr_is_saddr ((yyvsp[-4].exp)))
3257 	      { B1 (0xc9); SET_SA ((yyvsp[-4].exp)); O1 ((yyvsp[-4].exp)); O2 ((yyvsp[-1].exp)); }
3258 	    else if (expr_is_sfr ((yyvsp[-4].exp)))
3259 	      { B1 (0xcb); O1 ((yyvsp[-4].exp)); O2 ((yyvsp[-1].exp)); }
3260 	    else
3261 	      NOT_SFR_OR_SADDR;
3262 	  }
3263 #line 3264 "rl78-parse.c" /* yacc.c:1648  */
3264     break;
3265 
3266   case 182:
3267 #line 782 "./config/rl78-parse.y" /* yacc.c:1648  */
3268     {NOT_ES}
3269 #line 3270 "rl78-parse.c" /* yacc.c:1648  */
3270     break;
3271 
3272   case 183:
3273 #line 783 "./config/rl78-parse.y" /* yacc.c:1648  */
3274     { if (expr_is_saddr ((yyvsp[-1].exp)))
3275 	      { B1 (0xad); SET_SA ((yyvsp[-1].exp)); O1 ((yyvsp[-1].exp)); WA((yyvsp[-1].exp)); }
3276 	    else if (expr_is_sfr ((yyvsp[-1].exp)))
3277 	      { B1 (0xae); O1 ((yyvsp[-1].exp)); WA((yyvsp[-1].exp)); }
3278 	    else
3279 	      NOT_SFR_OR_SADDR;
3280 	  }
3281 #line 3282 "rl78-parse.c" /* yacc.c:1648  */
3282     break;
3283 
3284   case 184:
3285 #line 791 "./config/rl78-parse.y" /* yacc.c:1648  */
3286     {NOT_ES}
3287 #line 3288 "rl78-parse.c" /* yacc.c:1648  */
3288     break;
3289 
3290   case 185:
3291 #line 792 "./config/rl78-parse.y" /* yacc.c:1648  */
3292     { if (expr_is_saddr ((yyvsp[-3].exp)))
3293 	      { B1 (0xbd); SET_SA ((yyvsp[-3].exp)); O1 ((yyvsp[-3].exp)); WA((yyvsp[-3].exp)); }
3294 	    else if (expr_is_sfr ((yyvsp[-3].exp)))
3295 	      { B1 (0xbe); O1 ((yyvsp[-3].exp)); WA((yyvsp[-3].exp)); }
3296 	    else
3297 	      NOT_SFR_OR_SADDR;
3298 	  }
3299 #line 3300 "rl78-parse.c" /* yacc.c:1648  */
3300     break;
3301 
3302   case 186:
3303 #line 801 "./config/rl78-parse.y" /* yacc.c:1648  */
3304     { B1 (0x11); F ((yyvsp[0].regno), 5, 2); }
3305 #line 3306 "rl78-parse.c" /* yacc.c:1648  */
3306     break;
3307 
3308   case 187:
3309 #line 804 "./config/rl78-parse.y" /* yacc.c:1648  */
3310     { B1 (0x10); F ((yyvsp[-2].regno), 5, 2); }
3311 #line 3312 "rl78-parse.c" /* yacc.c:1648  */
3312     break;
3313 
3314   case 188:
3315 #line 807 "./config/rl78-parse.y" /* yacc.c:1648  */
3316     { B1 (0xaf); O2 ((yyvsp[0].exp)); WA((yyvsp[0].exp)); rl78_linkrelax_addr16 (); }
3317 #line 3318 "rl78-parse.c" /* yacc.c:1648  */
3318     break;
3319 
3320   case 189:
3321 #line 810 "./config/rl78-parse.y" /* yacc.c:1648  */
3322     { B1 (0xbf); O2 ((yyvsp[-2].exp)); WA((yyvsp[-2].exp)); rl78_linkrelax_addr16 (); }
3323 #line 3324 "rl78-parse.c" /* yacc.c:1648  */
3324     break;
3325 
3326   case 190:
3327 #line 813 "./config/rl78-parse.y" /* yacc.c:1648  */
3328     { B1 (0xa9); }
3329 #line 3330 "rl78-parse.c" /* yacc.c:1648  */
3330     break;
3331 
3332   case 191:
3333 #line 816 "./config/rl78-parse.y" /* yacc.c:1648  */
3334     { B1 (0xb9); }
3335 #line 3336 "rl78-parse.c" /* yacc.c:1648  */
3336     break;
3337 
3338   case 192:
3339 #line 819 "./config/rl78-parse.y" /* yacc.c:1648  */
3340     { B1 (0xaa); O1 ((yyvsp[-1].exp)); }
3341 #line 3342 "rl78-parse.c" /* yacc.c:1648  */
3342     break;
3343 
3344   case 193:
3345 #line 822 "./config/rl78-parse.y" /* yacc.c:1648  */
3346     { B1 (0xba); O1 ((yyvsp[-3].exp)); }
3347 #line 3348 "rl78-parse.c" /* yacc.c:1648  */
3348     break;
3349 
3350   case 194:
3351 #line 825 "./config/rl78-parse.y" /* yacc.c:1648  */
3352     { B1 (0xab); }
3353 #line 3354 "rl78-parse.c" /* yacc.c:1648  */
3354     break;
3355 
3356   case 195:
3357 #line 828 "./config/rl78-parse.y" /* yacc.c:1648  */
3358     { B1 (0xbb); }
3359 #line 3360 "rl78-parse.c" /* yacc.c:1648  */
3360     break;
3361 
3362   case 196:
3363 #line 831 "./config/rl78-parse.y" /* yacc.c:1648  */
3364     { B1 (0xac); O1 ((yyvsp[-1].exp)); }
3365 #line 3366 "rl78-parse.c" /* yacc.c:1648  */
3366     break;
3367 
3368   case 197:
3369 #line 834 "./config/rl78-parse.y" /* yacc.c:1648  */
3370     { B1 (0xbc); O1 ((yyvsp[-3].exp)); }
3371 #line 3372 "rl78-parse.c" /* yacc.c:1648  */
3372     break;
3373 
3374   case 198:
3375 #line 837 "./config/rl78-parse.y" /* yacc.c:1648  */
3376     { B1 (0x59); O2 ((yyvsp[-3].exp)); }
3377 #line 3378 "rl78-parse.c" /* yacc.c:1648  */
3378     break;
3379 
3380   case 199:
3381 #line 840 "./config/rl78-parse.y" /* yacc.c:1648  */
3382     { B1 (0x58); O2 ((yyvsp[-5].exp)); }
3383 #line 3384 "rl78-parse.c" /* yacc.c:1648  */
3384     break;
3385 
3386   case 200:
3387 #line 843 "./config/rl78-parse.y" /* yacc.c:1648  */
3388     { B1 (0x69); O2 ((yyvsp[-3].exp)); }
3389 #line 3390 "rl78-parse.c" /* yacc.c:1648  */
3390     break;
3391 
3392   case 201:
3393 #line 846 "./config/rl78-parse.y" /* yacc.c:1648  */
3394     { B1 (0x68); O2 ((yyvsp[-5].exp)); }
3395 #line 3396 "rl78-parse.c" /* yacc.c:1648  */
3396     break;
3397 
3398   case 202:
3399 #line 849 "./config/rl78-parse.y" /* yacc.c:1648  */
3400     { B1 (0x79); O2 ((yyvsp[-3].exp)); }
3401 #line 3402 "rl78-parse.c" /* yacc.c:1648  */
3402     break;
3403 
3404   case 203:
3405 #line 852 "./config/rl78-parse.y" /* yacc.c:1648  */
3406     { B3 (0x79, 0, 0); }
3407 #line 3408 "rl78-parse.c" /* yacc.c:1648  */
3408     break;
3409 
3410   case 204:
3411 #line 855 "./config/rl78-parse.y" /* yacc.c:1648  */
3412     { B1 (0x78); O2 ((yyvsp[-5].exp)); }
3413 #line 3414 "rl78-parse.c" /* yacc.c:1648  */
3414     break;
3415 
3416   case 205:
3417 #line 858 "./config/rl78-parse.y" /* yacc.c:1648  */
3418     { B3 (0x78, 0, 0); }
3419 #line 3420 "rl78-parse.c" /* yacc.c:1648  */
3420     break;
3421 
3422   case 206:
3423 #line 860 "./config/rl78-parse.y" /* yacc.c:1648  */
3424     {NOT_ES}
3425 #line 3426 "rl78-parse.c" /* yacc.c:1648  */
3426     break;
3427 
3428   case 207:
3429 #line 861 "./config/rl78-parse.y" /* yacc.c:1648  */
3430     { B1 (0xa8); O1 ((yyvsp[-2].exp));  WA((yyvsp[-2].exp));}
3431 #line 3432 "rl78-parse.c" /* yacc.c:1648  */
3432     break;
3433 
3434   case 208:
3435 #line 863 "./config/rl78-parse.y" /* yacc.c:1648  */
3436     {NOT_ES}
3437 #line 3438 "rl78-parse.c" /* yacc.c:1648  */
3438     break;
3439 
3440   case 209:
3441 #line 864 "./config/rl78-parse.y" /* yacc.c:1648  */
3442     { B2 (0xa8, 0); }
3443 #line 3444 "rl78-parse.c" /* yacc.c:1648  */
3444     break;
3445 
3446   case 210:
3447 #line 866 "./config/rl78-parse.y" /* yacc.c:1648  */
3448     {NOT_ES}
3449 #line 3450 "rl78-parse.c" /* yacc.c:1648  */
3450     break;
3451 
3452   case 211:
3453 #line 867 "./config/rl78-parse.y" /* yacc.c:1648  */
3454     { B1 (0xb8); O1 ((yyvsp[-4].exp)); WA((yyvsp[-4].exp)); }
3455 #line 3456 "rl78-parse.c" /* yacc.c:1648  */
3456     break;
3457 
3458   case 212:
3459 #line 869 "./config/rl78-parse.y" /* yacc.c:1648  */
3460     {NOT_ES}
3461 #line 3462 "rl78-parse.c" /* yacc.c:1648  */
3462     break;
3463 
3464   case 213:
3465 #line 870 "./config/rl78-parse.y" /* yacc.c:1648  */
3466     { B2 (0xb8, 0); }
3467 #line 3468 "rl78-parse.c" /* yacc.c:1648  */
3468     break;
3469 
3470   case 214:
3471 #line 872 "./config/rl78-parse.y" /* yacc.c:1648  */
3472     {SA((yyvsp[0].exp))}
3473 #line 3474 "rl78-parse.c" /* yacc.c:1648  */
3474     break;
3475 
3476   case 215:
3477 #line 873 "./config/rl78-parse.y" /* yacc.c:1648  */
3478     { B1 (0xca); F ((yyvsp[-3].regno), 2, 2); SET_SA ((yyvsp[-1].exp)); O1 ((yyvsp[-1].exp)); WA((yyvsp[-1].exp)); }
3479 #line 3480 "rl78-parse.c" /* yacc.c:1648  */
3480     break;
3481 
3482   case 216:
3483 #line 876 "./config/rl78-parse.y" /* yacc.c:1648  */
3484     { B1 (0xcb); F ((yyvsp[-4].regno), 2, 2); O2 ((yyvsp[0].exp)); WA((yyvsp[0].exp)); rl78_linkrelax_addr16 (); }
3485 #line 3486 "rl78-parse.c" /* yacc.c:1648  */
3486     break;
3487 
3488   case 217:
3489 #line 879 "./config/rl78-parse.y" /* yacc.c:1648  */
3490     { B2 (0xcb, 0xf8); O2 ((yyvsp[0].exp)); }
3491 #line 3492 "rl78-parse.c" /* yacc.c:1648  */
3492     break;
3493 
3494   case 218:
3495 #line 882 "./config/rl78-parse.y" /* yacc.c:1648  */
3496     { B2 (0xbe, 0xf8); }
3497 #line 3498 "rl78-parse.c" /* yacc.c:1648  */
3498     break;
3499 
3500   case 219:
3501 #line 885 "./config/rl78-parse.y" /* yacc.c:1648  */
3502     { B2 (0xae, 0xf8); }
3503 #line 3504 "rl78-parse.c" /* yacc.c:1648  */
3504     break;
3505 
3506   case 220:
3507 #line 888 "./config/rl78-parse.y" /* yacc.c:1648  */
3508     { B3 (0xcb, 0xf8, 0xff); F ((yyvsp[-2].regno), 2, 2); }
3509 #line 3510 "rl78-parse.c" /* yacc.c:1648  */
3510     break;
3511 
3512   case 221:
3513 #line 893 "./config/rl78-parse.y" /* yacc.c:1648  */
3514     { B1 (0x00); }
3515 #line 3516 "rl78-parse.c" /* yacc.c:1648  */
3516     break;
3517 
3518   case 222:
3519 #line 898 "./config/rl78-parse.y" /* yacc.c:1648  */
3520     { B2 (0x71, 0xc0); }
3521 #line 3522 "rl78-parse.c" /* yacc.c:1648  */
3522     break;
3523 
3524   case 223:
3525 #line 903 "./config/rl78-parse.y" /* yacc.c:1648  */
3526     { B1 (0xc0); F ((yyvsp[0].regno), 5, 2); }
3527 #line 3528 "rl78-parse.c" /* yacc.c:1648  */
3528     break;
3529 
3530   case 224:
3531 #line 906 "./config/rl78-parse.y" /* yacc.c:1648  */
3532     { B2 (0x61, 0xcd); }
3533 #line 3534 "rl78-parse.c" /* yacc.c:1648  */
3534     break;
3535 
3536   case 225:
3537 #line 909 "./config/rl78-parse.y" /* yacc.c:1648  */
3538     { B1 (0xc1); F ((yyvsp[0].regno), 5, 2); }
3539 #line 3540 "rl78-parse.c" /* yacc.c:1648  */
3540     break;
3541 
3542   case 226:
3543 #line 912 "./config/rl78-parse.y" /* yacc.c:1648  */
3544     { B2 (0x61, 0xdd); }
3545 #line 3546 "rl78-parse.c" /* yacc.c:1648  */
3546     break;
3547 
3548   case 227:
3549 #line 917 "./config/rl78-parse.y" /* yacc.c:1648  */
3550     { B1 (0xd7); }
3551 #line 3552 "rl78-parse.c" /* yacc.c:1648  */
3552     break;
3553 
3554   case 228:
3555 #line 920 "./config/rl78-parse.y" /* yacc.c:1648  */
3556     { B2 (0x61, 0xfc); }
3557 #line 3558 "rl78-parse.c" /* yacc.c:1648  */
3558     break;
3559 
3560   case 229:
3561 #line 923 "./config/rl78-parse.y" /* yacc.c:1648  */
3562     { B2 (0x61, 0xec); }
3563 #line 3564 "rl78-parse.c" /* yacc.c:1648  */
3564     break;
3565 
3566   case 230:
3567 #line 928 "./config/rl78-parse.y" /* yacc.c:1648  */
3568     { if (check_expr_is_const ((yyvsp[0].exp), 1, 1))
3569 	      { B2 (0x61, 0xeb); }
3570 	  }
3571 #line 3572 "rl78-parse.c" /* yacc.c:1648  */
3572     break;
3573 
3574   case 231:
3575 #line 933 "./config/rl78-parse.y" /* yacc.c:1648  */
3576     { if (check_expr_is_const ((yyvsp[0].exp), 1, 1))
3577 	      { B2 (0x61, 0xdc); }
3578 	  }
3579 #line 3580 "rl78-parse.c" /* yacc.c:1648  */
3580     break;
3581 
3582   case 232:
3583 #line 938 "./config/rl78-parse.y" /* yacc.c:1648  */
3584     { if (check_expr_is_const ((yyvsp[0].exp), 1, 1))
3585 	      { B2 (0x61, 0xee); }
3586 	  }
3587 #line 3588 "rl78-parse.c" /* yacc.c:1648  */
3588     break;
3589 
3590   case 233:
3591 #line 943 "./config/rl78-parse.y" /* yacc.c:1648  */
3592     { if (check_expr_is_const ((yyvsp[0].exp), 1, 1))
3593 	      { B2 (0x61, 0xfe); }
3594 	  }
3595 #line 3596 "rl78-parse.c" /* yacc.c:1648  */
3596     break;
3597 
3598   case 234:
3599 #line 948 "./config/rl78-parse.y" /* yacc.c:1648  */
3600     { if (check_expr_is_const ((yyvsp[0].exp), 1, 1))
3601 	      { B2 (0x61, 0xdb); }
3602 	  }
3603 #line 3604 "rl78-parse.c" /* yacc.c:1648  */
3604     break;
3605 
3606   case 235:
3607 #line 953 "./config/rl78-parse.y" /* yacc.c:1648  */
3608     { if (check_expr_is_const ((yyvsp[0].exp), 1, 1))
3609 	      { B2 (0x61, 0xfb);}
3610 	  }
3611 #line 3612 "rl78-parse.c" /* yacc.c:1648  */
3612     break;
3613 
3614   case 236:
3615 #line 960 "./config/rl78-parse.y" /* yacc.c:1648  */
3616     { if (check_expr_is_const ((yyvsp[0].exp), 1, 7))
3617 	      { B2 (0x31, 0x0b); FE ((yyvsp[0].exp), 9, 3); }
3618 	  }
3619 #line 3620 "rl78-parse.c" /* yacc.c:1648  */
3620     break;
3621 
3622   case 237:
3623 #line 965 "./config/rl78-parse.y" /* yacc.c:1648  */
3624     { if (check_expr_is_const ((yyvsp[0].exp), 1, 15))
3625 	      { B2 (0x31, 0x0f); FE ((yyvsp[0].exp), 8, 4); }
3626 	  }
3627 #line 3628 "rl78-parse.c" /* yacc.c:1648  */
3628     break;
3629 
3630   case 238:
3631 #line 972 "./config/rl78-parse.y" /* yacc.c:1648  */
3632     { B2 (0x61, 0xcf); }
3633 #line 3634 "rl78-parse.c" /* yacc.c:1648  */
3634     break;
3635 
3636   case 239:
3637 #line 975 "./config/rl78-parse.y" /* yacc.c:1648  */
3638     { B2 (0x61, 0xdf); }
3639 #line 3640 "rl78-parse.c" /* yacc.c:1648  */
3640     break;
3641 
3642   case 240:
3643 #line 978 "./config/rl78-parse.y" /* yacc.c:1648  */
3644     { B2 (0x61, 0xef); }
3645 #line 3646 "rl78-parse.c" /* yacc.c:1648  */
3646     break;
3647 
3648   case 241:
3649 #line 981 "./config/rl78-parse.y" /* yacc.c:1648  */
3650     { B2 (0x61, 0xff); }
3651 #line 3652 "rl78-parse.c" /* yacc.c:1648  */
3652     break;
3653 
3654   case 242:
3655 #line 986 "./config/rl78-parse.y" /* yacc.c:1648  */
3656     { if (check_expr_is_const ((yyvsp[0].exp), 1, 7))
3657 	      { B2 (0x31, 0x09); FE ((yyvsp[0].exp), 9, 3); }
3658 	  }
3659 #line 3660 "rl78-parse.c" /* yacc.c:1648  */
3660     break;
3661 
3662   case 243:
3663 #line 991 "./config/rl78-parse.y" /* yacc.c:1648  */
3664     { if (check_expr_is_const ((yyvsp[0].exp), 1, 7))
3665 	      { B2 (0x31, 0x08); FE ((yyvsp[0].exp), 9, 3); }
3666 	  }
3667 #line 3668 "rl78-parse.c" /* yacc.c:1648  */
3668     break;
3669 
3670   case 244:
3671 #line 996 "./config/rl78-parse.y" /* yacc.c:1648  */
3672     { if (check_expr_is_const ((yyvsp[0].exp), 1, 7))
3673 	      { B2 (0x31, 0x07); FE ((yyvsp[0].exp), 9, 3); }
3674 	  }
3675 #line 3676 "rl78-parse.c" /* yacc.c:1648  */
3676     break;
3677 
3678   case 245:
3679 #line 1001 "./config/rl78-parse.y" /* yacc.c:1648  */
3680     { if (check_expr_is_const ((yyvsp[0].exp), 1, 15))
3681 	      { B2 (0x31, 0x0d); FE ((yyvsp[0].exp), 8, 4); }
3682 	  }
3683 #line 3684 "rl78-parse.c" /* yacc.c:1648  */
3684     break;
3685 
3686   case 246:
3687 #line 1006 "./config/rl78-parse.y" /* yacc.c:1648  */
3688     { if (check_expr_is_const ((yyvsp[0].exp), 1, 15))
3689 	      { B2 (0x31, 0x0c); FE ((yyvsp[0].exp), 8, 4); }
3690 	  }
3691 #line 3692 "rl78-parse.c" /* yacc.c:1648  */
3692     break;
3693 
3694   case 247:
3695 #line 1013 "./config/rl78-parse.y" /* yacc.c:1648  */
3696     { if (check_expr_is_const ((yyvsp[0].exp), 1, 7))
3697 	      { B2 (0x31, 0x0a); FE ((yyvsp[0].exp), 9, 3); }
3698 	  }
3699 #line 3700 "rl78-parse.c" /* yacc.c:1648  */
3700     break;
3701 
3702   case 248:
3703 #line 1018 "./config/rl78-parse.y" /* yacc.c:1648  */
3704     { if (check_expr_is_const ((yyvsp[0].exp), 1, 15))
3705 	      { B2 (0x31, 0x0e); FE ((yyvsp[0].exp), 8, 4); }
3706 	  }
3707 #line 3708 "rl78-parse.c" /* yacc.c:1648  */
3708     break;
3709 
3710   case 249:
3711 #line 1025 "./config/rl78-parse.y" /* yacc.c:1648  */
3712     { B2 (0x61, 0xc8); rl78_relax (RL78_RELAX_BRANCH, 0); }
3713 #line 3714 "rl78-parse.c" /* yacc.c:1648  */
3714     break;
3715 
3716   case 250:
3717 #line 1028 "./config/rl78-parse.y" /* yacc.c:1648  */
3718     { B2 (0x61, 0xe3); rl78_relax (RL78_RELAX_BRANCH, 0); }
3719 #line 3720 "rl78-parse.c" /* yacc.c:1648  */
3720     break;
3721 
3722   case 251:
3723 #line 1031 "./config/rl78-parse.y" /* yacc.c:1648  */
3724     { B2 (0x61, 0xd8); rl78_relax (RL78_RELAX_BRANCH, 0); }
3725 #line 3726 "rl78-parse.c" /* yacc.c:1648  */
3726     break;
3727 
3728   case 252:
3729 #line 1034 "./config/rl78-parse.y" /* yacc.c:1648  */
3730     { B2 (0x61, 0xf3); rl78_relax (RL78_RELAX_BRANCH, 0); }
3731 #line 3732 "rl78-parse.c" /* yacc.c:1648  */
3732     break;
3733 
3734   case 253:
3735 #line 1037 "./config/rl78-parse.y" /* yacc.c:1648  */
3736     { B2 (0x61, 0xf8); rl78_relax (RL78_RELAX_BRANCH, 0); }
3737 #line 3738 "rl78-parse.c" /* yacc.c:1648  */
3738     break;
3739 
3740   case 254:
3741 #line 1040 "./config/rl78-parse.y" /* yacc.c:1648  */
3742     { B2 (0x61, 0xe8); rl78_relax (RL78_RELAX_BRANCH, 0); }
3743 #line 3744 "rl78-parse.c" /* yacc.c:1648  */
3744     break;
3745 
3746   case 255:
3747 #line 1045 "./config/rl78-parse.y" /* yacc.c:1648  */
3748     { B2 (0x61, 0xfd); }
3749 #line 3750 "rl78-parse.c" /* yacc.c:1648  */
3750     break;
3751 
3752   case 256:
3753 #line 1050 "./config/rl78-parse.y" /* yacc.c:1648  */
3754     { if ((yyvsp[0].regno) == 0) /* X */
3755 	      { B1 (0x08); }
3756 	    else
3757 	      { B2 (0x61, 0x88); F ((yyvsp[0].regno), 13, 3); }
3758 	  }
3759 #line 3760 "rl78-parse.c" /* yacc.c:1648  */
3760     break;
3761 
3762   case 257:
3763 #line 1057 "./config/rl78-parse.y" /* yacc.c:1648  */
3764     { B2 (0x61, 0xaa); O2 ((yyvsp[0].exp)); rl78_linkrelax_addr16 (); }
3765 #line 3766 "rl78-parse.c" /* yacc.c:1648  */
3766     break;
3767 
3768   case 258:
3769 #line 1060 "./config/rl78-parse.y" /* yacc.c:1648  */
3770     { B2 (0x61, 0xae); }
3771 #line 3772 "rl78-parse.c" /* yacc.c:1648  */
3772     break;
3773 
3774   case 259:
3775 #line 1063 "./config/rl78-parse.y" /* yacc.c:1648  */
3776     { B2 (0x61, 0xaf); O1 ((yyvsp[-1].exp)); }
3777 #line 3778 "rl78-parse.c" /* yacc.c:1648  */
3778     break;
3779 
3780   case 260:
3781 #line 1066 "./config/rl78-parse.y" /* yacc.c:1648  */
3782     { B2 (0x61, 0xac); }
3783 #line 3784 "rl78-parse.c" /* yacc.c:1648  */
3784     break;
3785 
3786   case 261:
3787 #line 1069 "./config/rl78-parse.y" /* yacc.c:1648  */
3788     { B2 (0x61, 0xad); O1 ((yyvsp[-1].exp)); }
3789 #line 3790 "rl78-parse.c" /* yacc.c:1648  */
3790     break;
3791 
3792   case 262:
3793 #line 1072 "./config/rl78-parse.y" /* yacc.c:1648  */
3794     { B2 (0x61, 0xb9); }
3795 #line 3796 "rl78-parse.c" /* yacc.c:1648  */
3796     break;
3797 
3798   case 263:
3799 #line 1075 "./config/rl78-parse.y" /* yacc.c:1648  */
3800     { B2 (0x61, 0xa9); }
3801 #line 3802 "rl78-parse.c" /* yacc.c:1648  */
3802     break;
3803 
3804   case 264:
3805 #line 1078 "./config/rl78-parse.y" /* yacc.c:1648  */
3806     { if (expr_is_sfr ((yyvsp[0].exp)))
3807 	      { B2 (0x61, 0xab); O1 ((yyvsp[0].exp)); }
3808 	    else if (expr_is_saddr ((yyvsp[0].exp)))
3809 	      { B2 (0x61, 0xa8); SET_SA ((yyvsp[0].exp)); O1 ((yyvsp[0].exp)); }
3810 	    else
3811 	      NOT_SFR_OR_SADDR;
3812 	  }
3813 #line 3814 "rl78-parse.c" /* yacc.c:1648  */
3814     break;
3815 
3816   case 265:
3817 #line 1089 "./config/rl78-parse.y" /* yacc.c:1648  */
3818     { B1 (0x31); F ((yyvsp[0].regno), 5, 2); }
3819 #line 3820 "rl78-parse.c" /* yacc.c:1648  */
3820     break;
3821 
3822   case 267:
3823 #line 1099 "./config/rl78-parse.y" /* yacc.c:1648  */
3824     { rl78_prefix (0x11); }
3825 #line 3826 "rl78-parse.c" /* yacc.c:1648  */
3826     break;
3827 
3828   case 268:
3829 #line 1102 "./config/rl78-parse.y" /* yacc.c:1648  */
3830     { (yyval.regno) = 0; }
3831 #line 3832 "rl78-parse.c" /* yacc.c:1648  */
3832     break;
3833 
3834   case 269:
3835 #line 1103 "./config/rl78-parse.y" /* yacc.c:1648  */
3836     { (yyval.regno) = 1; }
3837 #line 3838 "rl78-parse.c" /* yacc.c:1648  */
3838     break;
3839 
3840   case 270:
3841 #line 1104 "./config/rl78-parse.y" /* yacc.c:1648  */
3842     { (yyval.regno) = 2; }
3843 #line 3844 "rl78-parse.c" /* yacc.c:1648  */
3844     break;
3845 
3846   case 271:
3847 #line 1105 "./config/rl78-parse.y" /* yacc.c:1648  */
3848     { (yyval.regno) = 3; }
3849 #line 3850 "rl78-parse.c" /* yacc.c:1648  */
3850     break;
3851 
3852   case 272:
3853 #line 1106 "./config/rl78-parse.y" /* yacc.c:1648  */
3854     { (yyval.regno) = 4; }
3855 #line 3856 "rl78-parse.c" /* yacc.c:1648  */
3856     break;
3857 
3858   case 273:
3859 #line 1107 "./config/rl78-parse.y" /* yacc.c:1648  */
3860     { (yyval.regno) = 5; }
3861 #line 3862 "rl78-parse.c" /* yacc.c:1648  */
3862     break;
3863 
3864   case 274:
3865 #line 1108 "./config/rl78-parse.y" /* yacc.c:1648  */
3866     { (yyval.regno) = 6; }
3867 #line 3868 "rl78-parse.c" /* yacc.c:1648  */
3868     break;
3869 
3870   case 275:
3871 #line 1109 "./config/rl78-parse.y" /* yacc.c:1648  */
3872     { (yyval.regno) = 7; }
3873 #line 3874 "rl78-parse.c" /* yacc.c:1648  */
3874     break;
3875 
3876   case 276:
3877 #line 1112 "./config/rl78-parse.y" /* yacc.c:1648  */
3878     { (yyval.regno) = 0; }
3879 #line 3880 "rl78-parse.c" /* yacc.c:1648  */
3880     break;
3881 
3882   case 277:
3883 #line 1113 "./config/rl78-parse.y" /* yacc.c:1648  */
3884     { (yyval.regno) = 2; }
3885 #line 3886 "rl78-parse.c" /* yacc.c:1648  */
3886     break;
3887 
3888   case 278:
3889 #line 1114 "./config/rl78-parse.y" /* yacc.c:1648  */
3890     { (yyval.regno) = 3; }
3891 #line 3892 "rl78-parse.c" /* yacc.c:1648  */
3892     break;
3893 
3894   case 279:
3895 #line 1115 "./config/rl78-parse.y" /* yacc.c:1648  */
3896     { (yyval.regno) = 4; }
3897 #line 3898 "rl78-parse.c" /* yacc.c:1648  */
3898     break;
3899 
3900   case 280:
3901 #line 1116 "./config/rl78-parse.y" /* yacc.c:1648  */
3902     { (yyval.regno) = 5; }
3903 #line 3904 "rl78-parse.c" /* yacc.c:1648  */
3904     break;
3905 
3906   case 281:
3907 #line 1117 "./config/rl78-parse.y" /* yacc.c:1648  */
3908     { (yyval.regno) = 6; }
3909 #line 3910 "rl78-parse.c" /* yacc.c:1648  */
3910     break;
3911 
3912   case 282:
3913 #line 1118 "./config/rl78-parse.y" /* yacc.c:1648  */
3914     { (yyval.regno) = 7; }
3915 #line 3916 "rl78-parse.c" /* yacc.c:1648  */
3916     break;
3917 
3918   case 283:
3919 #line 1121 "./config/rl78-parse.y" /* yacc.c:1648  */
3920     { (yyval.regno) = 0; }
3921 #line 3922 "rl78-parse.c" /* yacc.c:1648  */
3922     break;
3923 
3924   case 284:
3925 #line 1122 "./config/rl78-parse.y" /* yacc.c:1648  */
3926     { (yyval.regno) = 1; }
3927 #line 3928 "rl78-parse.c" /* yacc.c:1648  */
3928     break;
3929 
3930   case 285:
3931 #line 1123 "./config/rl78-parse.y" /* yacc.c:1648  */
3932     { (yyval.regno) = 2; }
3933 #line 3934 "rl78-parse.c" /* yacc.c:1648  */
3934     break;
3935 
3936   case 286:
3937 #line 1124 "./config/rl78-parse.y" /* yacc.c:1648  */
3938     { (yyval.regno) = 3; }
3939 #line 3940 "rl78-parse.c" /* yacc.c:1648  */
3940     break;
3941 
3942   case 287:
3943 #line 1127 "./config/rl78-parse.y" /* yacc.c:1648  */
3944     { (yyval.regno) = 1; }
3945 #line 3946 "rl78-parse.c" /* yacc.c:1648  */
3946     break;
3947 
3948   case 288:
3949 #line 1128 "./config/rl78-parse.y" /* yacc.c:1648  */
3950     { (yyval.regno) = 2; }
3951 #line 3952 "rl78-parse.c" /* yacc.c:1648  */
3952     break;
3953 
3954   case 289:
3955 #line 1129 "./config/rl78-parse.y" /* yacc.c:1648  */
3956     { (yyval.regno) = 3; }
3957 #line 3958 "rl78-parse.c" /* yacc.c:1648  */
3958     break;
3959 
3960   case 290:
3961 #line 1132 "./config/rl78-parse.y" /* yacc.c:1648  */
3962     { (yyval.regno) = 0xf8; }
3963 #line 3964 "rl78-parse.c" /* yacc.c:1648  */
3964     break;
3965 
3966   case 291:
3967 #line 1133 "./config/rl78-parse.y" /* yacc.c:1648  */
3968     { (yyval.regno) = 0xf9; }
3969 #line 3970 "rl78-parse.c" /* yacc.c:1648  */
3970     break;
3971 
3972   case 292:
3973 #line 1134 "./config/rl78-parse.y" /* yacc.c:1648  */
3974     { (yyval.regno) = 0xfa; }
3975 #line 3976 "rl78-parse.c" /* yacc.c:1648  */
3976     break;
3977 
3978   case 293:
3979 #line 1135 "./config/rl78-parse.y" /* yacc.c:1648  */
3980     { (yyval.regno) = 0xfc; }
3981 #line 3982 "rl78-parse.c" /* yacc.c:1648  */
3982     break;
3983 
3984   case 294:
3985 #line 1136 "./config/rl78-parse.y" /* yacc.c:1648  */
3986     { (yyval.regno) = 0xfd; }
3987 #line 3988 "rl78-parse.c" /* yacc.c:1648  */
3988     break;
3989 
3990   case 295:
3991 #line 1137 "./config/rl78-parse.y" /* yacc.c:1648  */
3992     { (yyval.regno) = 0xfe; }
3993 #line 3994 "rl78-parse.c" /* yacc.c:1648  */
3994     break;
3995 
3996   case 296:
3997 #line 1138 "./config/rl78-parse.y" /* yacc.c:1648  */
3998     { (yyval.regno) = 0xff; }
3999 #line 4000 "rl78-parse.c" /* yacc.c:1648  */
4000     break;
4001 
4002   case 297:
4003 #line 1144 "./config/rl78-parse.y" /* yacc.c:1648  */
4004     { (yyval.regno) = 0x00; }
4005 #line 4006 "rl78-parse.c" /* yacc.c:1648  */
4006     break;
4007 
4008   case 298:
4009 #line 1145 "./config/rl78-parse.y" /* yacc.c:1648  */
4010     { (yyval.regno) = 0x10; }
4011 #line 4012 "rl78-parse.c" /* yacc.c:1648  */
4012     break;
4013 
4014   case 299:
4015 #line 1146 "./config/rl78-parse.y" /* yacc.c:1648  */
4016     { (yyval.regno) = 0x20; }
4017 #line 4018 "rl78-parse.c" /* yacc.c:1648  */
4018     break;
4019 
4020   case 300:
4021 #line 1147 "./config/rl78-parse.y" /* yacc.c:1648  */
4022     { (yyval.regno) = 0x30; }
4023 #line 4024 "rl78-parse.c" /* yacc.c:1648  */
4024     break;
4025 
4026   case 301:
4027 #line 1148 "./config/rl78-parse.y" /* yacc.c:1648  */
4028     { (yyval.regno) = 0x40; }
4029 #line 4030 "rl78-parse.c" /* yacc.c:1648  */
4030     break;
4031 
4032   case 302:
4033 #line 1149 "./config/rl78-parse.y" /* yacc.c:1648  */
4034     { (yyval.regno) = 0x50; }
4035 #line 4036 "rl78-parse.c" /* yacc.c:1648  */
4036     break;
4037 
4038   case 303:
4039 #line 1150 "./config/rl78-parse.y" /* yacc.c:1648  */
4040     { (yyval.regno) = 0x60; }
4041 #line 4042 "rl78-parse.c" /* yacc.c:1648  */
4042     break;
4043 
4044   case 304:
4045 #line 1151 "./config/rl78-parse.y" /* yacc.c:1648  */
4046     { (yyval.regno) = 0x70; }
4047 #line 4048 "rl78-parse.c" /* yacc.c:1648  */
4048     break;
4049 
4050   case 305:
4051 #line 1154 "./config/rl78-parse.y" /* yacc.c:1648  */
4052     { (yyval.regno) = 0x00; }
4053 #line 4054 "rl78-parse.c" /* yacc.c:1648  */
4054     break;
4055 
4056   case 306:
4057 #line 1155 "./config/rl78-parse.y" /* yacc.c:1648  */
4058     { (yyval.regno) = 0x20; }
4059 #line 4060 "rl78-parse.c" /* yacc.c:1648  */
4060     break;
4061 
4062   case 307:
4063 #line 1156 "./config/rl78-parse.y" /* yacc.c:1648  */
4064     { (yyval.regno) = 0x40; }
4065 #line 4066 "rl78-parse.c" /* yacc.c:1648  */
4066     break;
4067 
4068   case 308:
4069 #line 1159 "./config/rl78-parse.y" /* yacc.c:1648  */
4070     { (yyval.regno) = 0x05; rl78_bit_insn = 1; }
4071 #line 4072 "rl78-parse.c" /* yacc.c:1648  */
4072     break;
4073 
4074   case 309:
4075 #line 1160 "./config/rl78-parse.y" /* yacc.c:1648  */
4076     { (yyval.regno) = 0x06; rl78_bit_insn = 1; }
4077 #line 4078 "rl78-parse.c" /* yacc.c:1648  */
4078     break;
4079 
4080   case 310:
4081 #line 1161 "./config/rl78-parse.y" /* yacc.c:1648  */
4082     { (yyval.regno) = 0x07; rl78_bit_insn = 1; }
4083 #line 4084 "rl78-parse.c" /* yacc.c:1648  */
4084     break;
4085 
4086   case 311:
4087 #line 1164 "./config/rl78-parse.y" /* yacc.c:1648  */
4088     { (yyval.regno) = 0x02;    rl78_bit_insn = 1; rl78_linkrelax_branch (); }
4089 #line 4090 "rl78-parse.c" /* yacc.c:1648  */
4090     break;
4091 
4092   case 312:
4093 #line 1165 "./config/rl78-parse.y" /* yacc.c:1648  */
4094     { (yyval.regno) = 0x04;    rl78_bit_insn = 1; rl78_linkrelax_branch (); }
4095 #line 4096 "rl78-parse.c" /* yacc.c:1648  */
4096     break;
4097 
4098   case 313:
4099 #line 1166 "./config/rl78-parse.y" /* yacc.c:1648  */
4100     { (yyval.regno) = 0x00; rl78_bit_insn = 1; }
4101 #line 4102 "rl78-parse.c" /* yacc.c:1648  */
4102     break;
4103 
4104   case 314:
4105 #line 1169 "./config/rl78-parse.y" /* yacc.c:1648  */
4106     { (yyval.regno) = 0; rl78_bit_insn = 1; }
4107 #line 4108 "rl78-parse.c" /* yacc.c:1648  */
4108     break;
4109 
4110   case 315:
4111 #line 1170 "./config/rl78-parse.y" /* yacc.c:1648  */
4112     { (yyval.regno) = 1; rl78_bit_insn = 1; }
4113 #line 4114 "rl78-parse.c" /* yacc.c:1648  */
4114     break;
4115 
4116   case 316:
4117 #line 1173 "./config/rl78-parse.y" /* yacc.c:1648  */
4118     { (yyval.regno) = 0x00; }
4119 #line 4120 "rl78-parse.c" /* yacc.c:1648  */
4120     break;
4121 
4122   case 317:
4123 #line 1174 "./config/rl78-parse.y" /* yacc.c:1648  */
4124     { (yyval.regno) = 0x10; }
4125 #line 4126 "rl78-parse.c" /* yacc.c:1648  */
4126     break;
4127 
4128   case 318:
4129 #line 1177 "./config/rl78-parse.y" /* yacc.c:1648  */
4130     { (yyval.regno) = 0x00; }
4131 #line 4132 "rl78-parse.c" /* yacc.c:1648  */
4132     break;
4133 
4134   case 319:
4135 #line 1178 "./config/rl78-parse.y" /* yacc.c:1648  */
4136     { (yyval.regno) = 0x10; }
4137 #line 4138 "rl78-parse.c" /* yacc.c:1648  */
4138     break;
4139 
4140   case 320:
4141 #line 1181 "./config/rl78-parse.y" /* yacc.c:1648  */
4142     { (yyval.regno) = 0x00; }
4143 #line 4144 "rl78-parse.c" /* yacc.c:1648  */
4144     break;
4145 
4146   case 321:
4147 #line 1182 "./config/rl78-parse.y" /* yacc.c:1648  */
4148     { (yyval.regno) = 0x10; }
4149 #line 4150 "rl78-parse.c" /* yacc.c:1648  */
4150     break;
4151 
4152   case 322:
4153 #line 1185 "./config/rl78-parse.y" /* yacc.c:1648  */
4154     { (yyval.regno) = 0x00; }
4155 #line 4156 "rl78-parse.c" /* yacc.c:1648  */
4156     break;
4157 
4158   case 323:
4159 #line 1186 "./config/rl78-parse.y" /* yacc.c:1648  */
4160     { (yyval.regno) = 0x10; }
4161 #line 4162 "rl78-parse.c" /* yacc.c:1648  */
4162     break;
4163 
4164   case 324:
4165 #line 1189 "./config/rl78-parse.y" /* yacc.c:1648  */
4166     { rl78_bit_insn = 1; }
4167 #line 4168 "rl78-parse.c" /* yacc.c:1648  */
4168     break;
4169 
4170 
4171 #line 4172 "rl78-parse.c" /* yacc.c:1648  */
4172       default: break;
4173     }
4174   /* User semantic actions sometimes alter yychar, and that requires
4175      that yytoken be updated with the new translation.  We take the
4176      approach of translating immediately before every use of yytoken.
4177      One alternative is translating here after every semantic action,
4178      but that translation would be missed if the semantic action invokes
4179      YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
4180      if it invokes YYBACKUP.  In the case of YYABORT or YYACCEPT, an
4181      incorrect destructor might then be invoked immediately.  In the
4182      case of YYERROR or YYBACKUP, subsequent parser actions might lead
4183      to an incorrect destructor call or verbose syntax error message
4184      before the lookahead is translated.  */
4185   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
4186 
4187   YYPOPSTACK (yylen);
4188   yylen = 0;
4189   YY_STACK_PRINT (yyss, yyssp);
4190 
4191   *++yyvsp = yyval;
4192 
4193   /* Now 'shift' the result of the reduction.  Determine what state
4194      that goes to, based on the state we popped back to and the rule
4195      number reduced by.  */
4196 
4197   yyn = yyr1[yyn];
4198 
4199   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
4200   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
4201     yystate = yytable[yystate];
4202   else
4203     yystate = yydefgoto[yyn - YYNTOKENS];
4204 
4205   goto yynewstate;
4206 
4207 
4208 /*--------------------------------------.
4209 | yyerrlab -- here on detecting error.  |
4210 `--------------------------------------*/
4211 yyerrlab:
4212   /* Make sure we have latest lookahead translation.  See comments at
4213      user semantic actions for why this is necessary.  */
4214   yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
4215 
4216   /* If not already recovering from an error, report this error.  */
4217   if (!yyerrstatus)
4218     {
4219       ++yynerrs;
4220 #if ! YYERROR_VERBOSE
4221       yyerror (YY_("syntax error"));
4222 #else
4223 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
4224                                         yyssp, yytoken)
4225       {
4226         char const *yymsgp = YY_("syntax error");
4227         int yysyntax_error_status;
4228         yysyntax_error_status = YYSYNTAX_ERROR;
4229         if (yysyntax_error_status == 0)
4230           yymsgp = yymsg;
4231         else if (yysyntax_error_status == 1)
4232           {
4233             if (yymsg != yymsgbuf)
4234               YYSTACK_FREE (yymsg);
4235             yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
4236             if (!yymsg)
4237               {
4238                 yymsg = yymsgbuf;
4239                 yymsg_alloc = sizeof yymsgbuf;
4240                 yysyntax_error_status = 2;
4241               }
4242             else
4243               {
4244                 yysyntax_error_status = YYSYNTAX_ERROR;
4245                 yymsgp = yymsg;
4246               }
4247           }
4248         yyerror (yymsgp);
4249         if (yysyntax_error_status == 2)
4250           goto yyexhaustedlab;
4251       }
4252 # undef YYSYNTAX_ERROR
4253 #endif
4254     }
4255 
4256 
4257 
4258   if (yyerrstatus == 3)
4259     {
4260       /* If just tried and failed to reuse lookahead token after an
4261          error, discard it.  */
4262 
4263       if (yychar <= YYEOF)
4264         {
4265           /* Return failure if at end of input.  */
4266           if (yychar == YYEOF)
4267             YYABORT;
4268         }
4269       else
4270         {
4271           yydestruct ("Error: discarding",
4272                       yytoken, &yylval);
4273           yychar = YYEMPTY;
4274         }
4275     }
4276 
4277   /* Else will try to reuse lookahead token after shifting the error
4278      token.  */
4279   goto yyerrlab1;
4280 
4281 
4282 /*---------------------------------------------------.
4283 | yyerrorlab -- error raised explicitly by YYERROR.  |
4284 `---------------------------------------------------*/
4285 yyerrorlab:
4286 
4287   /* Pacify compilers like GCC when the user code never invokes
4288      YYERROR and the label yyerrorlab therefore never appears in user
4289      code.  */
4290   if (/*CONSTCOND*/ 0)
4291      goto yyerrorlab;
4292 
4293   /* Do not reclaim the symbols of the rule whose action triggered
4294      this YYERROR.  */
4295   YYPOPSTACK (yylen);
4296   yylen = 0;
4297   YY_STACK_PRINT (yyss, yyssp);
4298   yystate = *yyssp;
4299   goto yyerrlab1;
4300 
4301 
4302 /*-------------------------------------------------------------.
4303 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
4304 `-------------------------------------------------------------*/
4305 yyerrlab1:
4306   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
4307 
4308   for (;;)
4309     {
4310       yyn = yypact[yystate];
4311       if (!yypact_value_is_default (yyn))
4312         {
4313           yyn += YYTERROR;
4314           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
4315             {
4316               yyn = yytable[yyn];
4317               if (0 < yyn)
4318                 break;
4319             }
4320         }
4321 
4322       /* Pop the current state because it cannot handle the error token.  */
4323       if (yyssp == yyss)
4324         YYABORT;
4325 
4326 
4327       yydestruct ("Error: popping",
4328                   yystos[yystate], yyvsp);
4329       YYPOPSTACK (1);
4330       yystate = *yyssp;
4331       YY_STACK_PRINT (yyss, yyssp);
4332     }
4333 
4334   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
4335   *++yyvsp = yylval;
4336   YY_IGNORE_MAYBE_UNINITIALIZED_END
4337 
4338 
4339   /* Shift the error token.  */
4340   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
4341 
4342   yystate = yyn;
4343   goto yynewstate;
4344 
4345 
4346 /*-------------------------------------.
4347 | yyacceptlab -- YYACCEPT comes here.  |
4348 `-------------------------------------*/
4349 yyacceptlab:
4350   yyresult = 0;
4351   goto yyreturn;
4352 
4353 /*-----------------------------------.
4354 | yyabortlab -- YYABORT comes here.  |
4355 `-----------------------------------*/
4356 yyabortlab:
4357   yyresult = 1;
4358   goto yyreturn;
4359 
4360 #if !defined yyoverflow || YYERROR_VERBOSE
4361 /*-------------------------------------------------.
4362 | yyexhaustedlab -- memory exhaustion comes here.  |
4363 `-------------------------------------------------*/
4364 yyexhaustedlab:
4365   yyerror (YY_("memory exhausted"));
4366   yyresult = 2;
4367   /* Fall through.  */
4368 #endif
4369 
4370 yyreturn:
4371   if (yychar != YYEMPTY)
4372     {
4373       /* Make sure we have latest lookahead translation.  See comments at
4374          user semantic actions for why this is necessary.  */
4375       yytoken = YYTRANSLATE (yychar);
4376       yydestruct ("Cleanup: discarding lookahead",
4377                   yytoken, &yylval);
4378     }
4379   /* Do not reclaim the symbols of the rule whose action triggered
4380      this YYABORT or YYACCEPT.  */
4381   YYPOPSTACK (yylen);
4382   YY_STACK_PRINT (yyss, yyssp);
4383   while (yyssp != yyss)
4384     {
4385       yydestruct ("Cleanup: popping",
4386                   yystos[*yyssp], yyvsp);
4387       YYPOPSTACK (1);
4388     }
4389 #ifndef yyoverflow
4390   if (yyss != yyssa)
4391     YYSTACK_FREE (yyss);
4392 #endif
4393 #if YYERROR_VERBOSE
4394   if (yymsg != yymsgbuf)
4395     YYSTACK_FREE (yymsg);
4396 #endif
4397   return yyresult;
4398 }
4399 #line 1192 "./config/rl78-parse.y" /* yacc.c:1907  */
4400 
4401 /* ====================================================================== */
4402 
4403 static struct
4404 {
4405   const char * string;
4406   int          token;
4407   int          val;
4408 }
4409 token_table[] =
4410 {
4411   { "r0", X, 0 },
4412   { "r1", A, 1 },
4413   { "r2", C, 2 },
4414   { "r3", B, 3 },
4415   { "r4", E, 4 },
4416   { "r5", D, 5 },
4417   { "r6", L, 6 },
4418   { "r7", H, 7 },
4419   { "x", X, 0 },
4420   { "a", A, 1 },
4421   { "c", C, 2 },
4422   { "b", B, 3 },
4423   { "e", E, 4 },
4424   { "d", D, 5 },
4425   { "l", L, 6 },
4426   { "h", H, 7 },
4427 
4428   { "rp0", AX, 0 },
4429   { "rp1", BC, 1 },
4430   { "rp2", DE, 2 },
4431   { "rp3", HL, 3 },
4432   { "ax", AX, 0 },
4433   { "bc", BC, 1 },
4434   { "de", DE, 2 },
4435   { "hl", HL, 3 },
4436 
4437   { "RB0", RB0, 0 },
4438   { "RB1", RB1, 1 },
4439   { "RB2", RB2, 2 },
4440   { "RB3", RB3, 3 },
4441 
4442   { "sp", SP, 0 },
4443   { "cy", CY, 0 },
4444 
4445   { "spl", SPL, 0xf8 },
4446   { "sph", SPH, 0xf9 },
4447   { "psw", PSW, 0xfa },
4448   { "cs", CS, 0xfc },
4449   { "es", ES, 0xfd },
4450   { "pmc", PMC, 0xfe },
4451   { "mem", MEM, 0xff },
4452 
4453   { ".s", DOT_S, 0 },
4454   { ".b", DOT_B, 0 },
4455   { ".w", DOT_W, 0 },
4456   { ".l", DOT_L, 0 },
4457   { ".a", DOT_A , 0},
4458   { ".ub", DOT_UB, 0 },
4459   { ".uw", DOT_UW , 0},
4460 
4461   { "c", FLAG, 0 },
4462   { "z", FLAG, 1 },
4463   { "s", FLAG, 2 },
4464   { "o", FLAG, 3 },
4465   { "i", FLAG, 8 },
4466   { "u", FLAG, 9 },
4467 
4468 #define OPC(x) { #x, x, IS_OPCODE }
4469 
4470   OPC(ADD),
4471   OPC(ADDC),
4472   OPC(ADDW),
4473   { "and", AND_, IS_OPCODE },
4474   OPC(AND1),
4475   OPC(BC),
4476   OPC(BF),
4477   OPC(BH),
4478   OPC(BNC),
4479   OPC(BNH),
4480   OPC(BNZ),
4481   OPC(BR),
4482   OPC(BRK),
4483   OPC(BRK1),
4484   OPC(BT),
4485   OPC(BTCLR),
4486   OPC(BZ),
4487   OPC(CALL),
4488   OPC(CALLT),
4489   OPC(CLR1),
4490   OPC(CLRB),
4491   OPC(CLRW),
4492   OPC(CMP),
4493   OPC(CMP0),
4494   OPC(CMPS),
4495   OPC(CMPW),
4496   OPC(DEC),
4497   OPC(DECW),
4498   OPC(DI),
4499   OPC(DIVHU),
4500   OPC(DIVWU),
4501   OPC(EI),
4502   OPC(HALT),
4503   OPC(INC),
4504   OPC(INCW),
4505   OPC(MACH),
4506   OPC(MACHU),
4507   OPC(MOV),
4508   OPC(MOV1),
4509   OPC(MOVS),
4510   OPC(MOVW),
4511   OPC(MULH),
4512   OPC(MULHU),
4513   OPC(MULU),
4514   OPC(NOP),
4515   OPC(NOT1),
4516   OPC(ONEB),
4517   OPC(ONEW),
4518   OPC(OR),
4519   OPC(OR1),
4520   OPC(POP),
4521   OPC(PUSH),
4522   OPC(RET),
4523   OPC(RETI),
4524   OPC(RETB),
4525   OPC(ROL),
4526   OPC(ROLC),
4527   OPC(ROLWC),
4528   OPC(ROR),
4529   OPC(RORC),
4530   OPC(SAR),
4531   OPC(SARW),
4532   OPC(SEL),
4533   OPC(SET1),
4534   OPC(SHL),
4535   OPC(SHLW),
4536   OPC(SHR),
4537   OPC(SHRW),
4538   OPC(SKC),
4539   OPC(SKH),
4540   OPC(SKNC),
4541   OPC(SKNH),
4542   OPC(SKNZ),
4543   OPC(SKZ),
4544   OPC(STOP),
4545   OPC(SUB),
4546   OPC(SUBC),
4547   OPC(SUBW),
4548   OPC(XCH),
4549   OPC(XCHW),
4550   OPC(XOR),
4551   OPC(XOR1),
4552 };
4553 
4554 #define NUM_TOKENS (sizeof (token_table) / sizeof (token_table[0]))
4555 
4556 void
rl78_lex_init(char * beginning,char * ending)4557 rl78_lex_init (char * beginning, char * ending)
4558 {
4559   rl78_init_start = beginning;
4560   rl78_lex_start = beginning;
4561   rl78_lex_end = ending;
4562   rl78_in_brackets = 0;
4563   rl78_last_token = 0;
4564 
4565   rl78_bit_insn = 0;
4566 
4567   setbuf (stdout, 0);
4568 }
4569 
4570 /* Return a pointer to the '.' in a bit index expression (like
4571    foo.5), or NULL if none is found.  */
4572 static char *
find_bit_index(char * tok)4573 find_bit_index (char *tok)
4574 {
4575   char *last_dot = NULL;
4576   char *last_digit = NULL;
4577   while (*tok && *tok != ',')
4578     {
4579       if (*tok == '.')
4580 	{
4581 	  last_dot = tok;
4582 	  last_digit = NULL;
4583 	}
4584       else if (*tok >= '0' && *tok <= '7'
4585 	       && last_dot != NULL
4586 	       && last_digit == NULL)
4587 	{
4588 	  last_digit = tok;
4589 	}
4590       else if (ISSPACE (*tok))
4591 	{
4592 	  /* skip */
4593 	}
4594       else
4595 	{
4596 	  last_dot = NULL;
4597 	  last_digit = NULL;
4598 	}
4599       tok ++;
4600     }
4601   if (last_dot != NULL
4602       && last_digit != NULL)
4603     return last_dot;
4604   return NULL;
4605 }
4606 
4607 static int
rl78_lex(void)4608 rl78_lex (void)
4609 {
4610   /*unsigned int ci;*/
4611   char * save_input_pointer;
4612   char * bit = NULL;
4613 
4614   while (ISSPACE (*rl78_lex_start)
4615 	 && rl78_lex_start != rl78_lex_end)
4616     rl78_lex_start ++;
4617 
4618   rl78_last_exp_start = rl78_lex_start;
4619 
4620   if (rl78_lex_start == rl78_lex_end)
4621     return 0;
4622 
4623   if (ISALPHA (*rl78_lex_start)
4624       || (*rl78_lex_start == '.' && ISALPHA (rl78_lex_start[1])))
4625     {
4626       unsigned int i;
4627       char * e;
4628       char save;
4629 
4630       for (e = rl78_lex_start + 1;
4631 	   e < rl78_lex_end && ISALNUM (*e);
4632 	   e ++)
4633 	;
4634       save = *e;
4635       *e = 0;
4636 
4637       for (i = 0; i < NUM_TOKENS; i++)
4638 	if (strcasecmp (rl78_lex_start, token_table[i].string) == 0
4639 	    && !(token_table[i].val == IS_OPCODE && rl78_last_token != 0)
4640 	    && !(token_table[i].token == FLAG && !need_flag))
4641 	  {
4642 	    rl78_lval.regno = token_table[i].val;
4643 	    *e = save;
4644 	    rl78_lex_start = e;
4645 	    rl78_last_token = token_table[i].token;
4646 	    return token_table[i].token;
4647 	  }
4648       *e = save;
4649     }
4650 
4651   if (rl78_last_token == 0)
4652     {
4653       rl78_last_token = UNKNOWN_OPCODE;
4654       return UNKNOWN_OPCODE;
4655     }
4656 
4657   if (rl78_last_token == UNKNOWN_OPCODE)
4658     return 0;
4659 
4660   if (*rl78_lex_start == '[')
4661     rl78_in_brackets = 1;
4662   if (*rl78_lex_start == ']')
4663     rl78_in_brackets = 0;
4664 
4665   /* '.' is funny - the syntax includes it for bitfields, but only for
4666       bitfields.  We check for it specially so we can allow labels
4667       with '.' in them.  */
4668 
4669   if (rl78_bit_insn
4670       && *rl78_lex_start == '.'
4671       && find_bit_index (rl78_lex_start) == rl78_lex_start)
4672     {
4673       rl78_last_token = *rl78_lex_start;
4674       return *rl78_lex_start ++;
4675     }
4676 
4677   if ((rl78_in_brackets && *rl78_lex_start == '+')
4678       || strchr ("[],#!$:", *rl78_lex_start))
4679     {
4680       rl78_last_token = *rl78_lex_start;
4681       return *rl78_lex_start ++;
4682     }
4683 
4684   /* Again, '.' is funny.  Look for '.<digit>' at the end of the line
4685      or before a comma, which is a bitfield, not an expression.  */
4686 
4687   if (rl78_bit_insn)
4688     {
4689       bit = find_bit_index (rl78_lex_start);
4690       if (bit)
4691 	*bit = 0;
4692       else
4693 	bit = NULL;
4694     }
4695 
4696   save_input_pointer = input_line_pointer;
4697   input_line_pointer = rl78_lex_start;
4698   rl78_lval.exp.X_md = 0;
4699   expression (&rl78_lval.exp);
4700 
4701   if (bit)
4702     *bit = '.';
4703 
4704   rl78_lex_start = input_line_pointer;
4705   input_line_pointer = save_input_pointer;
4706   rl78_last_token = EXPR;
4707   return EXPR;
4708 }
4709 
4710 int
rl78_error(const char * str)4711 rl78_error (const char * str)
4712 {
4713   int len;
4714 
4715   len = rl78_last_exp_start - rl78_init_start;
4716 
4717   as_bad ("%s", rl78_init_start);
4718   as_bad ("%*s^ %s", len, "", str);
4719   return 0;
4720 }
4721 
4722 static int
expr_is_sfr(expressionS exp)4723 expr_is_sfr (expressionS exp)
4724 {
4725   unsigned long v;
4726 
4727   if (exp.X_op != O_constant)
4728     return 0;
4729 
4730   v = exp.X_add_number;
4731   if (0xFFF00 <= v && v <= 0xFFFFF)
4732     return 1;
4733   return 0;
4734 }
4735 
4736 static int
expr_is_saddr(expressionS exp)4737 expr_is_saddr (expressionS exp)
4738 {
4739   unsigned long v;
4740 
4741   if (exp.X_op != O_constant)
4742     return 1;
4743 
4744   v = exp.X_add_number;
4745   if (0xFFE20 <= v && v <= 0xFFF1F)
4746     return 1;
4747   return 0;
4748 }
4749 
4750 static int
expr_is_word_aligned(expressionS exp)4751 expr_is_word_aligned (expressionS exp)
4752 {
4753   unsigned long v;
4754 
4755   if (exp.X_op != O_constant)
4756     return 1;
4757 
4758   v = exp.X_add_number;
4759   if (v & 1)
4760     return 0;
4761   return 1;
4762 
4763 }
4764 
4765 static void
check_expr_is_bit_index(expressionS exp)4766 check_expr_is_bit_index (expressionS exp)
4767 {
4768   int val;
4769 
4770   if (exp.X_op != O_constant)
4771     {
4772       rl78_error (_("bit index must be a constant"));
4773       return;
4774     }
4775   val = exp.X_add_number;
4776 
4777   if (val < 0 || val > 7)
4778     rl78_error (_("rtsd size must be 0..7"));
4779 }
4780 
4781 static int
exp_val(expressionS exp)4782 exp_val (expressionS exp)
4783 {
4784   if (exp.X_op != O_constant)
4785   {
4786     rl78_error (_("constant expected"));
4787     return 0;
4788   }
4789   return exp.X_add_number;
4790 }
4791 
4792 static int
check_expr_is_const(expressionS e,int vmin,int vmax)4793 check_expr_is_const (expressionS e, int vmin, int vmax)
4794 {
4795   static char buf[100];
4796   if (e.X_op != O_constant
4797       || e.X_add_number < vmin
4798       || e.X_add_number > vmax)
4799     {
4800       if (vmin == vmax)
4801 	sprintf (buf, "%d expected here", vmin);
4802       else
4803 	sprintf (buf, "%d..%d expected here", vmin, vmax);
4804       rl78_error(buf);
4805       return 0;
4806     }
4807   return 1;
4808 }
4809