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