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