xref: /netbsd-src/external/gpl3/binutils/dist/gas/config/rx-parse.c (revision 32d1c65c71fbdb65a012e8392a62a757dd6853e9)
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