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