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.1.2 christos while (is_whitespace (*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