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