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
84static 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
139static int         expr_is_sfr (expressionS);
140static int         expr_is_saddr (expressionS);
141static int         expr_is_word_aligned (expressionS);
142static int         exp_val (expressionS exp);
143
144static int    need_flag = 0;
145static int    rl78_in_brackets = 0;
146static int    rl78_last_token = 0;
147static char * rl78_init_start;
148static char * rl78_last_exp_start = 0;
149static 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
172static 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.  */
177static 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.  */
181static int
182reg_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
231extern 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
488union 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};
498typedef union YYSTYPE YYSTYPE;
499# define YYSTYPE_IS_TRIVIAL 1
500# define YYSTYPE_IS_DECLARED 1
501#endif
502
503
504extern YYSTYPE rl78_lval;
505
506
507int rl78_parse (void);
508
509
510#endif /* !YY_RL78_CONFIG_RL_PARSE_H_INCLUDED  */
511/* Symbol kind.  */
512enum 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};
701typedef 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__
728typedef __INT_LEAST8_TYPE__ yytype_int8;
729#elif defined YY_STDINT_H
730typedef int_least8_t yytype_int8;
731#else
732typedef signed char yytype_int8;
733#endif
734
735#ifdef __INT_LEAST16_MAX__
736typedef __INT_LEAST16_TYPE__ yytype_int16;
737#elif defined YY_STDINT_H
738typedef int_least16_t yytype_int16;
739#else
740typedef 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__
756typedef __UINT_LEAST8_TYPE__ yytype_uint8;
757#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
758       && UINT_LEAST8_MAX <= INT_MAX)
759typedef uint_least8_t yytype_uint8;
760#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
761typedef unsigned char yytype_uint8;
762#else
763typedef short yytype_uint8;
764#endif
765
766#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
767typedef __UINT_LEAST16_TYPE__ yytype_uint16;
768#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
769       && UINT_LEAST16_MAX <= INT_MAX)
770typedef uint_least16_t yytype_uint16;
771#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
772typedef unsigned short yytype_uint16;
773#else
774typedef 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). */
816typedef yytype_int16 yy_state_t;
817
818/* State numbers in computations.  */
819typedef 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
952void *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
958void 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.  */
969union 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.  */
1051static 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.  */
1095static 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.  */
1139static 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.  */
1143static 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
1168static const char *
1169yysymbol_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.  */
1187static 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.  */
1269static 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].  */
1349static 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].  */
1360static 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.  */
1373static 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
1462static 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.  */
1553static 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.  */
1633static 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.  */
1671static 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
1709enum { 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)                        \
1753do {                                            \
1754  if (yydebug)                                  \
1755    YYFPRINTF Args;                             \
1756} while (0)
1757
1758
1759
1760
1761# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)                    \
1762do {                                                                      \
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
1777static void
1778yy_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
1795static void
1796yy_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
1811static void
1812yy_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)                            \
1824do {                                                            \
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
1834static void
1835yy_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)          \
1855do {                                    \
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.  */
1862int 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
1896static void
1897yydestruct (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.  */
1912int yychar;
1913
1914/* The semantic value of the lookahead symbol.  */
1915YYSTYPE yylval;
1916/* Number of syntax errors so far.  */
1917int yynerrs;
1918
1919
1920
1921
1922/*----------.
1923| yyparse.  |
1924`----------*/
1925
1926int
1927yyparse (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`------------------------------------------------------------*/
1976yynewstate:
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`--------------------------------------------------------------------*/
1985yysetstate:
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`-----------*/
2066yybackup:
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`-----------------------------------------------------------*/
2140yydefault:
2141  yyn = yydefact[yystate];
2142  if (yyn == 0)
2143    goto yyerrlab;
2144  goto yyreduce;
2145
2146
2147/*-----------------------------.
2148| yyreduce -- do a reduction.  |
2149`-----------------------------*/
2150yyreduce:
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`--------------------------------------*/
4281yyerrlab:
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`---------------------------------------------------*/
4319yyerrorlab:
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`-------------------------------------------------------------*/
4338yyerrlab1:
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`-------------------------------------*/
4383yyacceptlab:
4384  yyresult = 0;
4385  goto yyreturnlab;
4386
4387
4388/*-----------------------------------.
4389| yyabortlab -- YYABORT comes here.  |
4390`-----------------------------------*/
4391yyabortlab:
4392  yyresult = 1;
4393  goto yyreturnlab;
4394
4395
4396/*-----------------------------------------------------------.
4397| yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here.  |
4398`-----------------------------------------------------------*/
4399yyexhaustedlab:
4400  yyerror (YY_("memory exhausted"));
4401  yyresult = 2;
4402  goto yyreturnlab;
4403
4404
4405/*----------------------------------------------------------.
4406| yyreturnlab -- parsing is finished, clean up and return.  |
4407`----------------------------------------------------------*/
4408yyreturnlab:
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
4439static struct
4440{
4441  const char * string;
4442  int          token;
4443  int          val;
4444}
4445token_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
4592void
4593rl78_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.  */
4608static char *
4609find_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
4643static int
4644rl78_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
4746int
4747rl78_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
4758static int
4759expr_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
4772static int
4773expr_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
4786static int
4787expr_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
4801static void
4802check_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
4817static int
4818exp_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
4828static int
4829check_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