From a117b0a51cd3c768453c244a3754c1b9a77e74fc Mon Sep 17 00:00:00 2001 From: Yoshinori Sato Date: Tue, 15 Dec 2015 09:26:56 +0000 Subject: [PATCH] Add support for RX V2 Instruction Set binutils * readelf.c(get_machine_flags): Add v2 flag. gas * config/rx-defs.h(rx_cpu_type): Add RXV2 type. * config/tc-rx.c(cpu_type_list): New type lookup table. (md_parse_option): Use lookup table for choose cpu. (md_show_usage): Add rxv2 for mcpu option. * doc/c-rx.texi: Likewise. * config/rx-parse.y: Add v2 instructions and ACC register. (rx_check_v2): check v2 type. include/elf * rx.h(E_FLAG_RX_V2): New RXv2 type. include/opcode * rx.h: Add new instructions. opcoes * rx-deocde.opc(rx_decode_opcode): Add new instructions pattern. * rx-dis.c(register_name): Add new register. gas/testsuite * gas/rx/emaca.d: New. * gas/rx/emaca.sm: New. * gas/rx/emsba.d: New. * gas/rx/emsba.sm: New. * gas/rx/emula.d: New. * gas/rx/emula.sm: New. * gas/rx/fadd.d: Add new pattern. * gas/rx/fadd.sm: Add new pattern. * gas/rx/fmul.d: Add new pattern. * gas/rx/fmul.sm: Add new pattern. * gas/rx/fsqrt.d: New. * gas/rx/fsqrt.sm: New. * gas/rx/fsub.d: Add new pattern. * gas/rx/fsub.sm: Add new pattern. * gas/rx/ftou.d: New. * gas/rx/ftou.sm: New. * gas/rx/maclh.d: New. * gas/rx/maclh.sm: New. * gas/rx/maclo.d: Add new pattern. * gas/rx/maclo.sm: Add new pattern. * gas/rx/macros.inc: Add new register. * gas/rx/movco.d: New. * gas/rx/movco.sm: New. * gas/rx/movli.d: New. * gas/rx/movli.sm: New. * gas/rx/msbhi.d: New. * gas/rx/msbhi.sm: New. * gas/rx/msblh.d: New. * gas/rx/msblh.sm: New. * gas/rx/msblo.d: New. * gas/rx/msblo.sm: New. * gas/rx/mullh.d: New. * gas/rx/mullh.sm: New. * gas/rx/mvfacgu.d: New. * gas/rx/mvfacgu.sm: New. * gas/rx/mvfachi.d: Add new pattern. * gas/rx/mvfachi.sm: Add new pattern. * gas/rx/mvfaclo.d: Add new pattern. * gas/rx/mvfaclo.sm: Add new pattern. * gas/rx/mvfacmi.d: Add new pattern. * gas/rx/mvfacmi.sm: Add new pattern. * gas/rx/mvfc.d: Add new pattern. * gas/rx/mvtacgu.d: New. * gas/rx/mvtacgu.sm: New. * gas/rx/mvtc.d: Add new pattern. * gas/rx/popc.d: Add new pattern. * gas/rx/pushc.d: Add new pattern. * gas/rx/racl.d: New. * gas/rx/racl.sm: New. * gas/rx/racw.d: Add new pattern. * gas/rx/racw.sm: Add new pattern. * gas/rx/rdacl.d: New. * gas/rx/rdacl.sm: New. * gas/rx/rdacw.d: New. * gas/rx/rdacw.sm: New. * gas/rx/rx.exp: Add option. * gas/rx/stnz.d: Add new pattern. * gas/rx/stnz.sm: Add new pattern. * gas/rx/stz.d: Add new pattern. * gas/rx/stz.sm: Add new pattern. * gas/rx/utof.d: New. * gas/rx/utof.sm: New. --- binutils/ChangeLog | 4 + binutils/readelf.c | 2 + gas/ChangeLog | 10 + gas/config/rx-defs.h | 3 +- gas/config/rx-parse.y | 211 +- gas/config/tc-rx.c | 47 +- gas/doc/c-rx.texi | 7 +- gas/testsuite/ChangeLog | 65 + gas/testsuite/gas/rx/emaca.d | 16 + gas/testsuite/gas/rx/emaca.sm | 2 + gas/testsuite/gas/rx/emsba.d | 16 + gas/testsuite/gas/rx/emsba.sm | 2 + gas/testsuite/gas/rx/emula.d | 16 + gas/testsuite/gas/rx/emula.sm | 2 + gas/testsuite/gas/rx/fadd.d | 8 + gas/testsuite/gas/rx/fadd.sm | 1 + gas/testsuite/gas/rx/fmul.d | 8 + gas/testsuite/gas/rx/fmul.sm | 1 + gas/testsuite/gas/rx/fsqrt.d | 24 + gas/testsuite/gas/rx/fsqrt.sm | 2 + gas/testsuite/gas/rx/fsub.d | 8 + gas/testsuite/gas/rx/fsub.sm | 1 + gas/testsuite/gas/rx/ftou.d | 24 + gas/testsuite/gas/rx/ftou.sm | 2 + gas/testsuite/gas/rx/gprel.d | 10 +- gas/testsuite/gas/rx/machi.d | 16 +- gas/testsuite/gas/rx/machi.sm | 2 + gas/testsuite/gas/rx/maclh.d | 16 + gas/testsuite/gas/rx/maclh.sm | 2 + gas/testsuite/gas/rx/maclo.d | 16 +- gas/testsuite/gas/rx/maclo.sm | 2 + gas/testsuite/gas/rx/macros.inc | 2 +- gas/testsuite/gas/rx/max.d | 4 +- gas/testsuite/gas/rx/mov.d | 2 +- gas/testsuite/gas/rx/movco.d | 12 + gas/testsuite/gas/rx/movco.sm | 1 + gas/testsuite/gas/rx/movli.d | 12 + gas/testsuite/gas/rx/movli.sm | 1 + gas/testsuite/gas/rx/msbhi.d | 16 + gas/testsuite/gas/rx/msbhi.sm | 2 + gas/testsuite/gas/rx/msblh.d | 16 + gas/testsuite/gas/rx/msblh.sm | 2 + gas/testsuite/gas/rx/msblo.d | 16 + gas/testsuite/gas/rx/msblo.sm | 2 + gas/testsuite/gas/rx/mulhi.d | 16 +- gas/testsuite/gas/rx/mulhi.sm | 2 + gas/testsuite/gas/rx/mullh.d | 16 + gas/testsuite/gas/rx/mullh.sm | 2 + gas/testsuite/gas/rx/mullo.d | 16 +- gas/testsuite/gas/rx/mullo.sm | 2 + gas/testsuite/gas/rx/mvfacgu.d | 20 + gas/testsuite/gas/rx/mvfacgu.sm | 6 + gas/testsuite/gas/rx/mvfachi.d | 16 +- gas/testsuite/gas/rx/mvfachi.sm | 6 + gas/testsuite/gas/rx/mvfaclo.d | 16 +- gas/testsuite/gas/rx/mvfaclo.sm | 6 + gas/testsuite/gas/rx/mvfacmi.d | 16 +- gas/testsuite/gas/rx/mvfacmi.sm | 6 + gas/testsuite/gas/rx/mvfc.d | 2 + gas/testsuite/gas/rx/mvtacgu.d | 12 + gas/testsuite/gas/rx/mvtacgu.sm | 2 + gas/testsuite/gas/rx/mvtachi.d | 8 +- gas/testsuite/gas/rx/mvtachi.sm | 2 + gas/testsuite/gas/rx/mvtaclo.d | 8 +- gas/testsuite/gas/rx/mvtaclo.sm | 2 + gas/testsuite/gas/rx/mvtc.d | 28 +- gas/testsuite/gas/rx/nop.d | 4 +- gas/testsuite/gas/rx/popc.d | 1 + gas/testsuite/gas/rx/pushc.d | 1 + gas/testsuite/gas/rx/racl.d | 12 + gas/testsuite/gas/rx/racl.sm | 4 + gas/testsuite/gas/rx/racw.d | 8 +- gas/testsuite/gas/rx/racw.sm | 4 + gas/testsuite/gas/rx/rdacl.d | 12 + gas/testsuite/gas/rx/rdacl.sm | 4 + gas/testsuite/gas/rx/rdacw.d | 12 + gas/testsuite/gas/rx/rdacw.sm | 4 + gas/testsuite/gas/rx/rx.exp | 3 + gas/testsuite/gas/rx/stnz.d | 4 + gas/testsuite/gas/rx/stnz.sm | 1 + gas/testsuite/gas/rx/stz.d | 4 + gas/testsuite/gas/rx/stz.sm | 1 + gas/testsuite/gas/rx/utof.d | 72 + gas/testsuite/gas/rx/utof.sm | 2 + include/elf/ChangeLog | 4 + include/elf/rx.h | 2 +- include/opcode/ChangeLog | 4 + include/opcode/rx.h | 19 + opcodes/ChangeLog | 6 + opcodes/rx-decode.c | 6547 +++++++++++++++++++------------ opcodes/rx-decode.opc | 115 +- opcodes/rx-dis.c | 4 +- 92 files changed, 5065 insertions(+), 2633 deletions(-) create mode 100644 gas/testsuite/gas/rx/emaca.d create mode 100644 gas/testsuite/gas/rx/emaca.sm create mode 100644 gas/testsuite/gas/rx/emsba.d create mode 100644 gas/testsuite/gas/rx/emsba.sm create mode 100644 gas/testsuite/gas/rx/emula.d create mode 100644 gas/testsuite/gas/rx/emula.sm create mode 100644 gas/testsuite/gas/rx/fsqrt.d create mode 100644 gas/testsuite/gas/rx/fsqrt.sm create mode 100644 gas/testsuite/gas/rx/ftou.d create mode 100644 gas/testsuite/gas/rx/ftou.sm create mode 100644 gas/testsuite/gas/rx/maclh.d create mode 100644 gas/testsuite/gas/rx/maclh.sm create mode 100644 gas/testsuite/gas/rx/movco.d create mode 100644 gas/testsuite/gas/rx/movco.sm create mode 100644 gas/testsuite/gas/rx/movli.d create mode 100644 gas/testsuite/gas/rx/movli.sm create mode 100644 gas/testsuite/gas/rx/msbhi.d create mode 100644 gas/testsuite/gas/rx/msbhi.sm create mode 100644 gas/testsuite/gas/rx/msblh.d create mode 100644 gas/testsuite/gas/rx/msblh.sm create mode 100644 gas/testsuite/gas/rx/msblo.d create mode 100644 gas/testsuite/gas/rx/msblo.sm create mode 100644 gas/testsuite/gas/rx/mullh.d create mode 100644 gas/testsuite/gas/rx/mullh.sm create mode 100644 gas/testsuite/gas/rx/mvfacgu.d create mode 100644 gas/testsuite/gas/rx/mvfacgu.sm create mode 100644 gas/testsuite/gas/rx/mvtacgu.d create mode 100644 gas/testsuite/gas/rx/mvtacgu.sm create mode 100644 gas/testsuite/gas/rx/racl.d create mode 100644 gas/testsuite/gas/rx/racl.sm create mode 100644 gas/testsuite/gas/rx/rdacl.d create mode 100644 gas/testsuite/gas/rx/rdacl.sm create mode 100644 gas/testsuite/gas/rx/rdacw.d create mode 100644 gas/testsuite/gas/rx/rdacw.sm create mode 100644 gas/testsuite/gas/rx/utof.d create mode 100644 gas/testsuite/gas/rx/utof.sm diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 5db9eacb09..3535d7688d 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,7 @@ +2015-12-14 Yoshinori Sato + + * readelf.c (get_machine_flags): Add support for RX v2 flag. + 2015-12-14 Jan Beulich * nm.c: Include coff/external.h, coff/internal.h, and diff --git a/binutils/readelf.c b/binutils/readelf.c index d5dd46f03c..c21ce3fbda 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -3376,6 +3376,8 @@ get_machine_flags (unsigned e_flags, unsigned e_machine) if (e_flags & E_FLAG_RX_SINSNS_SET) strcat (buf, e_flags & E_FLAG_RX_SINSNS_YES ? ", uses String instructions" : ", bans String instructions"); + if (e_flags & E_FLAG_RX_V2) + strcat (buf, ", V2"); break; case EM_S390: diff --git a/gas/ChangeLog b/gas/ChangeLog index 6a7cab6c12..2683acbd59 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -9,6 +9,16 @@ * config/tc-aarch64.c (vectype_to_qualifier): Calculate operand qualifier from per-type base and offet. +2015-12-14 Yoshinori Sato + + * config/rx-defs.h(rx_cpu_type): Add RXV2 type. + * config/tc-rx.c(cpu_type_list): New type lookup table. + (md_parse_option): Use lookup table for choose cpu. + (md_show_usage): Add rxv2 for mcpu option. + * doc/c-rx.texi: Likewise. + * config/rx-parse.y: Add v2 instructions and ACC register. + (rx_check_v2): check v2 type. + 2015-12-14 Jan Beulich * dw2gencfi.c (dot_cfi_label): Free "name". diff --git a/gas/config/rx-defs.h b/gas/config/rx-defs.h index 15c447df0a..8d075ce179 100644 --- a/gas/config/rx-defs.h +++ b/gas/config/rx-defs.h @@ -38,7 +38,8 @@ enum rx_cpu_types RX600, RX610, RX200, - RX100 + RX100, + RXV2 }; extern int rx_pid_register; diff --git a/gas/config/rx-parse.y b/gas/config/rx-parse.y index 87a6c480ec..44a1247976 100644 --- a/gas/config/rx-parse.y +++ b/gas/config/rx-parse.y @@ -101,7 +101,7 @@ static int sizemap[] = { BSIZE, WSIZE, LSIZE, WSIZE }; else rx_linkrelax_dsp (pos); \ F (displacement (v, msz), pos, 2) -#define id24(a,b2,b3) B3 (0xfb+a, b2, b3) +#define id24(a,b2,b3) B3 (0xfb + a, b2, b3) static void rx_check_float_support (void); static int rx_intop (expressionS, int, int); @@ -115,6 +115,7 @@ static int immediate (expressionS, int, int, int); static int displacement (expressionS, int); static void rtsd_immediate (expressionS); static void rx_range (expressionS, int, int); +static void rx_check_v2 (void); static int need_flag = 0; static int rx_in_brackets = 0; @@ -136,11 +137,11 @@ static int sub_op2; expressionS exp; } -%type REG FLAG CREG BCND BMCND SCCND +%type REG FLAG CREG BCND BMCND SCCND ACC %type flag bwl bw memex %type EXPR disp -%token REG FLAG CREG +%token REG FLAG CREG ACC %token EXPR UNKNOWN_OPCODE IS_OPCODE @@ -150,19 +151,22 @@ static int sub_op2; %token BCLR BCND BMCND BNOT BRA BRK BSET BSR BTST %token CLRPSW CMP %token DBT DIV DIVU -%token EDIV EDIVU EMUL EMULU -%token FADD FCMP FDIV FMUL FREIT FSUB FTOI +%token EDIV EDIVU EMACA EMSBA EMUL EMULA EMULU +%token FADD FCMP FDIV FMUL FREIT FSUB FSQRT FTOI FTOU %token INT ITOF %token JMP JSR -%token MACHI MACLO MAX MIN MOV MOVU MUL MULHI MULLO MULU MVFACHI MVFACMI MVFACLO -%token MVFC MVTACHI MVTACLO MVTC MVTIPL +%token MACHI MACLH MACLO MAX MIN MOV MOVCO MOVLI MOVU MSBHI MSBLH MSBLO MUL +%token MULHI MULLH MULLO MULU MVFACHI MVFACGU MVFACMI MVFACLO MVFC MVTACGU +%token MVTACHI MVTACLO MVTC MVTIPL %token NEG NOP NOT %token OR %token POP POPC POPM PUSH PUSHA PUSHC PUSHM -%token RACW REIT REVL REVW RMPA ROLC RORC ROTL ROTR ROUND RTE RTFI RTS RTSD +%token RACL RACW RDACL RDACW REIT REVL REVW RMPA ROLC RORC ROTL ROTR ROUND +%token RTE RTFI RTS RTSD %token SAT SATR SBB SCCND SCMPU SETPSW SHAR SHLL SHLR SMOVB SMOVF %token SMOVU SSTR STNZ STOP STZ SUB SUNTIL SWHILE %token TST +%token UTOF %token WAIT %token XCHG XOR @@ -466,7 +470,9 @@ statement : /* ---------------------------------------------------------------------- */ | PUSHC CREG - { if ($2 < 16) + { if ($2 == 13) + { rx_check_v2 (); } + if ($2 < 16) { B2 (0x7e, 0xc0); F ($2, 12, 4); } else as_bad (_("PUSHC can only push the first 16 control registers")); } @@ -474,7 +480,9 @@ statement : /* ---------------------------------------------------------------------- */ | POPC CREG - { if ($2 < 16) + { if ($2 == 13) + { rx_check_v2 (); } + if ($2 < 16) { B2 (0x7e, 0xe0); F ($2, 12, 4); } else as_bad (_("POPC can only pop the first 16 control registers")); } @@ -615,8 +623,8 @@ statement : | TST { sub_op = 12; } op_dp20_rim | XOR { sub_op = 13; } op_dp20_rim | NOT { sub_op = 14; sub_op2 = 0; } op_dp20_rr - | STZ { sub_op = 14; } op_dp20_i - | STNZ { sub_op = 15; } op_dp20_i + | STZ { sub_op = 14; sub_op2 = 0; } op_dp20_ri + | STNZ { sub_op = 15; sub_op2 = 1; } op_dp20_ri /* ---------------------------------------------------------------------- */ @@ -624,6 +632,7 @@ statement : | EMULU { sub_op = 7; } op_xchg | XCHG { sub_op = 16; } op_xchg | ITOF { sub_op = 17; } op_xchg + | UTOF { sub_op = 21; } op_xchg /* ---------------------------------------------------------------------- */ @@ -647,14 +656,19 @@ statement : /* ---------------------------------------------------------------------- */ - | FSUB { sub_op = 0; } float2_op + | FSUB { sub_op = 0; } float3_op | FCMP { sub_op = 1; } float2_op - | FADD { sub_op = 2; } float2_op - | FMUL { sub_op = 3; } float2_op + | FADD { sub_op = 2; } float3_op + | FMUL { sub_op = 3; } float3_op | FDIV { sub_op = 4; } float2_op + | FSQRT { sub_op = 8; } float2_op_ni | FTOI { sub_op = 5; } float2_op_ni + | FTOU { sub_op = 9; } float2_op_ni | ROUND { sub_op = 6; } float2_op_ni +/* ---------------------------------------------------------------------- */ + + /* ---------------------------------------------------------------------- */ | SCCND DOT_L REG @@ -678,27 +692,41 @@ statement : | MULHI REG ',' REG { id24 (2, 0x00, 0x00); F ($2, 16, 4); F ($4, 20, 4); } + | MULHI REG ',' REG ',' ACC + { rx_check_v2 (); id24 (2, 0x00, 0x00); F ($2, 16, 4); F ($4, 20, 4); F ($6, 12, 1); } | MULLO REG ',' REG { id24 (2, 0x01, 0x00); F ($2, 16, 4); F ($4, 20, 4); } + | MULLO REG ',' REG ',' ACC + { rx_check_v2 (); id24 (2, 0x01, 0x00); F ($2, 16, 4); F ($4, 20, 4); F ($6, 12, 1); } | MACHI REG ',' REG { id24 (2, 0x04, 0x00); F ($2, 16, 4); F ($4, 20, 4); } + | MACHI REG ',' REG ',' ACC + { rx_check_v2 (); id24 (2, 0x04, 0x00); F ($2, 16, 4); F ($4, 20, 4); F ($6, 12, 1); } | MACLO REG ',' REG { id24 (2, 0x05, 0x00); F ($2, 16, 4); F ($4, 20, 4); } + | MACLO REG ',' REG ',' ACC + { rx_check_v2 (); id24 (2, 0x05, 0x00); F ($2, 16, 4); F ($4, 20, 4); F ($6, 12, 1); } /* ---------------------------------------------------------------------- */ /* We don't have syntax for these yet. */ | MVTACHI REG { id24 (2, 0x17, 0x00); F ($2, 20, 4); } + | MVTACHI REG ',' ACC + { rx_check_v2 (); id24 (2, 0x17, 0x00); F ($2, 20, 4); F ($4, 16, 1); } | MVTACLO REG { id24 (2, 0x17, 0x10); F ($2, 20, 4); } + | MVTACLO REG ',' ACC + { rx_check_v2 (); id24 (2, 0x17, 0x10); F ($2, 20, 4); F ($4, 16, 1); } | MVFACHI REG { id24 (2, 0x1f, 0x00); F ($2, 20, 4); } + | MVFACHI { sub_op = 0; } mvfa_op | MVFACMI REG { id24 (2, 0x1f, 0x20); F ($2, 20, 4); } + | MVFACMI { sub_op = 2; } mvfa_op | MVFACLO REG { id24 (2, 0x1f, 0x10); F ($2, 20, 4); } - + | MVFACLO { sub_op = 1; } mvfa_op | RACW '#' EXPR { id24 (2, 0x18, 0x00); if (rx_uintop ($3, 4) && $3.X_add_number == 1) @@ -707,6 +735,14 @@ statement : F (1, 19, 1); else as_bad (_("RACW expects #1 or #2"));} + | RACW '#' EXPR ',' ACC + { rx_check_v2 (); id24 (2, 0x18, 0x00); F ($5, 16, 1); + if (rx_uintop ($3, 4) && $3.X_add_number == 1) + ; + else if (rx_uintop ($3, 4) && $3.X_add_number == 2) + F (1, 19, 1); + else + as_bad (_("RACW expects #1 or #2"));} /* ---------------------------------------------------------------------- */ @@ -739,13 +775,17 @@ statement : /* ---------------------------------------------------------------------- */ | MVTC REG ',' CREG - { id24 (2, 0x68, 0x00); F ($4 % 16, 20, 4); F ($4 / 16, 15, 1); + { if ($4 == 13) + rx_check_v2 (); + id24 (2, 0x68, 0x00); F ($4 % 16, 20, 4); F ($4 / 16, 15, 1); F ($2, 16, 4); } /* ---------------------------------------------------------------------- */ | MVFC CREG ',' REG - { id24 (2, 0x6a, 0); F ($2, 15, 5); F ($4, 20, 4); } + { if ($2 == 13) + rx_check_v2 (); + id24 (2, 0x6a, 0); F ($2, 15, 5); F ($4, 20, 4); } /* ---------------------------------------------------------------------- */ @@ -757,7 +797,9 @@ statement : /* ---------------------------------------------------------------------- */ | MVTC '#' EXPR ',' CREG - { id24 (2, 0x73, 0x00); F ($5, 19, 5); IMM ($3, 12); } + { if ($5 == 13) + rx_check_v2 (); + id24 (2, 0x73, 0x00); F ($5, 19, 5); IMM ($3, 12); } /* ---------------------------------------------------------------------- */ @@ -795,6 +837,62 @@ statement : | SBB '#' EXPR ',' REG { id24 (2, 0x70, 0x20); F ($5, 20, 4); NBIMM ($3, 12); } +/* ---------------------------------------------------------------------- */ + + | MOVCO REG ',' '[' REG ']' + { rx_check_v2 (); B3 (0xfd, 0x27, 0x00); F ($5, 16, 4); F ($2, 20, 4); } + +/* ---------------------------------------------------------------------- */ + + | MOVLI '[' REG ']' ',' REG + { rx_check_v2 (); B3 (0xfd, 0x2f, 0x00); F ($3, 16, 4); F ($6, 20, 4); } + +/* ---------------------------------------------------------------------- */ + + | EMACA REG ',' REG ',' ACC + { rx_check_v2 (); id24 (2, 0x07, 0x00); F ($2, 16, 4); F ($4, 20, 4); F ($6, 12, 1); } + | EMSBA REG ',' REG ',' ACC + { rx_check_v2 (); id24 (2, 0x47, 0x00); F ($2, 16, 4); F ($4, 20, 4); F ($6, 12, 1); } + | EMULA REG ',' REG ',' ACC + { rx_check_v2 (); id24 (2, 0x03, 0x00); F ($2, 16, 4); F ($4, 20, 4); F ($6, 12, 1); } + | MACLH REG ',' REG ',' ACC + { rx_check_v2 (); id24 (2, 0x06, 0x00); F ($2, 16, 4); F ($4, 20, 4); F ($6, 12, 1); } + | MSBHI REG ',' REG ',' ACC + { rx_check_v2 (); id24 (2, 0x44, 0x00); F ($2, 16, 4); F ($4, 20, 4); F ($6, 12, 1); } + | MSBLH REG ',' REG ',' ACC + { rx_check_v2 (); id24 (2, 0x46, 0x00); F ($2, 16, 4); F ($4, 20, 4); F ($6, 12, 1); } + | MSBLO REG ',' REG ',' ACC + { rx_check_v2 (); id24 (2, 0x45, 0x00); F ($2, 16, 4); F ($4, 20, 4); F ($6, 12, 1); } + | MULLH REG ',' REG ',' ACC + { rx_check_v2 (); id24 (2, 0x02, 0x00); F ($2, 16, 4); F ($4, 20, 4); F ($6, 12, 1); } + | MVFACGU { sub_op = 3; } mvfa_op + | MVTACGU REG ',' ACC + { rx_check_v2 (); id24 (2, 0x17, 0x30); F ($4, 16, 1); F ($2, 20, 4); } + | RACL '#' EXPR ',' ACC + { rx_check_v2 (); id24 (2, 0x19, 0x00); F ($5, 16, 1); + if (rx_uintop ($3, 4) && $3.X_add_number == 1) + ; + else if (rx_uintop ($3, 4) && $3.X_add_number == 2) + F (1, 19, 1); + else + as_bad (_("RACL expects #1 or #2"));} + | RDACL '#' EXPR ',' ACC + { rx_check_v2 (); id24 (2, 0x19, 0x40); F ($5, 16, 1); + if (rx_uintop ($3, 4) && $3.X_add_number == 1) + ; + else if (rx_uintop ($3, 4) && $3.X_add_number == 2) + F (1, 19, 1); + else + as_bad (_("RDACL expects #1 or #2"));} + | RDACW '#' EXPR ',' ACC + { rx_check_v2 (); id24 (2, 0x18, 0x40); F ($5, 16, 1); + if (rx_uintop ($3, 4) && $3.X_add_number == 1) + ; + else if (rx_uintop ($3, 4) && $3.X_add_number == 2) + F (1, 19, 1); + else + as_bad (_("RDACW expects #1 or #2"));} + /* ---------------------------------------------------------------------- */ ; @@ -856,7 +954,18 @@ op_dp20_rr { B2 (0x7e, sub_op2 << 4); F ($1, 12, 4); } ; -/* xchg, itof, emul, emulu */ +op_dp20_r + : REG ',' REG + { id24 (1, 0x4b + (sub_op2<<2), 0x00); F ($1, 16, 4); F ($3, 20, 4); } + ; + +op_dp20_ri + : { rx_check_v2 (); } + op_dp20_r + | op_dp20_i + ; + +/* xchg, utof, itof, emul, emulu */ op_xchg : REG ',' REG { id24 (1, 0x03 + (sub_op<<2), 0); F ($1, 16, 4); F ($3, 20, 4); } @@ -880,6 +989,16 @@ op_shift | op_shift_rot ; +float3_op + : '#' EXPR ',' REG + { rx_check_float_support (); id24 (2, 0x72, sub_op << 4); F ($4, 20, 4); O4 ($2); } + | REG ',' REG + { rx_check_float_support (); id24 (1, 0x83 + (sub_op << 2), 0); F ($1, 16, 4); F ($3, 20, 4); } + | disp '[' REG ']' opt_l ',' REG + { rx_check_float_support (); id24 (1, 0x80 + (sub_op << 2), 0); F ($3, 16, 4); F ($7, 20, 4); DSP ($1, 14, LSIZE); } + | REG ',' REG ',' REG + { rx_check_v2 (); id24 (4, 0x80 + (sub_op << 4), 0 ); F ($1, 16, 4); F ($3, 20, 4); F ($5, 12, 4); } + ; float2_op : { rx_check_float_support (); } @@ -897,6 +1016,29 @@ float2_op_ni { id24 (1, 0x80 + (sub_op << 2), 0); F ($4, 16, 4); F ($8, 20, 4); DSP ($2, 14, LSIZE); } ; +mvfa_op + : { rx_check_v2 (); } + '#' EXPR ',' ACC ',' REG + { id24 (2, 0x1e, sub_op << 4); F ($7, 20, 4); F ($5, 16, 1); + if (rx_uintop ($3, 4)) + { + switch (exp_val ($3)) + { + case 0: + F (1, 15, 1); + break; + case 1: + F (1, 15, 1); + F (1, 17, 1); + break; + case 2: + break; + default: + as_bad (_("IMM expects #0 to #2"));} + } else + as_bad (_("IMM expects #0 to #2"));} + ; + /* ====================================================================== */ disp : { $$ = zero_expr (); } @@ -976,6 +1118,7 @@ token_table[] = { "isp", CREG, 10 }, { "fintv", CREG, 11 }, { "intb", CREG, 12 }, + { "extb", CREG, 13 }, { "pbp", CREG, 16 }, { "pben", CREG, 17 }, @@ -998,6 +1141,9 @@ token_table[] = { "i", FLAG, 8 }, { "u", FLAG, 9 }, + { "a0", ACC, 0 }, + { "a1", ACC, 1 }, + #define OPC(x) { #x, x, IS_OPCODE } OPC(ABS), OPC(ADC), @@ -1019,35 +1165,49 @@ token_table[] = OPC(DIVU), OPC(EDIV), OPC(EDIVU), + OPC(EMACA), + OPC(EMSBA), OPC(EMUL), + OPC(EMULA), OPC(EMULU), OPC(FADD), OPC(FCMP), OPC(FDIV), OPC(FMUL), OPC(FREIT), + OPC(FSQRT), + OPC(FTOU), OPC(FSUB), OPC(FTOI), OPC(INT), OPC(ITOF), OPC(JMP), OPC(JSR), + OPC(MVFACGU), OPC(MVFACHI), OPC(MVFACMI), OPC(MVFACLO), OPC(MVFC), + OPC(MVTACGU), OPC(MVTACHI), OPC(MVTACLO), OPC(MVTC), OPC(MVTIPL), OPC(MACHI), OPC(MACLO), + OPC(MACLH), OPC(MAX), OPC(MIN), OPC(MOV), + OPC(MOVCO), + OPC(MOVLI), OPC(MOVU), + OPC(MSBHI), + OPC(MSBLH), + OPC(MSBLO), OPC(MUL), OPC(MULHI), + OPC(MULLH), OPC(MULLO), OPC(MULU), OPC(NEG), @@ -1061,7 +1221,10 @@ token_table[] = OPC(PUSHA), OPC(PUSHC), OPC(PUSHM), + OPC(RACL), OPC(RACW), + OPC(RDACL), + OPC(RDACW), OPC(REIT), OPC(REVL), OPC(REVW), @@ -1095,6 +1258,7 @@ token_table[] = OPC(SUNTIL), OPC(SWHILE), OPC(TST), + OPC(UTOF), OPC(WAIT), OPC(XCHG), OPC(XOR), @@ -1643,3 +1807,10 @@ rx_check_float_support (void) if (rx_cpu == RX100 || rx_cpu == RX200) rx_error (_("target CPU type does not support floating point instructions")); } + +static void +rx_check_v2 (void) +{ + if (rx_cpu < RXV2) + rx_error (_("target CPU type does not support v2 instructions")); +} diff --git a/gas/config/tc-rx.c b/gas/config/tc-rx.c index 82e94a73d2..e18e034201 100644 --- a/gas/config/tc-rx.c +++ b/gas/config/tc-rx.c @@ -106,6 +106,21 @@ struct option md_longopts[] = }; size_t md_longopts_size = sizeof (md_longopts); +struct cpu_type +{ + char *cpu_name; + int type; +}; + +struct cpu_type cpu_type_list[] = +{ + {"rx100",RX100}, + {"rx200",RX200}, + {"rx600",RX600}, + {"rx610",RX610}, + {"rxv2",RXV2} +}; + int md_parse_option (int c ATTRIBUTE_UNUSED, char * arg ATTRIBUTE_UNUSED) { @@ -161,25 +176,27 @@ md_parse_option (int c ATTRIBUTE_UNUSED, char * arg ATTRIBUTE_UNUSED) return 1; case OPTION_CPU: - if (strcasecmp (arg, "rx100") == 0) - rx_cpu = RX100; - else if (strcasecmp (arg, "rx200") == 0) - rx_cpu = RX200; - else if (strcasecmp (arg, "rx600") == 0) - rx_cpu = RX600; - else if (strcasecmp (arg, "rx610") == 0) - rx_cpu = RX610; - else - { - as_warn (_("unrecognised RX CPU type %s"), arg); - break; - } - return 1; + { + unsigned int i; + for (i = 0; i < ARRAY_SIZE (cpu_type_list); i++) + { + if (strcasecmp (arg, cpu_type_list[i].cpu_name) == 0) + { + rx_cpu = cpu_type_list[i].type; + if (rx_cpu == RXV2) + elf_flags |= E_FLAG_RX_V2; + return 1; + } + } + as_warn (_("unrecognised RX CPU type %s"), arg); + break; + } case OPTION_DISALLOW_STRING_INSNS: elf_flags |= E_FLAG_RX_SINSNS_SET | E_FLAG_RX_SINSNS_NO; return 1; } + return 0; } @@ -197,7 +214,7 @@ md_show_usage (FILE * stream) fprintf (stream, _(" --mrelax\n")); fprintf (stream, _(" --mpid\n")); fprintf (stream, _(" --mint-register=\n")); - fprintf (stream, _(" --mcpu=\n")); + fprintf (stream, _(" --mcpu=\n")); fprintf (stream, _(" --mno-allow-string-insns")); } diff --git a/gas/doc/c-rx.texi b/gas/doc/c-rx.texi index 3fe2dd6572..d2861eb759 100644 --- a/gas/doc/c-rx.texi +++ b/gas/doc/c-rx.texi @@ -108,9 +108,10 @@ alignments. This option is the default. @cindex @samp{-mcpu=} @item -mcpu=@var{name} This option tells the assembler the target CPU type. Currently the -@code{rx200}, @code{rx600} and @code{rx610} are recognised as valid -cpu names. Attempting to assemble an instruction not supported by the -indicated cpu type will result in an error message being generated. +@code{rx100}, @code{rx200}, @code{rx600}, @code{rx610} and @code{rxv2} +are recognised as valid cpu names. Attempting to assemble an instruction +not supported by the indicated cpu type will result in an error message +being generated. @cindex @samp{-mno-allow-string-insns} @item -mno-allow-string-insns diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index 2259d86e0e..587e583677 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -68,6 +68,71 @@ * gas/aarch64/advsimd-fp16.d: New. * gas/aarch64/advsimd-fp16.s: New. +2015-12-14 Yoshinori Sato + + * gas/rx/emaca.d: New. + * gas/rx/emaca.sm: New. + * gas/rx/emsba.d: New. + * gas/rx/emsba.sm: New. + * gas/rx/emula.d: New. + * gas/rx/emula.sm: New. + * gas/rx/fadd.d: Add new pattern. + * gas/rx/fadd.sm: Add new pattern. + * gas/rx/fmul.d: Add new pattern. + * gas/rx/fmul.sm: Add new pattern. + * gas/rx/fsqrt.d: New. + * gas/rx/fsqrt.sm: New. + * gas/rx/fsub.d: Add new pattern. + * gas/rx/fsub.sm: Add new pattern. + * gas/rx/ftou.d: New. + * gas/rx/ftou.sm: New. + * gas/rx/maclh.d: New. + * gas/rx/maclh.sm: New. + * gas/rx/maclo.d: Add new pattern. + * gas/rx/maclo.sm: Add new pattern. + * gas/rx/macros.inc: Add new register. + * gas/rx/movco.d: New. + * gas/rx/movco.sm: New. + * gas/rx/movli.d: New. + * gas/rx/movli.sm: New. + * gas/rx/msbhi.d: New. + * gas/rx/msbhi.sm: New. + * gas/rx/msblh.d: New. + * gas/rx/msblh.sm: New. + * gas/rx/msblo.d: New. + * gas/rx/msblo.sm: New. + * gas/rx/mullh.d: New. + * gas/rx/mullh.sm: New. + * gas/rx/mvfacgu.d: New. + * gas/rx/mvfacgu.sm: New. + * gas/rx/mvfachi.d: Add new pattern. + * gas/rx/mvfachi.sm: Add new pattern. + * gas/rx/mvfaclo.d: Add new pattern. + * gas/rx/mvfaclo.sm: Add new pattern. + * gas/rx/mvfacmi.d: Add new pattern. + * gas/rx/mvfacmi.sm: Add new pattern. + * gas/rx/mvfc.d: Add new pattern. + * gas/rx/mvtacgu.d: New. + * gas/rx/mvtacgu.sm: New. + * gas/rx/mvtc.d: Add new pattern. + * gas/rx/popc.d: Add new pattern. + * gas/rx/pushc.d: Add new pattern. + * gas/rx/racl.d: New. + * gas/rx/racl.sm: New. + * gas/rx/racw.d: Add new pattern. + * gas/rx/racw.sm: Add new pattern. + * gas/rx/rdacl.d: New. + * gas/rx/rdacl.sm: New. + * gas/rx/rdacw.d: New. + * gas/rx/rdacw.sm: New. + * gas/rx/rx.exp: Add option. + * gas/rx/stnz.d: Add new pattern. + * gas/rx/stnz.sm: Add new pattern. + * gas/rx/stz.d: Add new pattern. + * gas/rx/stz.sm: Add new pattern. + * gas/rx/utof.d: New. + * gas/rx/utof.sm: New. + 2015-12-12 Alan Modra * gas/sh/tlsd.s: Use .tdata not .tbss. diff --git a/gas/testsuite/gas/rx/emaca.d b/gas/testsuite/gas/rx/emaca.d new file mode 100644 index 0000000000..5cb5dea243 --- /dev/null +++ b/gas/testsuite/gas/rx/emaca.d @@ -0,0 +1,16 @@ +#objdump: -dr + +dump\.o: file format .* + + +Disassembly of section \.text: + +00000000 <\.text>: + 0: fd 07 00 emaca r0, r0, a0 + 3: fd 07 0f emaca r0, r15, a0 + 6: fd 07 f0 emaca r15, r0, a0 + 9: fd 07 ff emaca r15, r15, a0 + c: fd 0f 00 emaca r0, r0, a1 + f: fd 0f 0f emaca r0, r15, a1 + 12: fd 0f f0 emaca r15, r0, a1 + 15: fd 0f ff emaca r15, r15, a1 diff --git a/gas/testsuite/gas/rx/emaca.sm b/gas/testsuite/gas/rx/emaca.sm new file mode 100644 index 0000000000..37406760d5 --- /dev/null +++ b/gas/testsuite/gas/rx/emaca.sm @@ -0,0 +1,2 @@ + emaca {reg},{reg},a0 + emaca {reg},{reg},a1 diff --git a/gas/testsuite/gas/rx/emsba.d b/gas/testsuite/gas/rx/emsba.d new file mode 100644 index 0000000000..19101076f3 --- /dev/null +++ b/gas/testsuite/gas/rx/emsba.d @@ -0,0 +1,16 @@ +#objdump: -dr + +dump\.o: file format .* + + +Disassembly of section \.text: + +00000000 <\.text>: + 0: fd 47 00 emsba r0, r0, a0 + 3: fd 47 0f emsba r0, r15, a0 + 6: fd 47 f0 emsba r15, r0, a0 + 9: fd 47 ff emsba r15, r15, a0 + c: fd 4f 00 emsba r0, r0, a1 + f: fd 4f 0f emsba r0, r15, a1 + 12: fd 4f f0 emsba r15, r0, a1 + 15: fd 4f ff emsba r15, r15, a1 diff --git a/gas/testsuite/gas/rx/emsba.sm b/gas/testsuite/gas/rx/emsba.sm new file mode 100644 index 0000000000..70938fa25a --- /dev/null +++ b/gas/testsuite/gas/rx/emsba.sm @@ -0,0 +1,2 @@ + emsba {reg},{reg},a0 + emsba {reg},{reg},a1 diff --git a/gas/testsuite/gas/rx/emula.d b/gas/testsuite/gas/rx/emula.d new file mode 100644 index 0000000000..9c689db9eb --- /dev/null +++ b/gas/testsuite/gas/rx/emula.d @@ -0,0 +1,16 @@ +#objdump: -dr + +dump\.o: file format .* + + +Disassembly of section \.text: + +00000000 <\.text>: + 0: fd 03 00 emula r0, r0, a0 + 3: fd 03 0f emula r0, r15, a0 + 6: fd 03 f0 emula r15, r0, a0 + 9: fd 03 ff emula r15, r15, a0 + c: fd 0b 00 emula r0, r0, a1 + f: fd 0b 0f emula r0, r15, a1 + 12: fd 0b f0 emula r15, r0, a1 + 15: fd 0b ff emula r15, r15, a1 diff --git a/gas/testsuite/gas/rx/emula.sm b/gas/testsuite/gas/rx/emula.sm new file mode 100644 index 0000000000..95c7767ae9 --- /dev/null +++ b/gas/testsuite/gas/rx/emula.sm @@ -0,0 +1,2 @@ + emula {reg},{reg},a0 + emula {reg},{reg},a1 diff --git a/gas/testsuite/gas/rx/fadd.d b/gas/testsuite/gas/rx/fadd.d index 406052bfbf..718193c92f 100644 --- a/gas/testsuite/gas/rx/fadd.d +++ b/gas/testsuite/gas/rx/fadd.d @@ -26,3 +26,11 @@ Disassembly of section \.text: 49: fc 8a 0f ff 3f fadd 65532\[r0\]\.l, r15 4e: fc 8a f0 ff 3f fadd 65532\[r15\]\.l, r0 53: fc 8a ff ff 3f fadd 65532\[r15\]\.l, r15 + 58: ff a0 00 fadd r0, r0, r0 + 5b: ff af 00 fadd r0, r0, r15 + 5e: ff a0 0f fadd r0, r15, r0 + 61: ff af 0f fadd r0, r15, r15 + 64: ff a0 f0 fadd r15, r0, r0 + 67: ff af f0 fadd r15, r0, r15 + 6a: ff a0 ff fadd r15, r15, r0 + 6d: ff af ff fadd r15, r15, r15 diff --git a/gas/testsuite/gas/rx/fadd.sm b/gas/testsuite/gas/rx/fadd.sm index 94021af7f9..34cb78ea71 100644 --- a/gas/testsuite/gas/rx/fadd.sm +++ b/gas/testsuite/gas/rx/fadd.sm @@ -1,3 +1,4 @@ fadd #{imm32},{reg} fadd {reg},{reg} fadd {mem}.L,{reg} + fadd {reg},{reg},{reg} diff --git a/gas/testsuite/gas/rx/fmul.d b/gas/testsuite/gas/rx/fmul.d index 7fec0af139..2685e78425 100644 --- a/gas/testsuite/gas/rx/fmul.d +++ b/gas/testsuite/gas/rx/fmul.d @@ -26,3 +26,11 @@ Disassembly of section \.text: 49: fc 8e 0f ff 3f fmul 65532\[r0\]\.l, r15 4e: fc 8e f0 ff 3f fmul 65532\[r15\]\.l, r0 53: fc 8e ff ff 3f fmul 65532\[r15\]\.l, r15 + 58: ff b0 00 fmul r0, r0, r0 + 5b: ff bf 00 fmul r0, r0, r15 + 5e: ff b0 0f fmul r0, r15, r0 + 61: ff bf 0f fmul r0, r15, r15 + 64: ff b0 f0 fmul r15, r0, r0 + 67: ff bf f0 fmul r15, r0, r15 + 6a: ff b0 ff fmul r15, r15, r0 + 6d: ff bf ff fmul r15, r15, r15 diff --git a/gas/testsuite/gas/rx/fmul.sm b/gas/testsuite/gas/rx/fmul.sm index e68f24f292..37408e4469 100644 --- a/gas/testsuite/gas/rx/fmul.sm +++ b/gas/testsuite/gas/rx/fmul.sm @@ -1,3 +1,4 @@ fmul #{imm32},{reg} fmul {reg},{reg} fmul {mem}.L,{reg} + fmul {reg},{reg},{reg} diff --git a/gas/testsuite/gas/rx/fsqrt.d b/gas/testsuite/gas/rx/fsqrt.d new file mode 100644 index 0000000000..31b84dcf5e --- /dev/null +++ b/gas/testsuite/gas/rx/fsqrt.d @@ -0,0 +1,24 @@ +#objdump: -dr + +dump\.o: file format .* + + +Disassembly of section \.text: + +00000000 <\.text>: + 0: fc a3 00 fsqrt r0, r0 + 3: fc a3 0f fsqrt r0, r15 + 6: fc a3 f0 fsqrt r15, r0 + 9: fc a3 ff fsqrt r15, r15 + c: fc a0 00 fsqrt \[r0\]\.l, r0 + f: fc a0 0f fsqrt \[r0\]\.l, r15 + 12: fc a0 f0 fsqrt \[r15\]\.l, r0 + 15: fc a0 ff fsqrt \[r15\]\.l, r15 + 18: fc a1 00 3f fsqrt 252\[r0\]\.l, r0 + 1c: fc a1 0f 3f fsqrt 252\[r0\]\.l, r15 + 20: fc a1 f0 3f fsqrt 252\[r15\]\.l, r0 + 24: fc a1 ff 3f fsqrt 252\[r15\]\.l, r15 + 28: fc a2 00 ff 3f fsqrt 65532\[r0\]\.l, r0 + 2d: fc a2 0f ff 3f fsqrt 65532\[r0\]\.l, r15 + 32: fc a2 f0 ff 3f fsqrt 65532\[r15\]\.l, r0 + 37: fc a2 ff ff 3f fsqrt 65532\[r15\]\.l, r15 diff --git a/gas/testsuite/gas/rx/fsqrt.sm b/gas/testsuite/gas/rx/fsqrt.sm new file mode 100644 index 0000000000..b1878396d4 --- /dev/null +++ b/gas/testsuite/gas/rx/fsqrt.sm @@ -0,0 +1,2 @@ + fsqrt {reg},{reg} + fsqrt {mem}.L,{reg} diff --git a/gas/testsuite/gas/rx/fsub.d b/gas/testsuite/gas/rx/fsub.d index 5d26e5ae5e..e36ddb68ac 100644 --- a/gas/testsuite/gas/rx/fsub.d +++ b/gas/testsuite/gas/rx/fsub.d @@ -26,3 +26,11 @@ Disassembly of section \.text: 49: fc 82 0f ff 3f fsub 65532\[r0\]\.l, r15 4e: fc 82 f0 ff 3f fsub 65532\[r15\]\.l, r0 53: fc 82 ff ff 3f fsub 65532\[r15\]\.l, r15 + 58: ff 80 00 fsub r0, r0, r0 + 5b: ff 8f 00 fsub r0, r0, r15 + 5e: ff 80 0f fsub r0, r15, r0 + 61: ff 8f 0f fsub r0, r15, r15 + 64: ff 80 f0 fsub r15, r0, r0 + 67: ff 8f f0 fsub r15, r0, r15 + 6a: ff 80 ff fsub r15, r15, r0 + 6d: ff 8f ff fsub r15, r15, r15 diff --git a/gas/testsuite/gas/rx/fsub.sm b/gas/testsuite/gas/rx/fsub.sm index 64b93c9cad..5dfe022763 100644 --- a/gas/testsuite/gas/rx/fsub.sm +++ b/gas/testsuite/gas/rx/fsub.sm @@ -1,3 +1,4 @@ fsub #{imm32},{reg} fsub {reg},{reg} fsub {mem}.L,{reg} + fsub {reg},{reg},{reg} diff --git a/gas/testsuite/gas/rx/ftou.d b/gas/testsuite/gas/rx/ftou.d new file mode 100644 index 0000000000..84a285bc5c --- /dev/null +++ b/gas/testsuite/gas/rx/ftou.d @@ -0,0 +1,24 @@ +#objdump: -dr + +dump\.o: file format .* + + +Disassembly of section \.text: + +00000000 <\.text>: + 0: fc a7 00 ftou r0, r0 + 3: fc a7 0f ftou r0, r15 + 6: fc a7 f0 ftou r15, r0 + 9: fc a7 ff ftou r15, r15 + c: fc a4 00 ftou \[r0\]\.l, r0 + f: fc a4 0f ftou \[r0\]\.l, r15 + 12: fc a4 f0 ftou \[r15\]\.l, r0 + 15: fc a4 ff ftou \[r15\]\.l, r15 + 18: fc a5 00 3f ftou 252\[r0\]\.l, r0 + 1c: fc a5 0f 3f ftou 252\[r0\]\.l, r15 + 20: fc a5 f0 3f ftou 252\[r15\]\.l, r0 + 24: fc a5 ff 3f ftou 252\[r15\]\.l, r15 + 28: fc a6 00 ff 3f ftou 65532\[r0\]\.l, r0 + 2d: fc a6 0f ff 3f ftou 65532\[r0\]\.l, r15 + 32: fc a6 f0 ff 3f ftou 65532\[r15\]\.l, r0 + 37: fc a6 ff ff 3f ftou 65532\[r15\]\.l, r15 diff --git a/gas/testsuite/gas/rx/ftou.sm b/gas/testsuite/gas/rx/ftou.sm new file mode 100644 index 0000000000..95fc1fe8f2 --- /dev/null +++ b/gas/testsuite/gas/rx/ftou.sm @@ -0,0 +1,2 @@ + ftou {reg},{reg} + ftou {mem}.L,{reg} diff --git a/gas/testsuite/gas/rx/gprel.d b/gas/testsuite/gas/rx/gprel.d index 6e7c887935..ea1d3e9eb3 100644 --- a/gas/testsuite/gas/rx/gprel.d +++ b/gas/testsuite/gas/rx/gprel.d @@ -3,9 +3,9 @@ dump\.o: file format .* -Disassembly of section .text: +Disassembly of section .*: -00000000 <_start>: +00000000 <.*>: 0: ce f1 04 00 mov\.b 4\[r15\], r1 2: R_RX_SYM _foo 2: R_RX_SYM __gp @@ -16,7 +16,7 @@ Disassembly of section .text: 6: R_RX_SYM __gp 6: R_RX_OPsub __gp 6: R_RX_ABS16U __gp - 8: ce f1 00 00 mov\.b \[r15\], r1 + 8: ce f1 00 00 mov\.b 0\[r15\], r1 a: R_RX_SYM _grill a: R_RX_SYM __gp a: R_RX_OPsub __gp @@ -31,7 +31,7 @@ Disassembly of section .text: 12: R_RX_SYM __gp 12: R_RX_OPsub __gp 12: R_RX_ABS16UW __gp - 14: de f1 00 00 mov\.w \[r15\], r1 + 14: de f1 00 00 mov\.w 0\[r15\], r1 16: R_RX_SYM _grill 16: R_RX_SYM __gp 16: R_RX_OPsub __gp @@ -46,7 +46,7 @@ Disassembly of section .text: 1e: R_RX_SYM __gp 1e: R_RX_OPsub __gp 1e: R_RX_ABS16UL __gp - 20: ee f1 00 00 mov\.l \[r15\], r1 + 20: ee f1 00 00 mov\.l 0\[r15\], r1 22: R_RX_SYM _grill 22: R_RX_SYM __gp 22: R_RX_OPsub __gp diff --git a/gas/testsuite/gas/rx/machi.d b/gas/testsuite/gas/rx/machi.d index 0800696659..9be594da0d 100644 --- a/gas/testsuite/gas/rx/machi.d +++ b/gas/testsuite/gas/rx/machi.d @@ -6,7 +6,15 @@ dump\.o: file format .* Disassembly of section \.text: 00000000 <\.text>: - 0: fd 04 00 machi r0, r0 - 3: fd 04 0f machi r0, r15 - 6: fd 04 f0 machi r15, r0 - 9: fd 04 ff machi r15, r15 + 0: fd 04 00 machi r0, r0, a0 + 3: fd 04 0f machi r0, r15, a0 + 6: fd 04 f0 machi r15, r0, a0 + 9: fd 04 ff machi r15, r15, a0 + c: fd 04 00 machi r0, r0, a0 + f: fd 04 0f machi r0, r15, a0 + 12: fd 04 f0 machi r15, r0, a0 + 15: fd 04 ff machi r15, r15, a0 + 18: fd 0c 00 machi r0, r0, a1 + 1b: fd 0c 0f machi r0, r15, a1 + 1e: fd 0c f0 machi r15, r0, a1 + 21: fd 0c ff machi r15, r15, a1 diff --git a/gas/testsuite/gas/rx/machi.sm b/gas/testsuite/gas/rx/machi.sm index f3651d004e..ed2a45647e 100644 --- a/gas/testsuite/gas/rx/machi.sm +++ b/gas/testsuite/gas/rx/machi.sm @@ -1 +1,3 @@ machi {reg},{reg} + machi {reg},{reg},a0 + machi {reg},{reg},a1 diff --git a/gas/testsuite/gas/rx/maclh.d b/gas/testsuite/gas/rx/maclh.d new file mode 100644 index 0000000000..90fc4cd83c --- /dev/null +++ b/gas/testsuite/gas/rx/maclh.d @@ -0,0 +1,16 @@ +#objdump: -dr + +dump\.o: file format .* + + +Disassembly of section \.text: + +00000000 <\.text>: + 0: fd 06 00 maclh r0, r0, a0 + 3: fd 06 0f maclh r0, r15, a0 + 6: fd 06 f0 maclh r15, r0, a0 + 9: fd 06 ff maclh r15, r15, a0 + c: fd 0e 00 maclh r0, r0, a1 + f: fd 0e 0f maclh r0, r15, a1 + 12: fd 0e f0 maclh r15, r0, a1 + 15: fd 0e ff maclh r15, r15, a1 diff --git a/gas/testsuite/gas/rx/maclh.sm b/gas/testsuite/gas/rx/maclh.sm new file mode 100644 index 0000000000..7322b2a470 --- /dev/null +++ b/gas/testsuite/gas/rx/maclh.sm @@ -0,0 +1,2 @@ + maclh {reg},{reg},a0 + maclh {reg},{reg},a1 diff --git a/gas/testsuite/gas/rx/maclo.d b/gas/testsuite/gas/rx/maclo.d index 41ee1f2f84..abf299f7d9 100644 --- a/gas/testsuite/gas/rx/maclo.d +++ b/gas/testsuite/gas/rx/maclo.d @@ -6,7 +6,15 @@ dump\.o: file format .* Disassembly of section \.text: 00000000 <\.text>: - 0: fd 05 00 maclo r0, r0 - 3: fd 05 0f maclo r0, r15 - 6: fd 05 f0 maclo r15, r0 - 9: fd 05 ff maclo r15, r15 + 0: fd 05 00 maclo r0, r0, a0 + 3: fd 05 0f maclo r0, r15, a0 + 6: fd 05 f0 maclo r15, r0, a0 + 9: fd 05 ff maclo r15, r15, a0 + c: fd 05 00 maclo r0, r0, a0 + f: fd 05 0f maclo r0, r15, a0 + 12: fd 05 f0 maclo r15, r0, a0 + 15: fd 05 ff maclo r15, r15, a0 + 18: fd 0d 00 maclo r0, r0, a1 + 1b: fd 0d 0f maclo r0, r15, a1 + 1e: fd 0d f0 maclo r15, r0, a1 + 21: fd 0d ff maclo r15, r15, a1 diff --git a/gas/testsuite/gas/rx/maclo.sm b/gas/testsuite/gas/rx/maclo.sm index 84a019cdc0..7ba11efc73 100644 --- a/gas/testsuite/gas/rx/maclo.sm +++ b/gas/testsuite/gas/rx/maclo.sm @@ -1 +1,3 @@ maclo {reg},{reg} + maclo {reg},{reg},a0 + maclo {reg},{reg},a1 diff --git a/gas/testsuite/gas/rx/macros.inc b/gas/testsuite/gas/rx/macros.inc index 60921e6ee3..02d2fac755 100644 --- a/gas/testsuite/gas/rx/macros.inc +++ b/gas/testsuite/gas/rx/macros.inc @@ -4,7 +4,7 @@ macro reg2 {r0;r14} macro reg7 {r0;r7} macro regPlo {r1;r7} macro regPhi {r8;r14} -macro creg {psw;fpsw;usp;isp;intb;bpsw;bpc;fintv} +macro creg {psw;fpsw;usp;isp;intb;bpsw;bpc;fintv;extb} macro pswf {U;I;O;S;Z;C} macro simm8 {-128;127} diff --git a/gas/testsuite/gas/rx/max.d b/gas/testsuite/gas/rx/max.d index 229a30dfe9..e7076fdc1f 100644 --- a/gas/testsuite/gas/rx/max.d +++ b/gas/testsuite/gas/rx/max.d @@ -3,9 +3,9 @@ dump\.o: file format .* -Disassembly of section \..*: +Disassembly of section .*: -00000000 <\..*>: +00000000 <.*>: 0: fd 74 40 80 max #-128, r0 4: fd 74 4f 80 max #-128, r15 8: fd 74 40 7f max #127, r0 diff --git a/gas/testsuite/gas/rx/mov.d b/gas/testsuite/gas/rx/mov.d index a96ba90586..1df5321769 100644 --- a/gas/testsuite/gas/rx/mov.d +++ b/gas/testsuite/gas/rx/mov.d @@ -5,7 +5,7 @@ dump\.o: file format .* Disassembly of section .*: -00000000 <\..*>: +00000000 <.*>: [0-9a-f]+: c3 00[ ]+mov\.b r0, \[r0\] [0-9a-f]+: c3 70[ ]+mov\.b r0, \[r7\] [0-9a-f]+: c3 07[ ]+mov\.b r7, \[r0\] diff --git a/gas/testsuite/gas/rx/movco.d b/gas/testsuite/gas/rx/movco.d new file mode 100644 index 0000000000..204120181a --- /dev/null +++ b/gas/testsuite/gas/rx/movco.d @@ -0,0 +1,12 @@ +#objdump: -dr + +dump\.o: file format .* + + +Disassembly of section \.text: + +00000000 <\.text>: + 0: fd 27 00 movco r0, \[r0\] + 3: fd 27 f0 movco r0, \[r15\] + 6: fd 27 0f movco r15, \[r0\] + 9: fd 27 ff movco r15, \[r15\] diff --git a/gas/testsuite/gas/rx/movco.sm b/gas/testsuite/gas/rx/movco.sm new file mode 100644 index 0000000000..686f0759e5 --- /dev/null +++ b/gas/testsuite/gas/rx/movco.sm @@ -0,0 +1 @@ + movco {reg},[{reg}] diff --git a/gas/testsuite/gas/rx/movli.d b/gas/testsuite/gas/rx/movli.d new file mode 100644 index 0000000000..5799d63e13 --- /dev/null +++ b/gas/testsuite/gas/rx/movli.d @@ -0,0 +1,12 @@ +#objdump: -dr + +dump\.o: file format .* + + +Disassembly of section \.text: + +00000000 <\.text>: + 0: fd 2f 00 movli \[r0\], r0 + 3: fd 2f 0f movli \[r0\], r15 + 6: fd 2f f0 movli \[r15\], r0 + 9: fd 2f ff movli \[r15\], r15 diff --git a/gas/testsuite/gas/rx/movli.sm b/gas/testsuite/gas/rx/movli.sm new file mode 100644 index 0000000000..76a0d15d17 --- /dev/null +++ b/gas/testsuite/gas/rx/movli.sm @@ -0,0 +1 @@ + movli [{reg}],{reg} diff --git a/gas/testsuite/gas/rx/msbhi.d b/gas/testsuite/gas/rx/msbhi.d new file mode 100644 index 0000000000..e92d3f2b39 --- /dev/null +++ b/gas/testsuite/gas/rx/msbhi.d @@ -0,0 +1,16 @@ +#objdump: -dr + +dump\.o: file format .* + + +Disassembly of section \.text: + +00000000 <\.text>: + 0: fd 44 00 msbhi r0, r0, a0 + 3: fd 44 0f msbhi r0, r15, a0 + 6: fd 44 f0 msbhi r15, r0, a0 + 9: fd 44 ff msbhi r15, r15, a0 + c: fd 4c 00 msbhi r0, r0, a1 + f: fd 4c 0f msbhi r0, r15, a1 + 12: fd 4c f0 msbhi r15, r0, a1 + 15: fd 4c ff msbhi r15, r15, a1 diff --git a/gas/testsuite/gas/rx/msbhi.sm b/gas/testsuite/gas/rx/msbhi.sm new file mode 100644 index 0000000000..db290a9870 --- /dev/null +++ b/gas/testsuite/gas/rx/msbhi.sm @@ -0,0 +1,2 @@ + msbhi {reg},{reg},a0 + msbhi {reg},{reg},a1 diff --git a/gas/testsuite/gas/rx/msblh.d b/gas/testsuite/gas/rx/msblh.d new file mode 100644 index 0000000000..15dfea810e --- /dev/null +++ b/gas/testsuite/gas/rx/msblh.d @@ -0,0 +1,16 @@ +#objdump: -dr + +dump\.o: file format .* + + +Disassembly of section \.text: + +00000000 <\.text>: + 0: fd 46 00 msblh r0, r0, a0 + 3: fd 46 0f msblh r0, r15, a0 + 6: fd 46 f0 msblh r15, r0, a0 + 9: fd 46 ff msblh r15, r15, a0 + c: fd 4e 00 msblh r0, r0, a1 + f: fd 4e 0f msblh r0, r15, a1 + 12: fd 4e f0 msblh r15, r0, a1 + 15: fd 4e ff msblh r15, r15, a1 diff --git a/gas/testsuite/gas/rx/msblh.sm b/gas/testsuite/gas/rx/msblh.sm new file mode 100644 index 0000000000..99d41343d9 --- /dev/null +++ b/gas/testsuite/gas/rx/msblh.sm @@ -0,0 +1,2 @@ + msblh {reg},{reg},a0 + msblh {reg},{reg},a1 diff --git a/gas/testsuite/gas/rx/msblo.d b/gas/testsuite/gas/rx/msblo.d new file mode 100644 index 0000000000..e08578549c --- /dev/null +++ b/gas/testsuite/gas/rx/msblo.d @@ -0,0 +1,16 @@ +#objdump: -dr + +dump\.o: file format .* + + +Disassembly of section \.text: + +00000000 <\.text>: + 0: fd 45 00 msblo r0, r0, a0 + 3: fd 45 0f msblo r0, r15, a0 + 6: fd 45 f0 msblo r15, r0, a0 + 9: fd 45 ff msblo r15, r15, a0 + c: fd 4d 00 msblo r0, r0, a1 + f: fd 4d 0f msblo r0, r15, a1 + 12: fd 4d f0 msblo r15, r0, a1 + 15: fd 4d ff msblo r15, r15, a1 diff --git a/gas/testsuite/gas/rx/msblo.sm b/gas/testsuite/gas/rx/msblo.sm new file mode 100644 index 0000000000..e3a473665f --- /dev/null +++ b/gas/testsuite/gas/rx/msblo.sm @@ -0,0 +1,2 @@ + msblo {reg},{reg},a0 + msblo {reg},{reg},a1 diff --git a/gas/testsuite/gas/rx/mulhi.d b/gas/testsuite/gas/rx/mulhi.d index 0653bb4a92..c1a21ba4f9 100644 --- a/gas/testsuite/gas/rx/mulhi.d +++ b/gas/testsuite/gas/rx/mulhi.d @@ -6,7 +6,15 @@ dump\.o: file format .* Disassembly of section \.text: 00000000 <\.text>: - 0: fd 00 00 mulhi r0, r0 - 3: fd 00 0f mulhi r0, r15 - 6: fd 00 f0 mulhi r15, r0 - 9: fd 00 ff mulhi r15, r15 + 0: fd 00 00 mulhi r0, r0, a0 + 3: fd 00 0f mulhi r0, r15, a0 + 6: fd 00 f0 mulhi r15, r0, a0 + 9: fd 00 ff mulhi r15, r15, a0 + c: fd 00 00 mulhi r0, r0, a0 + f: fd 00 0f mulhi r0, r15, a0 + 12: fd 00 f0 mulhi r15, r0, a0 + 15: fd 00 ff mulhi r15, r15, a0 + 18: fd 08 00 mulhi r0, r0, a1 + 1b: fd 08 0f mulhi r0, r15, a1 + 1e: fd 08 f0 mulhi r15, r0, a1 + 21: fd 08 ff mulhi r15, r15, a1 diff --git a/gas/testsuite/gas/rx/mulhi.sm b/gas/testsuite/gas/rx/mulhi.sm index a9765a4ccd..f71b03acfe 100644 --- a/gas/testsuite/gas/rx/mulhi.sm +++ b/gas/testsuite/gas/rx/mulhi.sm @@ -1 +1,3 @@ mulhi {reg},{reg} + mulhi {reg},{reg},a0 + mulhi {reg},{reg},a1 diff --git a/gas/testsuite/gas/rx/mullh.d b/gas/testsuite/gas/rx/mullh.d new file mode 100644 index 0000000000..057d4e420f --- /dev/null +++ b/gas/testsuite/gas/rx/mullh.d @@ -0,0 +1,16 @@ +#objdump: -dr + +dump\.o: file format .* + + +Disassembly of section \.text: + +00000000 <\.text>: + 0: fd 02 00 mullh r0, r0, a0 + 3: fd 02 0f mullh r0, r15, a0 + 6: fd 02 f0 mullh r15, r0, a0 + 9: fd 02 ff mullh r15, r15, a0 + c: fd 0a 00 mullh r0, r0, a1 + f: fd 0a 0f mullh r0, r15, a1 + 12: fd 0a f0 mullh r15, r0, a1 + 15: fd 0a ff mullh r15, r15, a1 diff --git a/gas/testsuite/gas/rx/mullh.sm b/gas/testsuite/gas/rx/mullh.sm new file mode 100644 index 0000000000..0c7d0ed0da --- /dev/null +++ b/gas/testsuite/gas/rx/mullh.sm @@ -0,0 +1,2 @@ + mullh {reg},{reg},a0 + mullh {reg},{reg},a1 diff --git a/gas/testsuite/gas/rx/mullo.d b/gas/testsuite/gas/rx/mullo.d index fbf014fcb9..9ce4c0ecc8 100644 --- a/gas/testsuite/gas/rx/mullo.d +++ b/gas/testsuite/gas/rx/mullo.d @@ -6,7 +6,15 @@ dump\.o: file format .* Disassembly of section \.text: 00000000 <\.text>: - 0: fd 01 00 mullo r0, r0 - 3: fd 01 0f mullo r0, r15 - 6: fd 01 f0 mullo r15, r0 - 9: fd 01 ff mullo r15, r15 + 0: fd 01 00 mullo r0, r0, a0 + 3: fd 01 0f mullo r0, r15, a0 + 6: fd 01 f0 mullo r15, r0, a0 + 9: fd 01 ff mullo r15, r15, a0 + c: fd 01 00 mullo r0, r0, a0 + f: fd 01 0f mullo r0, r15, a0 + 12: fd 01 f0 mullo r15, r0, a0 + 15: fd 01 ff mullo r15, r15, a0 + 18: fd 09 00 mullo r0, r0, a1 + 1b: fd 09 0f mullo r0, r15, a1 + 1e: fd 09 f0 mullo r15, r0, a1 + 21: fd 09 ff mullo r15, r15, a1 diff --git a/gas/testsuite/gas/rx/mullo.sm b/gas/testsuite/gas/rx/mullo.sm index 56d6b8b175..dc3708e012 100644 --- a/gas/testsuite/gas/rx/mullo.sm +++ b/gas/testsuite/gas/rx/mullo.sm @@ -1 +1,3 @@ mullo {reg},{reg} + mullo {reg},{reg},a0 + mullo {reg},{reg},a1 diff --git a/gas/testsuite/gas/rx/mvfacgu.d b/gas/testsuite/gas/rx/mvfacgu.d new file mode 100644 index 0000000000..79d71e700c --- /dev/null +++ b/gas/testsuite/gas/rx/mvfacgu.d @@ -0,0 +1,20 @@ +#objdump: -dr + +dump\.o: file format .* + + +Disassembly of section \.text: + +00000000 <\.text>: + 0: fd 1f 30 mvfacgu #0, a0, r0 + 3: fd 1f 3f mvfacgu #0, a0, r15 + 6: fd 1f 70 mvfacgu #1, a0, r0 + 9: fd 1f 7f mvfacgu #1, a0, r15 + c: fd 1e 30 mvfacgu #2, a0, r0 + f: fd 1e 3f mvfacgu #2, a0, r15 + 12: fd 1f b0 mvfacgu #0, a1, r0 + 15: fd 1f bf mvfacgu #0, a1, r15 + 18: fd 1f f0 mvfacgu #1, a1, r0 + 1b: fd 1f ff mvfacgu #1, a1, r15 + 1e: fd 1e b0 mvfacgu #2, a1, r0 + 21: fd 1e bf mvfacgu #2, a1, r15 diff --git a/gas/testsuite/gas/rx/mvfacgu.sm b/gas/testsuite/gas/rx/mvfacgu.sm new file mode 100644 index 0000000000..67a9fe1a76 --- /dev/null +++ b/gas/testsuite/gas/rx/mvfacgu.sm @@ -0,0 +1,6 @@ + mvfacgu #0,a0,{reg} + mvfacgu #1,a0,{reg} + mvfacgu #2,a0,{reg} + mvfacgu #0,a1,{reg} + mvfacgu #1,a1,{reg} + mvfacgu #2,a1,{reg} diff --git a/gas/testsuite/gas/rx/mvfachi.d b/gas/testsuite/gas/rx/mvfachi.d index de0abf14b8..153c82174e 100644 --- a/gas/testsuite/gas/rx/mvfachi.d +++ b/gas/testsuite/gas/rx/mvfachi.d @@ -6,5 +6,17 @@ dump\.o: file format .* Disassembly of section \.text: 00000000 <\.text>: - 0: fd 1f 00 mvfachi r0 - 3: fd 1f 0f mvfachi r15 + 0: fd 1f 00 mvfachi #0, a0, r0 + 3: fd 1f 0f mvfachi #0, a0, r15 + 6: fd 1f 00 mvfachi #0, a0, r0 + 9: fd 1f 0f mvfachi #0, a0, r15 + c: fd 1f 40 mvfachi #1, a0, r0 + f: fd 1f 4f mvfachi #1, a0, r15 + 12: fd 1e 00 mvfachi #2, a0, r0 + 15: fd 1e 0f mvfachi #2, a0, r15 + 18: fd 1f 80 mvfachi #0, a1, r0 + 1b: fd 1f 8f mvfachi #0, a1, r15 + 1e: fd 1f c0 mvfachi #1, a1, r0 + 21: fd 1f cf mvfachi #1, a1, r15 + 24: fd 1e 80 mvfachi #2, a1, r0 + 27: fd 1e 8f mvfachi #2, a1, r15 diff --git a/gas/testsuite/gas/rx/mvfachi.sm b/gas/testsuite/gas/rx/mvfachi.sm index e8755d6f24..83d7f665b6 100644 --- a/gas/testsuite/gas/rx/mvfachi.sm +++ b/gas/testsuite/gas/rx/mvfachi.sm @@ -1 +1,7 @@ mvfachi {reg} + mvfachi #0,a0,{reg} + mvfachi #1,a0,{reg} + mvfachi #2,a0,{reg} + mvfachi #0,a1,{reg} + mvfachi #1,a1,{reg} + mvfachi #2,a1,{reg} diff --git a/gas/testsuite/gas/rx/mvfaclo.d b/gas/testsuite/gas/rx/mvfaclo.d index 33df9b0d36..46f6349c73 100644 --- a/gas/testsuite/gas/rx/mvfaclo.d +++ b/gas/testsuite/gas/rx/mvfaclo.d @@ -6,5 +6,17 @@ dump\.o: file format .* Disassembly of section \.text: 00000000 <\.text>: - 0: fd 1f 10 mvfaclo r0 - 3: fd 1f 1f mvfaclo r15 + 0: fd 1f 10 mvfaclo #0, a0, r0 + 3: fd 1f 1f mvfaclo #0, a0, r15 + 6: fd 1f 10 mvfaclo #0, a0, r0 + 9: fd 1f 1f mvfaclo #0, a0, r15 + c: fd 1f 50 mvfaclo #1, a0, r0 + f: fd 1f 5f mvfaclo #1, a0, r15 + 12: fd 1e 10 mvfaclo #2, a0, r0 + 15: fd 1e 1f mvfaclo #2, a0, r15 + 18: fd 1f 90 mvfaclo #0, a1, r0 + 1b: fd 1f 9f mvfaclo #0, a1, r15 + 1e: fd 1f d0 mvfaclo #1, a1, r0 + 21: fd 1f df mvfaclo #1, a1, r15 + 24: fd 1e 90 mvfaclo #2, a1, r0 + 27: fd 1e 9f mvfaclo #2, a1, r15 diff --git a/gas/testsuite/gas/rx/mvfaclo.sm b/gas/testsuite/gas/rx/mvfaclo.sm index b9080e4122..2e9b106560 100644 --- a/gas/testsuite/gas/rx/mvfaclo.sm +++ b/gas/testsuite/gas/rx/mvfaclo.sm @@ -1 +1,7 @@ mvfaclo {reg} + mvfaclo #0,a0,{reg} + mvfaclo #1,a0,{reg} + mvfaclo #2,a0,{reg} + mvfaclo #0,a1,{reg} + mvfaclo #1,a1,{reg} + mvfaclo #2,a1,{reg} diff --git a/gas/testsuite/gas/rx/mvfacmi.d b/gas/testsuite/gas/rx/mvfacmi.d index c24479a3dc..2795f3d6a0 100644 --- a/gas/testsuite/gas/rx/mvfacmi.d +++ b/gas/testsuite/gas/rx/mvfacmi.d @@ -6,5 +6,17 @@ dump\.o: file format .* Disassembly of section \.text: 00000000 <\.text>: - 0: fd 1f 20 mvfacmi r0 - 3: fd 1f 2f mvfacmi r15 + 0: fd 1f 20 mvfacmi #0, a0, r0 + 3: fd 1f 2f mvfacmi #0, a0, r15 + 6: fd 1f 20 mvfacmi #0, a0, r0 + 9: fd 1f 2f mvfacmi #0, a0, r15 + c: fd 1f 60 mvfacmi #1, a0, r0 + f: fd 1f 6f mvfacmi #1, a0, r15 + 12: fd 1e 20 mvfacmi #2, a0, r0 + 15: fd 1e 2f mvfacmi #2, a0, r15 + 18: fd 1f a0 mvfacmi #0, a1, r0 + 1b: fd 1f af mvfacmi #0, a1, r15 + 1e: fd 1f e0 mvfacmi #1, a1, r0 + 21: fd 1f ef mvfacmi #1, a1, r15 + 24: fd 1e a0 mvfacmi #2, a1, r0 + 27: fd 1e af mvfacmi #2, a1, r15 diff --git a/gas/testsuite/gas/rx/mvfacmi.sm b/gas/testsuite/gas/rx/mvfacmi.sm index 400f125f30..cdc3402bff 100644 --- a/gas/testsuite/gas/rx/mvfacmi.sm +++ b/gas/testsuite/gas/rx/mvfacmi.sm @@ -1 +1,7 @@ mvfacmi {reg} + mvfacmi #0,a0,{reg} + mvfacmi #1,a0,{reg} + mvfacmi #2,a0,{reg} + mvfacmi #0,a1,{reg} + mvfacmi #1,a1,{reg} + mvfacmi #2,a1,{reg} diff --git a/gas/testsuite/gas/rx/mvfc.d b/gas/testsuite/gas/rx/mvfc.d index 7f6ca645e3..e89db68b64 100644 --- a/gas/testsuite/gas/rx/mvfc.d +++ b/gas/testsuite/gas/rx/mvfc.d @@ -22,4 +22,6 @@ Disassembly of section \.text: 27: fd 6a 9f mvfc bpc, r15 2a: fd 6a b0 mvfc fintv, r0 2d: fd 6a bf mvfc fintv, r15 + 30: fd 6a d0 mvfc extb, r0 + 33: fd 6a df mvfc extb, r15 diff --git a/gas/testsuite/gas/rx/mvtacgu.d b/gas/testsuite/gas/rx/mvtacgu.d new file mode 100644 index 0000000000..96fe2ce148 --- /dev/null +++ b/gas/testsuite/gas/rx/mvtacgu.d @@ -0,0 +1,12 @@ +#objdump: -dr + +dump\.o: file format .* + + +Disassembly of section \.text: + +00000000 <\.text>: + 0: fd 17 30 mvtacgu r0, a0 + 3: fd 17 3f mvtacgu r15, a0 + 6: fd 17 b0 mvtacgu r0, a1 + 9: fd 17 bf mvtacgu r15, a1 diff --git a/gas/testsuite/gas/rx/mvtacgu.sm b/gas/testsuite/gas/rx/mvtacgu.sm new file mode 100644 index 0000000000..ff4568d653 --- /dev/null +++ b/gas/testsuite/gas/rx/mvtacgu.sm @@ -0,0 +1,2 @@ + mvtacgu {reg},a0 + mvtacgu {reg},a1 diff --git a/gas/testsuite/gas/rx/mvtachi.d b/gas/testsuite/gas/rx/mvtachi.d index c9f02ee181..31f4a5a7b4 100644 --- a/gas/testsuite/gas/rx/mvtachi.d +++ b/gas/testsuite/gas/rx/mvtachi.d @@ -6,5 +6,9 @@ dump\.o: file format .* Disassembly of section \.text: 00000000 <\.text>: - 0: fd 17 00 mvtachi r0 - 3: fd 17 0f mvtachi r15 + 0: fd 17 00 mvtachi r0, a0 + 3: fd 17 0f mvtachi r15, a0 + 6: fd 17 00 mvtachi r0, a0 + 9: fd 17 0f mvtachi r15, a0 + c: fd 17 80 mvtachi r0, a1 + f: fd 17 8f mvtachi r15, a1 diff --git a/gas/testsuite/gas/rx/mvtachi.sm b/gas/testsuite/gas/rx/mvtachi.sm index 53dad056cd..9f7c204814 100644 --- a/gas/testsuite/gas/rx/mvtachi.sm +++ b/gas/testsuite/gas/rx/mvtachi.sm @@ -1 +1,3 @@ mvtachi {reg} + mvtachi {reg},a0 + mvtachi {reg},a1 diff --git a/gas/testsuite/gas/rx/mvtaclo.d b/gas/testsuite/gas/rx/mvtaclo.d index 09c7ca62f4..706fc29ffd 100644 --- a/gas/testsuite/gas/rx/mvtaclo.d +++ b/gas/testsuite/gas/rx/mvtaclo.d @@ -6,5 +6,9 @@ dump\.o: file format .* Disassembly of section \.text: 00000000 <\.text>: - 0: fd 17 10 mvtaclo r0 - 3: fd 17 1f mvtaclo r15 + 0: fd 17 10 mvtaclo r0, a0 + 3: fd 17 1f mvtaclo r15, a0 + 6: fd 17 10 mvtaclo r0, a0 + 9: fd 17 1f mvtaclo r15, a0 + c: fd 17 90 mvtaclo r0, a1 + f: fd 17 9f mvtaclo r15, a1 diff --git a/gas/testsuite/gas/rx/mvtaclo.sm b/gas/testsuite/gas/rx/mvtaclo.sm index 840bd88aa3..fc249185c4 100644 --- a/gas/testsuite/gas/rx/mvtaclo.sm +++ b/gas/testsuite/gas/rx/mvtaclo.sm @@ -1 +1,3 @@ mvtaclo {reg} + mvtaclo {reg},a0 + mvtaclo {reg},a1 diff --git a/gas/testsuite/gas/rx/mvtc.d b/gas/testsuite/gas/rx/mvtc.d index 1deb67e9bf..33c1bd2227 100644 --- a/gas/testsuite/gas/rx/mvtc.d +++ b/gas/testsuite/gas/rx/mvtc.d @@ -14,14 +14,16 @@ Disassembly of section \.text: 14: fd 77 08 80 mvtc #-128, bpsw 18: fd 77 09 80 mvtc #-128, bpc 1c: fd 77 0b 80 mvtc #-128, fintv - 20: fd 77 00 7f mvtc #127, psw - 24: fd 77 03 7f mvtc #127, fpsw - 28: fd 77 02 7f mvtc #127, usp - 2c: fd 77 0a 7f mvtc #127, isp - 30: fd 77 0c 7f mvtc #127, intb - 34: fd 77 08 7f mvtc #127, bpsw - 38: fd 77 09 7f mvtc #127, bpc - 3c: fd 77 0b 7f mvtc #127, fintv + 20: fd 77 0d 80 mvtc #-128, extb + 24: fd 77 00 7f mvtc #127, psw + 28: fd 77 03 7f mvtc #127, fpsw + 2c: fd 77 02 7f mvtc #127, usp + 30: fd 77 0a 7f mvtc #127, isp + 34: fd 77 0c 7f mvtc #127, intb + 38: fd 77 08 7f mvtc #127, bpsw + 3c: fd 77 09 7f mvtc #127, bpc + 40: fd 77 0b 7f mvtc #127, fintv + 44: fd 77 0d 7f mvtc #127, extb ..: fd 7b 00 00 80 mvtc #0xffff8000, psw ..: fd 7b 03 00 80 mvtc #0xffff8000, fpsw ..: fd 7b 02 00 80 mvtc #0xffff8000, usp @@ -30,6 +32,7 @@ Disassembly of section \.text: ..: fd 7b 08 00 80 mvtc #0xffff8000, bpsw ..: fd 7b 09 00 80 mvtc #0xffff8000, bpc ..: fd 7b 0b 00 80 mvtc #0xffff8000, fintv + ..: fd 7b 0d 00 80 mvtc #0xffff8000, extb ..: fd 7f 00 00 80 00 mvtc #0x8000, psw ..: fd 7f 03 00 80 00 mvtc #0x8000, fpsw ..: fd 7f 02 00 80 00 mvtc #0x8000, usp @@ -38,6 +41,7 @@ Disassembly of section \.text: ..: fd 7f 08 00 80 00 mvtc #0x8000, bpsw ..: fd 7f 09 00 80 00 mvtc #0x8000, bpc ..: fd 7f 0b 00 80 00 mvtc #0x8000, fintv + ..: fd 7f 0d 00 80 00 mvtc #0x8000, extb ..: fd 7f 00 00 00 80 mvtc #0xff800000, psw ..: fd 7f 03 00 00 80 mvtc #0xff800000, fpsw ..: fd 7f 02 00 00 80 mvtc #0xff800000, usp @@ -46,14 +50,16 @@ Disassembly of section \.text: ..: fd 7f 08 00 00 80 mvtc #0xff800000, bpsw ..: fd 7f 09 00 00 80 mvtc #0xff800000, bpc ..: fd 7f 0b 00 00 80 mvtc #0xff800000, fintv + ..: fd 7f 0d 00 00 80 mvtc #0xff800000, extb ..: fd 7f 00 ff ff 7f mvtc #0x7fffff, psw ..: fd 7f 03 ff ff 7f mvtc #0x7fffff, fpsw ..: fd 7f 02 ff ff 7f mvtc #0x7fffff, usp ..: fd 7f 0a ff ff 7f mvtc #0x7fffff, isp ..: fd 7f 0c ff ff 7f mvtc #0x7fffff, intb - ..: fd 7f 08 ff ff 7f mvtc #0x7fffff, bpsw + ...: fd 7f 08 ff ff 7f mvtc #0x7fffff, bpsw ...: fd 7f 09 ff ff 7f mvtc #0x7fffff, bpc ...: fd 7f 0b ff ff 7f mvtc #0x7fffff, fintv + ...: fd 7f 0d ff ff 7f mvtc #0x7fffff, extb ...: fd 73 00 00 00 00 80 mvtc #0x80000000, psw ...: fd 73 03 00 00 00 80 mvtc #0x80000000, fpsw ...: fd 73 02 00 00 00 80 mvtc #0x80000000, usp @@ -62,6 +68,7 @@ Disassembly of section \.text: ...: fd 73 08 00 00 00 80 mvtc #0x80000000, bpsw ...: fd 73 09 00 00 00 80 mvtc #0x80000000, bpc ...: fd 73 0b 00 00 00 80 mvtc #0x80000000, fintv + ...: fd 73 0d 00 00 00 80 mvtc #0x80000000, extb ...: fd 73 00 ff ff ff 7f mvtc #0x7fffffff, psw ...: fd 73 03 ff ff ff 7f mvtc #0x7fffffff, fpsw ...: fd 73 02 ff ff ff 7f mvtc #0x7fffffff, usp @@ -70,6 +77,7 @@ Disassembly of section \.text: ...: fd 73 08 ff ff ff 7f mvtc #0x7fffffff, bpsw ...: fd 73 09 ff ff ff 7f mvtc #0x7fffffff, bpc ...: fd 73 0b ff ff ff 7f mvtc #0x7fffffff, fintv + ...: fd 73 0d ff ff ff 7f mvtc #0x7fffffff, extb ...: fd 68 00 mvtc r0, psw ...: fd 68 03 mvtc r0, fpsw ...: fd 68 02 mvtc r0, usp @@ -78,6 +86,7 @@ Disassembly of section \.text: ...: fd 68 08 mvtc r0, bpsw ...: fd 68 09 mvtc r0, bpc ...: fd 68 0b mvtc r0, fintv + ...: fd 68 0d mvtc r0, extb ...: fd 68 f0 mvtc r15, psw ...: fd 68 f3 mvtc r15, fpsw ...: fd 68 f2 mvtc r15, usp @@ -86,4 +95,5 @@ Disassembly of section \.text: ...: fd 68 f8 mvtc r15, bpsw ...: fd 68 f9 mvtc r15, bpc ...: fd 68 fb mvtc r15, fintv + ...: fd 68 fd mvtc r15, extb diff --git a/gas/testsuite/gas/rx/nop.d b/gas/testsuite/gas/rx/nop.d index 28988cc6a1..1f33c591c6 100644 --- a/gas/testsuite/gas/rx/nop.d +++ b/gas/testsuite/gas/rx/nop.d @@ -3,9 +3,9 @@ dump\.o: file format .* -Disassembly of section \..*: +Disassembly of section .*: -00000000 <\..*>: +00000000 <.*>: 0: 03 nop 1: ef 00 nop ; mov.l r0, r0 3: 63 10 nop ; mul #1, r0 diff --git a/gas/testsuite/gas/rx/popc.d b/gas/testsuite/gas/rx/popc.d index da1b248f2f..cddbe05ecf 100644 --- a/gas/testsuite/gas/rx/popc.d +++ b/gas/testsuite/gas/rx/popc.d @@ -14,4 +14,5 @@ Disassembly of section \.text: a: 7e e8 popc bpsw c: 7e e9 popc bpc e: 7e eb popc fintv + 10: 7e ed popc extb diff --git a/gas/testsuite/gas/rx/pushc.d b/gas/testsuite/gas/rx/pushc.d index 307a7a0e18..2a93da2ae3 100644 --- a/gas/testsuite/gas/rx/pushc.d +++ b/gas/testsuite/gas/rx/pushc.d @@ -14,4 +14,5 @@ Disassembly of section \.text: a: 7e c8 pushc bpsw c: 7e c9 pushc bpc e: 7e cb pushc fintv + 10: 7e cd pushc extb diff --git a/gas/testsuite/gas/rx/racl.d b/gas/testsuite/gas/rx/racl.d new file mode 100644 index 0000000000..ae784bdf18 --- /dev/null +++ b/gas/testsuite/gas/rx/racl.d @@ -0,0 +1,12 @@ +#objdump: -dr + +dump\.o: file format .* + + +Disassembly of section \.text: + +00000000 <\.text>: + 0: fd 19 00 racl #1, a0 + 3: fd 19 10 racl #2, a0 + 6: fd 19 80 racl #1, a1 + 9: fd 19 90 racl #2, a1 diff --git a/gas/testsuite/gas/rx/racl.sm b/gas/testsuite/gas/rx/racl.sm new file mode 100644 index 0000000000..96c6cb5b04 --- /dev/null +++ b/gas/testsuite/gas/rx/racl.sm @@ -0,0 +1,4 @@ + racl #1,a0 + racl #2,a0 + racl #1,a1 + racl #2,a1 diff --git a/gas/testsuite/gas/rx/racw.d b/gas/testsuite/gas/rx/racw.d index 6735254bf7..f6a60c6c78 100644 --- a/gas/testsuite/gas/rx/racw.d +++ b/gas/testsuite/gas/rx/racw.d @@ -6,5 +6,9 @@ dump\.o: file format .* Disassembly of section \.text: 00000000 <\.text>: - 0: fd 18 00 racw #1 - 3: fd 18 10 racw #2 + 0: fd 18 00 racw #1, a0 + 3: fd 18 10 racw #2, a0 + 6: fd 18 00 racw #1, a0 + 9: fd 18 10 racw #2, a0 + c: fd 18 80 racw #1, a1 + f: fd 18 90 racw #2, a1 diff --git a/gas/testsuite/gas/rx/racw.sm b/gas/testsuite/gas/rx/racw.sm index f7dfd5b389..26a726ce9f 100644 --- a/gas/testsuite/gas/rx/racw.sm +++ b/gas/testsuite/gas/rx/racw.sm @@ -1,2 +1,6 @@ racw #1 racw #2 + racw #1,a0 + racw #2,a0 + racw #1,a1 + racw #2,a1 diff --git a/gas/testsuite/gas/rx/rdacl.d b/gas/testsuite/gas/rx/rdacl.d new file mode 100644 index 0000000000..1e7e49d690 --- /dev/null +++ b/gas/testsuite/gas/rx/rdacl.d @@ -0,0 +1,12 @@ +#objdump: -dr + +dump\.o: file format .* + + +Disassembly of section \.text: + +00000000 <\.text>: + 0: fd 19 40 rdacl #1, a0 + 3: fd 19 50 rdacl #2, a0 + 6: fd 19 c0 rdacl #1, a1 + 9: fd 19 d0 rdacl #2, a1 diff --git a/gas/testsuite/gas/rx/rdacl.sm b/gas/testsuite/gas/rx/rdacl.sm new file mode 100644 index 0000000000..965a206228 --- /dev/null +++ b/gas/testsuite/gas/rx/rdacl.sm @@ -0,0 +1,4 @@ + rdacl #1,a0 + rdacl #2,a0 + rdacl #1,a1 + rdacl #2,a1 diff --git a/gas/testsuite/gas/rx/rdacw.d b/gas/testsuite/gas/rx/rdacw.d new file mode 100644 index 0000000000..8ec7bd4a21 --- /dev/null +++ b/gas/testsuite/gas/rx/rdacw.d @@ -0,0 +1,12 @@ +#objdump: -dr + +dump\.o: file format .* + + +Disassembly of section \.text: + +00000000 <\.text>: + 0: fd 18 40 rdacw #1, a0 + 3: fd 18 50 rdacw #2, a0 + 6: fd 18 c0 rdacw #1, a1 + 9: fd 18 d0 rdacw #2, a1 diff --git a/gas/testsuite/gas/rx/rdacw.sm b/gas/testsuite/gas/rx/rdacw.sm new file mode 100644 index 0000000000..665f760405 --- /dev/null +++ b/gas/testsuite/gas/rx/rdacw.sm @@ -0,0 +1,4 @@ + rdacw #1,a0 + rdacw #2,a0 + rdacw #1,a1 + rdacw #2,a1 diff --git a/gas/testsuite/gas/rx/rx.exp b/gas/testsuite/gas/rx/rx.exp index 6fa5ca5262..d78768a693 100644 --- a/gas/testsuite/gas/rx/rx.exp +++ b/gas/testsuite/gas/rx/rx.exp @@ -21,6 +21,9 @@ if { ! [istarget rx-*-*] } { return } +global ASFLAGS +set ASFLAGS "--mcpu=rxv2" + foreach test [lsort [glob $srcdir/$subdir/*.sm]] { regexp ".*/(.*)\.sm" $test rxjunk rxbase exec "$srcdir/$subdir/explode" "-I" "$srcdir/$subdir" "$test" "$srcdir/$subdir/$rxbase.s" diff --git a/gas/testsuite/gas/rx/stnz.d b/gas/testsuite/gas/rx/stnz.d index 8dfb0c3c37..ff2f857a03 100644 --- a/gas/testsuite/gas/rx/stnz.d +++ b/gas/testsuite/gas/rx/stnz.d @@ -22,3 +22,7 @@ Disassembly of section \.text: 45: fd 70 ff 00 00 00 80 stnz #0x80000000, r15 4c: fd 70 f0 ff ff ff 7f stnz #0x7fffffff, r0 53: fd 70 ff ff ff ff 7f stnz #0x7fffffff, r15 + 5a: fc 4f 00 stnz r0, r0 + 5d: fc 4f 0f stnz r0, r15 + 60: fc 4f f0 stnz r15, r0 + 63: fc 4f ff stnz r15, r15 diff --git a/gas/testsuite/gas/rx/stnz.sm b/gas/testsuite/gas/rx/stnz.sm index 853f1ce96e..903a32e380 100644 --- a/gas/testsuite/gas/rx/stnz.sm +++ b/gas/testsuite/gas/rx/stnz.sm @@ -1 +1,2 @@ stnz #{imm},{reg} + stnz {reg},{reg} diff --git a/gas/testsuite/gas/rx/stz.d b/gas/testsuite/gas/rx/stz.d index f9c6b77cb8..d3426dc979 100644 --- a/gas/testsuite/gas/rx/stz.d +++ b/gas/testsuite/gas/rx/stz.d @@ -22,3 +22,7 @@ Disassembly of section \.text: 45: fd 70 ef 00 00 00 80 stz #0x80000000, r15 4c: fd 70 e0 ff ff ff 7f stz #0x7fffffff, r0 53: fd 70 ef ff ff ff 7f stz #0x7fffffff, r15 + 5a: fc 4b 00 stz r0, r0 + 5d: fc 4b 0f stz r0, r15 + 60: fc 4b f0 stz r15, r0 + 63: fc 4b ff stz r15, r15 diff --git a/gas/testsuite/gas/rx/stz.sm b/gas/testsuite/gas/rx/stz.sm index e366213c26..34b79fe5e7 100644 --- a/gas/testsuite/gas/rx/stz.sm +++ b/gas/testsuite/gas/rx/stz.sm @@ -1 +1,2 @@ stz #{imm},{reg} + stz {reg},{reg} diff --git a/gas/testsuite/gas/rx/utof.d b/gas/testsuite/gas/rx/utof.d new file mode 100644 index 0000000000..5059ad1331 --- /dev/null +++ b/gas/testsuite/gas/rx/utof.d @@ -0,0 +1,72 @@ +#objdump: -dr + +dump\.o: file format .* + + +Disassembly of section \.text: + +00000000 <\.text>: + 0: fc 57 00 utof r0, r0 + 3: fc 57 0f utof r0, r15 + 6: fc 57 f0 utof r15, r0 + 9: fc 57 ff utof r15, r15 + c: fc 54 00 utof \[r0\]\.ub, r0 + f: fc 54 0f utof \[r0\]\.ub, r15 + 12: 06 20 15 00 utof \[r0\]\.b, r0 + 16: 06 20 15 0f utof \[r0\]\.b, r15 + 1a: 06 e0 15 00 utof \[r0\]\.uw, r0 + 1e: 06 e0 15 0f utof \[r0\]\.uw, r15 + 22: 06 60 15 00 utof \[r0\]\.w, r0 + 26: 06 60 15 0f utof \[r0\]\.w, r15 + 2a: 06 a0 15 00 utof \[r0\]\.l, r0 + 2e: 06 a0 15 0f utof \[r0\]\.l, r15 + 32: fc 54 f0 utof \[r15\]\.ub, r0 + 35: fc 54 ff utof \[r15\]\.ub, r15 + 38: 06 20 15 f0 utof \[r15\]\.b, r0 + 3c: 06 20 15 ff utof \[r15\]\.b, r15 + 40: 06 e0 15 f0 utof \[r15\]\.uw, r0 + 44: 06 e0 15 ff utof \[r15\]\.uw, r15 + 48: 06 60 15 f0 utof \[r15\]\.w, r0 + 4c: 06 60 15 ff utof \[r15\]\.w, r15 + 50: 06 a0 15 f0 utof \[r15\]\.l, r0 + 54: 06 a0 15 ff utof \[r15\]\.l, r15 + 58: fc 55 00 fc utof 252\[r0\]\.ub, r0 + 5c: fc 55 0f fc utof 252\[r0\]\.ub, r15 + 60: 06 21 15 00 fc utof 252\[r0\]\.b, r0 + 65: 06 21 15 0f fc utof 252\[r0\]\.b, r15 + 6a: 06 e1 15 00 7e utof 252\[r0\]\.uw, r0 + 6f: 06 e1 15 0f 7e utof 252\[r0\]\.uw, r15 + 74: 06 61 15 00 7e utof 252\[r0\]\.w, r0 + 79: 06 61 15 0f 7e utof 252\[r0\]\.w, r15 + 7e: 06 a1 15 00 3f utof 252\[r0\]\.l, r0 + 83: 06 a1 15 0f 3f utof 252\[r0\]\.l, r15 + 88: fc 55 f0 fc utof 252\[r15\]\.ub, r0 + 8c: fc 55 ff fc utof 252\[r15\]\.ub, r15 + 90: 06 21 15 f0 fc utof 252\[r15\]\.b, r0 + 95: 06 21 15 ff fc utof 252\[r15\]\.b, r15 + 9a: 06 e1 15 f0 7e utof 252\[r15\]\.uw, r0 + 9f: 06 e1 15 ff 7e utof 252\[r15\]\.uw, r15 + a4: 06 61 15 f0 7e utof 252\[r15\]\.w, r0 + a9: 06 61 15 ff 7e utof 252\[r15\]\.w, r15 + ae: 06 a1 15 f0 3f utof 252\[r15\]\.l, r0 + b3: 06 a1 15 ff 3f utof 252\[r15\]\.l, r15 + b8: fc 56 00 fc ff utof 65532\[r0\]\.ub, r0 + bd: fc 56 0f fc ff utof 65532\[r0\]\.ub, r15 + c2: 06 22 15 00 fc ff utof 65532\[r0\]\.b, r0 + c8: 06 22 15 0f fc ff utof 65532\[r0\]\.b, r15 + ce: 06 e2 15 00 fe 7f utof 65532\[r0\]\.uw, r0 + d4: 06 e2 15 0f fe 7f utof 65532\[r0\]\.uw, r15 + da: 06 62 15 00 fe 7f utof 65532\[r0\]\.w, r0 + e0: 06 62 15 0f fe 7f utof 65532\[r0\]\.w, r15 + e6: 06 a2 15 00 ff 3f utof 65532\[r0\]\.l, r0 + ec: 06 a2 15 0f ff 3f utof 65532\[r0\]\.l, r15 + f2: fc 56 f0 fc ff utof 65532\[r15\]\.ub, r0 + f7: fc 56 ff fc ff utof 65532\[r15\]\.ub, r15 + fc: 06 22 15 f0 fc ff utof 65532\[r15\]\.b, r0 + 102: 06 22 15 ff fc ff utof 65532\[r15\]\.b, r15 + 108: 06 e2 15 f0 fe 7f utof 65532\[r15\]\.uw, r0 + 10e: 06 e2 15 ff fe 7f utof 65532\[r15\]\.uw, r15 + 114: 06 62 15 f0 fe 7f utof 65532\[r15\]\.w, r0 + 11a: 06 62 15 ff fe 7f utof 65532\[r15\]\.w, r15 + 120: 06 a2 15 f0 ff 3f utof 65532\[r15\]\.l, r0 + 126: 06 a2 15 ff ff 3f utof 65532\[r15\]\.l, r15 diff --git a/gas/testsuite/gas/rx/utof.sm b/gas/testsuite/gas/rx/utof.sm new file mode 100644 index 0000000000..8a11bac905 --- /dev/null +++ b/gas/testsuite/gas/rx/utof.sm @@ -0,0 +1,2 @@ + utof {reg},{reg} + utof {memx},{reg} diff --git a/include/elf/ChangeLog b/include/elf/ChangeLog index e6e7af954f..5b98c66b55 100644 --- a/include/elf/ChangeLog +++ b/include/elf/ChangeLog @@ -1,3 +1,7 @@ +2015-12-14 Yoshinori Sato + + * rx.h (E_FLAG_RX_V2): New RXv2 type. + 2015-12-07 Alan Modra * ppc64.h (R_PPC64_ENTRY): Define. diff --git a/include/elf/rx.h b/include/elf/rx.h index f945dac2ea..fa2cbdfd4e 100644 --- a/include/elf/rx.h +++ b/include/elf/rx.h @@ -119,11 +119,11 @@ END_RELOC_NUMBERS (R_RX_max) #define E_FLAG_RX_DSP (1 << 1) /* Defined in the RX CPU Object file specification, but not explained. */ #define E_FLAG_RX_PID (1 << 2) /* Unofficial - DJ */ #define E_FLAG_RX_ABI (1 << 3) /* Binary passes stacked arguments using natural alignment. Unofficial - NC. */ - #define E_FLAG_RX_SINSNS_SET (1 << 6) /* Set if bit-5 is significant. */ #define E_FLAG_RX_SINSNS_YES (1 << 7) /* Set if string instructions are used in the binary. */ #define E_FLAG_RX_SINSNS_NO 0 /* Bit-5 if this binary must not be linked with a string instruction using binary. */ #define E_FLAG_RX_SINSNS_MASK (3 << 6) /* Mask of bits used to determine string instruction use. */ +#define E_FLAG_RX_V2 (1 << 8) /* RX v2 instructions */ /* These define the addend field of R_RX_RH_RELAX relocations. */ #define RX_RELAXA_IMM6 0x00000010 /* Imm8/16/24/32 at bit offset 6. */ diff --git a/include/opcode/ChangeLog b/include/opcode/ChangeLog index e72c1a03de..7ccd62e3ba 100644 --- a/include/opcode/ChangeLog +++ b/include/opcode/ChangeLog @@ -3,6 +3,10 @@ * aarch64.h (enum aarch64_opnd_qualifier): Add AARCH64_OPND_QLF_V_2H. +2015-12-14 Yoshinori Sato + + * rx.h: Add new instructions. + 2015-12-11 Matthew Wahab * aarch64.h (aarch64_opnd): Add AARCH64_OPND_BARRIER_PSB. diff --git a/include/opcode/rx.h b/include/opcode/rx.h index b8ef163994..eda0ee396f 100644 --- a/include/opcode/rx.h +++ b/include/opcode/rx.h @@ -161,6 +161,25 @@ typedef enum RXO_wait, RXO_sccnd, /* d = cond(s) ? 1 : 0 */ + + RXO_fsqrt, + RXO_ftou, + RXO_utof, + RXO_movco, + RXO_movli, + RXO_emaca, + RXO_emsba, + RXO_emula, + RXO_maclh, + RXO_msbhi, + RXO_msblh, + RXO_msblo, + RXO_mullh, + RXO_mvfacgu, + RXO_mvtacgu, + RXO_racl, + RXO_rdacl, + RXO_rdacw, } RX_Opcode_ID; /* Condition bitpatterns, as registers. */ diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 26cddf0473..61453432ad 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,9 @@ +2015-12-14 Yoshinori Sato + + * rx-deocde.opc: Add new instructions pattern. + * rx-deocde.c: Regenerate. + * rx-dis.c (register_name): Add new register. + 2015-12-14 Matthew Wahab * aarch64-asm-2.c: Regenerate. diff --git a/opcodes/rx-decode.c b/opcodes/rx-decode.c index 3a9099b1ff..e298bed97c 100644 --- a/opcodes/rx-decode.c +++ b/opcodes/rx-decode.c @@ -294,7 +294,7 @@ rx_decode_opcode (unsigned long pc AU, op[0]); } SYNTAX("brk"); -#line 987 "rx-decode.opc" +#line 1025 "rx-decode.opc" ID(brk); } @@ -309,7 +309,7 @@ rx_decode_opcode (unsigned long pc AU, op[0]); } SYNTAX("dbt"); -#line 990 "rx-decode.opc" +#line 1028 "rx-decode.opc" ID(dbt); } @@ -324,7 +324,7 @@ rx_decode_opcode (unsigned long pc AU, op[0]); } SYNTAX("rts"); -#line 768 "rx-decode.opc" +#line 806 "rx-decode.opc" ID(rts); /*----------------------------------------------------------------------*/ @@ -342,7 +342,7 @@ rx_decode_opcode (unsigned long pc AU, op[0]); } SYNTAX("nop"); -#line 774 "rx-decode.opc" +#line 812 "rx-decode.opc" ID(nop); /*----------------------------------------------------------------------*/ @@ -360,7 +360,7 @@ rx_decode_opcode (unsigned long pc AU, op[0]); } SYNTAX("bra.a %a0"); -#line 746 "rx-decode.opc" +#line 784 "rx-decode.opc" ID(branch); DC(pc + IMMex(3)); } @@ -375,7 +375,7 @@ rx_decode_opcode (unsigned long pc AU, op[0]); } SYNTAX("bsr.a %a0"); -#line 762 "rx-decode.opc" +#line 800 "rx-decode.opc" ID(jsr); DC(pc + IMMex(3)); } @@ -578,13 +578,13 @@ rx_decode_opcode (unsigned long pc AU, op_semantics_4: { /** 0000 0110 mx00 11ss rsrc rdst mul %1%S1, %0 */ -#line 611 "rx-decode.opc" +#line 649 "rx-decode.opc" int mx AU = (op[1] >> 6) & 0x03; -#line 611 "rx-decode.opc" +#line 649 "rx-decode.opc" int ss AU = op[1] & 0x03; -#line 611 "rx-decode.opc" +#line 649 "rx-decode.opc" int rsrc AU = (op[2] >> 4) & 0x0f; -#line 611 "rx-decode.opc" +#line 649 "rx-decode.opc" int rdst AU = op[2] & 0x0f; if (trace) { @@ -597,7 +597,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("mul %1%S1, %0"); -#line 611 "rx-decode.opc" +#line 649 "rx-decode.opc" ID(mul); SPm(ss, rsrc, mx); DR(rdst); F_____; } @@ -802,13 +802,13 @@ rx_decode_opcode (unsigned long pc AU, op_semantics_8: { /** 0000 0110 mx10 00ss 0000 0100 rsrc rdst max %1%S1, %0 */ -#line 584 "rx-decode.opc" +#line 594 "rx-decode.opc" int mx AU = (op[1] >> 6) & 0x03; -#line 584 "rx-decode.opc" +#line 594 "rx-decode.opc" int ss AU = op[1] & 0x03; -#line 584 "rx-decode.opc" +#line 594 "rx-decode.opc" int rsrc AU = (op[3] >> 4) & 0x0f; -#line 584 "rx-decode.opc" +#line 594 "rx-decode.opc" int rdst AU = op[3] & 0x0f; if (trace) { @@ -821,7 +821,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("max %1%S1, %0"); -#line 584 "rx-decode.opc" +#line 594 "rx-decode.opc" ID(max); SPm(ss, rsrc, mx); DR(rdst); /*----------------------------------------------------------------------*/ @@ -839,13 +839,13 @@ rx_decode_opcode (unsigned long pc AU, op_semantics_9: { /** 0000 0110 mx10 00ss 0000 0101 rsrc rdst min %1%S1, %0 */ -#line 596 "rx-decode.opc" +#line 606 "rx-decode.opc" int mx AU = (op[1] >> 6) & 0x03; -#line 596 "rx-decode.opc" +#line 606 "rx-decode.opc" int ss AU = op[1] & 0x03; -#line 596 "rx-decode.opc" +#line 606 "rx-decode.opc" int rsrc AU = (op[3] >> 4) & 0x0f; -#line 596 "rx-decode.opc" +#line 606 "rx-decode.opc" int rdst AU = op[3] & 0x0f; if (trace) { @@ -858,7 +858,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("min %1%S1, %0"); -#line 596 "rx-decode.opc" +#line 606 "rx-decode.opc" ID(min); SPm(ss, rsrc, mx); DR(rdst); /*----------------------------------------------------------------------*/ @@ -876,13 +876,13 @@ rx_decode_opcode (unsigned long pc AU, op_semantics_10: { /** 0000 0110 mx10 00ss 0000 0110 rsrc rdst emul %1%S1, %0 */ -#line 626 "rx-decode.opc" +#line 664 "rx-decode.opc" int mx AU = (op[1] >> 6) & 0x03; -#line 626 "rx-decode.opc" +#line 664 "rx-decode.opc" int ss AU = op[1] & 0x03; -#line 626 "rx-decode.opc" +#line 664 "rx-decode.opc" int rsrc AU = (op[3] >> 4) & 0x0f; -#line 626 "rx-decode.opc" +#line 664 "rx-decode.opc" int rdst AU = op[3] & 0x0f; if (trace) { @@ -895,7 +895,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("emul %1%S1, %0"); -#line 626 "rx-decode.opc" +#line 664 "rx-decode.opc" ID(emul); SPm(ss, rsrc, mx); DR(rdst); /*----------------------------------------------------------------------*/ @@ -913,13 +913,13 @@ rx_decode_opcode (unsigned long pc AU, op_semantics_11: { /** 0000 0110 mx10 00ss 0000 0111 rsrc rdst emulu %1%S1, %0 */ -#line 638 "rx-decode.opc" +#line 676 "rx-decode.opc" int mx AU = (op[1] >> 6) & 0x03; -#line 638 "rx-decode.opc" +#line 676 "rx-decode.opc" int ss AU = op[1] & 0x03; -#line 638 "rx-decode.opc" +#line 676 "rx-decode.opc" int rsrc AU = (op[3] >> 4) & 0x0f; -#line 638 "rx-decode.opc" +#line 676 "rx-decode.opc" int rdst AU = op[3] & 0x0f; if (trace) { @@ -932,7 +932,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("emulu %1%S1, %0"); -#line 638 "rx-decode.opc" +#line 676 "rx-decode.opc" ID(emulu); SPm(ss, rsrc, mx); DR(rdst); /*----------------------------------------------------------------------*/ @@ -950,13 +950,13 @@ rx_decode_opcode (unsigned long pc AU, op_semantics_12: { /** 0000 0110 mx10 00ss 0000 1000 rsrc rdst div %1%S1, %0 */ -#line 650 "rx-decode.opc" +#line 688 "rx-decode.opc" int mx AU = (op[1] >> 6) & 0x03; -#line 650 "rx-decode.opc" +#line 688 "rx-decode.opc" int ss AU = op[1] & 0x03; -#line 650 "rx-decode.opc" +#line 688 "rx-decode.opc" int rsrc AU = (op[3] >> 4) & 0x0f; -#line 650 "rx-decode.opc" +#line 688 "rx-decode.opc" int rdst AU = op[3] & 0x0f; if (trace) { @@ -969,7 +969,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("div %1%S1, %0"); -#line 650 "rx-decode.opc" +#line 688 "rx-decode.opc" ID(div); SPm(ss, rsrc, mx); DR(rdst); F_O___; /*----------------------------------------------------------------------*/ @@ -987,13 +987,13 @@ rx_decode_opcode (unsigned long pc AU, op_semantics_13: { /** 0000 0110 mx10 00ss 0000 1001 rsrc rdst divu %1%S1, %0 */ -#line 662 "rx-decode.opc" +#line 700 "rx-decode.opc" int mx AU = (op[1] >> 6) & 0x03; -#line 662 "rx-decode.opc" +#line 700 "rx-decode.opc" int ss AU = op[1] & 0x03; -#line 662 "rx-decode.opc" +#line 700 "rx-decode.opc" int rsrc AU = (op[3] >> 4) & 0x0f; -#line 662 "rx-decode.opc" +#line 700 "rx-decode.opc" int rdst AU = op[3] & 0x0f; if (trace) { @@ -1006,7 +1006,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("divu %1%S1, %0"); -#line 662 "rx-decode.opc" +#line 700 "rx-decode.opc" ID(divu); SPm(ss, rsrc, mx); DR(rdst); F_O___; /*----------------------------------------------------------------------*/ @@ -1135,13 +1135,13 @@ rx_decode_opcode (unsigned long pc AU, op_semantics_17: { /** 0000 0110 mx10 00sd 0001 0001 rsrc rdst itof %1%S1, %0 */ -#line 891 "rx-decode.opc" +#line 929 "rx-decode.opc" int mx AU = (op[1] >> 6) & 0x03; -#line 891 "rx-decode.opc" +#line 929 "rx-decode.opc" int sd AU = op[1] & 0x03; -#line 891 "rx-decode.opc" +#line 929 "rx-decode.opc" int rsrc AU = (op[3] >> 4) & 0x0f; -#line 891 "rx-decode.opc" +#line 929 "rx-decode.opc" int rdst AU = op[3] & 0x0f; if (trace) { @@ -1154,12 +1154,46 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("itof %1%S1, %0"); -#line 891 "rx-decode.opc" +#line 929 "rx-decode.opc" ID(itof); DR (rdst); SPm(sd, rsrc, mx); F__SZ_; /*----------------------------------------------------------------------*/ /* BIT OPS */ + } + break; + } + break; + case 0x15: + GETBYTE (); + switch (op[3] & 0x00) + { + case 0x00: + op_semantics_18: + { + /** 0000 0110 mx10 00sd 0001 0101 rsrc rdst utof %1%S1, %0 */ +#line 1115 "rx-decode.opc" + int mx AU = (op[1] >> 6) & 0x03; +#line 1115 "rx-decode.opc" + int sd AU = op[1] & 0x03; +#line 1115 "rx-decode.opc" + int rsrc AU = (op[3] >> 4) & 0x0f; +#line 1115 "rx-decode.opc" + int rdst AU = op[3] & 0x0f; + if (trace) + { + printf ("\033[33m%s\033[0m %02x %02x %02x %02x\n", + "/** 0000 0110 mx10 00sd 0001 0101 rsrc rdst utof %1%S1, %0 */", + op[0], op[1], op[2], op[3]); + printf (" mx = 0x%x,", mx); + printf (" sd = 0x%x,", sd); + printf (" rsrc = 0x%x,", rsrc); + printf (" rdst = 0x%x\n", rdst); + } + SYNTAX("utof %1%S1, %0"); +#line 1115 "rx-decode.opc" + ID(utof); DR (rdst); SPm(sd, rsrc, mx); F__SZ_; + } break; } @@ -1270,6 +1304,15 @@ rx_decode_opcode (unsigned long pc AU, break; } break; + case 0x15: + GETBYTE (); + switch (op[3] & 0x00) + { + case 0x00: + goto op_semantics_18; + break; + } + break; default: UNSUPPORTED(); break; } break; @@ -1376,6 +1419,15 @@ rx_decode_opcode (unsigned long pc AU, break; } break; + case 0x15: + GETBYTE (); + switch (op[3] & 0x00) + { + case 0x00: + goto op_semantics_18; + break; + } + break; default: UNSUPPORTED(); break; } break; @@ -1482,6 +1534,15 @@ rx_decode_opcode (unsigned long pc AU, break; } break; + case 0x15: + GETBYTE (); + switch (op[3] & 0x00) + { + case 0x00: + goto op_semantics_18; + break; + } + break; default: UNSUPPORTED(); break; } break; @@ -1804,6 +1865,15 @@ rx_decode_opcode (unsigned long pc AU, break; } break; + case 0x15: + GETBYTE (); + switch (op[3] & 0x00) + { + case 0x00: + goto op_semantics_18; + break; + } + break; default: UNSUPPORTED(); break; } break; @@ -1910,6 +1980,15 @@ rx_decode_opcode (unsigned long pc AU, break; } break; + case 0x15: + GETBYTE (); + switch (op[3] & 0x00) + { + case 0x00: + goto op_semantics_18; + break; + } + break; default: UNSUPPORTED(); break; } break; @@ -2016,6 +2095,15 @@ rx_decode_opcode (unsigned long pc AU, break; } break; + case 0x15: + GETBYTE (); + switch (op[3] & 0x00) + { + case 0x00: + goto op_semantics_18; + break; + } + break; default: UNSUPPORTED(); break; } break; @@ -2122,6 +2210,15 @@ rx_decode_opcode (unsigned long pc AU, break; } break; + case 0x15: + GETBYTE (); + switch (op[3] & 0x00) + { + case 0x00: + goto op_semantics_18; + break; + } + break; default: UNSUPPORTED(); break; } break; @@ -2359,7 +2456,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[3] & 0x00) { case 0x00: - op_semantics_18: + op_semantics_19: { /** 0000 0110 1010 00ss 0000 0010 rsrc rdst adc %1%S1, %0 */ #line 494 "rx-decode.opc" @@ -2478,6 +2575,15 @@ rx_decode_opcode (unsigned long pc AU, break; } break; + case 0x15: + GETBYTE (); + switch (op[3] & 0x00) + { + case 0x00: + goto op_semantics_18; + break; + } + break; default: UNSUPPORTED(); break; } break; @@ -2499,7 +2605,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[3] & 0x00) { case 0x00: - goto op_semantics_18; + goto op_semantics_19; break; } break; @@ -2593,6 +2699,15 @@ rx_decode_opcode (unsigned long pc AU, break; } break; + case 0x15: + GETBYTE (); + switch (op[3] & 0x00) + { + case 0x00: + goto op_semantics_18; + break; + } + break; default: UNSUPPORTED(); break; } break; @@ -2614,7 +2729,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[3] & 0x00) { case 0x00: - goto op_semantics_18; + goto op_semantics_19; break; } break; @@ -2708,6 +2823,15 @@ rx_decode_opcode (unsigned long pc AU, break; } break; + case 0x15: + GETBYTE (); + switch (op[3] & 0x00) + { + case 0x00: + goto op_semantics_18; + break; + } + break; default: UNSUPPORTED(); break; } break; @@ -2729,7 +2853,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[3] & 0x00) { case 0x00: - goto op_semantics_18; + goto op_semantics_19; break; } break; @@ -2823,6 +2947,15 @@ rx_decode_opcode (unsigned long pc AU, break; } break; + case 0x15: + GETBYTE (); + switch (op[3] & 0x00) + { + case 0x00: + goto op_semantics_18; + break; + } + break; default: UNSUPPORTED(); break; } break; @@ -3145,6 +3278,15 @@ rx_decode_opcode (unsigned long pc AU, break; } break; + case 0x15: + GETBYTE (); + switch (op[3] & 0x00) + { + case 0x00: + goto op_semantics_18; + break; + } + break; default: UNSUPPORTED(); break; } break; @@ -3251,6 +3393,15 @@ rx_decode_opcode (unsigned long pc AU, break; } break; + case 0x15: + GETBYTE (); + switch (op[3] & 0x00) + { + case 0x00: + goto op_semantics_18; + break; + } + break; default: UNSUPPORTED(); break; } break; @@ -3357,6 +3508,15 @@ rx_decode_opcode (unsigned long pc AU, break; } break; + case 0x15: + GETBYTE (); + switch (op[3] & 0x00) + { + case 0x00: + goto op_semantics_18; + break; + } + break; default: UNSUPPORTED(); break; } break; @@ -3463,6 +3623,15 @@ rx_decode_opcode (unsigned long pc AU, break; } break; + case 0x15: + GETBYTE (); + switch (op[3] & 0x00) + { + case 0x00: + goto op_semantics_18; + break; + } + break; default: UNSUPPORTED(); break; } break; @@ -3479,7 +3648,7 @@ rx_decode_opcode (unsigned long pc AU, case 0x0f: { /** 0000 1dsp bra.s %a0 */ -#line 737 "rx-decode.opc" +#line 775 "rx-decode.opc" int dsp AU = op[0] & 0x07; if (trace) { @@ -3489,7 +3658,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" dsp = 0x%x\n", dsp); } SYNTAX("bra.s %a0"); -#line 737 "rx-decode.opc" +#line 775 "rx-decode.opc" ID(branch); DC(pc + dsp3map[dsp]); } @@ -3512,9 +3681,9 @@ rx_decode_opcode (unsigned long pc AU, case 0x1f: { /** 0001 n dsp b%1.s %a0 */ -#line 727 "rx-decode.opc" +#line 765 "rx-decode.opc" int n AU = (op[0] >> 3) & 0x01; -#line 727 "rx-decode.opc" +#line 765 "rx-decode.opc" int dsp AU = op[0] & 0x07; if (trace) { @@ -3525,7 +3694,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" dsp = 0x%x\n", dsp); } SYNTAX("b%1.s %a0"); -#line 727 "rx-decode.opc" +#line 765 "rx-decode.opc" ID(branch); Scc(n); DC(pc + dsp3map[dsp]); } @@ -3547,7 +3716,7 @@ rx_decode_opcode (unsigned long pc AU, case 0x2f: { /** 0010 cond b%1.b %a0 */ -#line 730 "rx-decode.opc" +#line 768 "rx-decode.opc" int cond AU = op[0] & 0x0f; if (trace) { @@ -3557,7 +3726,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" cond = 0x%x\n", cond); } SYNTAX("b%1.b %a0"); -#line 730 "rx-decode.opc" +#line 768 "rx-decode.opc" ID(branch); Scc(cond); DC(pc + IMMex (1)); } @@ -3572,7 +3741,7 @@ rx_decode_opcode (unsigned long pc AU, op[0]); } SYNTAX("bra.b %a0"); -#line 740 "rx-decode.opc" +#line 778 "rx-decode.opc" ID(branch); DC(pc + IMMex(1)); } @@ -3587,7 +3756,7 @@ rx_decode_opcode (unsigned long pc AU, op[0]); } SYNTAX("bra.w %a0"); -#line 743 "rx-decode.opc" +#line 781 "rx-decode.opc" ID(branch); DC(pc + IMMex(2)); } @@ -3602,7 +3771,7 @@ rx_decode_opcode (unsigned long pc AU, op[0]); } SYNTAX("bsr.w %a0"); -#line 759 "rx-decode.opc" +#line 797 "rx-decode.opc" ID(jsr); DC(pc + IMMex(2)); } @@ -3611,7 +3780,7 @@ rx_decode_opcode (unsigned long pc AU, case 0x3b: { /** 0011 101c b%1.w %a0 */ -#line 733 "rx-decode.opc" +#line 771 "rx-decode.opc" int c AU = op[0] & 0x01; if (trace) { @@ -3621,7 +3790,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" c = 0x%x\n", c); } SYNTAX("b%1.w %a0"); -#line 733 "rx-decode.opc" +#line 771 "rx-decode.opc" ID(branch); Scc(c); DC(pc + IMMex (2)); @@ -3632,7 +3801,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - op_semantics_19: + op_semantics_20: { /** 0011 11sz d dst sppp mov%s #%1, %0 */ #line 307 "rx-decode.opc" @@ -3666,7 +3835,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_19; + goto op_semantics_20; break; } break; @@ -3675,7 +3844,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_19; + goto op_semantics_20; break; } break; @@ -3714,7 +3883,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - op_semantics_20: + op_semantics_21: { /** 0100 00ss rsrc rdst sub %2%S2, %1 */ #line 539 "rx-decode.opc" @@ -3745,7 +3914,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_20; + goto op_semantics_21; break; } break; @@ -3754,7 +3923,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_20; + goto op_semantics_21; break; } break; @@ -3763,7 +3932,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_20; + goto op_semantics_21; break; } break; @@ -3772,7 +3941,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - op_semantics_21: + op_semantics_22: { /** 0100 01ss rsrc rdst cmp %2%S2, %1 */ #line 527 "rx-decode.opc" @@ -3803,7 +3972,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_21; + goto op_semantics_22; break; } break; @@ -3812,7 +3981,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_21; + goto op_semantics_22; break; } break; @@ -3821,7 +3990,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_21; + goto op_semantics_22; break; } break; @@ -3830,7 +3999,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - op_semantics_22: + op_semantics_23: { /** 0100 10ss rsrc rdst add %1%S1, %0 */ #line 503 "rx-decode.opc" @@ -3861,7 +4030,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_22; + goto op_semantics_23; break; } break; @@ -3870,7 +4039,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_22; + goto op_semantics_23; break; } break; @@ -3879,7 +4048,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_22; + goto op_semantics_23; break; } break; @@ -3888,14 +4057,14 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - op_semantics_23: + op_semantics_24: { /** 0100 11ss rsrc rdst mul %1%S1, %0 */ -#line 608 "rx-decode.opc" +#line 646 "rx-decode.opc" int ss AU = op[0] & 0x03; -#line 608 "rx-decode.opc" +#line 646 "rx-decode.opc" int rsrc AU = (op[1] >> 4) & 0x0f; -#line 608 "rx-decode.opc" +#line 646 "rx-decode.opc" int rdst AU = op[1] & 0x0f; if (trace) { @@ -3907,7 +4076,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("mul %1%S1, %0"); -#line 608 "rx-decode.opc" +#line 646 "rx-decode.opc" ID(mul); SP(ss, rsrc); DR(rdst); F_____; } @@ -3919,7 +4088,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_23; + goto op_semantics_24; break; } break; @@ -3928,7 +4097,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_23; + goto op_semantics_24; break; } break; @@ -3937,7 +4106,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_23; + goto op_semantics_24; break; } break; @@ -3946,7 +4115,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - op_semantics_24: + op_semantics_25: { /** 0101 00ss rsrc rdst and %1%S1, %0 */ #line 416 "rx-decode.opc" @@ -3977,7 +4146,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_24; + goto op_semantics_25; break; } break; @@ -3986,7 +4155,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_24; + goto op_semantics_25; break; } break; @@ -3995,7 +4164,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_24; + goto op_semantics_25; break; } break; @@ -4004,7 +4173,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - op_semantics_25: + op_semantics_26: { /** 0101 01ss rsrc rdst or %1%S1, %0 */ #line 434 "rx-decode.opc" @@ -4035,7 +4204,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_25; + goto op_semantics_26; break; } break; @@ -4044,7 +4213,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_25; + goto op_semantics_26; break; } break; @@ -4053,7 +4222,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_25; + goto op_semantics_26; break; } break; @@ -4062,7 +4231,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - op_semantics_26: + op_semantics_27: { /** 0101 1 s ss rsrc rdst movu%s %1, %0 */ #line 355 "rx-decode.opc" @@ -4096,7 +4265,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_26; + goto op_semantics_27; break; } break; @@ -4105,7 +4274,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_26; + goto op_semantics_27; break; } break; @@ -4114,7 +4283,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_26; + goto op_semantics_27; break; } break; @@ -4123,7 +4292,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_26; + goto op_semantics_27; break; } break; @@ -4132,7 +4301,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_26; + goto op_semantics_27; break; } break; @@ -4141,7 +4310,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_26; + goto op_semantics_27; break; } break; @@ -4150,7 +4319,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_26; + goto op_semantics_27; break; } break; @@ -4242,9 +4411,9 @@ rx_decode_opcode (unsigned long pc AU, case 0x00: { /** 0110 0011 immm rdst mul #%1, %0 */ -#line 602 "rx-decode.opc" +#line 612 "rx-decode.opc" int immm AU = (op[1] >> 4) & 0x0f; -#line 602 "rx-decode.opc" +#line 612 "rx-decode.opc" int rdst AU = op[1] & 0x0f; if (trace) { @@ -4255,17 +4424,18 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("mul #%1, %0"); -#line 602 "rx-decode.opc" - if (immm == 1 && rdst == 0) - { - ID(nop2); - SYNTAX ("nop\t; mul\t#1, r0"); - } - else - { - ID(mul); - } - DR(rdst); SC(immm); F_____; +#line 612 "rx-decode.opc" + if (immm == 1 && rdst == 0) + { + ID(nop2); + SYNTAX ("nop\t; mul\t#1, r0"); + } + else + { + ID(mul); + } + DR(rdst); SC(immm); F_____; + } break; } @@ -4371,14 +4541,14 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - op_semantics_27: + op_semantics_28: { /** 0110 100i mmmm rdst shlr #%2, %0 */ -#line 688 "rx-decode.opc" +#line 726 "rx-decode.opc" int i AU = op[0] & 0x01; -#line 688 "rx-decode.opc" +#line 726 "rx-decode.opc" int mmmm AU = (op[1] >> 4) & 0x0f; -#line 688 "rx-decode.opc" +#line 726 "rx-decode.opc" int rdst AU = op[1] & 0x0f; if (trace) { @@ -4390,7 +4560,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("shlr #%2, %0"); -#line 688 "rx-decode.opc" +#line 726 "rx-decode.opc" ID(shlr); S2C(i*16+mmmm); SR(rdst); DR(rdst); F__SZC; } @@ -4402,7 +4572,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_27; + goto op_semantics_28; break; } break; @@ -4411,14 +4581,14 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - op_semantics_28: + op_semantics_29: { /** 0110 101i mmmm rdst shar #%2, %0 */ -#line 678 "rx-decode.opc" +#line 716 "rx-decode.opc" int i AU = op[0] & 0x01; -#line 678 "rx-decode.opc" +#line 716 "rx-decode.opc" int mmmm AU = (op[1] >> 4) & 0x0f; -#line 678 "rx-decode.opc" +#line 716 "rx-decode.opc" int rdst AU = op[1] & 0x0f; if (trace) { @@ -4430,7 +4600,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("shar #%2, %0"); -#line 678 "rx-decode.opc" +#line 716 "rx-decode.opc" ID(shar); S2C(i*16+mmmm); SR(rdst); DR(rdst); F_0SZC; } @@ -4442,7 +4612,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_28; + goto op_semantics_29; break; } break; @@ -4451,14 +4621,14 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - op_semantics_29: + op_semantics_30: { /** 0110 110i mmmm rdst shll #%2, %0 */ -#line 668 "rx-decode.opc" +#line 706 "rx-decode.opc" int i AU = op[0] & 0x01; -#line 668 "rx-decode.opc" +#line 706 "rx-decode.opc" int mmmm AU = (op[1] >> 4) & 0x0f; -#line 668 "rx-decode.opc" +#line 706 "rx-decode.opc" int rdst AU = op[1] & 0x0f; if (trace) { @@ -4470,7 +4640,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("shll #%2, %0"); -#line 668 "rx-decode.opc" +#line 706 "rx-decode.opc" ID(shll); S2C(i*16+mmmm); SR(rdst); DR(rdst); F_OSZC; } @@ -4482,7 +4652,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_29; + goto op_semantics_30; break; } break; @@ -4545,7 +4715,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - op_semantics_30: + op_semantics_31: { /** 0111 00im rsrc rdst add #%1, %2, %0 */ #line 509 "rx-decode.opc" @@ -4576,7 +4746,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_30; + goto op_semantics_31; break; } break; @@ -4585,7 +4755,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_30; + goto op_semantics_31; break; } break; @@ -4594,7 +4764,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_30; + goto op_semantics_31; break; } break; @@ -4603,7 +4773,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0xf0) { case 0x00: - op_semantics_31: + op_semantics_32: { /** 0111 01im 0000 rsrc cmp #%2, %1%S1 */ #line 521 "rx-decode.opc" @@ -4625,14 +4795,13 @@ rx_decode_opcode (unsigned long pc AU, } break; case 0x10: - op_semantics_32: + op_semantics_33: { /** 0111 01im 0001rdst mul #%1, %0 */ -#line 605 "rx-decode.opc" +#line 624 "rx-decode.opc" int im AU = op[0] & 0x03; -#line 605 "rx-decode.opc" +#line 624 "rx-decode.opc" int rdst AU = op[1] & 0x0f; - int val = IMMex(im); if (trace) { printf ("\033[33m%s\033[0m %02x %02x\n", @@ -4642,31 +4811,32 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("mul #%1, %0"); -#line 605 "rx-decode.opc" - if (val == 1 && rdst == 0) - { - SYNTAX("nop\t; mul\t#1, r0"); - switch (im) - { - case 2: ID(nop4); break; - case 3: ID(nop5); break; - case 0: ID(nop6); break; - default: - ID(mul); - SYNTAX("mul #%1, %0"); - break; - } - } - else - { - ID(mul); - } - DR(rdst); SC(val); F_____; +#line 624 "rx-decode.opc" + int val = IMMex(im); + if (val == 1 && rdst == 0) + { + SYNTAX("nop\t; mul\t#1, r0"); + switch (im) + { + case 2: ID(nop4); break; + case 3: ID(nop5); break; + case 0: ID(nop6); break; + default: + ID(mul); + SYNTAX("mul #%1, %0"); + break; + } + } + else + { + ID(mul); + } + DR(rdst); SC(val); F_____; } break; case 0x20: - op_semantics_33: + op_semantics_34: { /** 0111 01im 0010 rdst and #%1, %0 */ #line 413 "rx-decode.opc" @@ -4688,7 +4858,7 @@ rx_decode_opcode (unsigned long pc AU, } break; case 0x30: - op_semantics_34: + op_semantics_35: { /** 0111 01im 0011 rdst or #%1, %0 */ #line 431 "rx-decode.opc" @@ -4732,7 +4902,7 @@ rx_decode_opcode (unsigned long pc AU, case 0x0d: case 0x0e: case 0x0f: - goto op_semantics_31; + goto op_semantics_32; break; case 0x10: case 0x11: @@ -4750,7 +4920,7 @@ rx_decode_opcode (unsigned long pc AU, case 0x1d: case 0x1e: case 0x1f: - goto op_semantics_32; + goto op_semantics_33; break; case 0x20: case 0x21: @@ -4768,7 +4938,7 @@ rx_decode_opcode (unsigned long pc AU, case 0x2d: case 0x2e: case 0x2f: - goto op_semantics_33; + goto op_semantics_34; break; case 0x30: case 0x31: @@ -4786,7 +4956,7 @@ rx_decode_opcode (unsigned long pc AU, case 0x3d: case 0x3e: case 0x3f: - goto op_semantics_34; + goto op_semantics_35; break; case 0x40: case 0x41: @@ -4864,7 +5034,7 @@ rx_decode_opcode (unsigned long pc AU, op[0], op[1]); } SYNTAX("int #%1"); -#line 993 "rx-decode.opc" +#line 1031 "rx-decode.opc" ID(int); SC(IMM(1)); } @@ -4876,7 +5046,7 @@ rx_decode_opcode (unsigned long pc AU, case 0x00: { /** 0111 0101 0111 0000 0000 immm mvtipl #%1 */ -#line 960 "rx-decode.opc" +#line 998 "rx-decode.opc" int immm AU = op[2] & 0x0f; if (trace) { @@ -4886,7 +5056,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" immm = 0x%x\n", immm); } SYNTAX("mvtipl #%1"); -#line 960 "rx-decode.opc" +#line 998 "rx-decode.opc" ID(mvtipl); SC(immm); } @@ -4902,16 +5072,16 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0xf0) { case 0x00: - goto op_semantics_31; + goto op_semantics_32; break; case 0x10: - goto op_semantics_32; + goto op_semantics_33; break; case 0x20: - goto op_semantics_33; + goto op_semantics_34; break; case 0x30: - goto op_semantics_34; + goto op_semantics_35; break; default: UNSUPPORTED(); break; } @@ -4921,16 +5091,16 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0xf0) { case 0x00: - goto op_semantics_31; + goto op_semantics_32; break; case 0x10: - goto op_semantics_32; + goto op_semantics_33; break; case 0x20: - goto op_semantics_33; + goto op_semantics_34; break; case 0x30: - goto op_semantics_34; + goto op_semantics_35; break; default: UNSUPPORTED(); break; } @@ -4940,14 +5110,14 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - op_semantics_35: + op_semantics_36: { /** 0111 100b ittt rdst bset #%1, %0 */ -#line 905 "rx-decode.opc" +#line 943 "rx-decode.opc" int b AU = op[0] & 0x01; -#line 905 "rx-decode.opc" +#line 943 "rx-decode.opc" int ittt AU = (op[1] >> 4) & 0x0f; -#line 905 "rx-decode.opc" +#line 943 "rx-decode.opc" int rdst AU = op[1] & 0x0f; if (trace) { @@ -4959,7 +5129,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("bset #%1, %0"); -#line 905 "rx-decode.opc" +#line 943 "rx-decode.opc" ID(bset); BWL(LSIZE); SC(b*16+ittt); DR(rdst); F_____; @@ -4972,7 +5142,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_35; + goto op_semantics_36; break; } break; @@ -4981,14 +5151,14 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - op_semantics_36: + op_semantics_37: { /** 0111 101b ittt rdst bclr #%1, %0 */ -#line 917 "rx-decode.opc" +#line 955 "rx-decode.opc" int b AU = op[0] & 0x01; -#line 917 "rx-decode.opc" +#line 955 "rx-decode.opc" int ittt AU = (op[1] >> 4) & 0x0f; -#line 917 "rx-decode.opc" +#line 955 "rx-decode.opc" int rdst AU = op[1] & 0x0f; if (trace) { @@ -5000,7 +5170,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("bclr #%1, %0"); -#line 917 "rx-decode.opc" +#line 955 "rx-decode.opc" ID(bclr); BWL(LSIZE); SC(b*16+ittt); DR(rdst); F_____; @@ -5013,7 +5183,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_36; + goto op_semantics_37; break; } break; @@ -5022,14 +5192,14 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - op_semantics_37: + op_semantics_38: { /** 0111 110b ittt rdst btst #%2, %1 */ -#line 929 "rx-decode.opc" +#line 967 "rx-decode.opc" int b AU = op[0] & 0x01; -#line 929 "rx-decode.opc" +#line 967 "rx-decode.opc" int ittt AU = (op[1] >> 4) & 0x0f; -#line 929 "rx-decode.opc" +#line 967 "rx-decode.opc" int rdst AU = op[1] & 0x0f; if (trace) { @@ -5041,7 +5211,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("btst #%2, %1"); -#line 929 "rx-decode.opc" +#line 967 "rx-decode.opc" ID(btst); BWL(LSIZE); S2C(b*16+ittt); SR(rdst); F___ZC; @@ -5054,7 +5224,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_37; + goto op_semantics_38; break; } break; @@ -5119,7 +5289,7 @@ rx_decode_opcode (unsigned long pc AU, case 0x30: { /** 0111 1110 0011 rdst sat %0 */ -#line 843 "rx-decode.opc" +#line 881 "rx-decode.opc" int rdst AU = op[1] & 0x0f; if (trace) { @@ -5129,7 +5299,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("sat %0"); -#line 843 "rx-decode.opc" +#line 881 "rx-decode.opc" ID(sat); DR (rdst); } @@ -5137,7 +5307,7 @@ rx_decode_opcode (unsigned long pc AU, case 0x40: { /** 0111 1110 0100 rdst rorc %0 */ -#line 703 "rx-decode.opc" +#line 741 "rx-decode.opc" int rdst AU = op[1] & 0x0f; if (trace) { @@ -5147,7 +5317,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("rorc %0"); -#line 703 "rx-decode.opc" +#line 741 "rx-decode.opc" ID(rorc); DR(rdst); F__SZC; } @@ -5155,7 +5325,7 @@ rx_decode_opcode (unsigned long pc AU, case 0x50: { /** 0111 1110 0101 rdst rolc %0 */ -#line 700 "rx-decode.opc" +#line 738 "rx-decode.opc" int rdst AU = op[1] & 0x0f; if (trace) { @@ -5165,7 +5335,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("rolc %0"); -#line 700 "rx-decode.opc" +#line 738 "rx-decode.opc" ID(rolc); DR(rdst); F__SZC; } @@ -5215,7 +5385,7 @@ rx_decode_opcode (unsigned long pc AU, case 0xd0: { /** 0111 1110 110 crsrc pushc %1 */ -#line 966 "rx-decode.opc" +#line 1004 "rx-decode.opc" int crsrc AU = op[1] & 0x1f; if (trace) { @@ -5225,7 +5395,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" crsrc = 0x%x\n", crsrc); } SYNTAX("pushc %1"); -#line 966 "rx-decode.opc" +#line 1004 "rx-decode.opc" ID(mov); OP(0, RX_Operand_Predec, 0, 0); SR(crsrc + 16); } @@ -5234,7 +5404,7 @@ rx_decode_opcode (unsigned long pc AU, case 0xf0: { /** 0111 1110 111 crdst popc %0 */ -#line 963 "rx-decode.opc" +#line 1001 "rx-decode.opc" int crdst AU = op[1] & 0x1f; if (trace) { @@ -5244,7 +5414,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" crdst = 0x%x\n", crdst); } SYNTAX("popc %0"); -#line 963 "rx-decode.opc" +#line 1001 "rx-decode.opc" ID(mov); OP(1, RX_Operand_Postinc, 0, 0); DR(crdst + 16); } @@ -5274,7 +5444,7 @@ rx_decode_opcode (unsigned long pc AU, case 0x0f: { /** 0111 1111 0000 rsrc jmp %0 */ -#line 753 "rx-decode.opc" +#line 791 "rx-decode.opc" int rsrc AU = op[1] & 0x0f; if (trace) { @@ -5284,7 +5454,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rsrc = 0x%x\n", rsrc); } SYNTAX("jmp %0"); -#line 753 "rx-decode.opc" +#line 791 "rx-decode.opc" ID(branch); DR(rsrc); } @@ -5307,7 +5477,7 @@ rx_decode_opcode (unsigned long pc AU, case 0x1f: { /** 0111 1111 0001 rsrc jsr %0 */ -#line 756 "rx-decode.opc" +#line 794 "rx-decode.opc" int rsrc AU = op[1] & 0x0f; if (trace) { @@ -5317,7 +5487,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rsrc = 0x%x\n", rsrc); } SYNTAX("jsr %0"); -#line 756 "rx-decode.opc" +#line 794 "rx-decode.opc" ID(jsr); DR(rsrc); } @@ -5340,7 +5510,7 @@ rx_decode_opcode (unsigned long pc AU, case 0x4f: { /** 0111 1111 0100 rsrc bra.l %0 */ -#line 749 "rx-decode.opc" +#line 787 "rx-decode.opc" int rsrc AU = op[1] & 0x0f; if (trace) { @@ -5350,7 +5520,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rsrc = 0x%x\n", rsrc); } SYNTAX("bra.l %0"); -#line 749 "rx-decode.opc" +#line 787 "rx-decode.opc" ID(branchrel); DR(rsrc); @@ -5374,7 +5544,7 @@ rx_decode_opcode (unsigned long pc AU, case 0x5f: { /** 0111 1111 0101 rsrc bsr.l %0 */ -#line 765 "rx-decode.opc" +#line 803 "rx-decode.opc" int rsrc AU = op[1] & 0x0f; if (trace) { @@ -5384,7 +5554,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rsrc = 0x%x\n", rsrc); } SYNTAX("bsr.l %0"); -#line 765 "rx-decode.opc" +#line 803 "rx-decode.opc" ID(jsrrel); DR(rsrc); } @@ -5394,7 +5564,7 @@ rx_decode_opcode (unsigned long pc AU, case 0x82: { /** 0111 1111 1000 00sz suntil%s */ -#line 789 "rx-decode.opc" +#line 827 "rx-decode.opc" int sz AU = op[1] & 0x03; if (trace) { @@ -5404,7 +5574,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" sz = 0x%x\n", sz); } SYNTAX("suntil%s"); -#line 789 "rx-decode.opc" +#line 827 "rx-decode.opc" ID(suntil); BWL(sz); F___ZC; } @@ -5419,7 +5589,7 @@ rx_decode_opcode (unsigned long pc AU, op[0], op[1]); } SYNTAX("scmpu"); -#line 780 "rx-decode.opc" +#line 818 "rx-decode.opc" ID(scmpu); F___ZC; } @@ -5429,7 +5599,7 @@ rx_decode_opcode (unsigned long pc AU, case 0x86: { /** 0111 1111 1000 01sz swhile%s */ -#line 792 "rx-decode.opc" +#line 830 "rx-decode.opc" int sz AU = op[1] & 0x03; if (trace) { @@ -5439,7 +5609,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" sz = 0x%x\n", sz); } SYNTAX("swhile%s"); -#line 792 "rx-decode.opc" +#line 830 "rx-decode.opc" ID(swhile); BWL(sz); F___ZC; } @@ -5454,7 +5624,7 @@ rx_decode_opcode (unsigned long pc AU, op[0], op[1]); } SYNTAX("smovu"); -#line 783 "rx-decode.opc" +#line 821 "rx-decode.opc" ID(smovu); } @@ -5464,7 +5634,7 @@ rx_decode_opcode (unsigned long pc AU, case 0x8a: { /** 0111 1111 1000 10sz sstr%s */ -#line 798 "rx-decode.opc" +#line 836 "rx-decode.opc" int sz AU = op[1] & 0x03; if (trace) { @@ -5474,7 +5644,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" sz = 0x%x\n", sz); } SYNTAX("sstr%s"); -#line 798 "rx-decode.opc" +#line 836 "rx-decode.opc" ID(sstr); BWL(sz); /*----------------------------------------------------------------------*/ @@ -5492,7 +5662,7 @@ rx_decode_opcode (unsigned long pc AU, op[0], op[1]); } SYNTAX("smovb"); -#line 786 "rx-decode.opc" +#line 824 "rx-decode.opc" ID(smovb); } @@ -5502,7 +5672,7 @@ rx_decode_opcode (unsigned long pc AU, case 0x8e: { /** 0111 1111 1000 11sz rmpa%s */ -#line 804 "rx-decode.opc" +#line 842 "rx-decode.opc" int sz AU = op[1] & 0x03; if (trace) { @@ -5512,7 +5682,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" sz = 0x%x\n", sz); } SYNTAX("rmpa%s"); -#line 804 "rx-decode.opc" +#line 842 "rx-decode.opc" ID(rmpa); BWL(sz); F_OS__; /*----------------------------------------------------------------------*/ @@ -5530,7 +5700,7 @@ rx_decode_opcode (unsigned long pc AU, op[0], op[1]); } SYNTAX("smovf"); -#line 795 "rx-decode.opc" +#line 833 "rx-decode.opc" ID(smovf); } @@ -5545,7 +5715,7 @@ rx_decode_opcode (unsigned long pc AU, op[0], op[1]); } SYNTAX("satr"); -#line 846 "rx-decode.opc" +#line 884 "rx-decode.opc" ID(satr); /*----------------------------------------------------------------------*/ @@ -5563,7 +5733,7 @@ rx_decode_opcode (unsigned long pc AU, op[0], op[1]); } SYNTAX("rtfi"); -#line 981 "rx-decode.opc" +#line 1019 "rx-decode.opc" ID(rtfi); } @@ -5578,7 +5748,7 @@ rx_decode_opcode (unsigned long pc AU, op[0], op[1]); } SYNTAX("rte"); -#line 984 "rx-decode.opc" +#line 1022 "rx-decode.opc" ID(rte); } @@ -5593,7 +5763,7 @@ rx_decode_opcode (unsigned long pc AU, op[0], op[1]); } SYNTAX("wait"); -#line 996 "rx-decode.opc" +#line 1034 "rx-decode.opc" ID(wait); /*----------------------------------------------------------------------*/ @@ -5619,7 +5789,7 @@ rx_decode_opcode (unsigned long pc AU, case 0xaf: { /** 0111 1111 1010 rdst setpsw %0 */ -#line 957 "rx-decode.opc" +#line 995 "rx-decode.opc" int rdst AU = op[1] & 0x0f; if (trace) { @@ -5629,7 +5799,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("setpsw %0"); -#line 957 "rx-decode.opc" +#line 995 "rx-decode.opc" ID(setpsw); DF(rdst); } @@ -5652,7 +5822,7 @@ rx_decode_opcode (unsigned long pc AU, case 0xbf: { /** 0111 1111 1011 rdst clrpsw %0 */ -#line 954 "rx-decode.opc" +#line 992 "rx-decode.opc" int rdst AU = op[1] & 0x0f; if (trace) { @@ -5662,7 +5832,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("clrpsw %0"); -#line 954 "rx-decode.opc" +#line 992 "rx-decode.opc" ID(clrpsw); DF(rdst); } @@ -5675,7 +5845,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - op_semantics_38: + op_semantics_39: { /** 10sz 0dsp a dst b src mov%s %1, %0 */ #line 332 "rx-decode.opc" @@ -5715,7 +5885,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_38; + goto op_semantics_39; break; } break; @@ -5724,7 +5894,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_38; + goto op_semantics_39; break; } break; @@ -5733,7 +5903,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_38; + goto op_semantics_39; break; } break; @@ -5742,7 +5912,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_38; + goto op_semantics_39; break; } break; @@ -5751,7 +5921,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_38; + goto op_semantics_39; break; } break; @@ -5760,7 +5930,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_38; + goto op_semantics_39; break; } break; @@ -5769,7 +5939,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_38; + goto op_semantics_39; break; } break; @@ -5778,7 +5948,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - op_semantics_39: + op_semantics_40: { /** 10sz 1dsp a src b dst mov%s %1, %0 */ #line 329 "rx-decode.opc" @@ -5818,7 +5988,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_39; + goto op_semantics_40; break; } break; @@ -5827,7 +5997,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_39; + goto op_semantics_40; break; } break; @@ -5836,7 +6006,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_39; + goto op_semantics_40; break; } break; @@ -5845,7 +6015,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_39; + goto op_semantics_40; break; } break; @@ -5854,7 +6024,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_39; + goto op_semantics_40; break; } break; @@ -5863,7 +6033,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_39; + goto op_semantics_40; break; } break; @@ -5872,7 +6042,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_39; + goto op_semantics_40; break; } break; @@ -5881,7 +6051,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_38; + goto op_semantics_39; break; } break; @@ -5890,7 +6060,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_38; + goto op_semantics_39; break; } break; @@ -5899,7 +6069,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_38; + goto op_semantics_39; break; } break; @@ -5908,7 +6078,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_38; + goto op_semantics_39; break; } break; @@ -5917,7 +6087,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_38; + goto op_semantics_39; break; } break; @@ -5926,7 +6096,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_38; + goto op_semantics_39; break; } break; @@ -5935,7 +6105,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_38; + goto op_semantics_39; break; } break; @@ -5944,7 +6114,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_38; + goto op_semantics_39; break; } break; @@ -5953,7 +6123,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_39; + goto op_semantics_40; break; } break; @@ -5962,7 +6132,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_39; + goto op_semantics_40; break; } break; @@ -5971,7 +6141,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_39; + goto op_semantics_40; break; } break; @@ -5980,7 +6150,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_39; + goto op_semantics_40; break; } break; @@ -5989,7 +6159,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_39; + goto op_semantics_40; break; } break; @@ -5998,7 +6168,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_39; + goto op_semantics_40; break; } break; @@ -6007,7 +6177,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_39; + goto op_semantics_40; break; } break; @@ -6016,7 +6186,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_39; + goto op_semantics_40; break; } break; @@ -6025,7 +6195,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_38; + goto op_semantics_39; break; } break; @@ -6034,7 +6204,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_38; + goto op_semantics_39; break; } break; @@ -6043,7 +6213,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_38; + goto op_semantics_39; break; } break; @@ -6052,7 +6222,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_38; + goto op_semantics_39; break; } break; @@ -6061,7 +6231,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_38; + goto op_semantics_39; break; } break; @@ -6070,7 +6240,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_38; + goto op_semantics_39; break; } break; @@ -6079,7 +6249,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_38; + goto op_semantics_39; break; } break; @@ -6088,7 +6258,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_38; + goto op_semantics_39; break; } break; @@ -6097,7 +6267,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_39; + goto op_semantics_40; break; } break; @@ -6106,7 +6276,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_39; + goto op_semantics_40; break; } break; @@ -6115,7 +6285,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_39; + goto op_semantics_40; break; } break; @@ -6124,7 +6294,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_39; + goto op_semantics_40; break; } break; @@ -6133,7 +6303,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_39; + goto op_semantics_40; break; } break; @@ -6142,7 +6312,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_39; + goto op_semantics_40; break; } break; @@ -6151,7 +6321,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_39; + goto op_semantics_40; break; } break; @@ -6160,7 +6330,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_39; + goto op_semantics_40; break; } break; @@ -6169,7 +6339,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - op_semantics_40: + op_semantics_41: { /** 1011 w dsp a src b dst movu%s %1, %0 */ #line 352 "rx-decode.opc" @@ -6209,7 +6379,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_40; + goto op_semantics_41; break; } break; @@ -6218,7 +6388,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_40; + goto op_semantics_41; break; } break; @@ -6227,7 +6397,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_40; + goto op_semantics_41; break; } break; @@ -6236,7 +6406,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_40; + goto op_semantics_41; break; } break; @@ -6245,7 +6415,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_40; + goto op_semantics_41; break; } break; @@ -6254,7 +6424,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_40; + goto op_semantics_41; break; } break; @@ -6263,7 +6433,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_40; + goto op_semantics_41; break; } break; @@ -6272,7 +6442,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_40; + goto op_semantics_41; break; } break; @@ -6281,7 +6451,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_40; + goto op_semantics_41; break; } break; @@ -6290,7 +6460,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_40; + goto op_semantics_41; break; } break; @@ -6299,7 +6469,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_40; + goto op_semantics_41; break; } break; @@ -6308,7 +6478,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_40; + goto op_semantics_41; break; } break; @@ -6317,7 +6487,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_40; + goto op_semantics_41; break; } break; @@ -6326,7 +6496,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_40; + goto op_semantics_41; break; } break; @@ -6335,7 +6505,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_40; + goto op_semantics_41; break; } break; @@ -6344,7 +6514,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - op_semantics_41: + op_semantics_42: { /** 11sz sd ss rsrc rdst mov%s %1, %0 */ #line 310 "rx-decode.opc" @@ -6379,13 +6549,13 @@ rx_decode_opcode (unsigned long pc AU, { ID(mov); sBWL(sz); F_____; if ((ss == 3) && (sd != 3)) - { - SD(ss, rdst, sz); DD(sd, rsrc, sz); - } + { + SD(ss, rdst, sz); DD(sd, rsrc, sz); + } else - { - SD(ss, rsrc, sz); DD(sd, rdst, sz); - } + { + SD(ss, rsrc, sz); DD(sd, rdst, sz); + } } } @@ -6397,7 +6567,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6406,7 +6576,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6415,7 +6585,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6424,7 +6594,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6433,7 +6603,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6442,7 +6612,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6451,7 +6621,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6460,7 +6630,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6469,7 +6639,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6478,7 +6648,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6487,7 +6657,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6496,7 +6666,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6505,7 +6675,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6514,7 +6684,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6523,7 +6693,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6532,7 +6702,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6541,7 +6711,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6550,7 +6720,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6559,7 +6729,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6568,7 +6738,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6577,7 +6747,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6586,7 +6756,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6595,7 +6765,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6604,7 +6774,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6613,7 +6783,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6622,7 +6792,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6631,7 +6801,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6640,7 +6810,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6649,7 +6819,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6658,7 +6828,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6667,7 +6837,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6676,7 +6846,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6685,7 +6855,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6694,7 +6864,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6703,7 +6873,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6712,7 +6882,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6721,7 +6891,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6730,7 +6900,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6739,7 +6909,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6748,7 +6918,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6757,7 +6927,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6766,7 +6936,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6775,7 +6945,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6784,7 +6954,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6793,7 +6963,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6802,7 +6972,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6811,7 +6981,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_41; + goto op_semantics_42; break; } break; @@ -6820,14 +6990,14 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x08) { case 0x00: - op_semantics_42: + op_semantics_43: { /** 1111 00sd rdst 0bit bset #%1, %0%S0 */ -#line 897 "rx-decode.opc" +#line 935 "rx-decode.opc" int sd AU = op[0] & 0x03; -#line 897 "rx-decode.opc" +#line 935 "rx-decode.opc" int rdst AU = (op[1] >> 4) & 0x0f; -#line 897 "rx-decode.opc" +#line 935 "rx-decode.opc" int bit AU = op[1] & 0x07; if (trace) { @@ -6839,20 +7009,20 @@ rx_decode_opcode (unsigned long pc AU, printf (" bit = 0x%x\n", bit); } SYNTAX("bset #%1, %0%S0"); -#line 897 "rx-decode.opc" +#line 935 "rx-decode.opc" ID(bset); BWL(BSIZE); SC(bit); DD(sd, rdst, BSIZE); F_____; } break; case 0x08: - op_semantics_43: + op_semantics_44: { /** 1111 00sd rdst 1bit bclr #%1, %0%S0 */ -#line 909 "rx-decode.opc" +#line 947 "rx-decode.opc" int sd AU = op[0] & 0x03; -#line 909 "rx-decode.opc" +#line 947 "rx-decode.opc" int rdst AU = (op[1] >> 4) & 0x0f; -#line 909 "rx-decode.opc" +#line 947 "rx-decode.opc" int bit AU = op[1] & 0x07; if (trace) { @@ -6864,7 +7034,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" bit = 0x%x\n", bit); } SYNTAX("bclr #%1, %0%S0"); -#line 909 "rx-decode.opc" +#line 947 "rx-decode.opc" ID(bclr); BWL(BSIZE); SC(bit); DD(sd, rdst, BSIZE); F_____; } @@ -6876,10 +7046,10 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x08) { case 0x00: - goto op_semantics_42; + goto op_semantics_43; break; case 0x08: - goto op_semantics_43; + goto op_semantics_44; break; } break; @@ -6888,10 +7058,10 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x08) { case 0x00: - goto op_semantics_42; + goto op_semantics_43; break; case 0x08: - goto op_semantics_43; + goto op_semantics_44; break; } break; @@ -6900,10 +7070,10 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x08) { case 0x00: - goto op_semantics_42; + goto op_semantics_43; break; case 0x08: - goto op_semantics_43; + goto op_semantics_44; break; } break; @@ -6913,14 +7083,14 @@ rx_decode_opcode (unsigned long pc AU, { case 0x00: case 0x04: - op_semantics_44: + op_semantics_45: { /** 1111 01sd rdst 0bit btst #%2, %1%S1 */ -#line 921 "rx-decode.opc" +#line 959 "rx-decode.opc" int sd AU = op[0] & 0x03; -#line 921 "rx-decode.opc" +#line 959 "rx-decode.opc" int rdst AU = (op[1] >> 4) & 0x0f; -#line 921 "rx-decode.opc" +#line 959 "rx-decode.opc" int bit AU = op[1] & 0x07; if (trace) { @@ -6932,13 +7102,13 @@ rx_decode_opcode (unsigned long pc AU, printf (" bit = 0x%x\n", bit); } SYNTAX("btst #%2, %1%S1"); -#line 921 "rx-decode.opc" +#line 959 "rx-decode.opc" ID(btst); BWL(BSIZE); S2C(bit); SD(sd, rdst, BSIZE); F___ZC; } break; case 0x08: - op_semantics_45: + op_semantics_46: { /** 1111 01ss rsrc 10sz push%s %1 */ #line 377 "rx-decode.opc" @@ -6974,10 +7144,10 @@ rx_decode_opcode (unsigned long pc AU, { case 0x00: case 0x04: - goto op_semantics_44; + goto op_semantics_45; break; case 0x08: - goto op_semantics_45; + goto op_semantics_46; break; default: UNSUPPORTED(); break; } @@ -6988,10 +7158,10 @@ rx_decode_opcode (unsigned long pc AU, { case 0x00: case 0x04: - goto op_semantics_44; + goto op_semantics_45; break; case 0x08: - goto op_semantics_45; + goto op_semantics_46; break; default: UNSUPPORTED(); break; } @@ -7002,10 +7172,10 @@ rx_decode_opcode (unsigned long pc AU, { case 0x00: case 0x04: - goto op_semantics_44; + goto op_semantics_45; break; case 0x08: - goto op_semantics_45; + goto op_semantics_46; break; default: UNSUPPORTED(); break; } @@ -7015,7 +7185,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - op_semantics_46: + op_semantics_47: { /** 1111 10sd rdst im sz mov%s #%1, %0 */ #line 288 "rx-decode.opc" @@ -7062,7 +7232,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_46; + goto op_semantics_47; break; } break; @@ -7071,7 +7241,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_46; + goto op_semantics_47; break; } break; @@ -7080,7 +7250,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[1] & 0x00) { case 0x00: - goto op_semantics_46; + goto op_semantics_47; break; } break; @@ -7208,14 +7378,14 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - op_semantics_47: + op_semantics_48: { /** 1111 1100 0001 00ss rsrc rdst max %1%S1, %0 */ -#line 573 "rx-decode.opc" +#line 583 "rx-decode.opc" int ss AU = op[1] & 0x03; -#line 573 "rx-decode.opc" +#line 583 "rx-decode.opc" int rsrc AU = (op[2] >> 4) & 0x0f; -#line 573 "rx-decode.opc" +#line 583 "rx-decode.opc" int rdst AU = op[2] & 0x0f; if (trace) { @@ -7227,11 +7397,11 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("max %1%S1, %0"); -#line 573 "rx-decode.opc" +#line 583 "rx-decode.opc" if (ss == 3 && rsrc == 0 && rdst == 0) { ID(nop3); - SYNTAX ("nop\t; max\tr0, r0"); + SYNTAX("nop\t; max\tr0, r0"); } else { @@ -7247,7 +7417,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_47; + goto op_semantics_48; break; } break; @@ -7256,7 +7426,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_47; + goto op_semantics_48; break; } break; @@ -7265,7 +7435,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_47; + goto op_semantics_48; break; } break; @@ -7274,14 +7444,14 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - op_semantics_48: + op_semantics_49: { /** 1111 1100 0001 01ss rsrc rdst min %1%S1, %0 */ -#line 593 "rx-decode.opc" +#line 603 "rx-decode.opc" int ss AU = op[1] & 0x03; -#line 593 "rx-decode.opc" +#line 603 "rx-decode.opc" int rsrc AU = (op[2] >> 4) & 0x0f; -#line 593 "rx-decode.opc" +#line 603 "rx-decode.opc" int rdst AU = op[2] & 0x0f; if (trace) { @@ -7293,7 +7463,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("min %1%S1, %0"); -#line 593 "rx-decode.opc" +#line 603 "rx-decode.opc" ID(min); SP(ss, rsrc); DR(rdst); } @@ -7305,7 +7475,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_48; + goto op_semantics_49; break; } break; @@ -7314,7 +7484,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_48; + goto op_semantics_49; break; } break; @@ -7323,7 +7493,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_48; + goto op_semantics_49; break; } break; @@ -7332,14 +7502,14 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - op_semantics_49: + op_semantics_50: { /** 1111 1100 0001 10ss rsrc rdst emul %1%S1, %0 */ -#line 623 "rx-decode.opc" +#line 661 "rx-decode.opc" int ss AU = op[1] & 0x03; -#line 623 "rx-decode.opc" +#line 661 "rx-decode.opc" int rsrc AU = (op[2] >> 4) & 0x0f; -#line 623 "rx-decode.opc" +#line 661 "rx-decode.opc" int rdst AU = op[2] & 0x0f; if (trace) { @@ -7351,7 +7521,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("emul %1%S1, %0"); -#line 623 "rx-decode.opc" +#line 661 "rx-decode.opc" ID(emul); SP(ss, rsrc); DR(rdst); } @@ -7363,7 +7533,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_49; + goto op_semantics_50; break; } break; @@ -7372,7 +7542,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_49; + goto op_semantics_50; break; } break; @@ -7381,7 +7551,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_49; + goto op_semantics_50; break; } break; @@ -7390,14 +7560,14 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - op_semantics_50: + op_semantics_51: { /** 1111 1100 0001 11ss rsrc rdst emulu %1%S1, %0 */ -#line 635 "rx-decode.opc" +#line 673 "rx-decode.opc" int ss AU = op[1] & 0x03; -#line 635 "rx-decode.opc" +#line 673 "rx-decode.opc" int rsrc AU = (op[2] >> 4) & 0x0f; -#line 635 "rx-decode.opc" +#line 673 "rx-decode.opc" int rdst AU = op[2] & 0x0f; if (trace) { @@ -7409,7 +7579,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("emulu %1%S1, %0"); -#line 635 "rx-decode.opc" +#line 673 "rx-decode.opc" ID(emulu); SP(ss, rsrc); DR(rdst); } @@ -7421,7 +7591,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_50; + goto op_semantics_51; break; } break; @@ -7430,7 +7600,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_50; + goto op_semantics_51; break; } break; @@ -7439,7 +7609,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_50; + goto op_semantics_51; break; } break; @@ -7448,14 +7618,14 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - op_semantics_51: + op_semantics_52: { /** 1111 1100 0010 00ss rsrc rdst div %1%S1, %0 */ -#line 647 "rx-decode.opc" +#line 685 "rx-decode.opc" int ss AU = op[1] & 0x03; -#line 647 "rx-decode.opc" +#line 685 "rx-decode.opc" int rsrc AU = (op[2] >> 4) & 0x0f; -#line 647 "rx-decode.opc" +#line 685 "rx-decode.opc" int rdst AU = op[2] & 0x0f; if (trace) { @@ -7467,7 +7637,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("div %1%S1, %0"); -#line 647 "rx-decode.opc" +#line 685 "rx-decode.opc" ID(div); SP(ss, rsrc); DR(rdst); F_O___; } @@ -7479,7 +7649,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_51; + goto op_semantics_52; break; } break; @@ -7488,7 +7658,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_51; + goto op_semantics_52; break; } break; @@ -7497,7 +7667,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_51; + goto op_semantics_52; break; } break; @@ -7506,14 +7676,14 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - op_semantics_52: + op_semantics_53: { /** 1111 1100 0010 01ss rsrc rdst divu %1%S1, %0 */ -#line 659 "rx-decode.opc" +#line 697 "rx-decode.opc" int ss AU = op[1] & 0x03; -#line 659 "rx-decode.opc" +#line 697 "rx-decode.opc" int rsrc AU = (op[2] >> 4) & 0x0f; -#line 659 "rx-decode.opc" +#line 697 "rx-decode.opc" int rdst AU = op[2] & 0x0f; if (trace) { @@ -7525,7 +7695,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("divu %1%S1, %0"); -#line 659 "rx-decode.opc" +#line 697 "rx-decode.opc" ID(divu); SP(ss, rsrc); DR(rdst); F_O___; } @@ -7537,7 +7707,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_52; + goto op_semantics_53; break; } break; @@ -7546,7 +7716,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_52; + goto op_semantics_53; break; } break; @@ -7555,7 +7725,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_52; + goto op_semantics_53; break; } break; @@ -7564,7 +7734,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - op_semantics_53: + op_semantics_54: { /** 1111 1100 0011 00ss rsrc rdst tst %1%S1, %2 */ #line 470 "rx-decode.opc" @@ -7595,7 +7765,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_53; + goto op_semantics_54; break; } break; @@ -7604,7 +7774,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_53; + goto op_semantics_54; break; } break; @@ -7613,7 +7783,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_53; + goto op_semantics_54; break; } break; @@ -7622,7 +7792,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - op_semantics_54: + op_semantics_55: { /** 1111 1100 0011 01ss rsrc rdst xor %1%S1, %0 */ #line 449 "rx-decode.opc" @@ -7653,7 +7823,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_54; + goto op_semantics_55; break; } break; @@ -7662,7 +7832,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_54; + goto op_semantics_55; break; } break; @@ -7671,7 +7841,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_54; + goto op_semantics_55; break; } break; @@ -7710,7 +7880,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - op_semantics_55: + op_semantics_56: { /** 1111 1100 0100 00ss rsrc rdst xchg %1%S1, %0 */ #line 383 "rx-decode.opc" @@ -7741,7 +7911,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_55; + goto op_semantics_56; break; } break; @@ -7750,7 +7920,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_55; + goto op_semantics_56; break; } break; @@ -7759,7 +7929,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_55; + goto op_semantics_56; break; } break; @@ -7768,14 +7938,14 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - op_semantics_56: + op_semantics_57: { /** 1111 1100 0100 01sd rsrc rdst itof %1%S1, %0 */ -#line 888 "rx-decode.opc" +#line 926 "rx-decode.opc" int sd AU = op[1] & 0x03; -#line 888 "rx-decode.opc" +#line 926 "rx-decode.opc" int rsrc AU = (op[2] >> 4) & 0x0f; -#line 888 "rx-decode.opc" +#line 926 "rx-decode.opc" int rdst AU = op[2] & 0x0f; if (trace) { @@ -7787,7 +7957,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("itof %1%S1, %0"); -#line 888 "rx-decode.opc" +#line 926 "rx-decode.opc" ID(itof); DR (rdst); SP(sd, rsrc); F__SZ_; } @@ -7799,7 +7969,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_56; + goto op_semantics_57; break; } break; @@ -7808,7 +7978,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_56; + goto op_semantics_57; break; } break; @@ -7817,104 +7987,96 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_56; + goto op_semantics_57; break; } break; - case 0x60: + case 0x4b: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - op_semantics_57: { - /** 1111 1100 0110 00sd rdst rsrc bset %1, %0%S0 */ -#line 900 "rx-decode.opc" - int sd AU = op[1] & 0x03; -#line 900 "rx-decode.opc" - int rdst AU = (op[2] >> 4) & 0x0f; -#line 900 "rx-decode.opc" - int rsrc AU = op[2] & 0x0f; + /** 1111 1100 0100 1011 rsrc rdst stz %1, %0 */ +#line 1052 "rx-decode.opc" + int rsrc AU = (op[2] >> 4) & 0x0f; +#line 1052 "rx-decode.opc" + int rdst AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1100 0110 00sd rdst rsrc bset %1, %0%S0 */", + "/** 1111 1100 0100 1011 rsrc rdst stz %1, %0 */", op[0], op[1], op[2]); - printf (" sd = 0x%x,", sd); - printf (" rdst = 0x%x,", rdst); - printf (" rsrc = 0x%x\n", rsrc); + printf (" rsrc = 0x%x,", rsrc); + printf (" rdst = 0x%x\n", rdst); } - SYNTAX("bset %1, %0%S0"); -#line 900 "rx-decode.opc" - ID(bset); BWL(BSIZE); SR(rsrc); DD(sd, rdst, BSIZE); F_____; - if (sd == 3) /* bset reg,reg */ - BWL(LSIZE); + SYNTAX("stz %1, %0"); +#line 1052 "rx-decode.opc" + ID(stcc); SR(rsrc); DR(rdst); S2cc(RXC_z); } break; } break; - case 0x61: - GETBYTE (); - switch (op[2] & 0x00) - { - case 0x00: - goto op_semantics_57; - break; - } - break; - case 0x62: - GETBYTE (); - switch (op[2] & 0x00) - { - case 0x00: - goto op_semantics_57; - break; - } - break; - case 0x63: + case 0x4f: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_57; + { + /** 1111 1100 0100 1111 rsrc rdst stnz %1, %0 */ +#line 1055 "rx-decode.opc" + int rsrc AU = (op[2] >> 4) & 0x0f; +#line 1055 "rx-decode.opc" + int rdst AU = op[2] & 0x0f; + if (trace) + { + printf ("\033[33m%s\033[0m %02x %02x %02x\n", + "/** 1111 1100 0100 1111 rsrc rdst stnz %1, %0 */", + op[0], op[1], op[2]); + printf (" rsrc = 0x%x,", rsrc); + printf (" rdst = 0x%x\n", rdst); + } + SYNTAX("stnz %1, %0"); +#line 1055 "rx-decode.opc" + ID(stcc); SR(rsrc); DR(rdst); S2cc(RXC_z); + + } break; } break; - case 0x64: + case 0x54: GETBYTE (); switch (op[2] & 0x00) { case 0x00: op_semantics_58: { - /** 1111 1100 0110 01sd rdst rsrc bclr %1, %0%S0 */ -#line 912 "rx-decode.opc" + /** 1111 1100 0101 01sd rsrc rdst utof %1%S1, %0 */ +#line 1112 "rx-decode.opc" int sd AU = op[1] & 0x03; -#line 912 "rx-decode.opc" - int rdst AU = (op[2] >> 4) & 0x0f; -#line 912 "rx-decode.opc" - int rsrc AU = op[2] & 0x0f; +#line 1112 "rx-decode.opc" + int rsrc AU = (op[2] >> 4) & 0x0f; +#line 1112 "rx-decode.opc" + int rdst AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1100 0110 01sd rdst rsrc bclr %1, %0%S0 */", + "/** 1111 1100 0101 01sd rsrc rdst utof %1%S1, %0 */", op[0], op[1], op[2]); printf (" sd = 0x%x,", sd); - printf (" rdst = 0x%x,", rdst); - printf (" rsrc = 0x%x\n", rsrc); + printf (" rsrc = 0x%x,", rsrc); + printf (" rdst = 0x%x\n", rdst); } - SYNTAX("bclr %1, %0%S0"); -#line 912 "rx-decode.opc" - ID(bclr); BWL(BSIZE); SR(rsrc); DD(sd, rdst, BSIZE); F_____; - if (sd == 3) /* bset reg,reg */ - BWL(LSIZE); + SYNTAX("utof %1%S1, %0"); +#line 1112 "rx-decode.opc" + ID(utof); DR (rdst); SP(sd, rsrc); F__SZ_; } break; } break; - case 0x65: + case 0x55: GETBYTE (); switch (op[2] & 0x00) { @@ -7923,7 +8085,7 @@ rx_decode_opcode (unsigned long pc AU, break; } break; - case 0x66: + case 0x56: GETBYTE (); switch (op[2] & 0x00) { @@ -7932,7 +8094,7 @@ rx_decode_opcode (unsigned long pc AU, break; } break; - case 0x67: + case 0x57: GETBYTE (); switch (op[2] & 0x00) { @@ -7941,32 +8103,32 @@ rx_decode_opcode (unsigned long pc AU, break; } break; - case 0x68: + case 0x60: GETBYTE (); switch (op[2] & 0x00) { case 0x00: op_semantics_59: { - /** 1111 1100 0110 10sd rdst rsrc btst %2, %1%S1 */ -#line 924 "rx-decode.opc" + /** 1111 1100 0110 00sd rdst rsrc bset %1, %0%S0 */ +#line 938 "rx-decode.opc" int sd AU = op[1] & 0x03; -#line 924 "rx-decode.opc" +#line 938 "rx-decode.opc" int rdst AU = (op[2] >> 4) & 0x0f; -#line 924 "rx-decode.opc" +#line 938 "rx-decode.opc" int rsrc AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1100 0110 10sd rdst rsrc btst %2, %1%S1 */", + "/** 1111 1100 0110 00sd rdst rsrc bset %1, %0%S0 */", op[0], op[1], op[2]); printf (" sd = 0x%x,", sd); printf (" rdst = 0x%x,", rdst); printf (" rsrc = 0x%x\n", rsrc); } - SYNTAX("btst %2, %1%S1"); -#line 924 "rx-decode.opc" - ID(btst); BWL(BSIZE); S2R(rsrc); SD(sd, rdst, BSIZE); F___ZC; + SYNTAX("bset %1, %0%S0"); +#line 938 "rx-decode.opc" + ID(bset); BWL(BSIZE); SR(rsrc); DD(sd, rdst, BSIZE); F_____; if (sd == 3) /* bset reg,reg */ BWL(LSIZE); @@ -7974,7 +8136,7 @@ rx_decode_opcode (unsigned long pc AU, break; } break; - case 0x69: + case 0x61: GETBYTE (); switch (op[2] & 0x00) { @@ -7983,7 +8145,7 @@ rx_decode_opcode (unsigned long pc AU, break; } break; - case 0x6a: + case 0x62: GETBYTE (); switch (op[2] & 0x00) { @@ -7992,7 +8154,7 @@ rx_decode_opcode (unsigned long pc AU, break; } break; - case 0x6b: + case 0x63: GETBYTE (); switch (op[2] & 0x00) { @@ -8001,19 +8163,139 @@ rx_decode_opcode (unsigned long pc AU, break; } break; - case 0x6c: + case 0x64: GETBYTE (); switch (op[2] & 0x00) { case 0x00: op_semantics_60: + { + /** 1111 1100 0110 01sd rdst rsrc bclr %1, %0%S0 */ +#line 950 "rx-decode.opc" + int sd AU = op[1] & 0x03; +#line 950 "rx-decode.opc" + int rdst AU = (op[2] >> 4) & 0x0f; +#line 950 "rx-decode.opc" + int rsrc AU = op[2] & 0x0f; + if (trace) + { + printf ("\033[33m%s\033[0m %02x %02x %02x\n", + "/** 1111 1100 0110 01sd rdst rsrc bclr %1, %0%S0 */", + op[0], op[1], op[2]); + printf (" sd = 0x%x,", sd); + printf (" rdst = 0x%x,", rdst); + printf (" rsrc = 0x%x\n", rsrc); + } + SYNTAX("bclr %1, %0%S0"); +#line 950 "rx-decode.opc" + ID(bclr); BWL(BSIZE); SR(rsrc); DD(sd, rdst, BSIZE); F_____; + if (sd == 3) /* bset reg,reg */ + BWL(LSIZE); + + } + break; + } + break; + case 0x65: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_60; + break; + } + break; + case 0x66: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_60; + break; + } + break; + case 0x67: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_60; + break; + } + break; + case 0x68: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + op_semantics_61: + { + /** 1111 1100 0110 10sd rdst rsrc btst %2, %1%S1 */ +#line 962 "rx-decode.opc" + int sd AU = op[1] & 0x03; +#line 962 "rx-decode.opc" + int rdst AU = (op[2] >> 4) & 0x0f; +#line 962 "rx-decode.opc" + int rsrc AU = op[2] & 0x0f; + if (trace) + { + printf ("\033[33m%s\033[0m %02x %02x %02x\n", + "/** 1111 1100 0110 10sd rdst rsrc btst %2, %1%S1 */", + op[0], op[1], op[2]); + printf (" sd = 0x%x,", sd); + printf (" rdst = 0x%x,", rdst); + printf (" rsrc = 0x%x\n", rsrc); + } + SYNTAX("btst %2, %1%S1"); +#line 962 "rx-decode.opc" + ID(btst); BWL(BSIZE); S2R(rsrc); SD(sd, rdst, BSIZE); F___ZC; + if (sd == 3) /* bset reg,reg */ + BWL(LSIZE); + + } + break; + } + break; + case 0x69: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_61; + break; + } + break; + case 0x6a: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_61; + break; + } + break; + case 0x6b: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_61; + break; + } + break; + case 0x6c: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + op_semantics_62: { /** 1111 1100 0110 11sd rdst rsrc bnot %1, %0%S0 */ -#line 936 "rx-decode.opc" +#line 974 "rx-decode.opc" int sd AU = op[1] & 0x03; -#line 936 "rx-decode.opc" +#line 974 "rx-decode.opc" int rdst AU = (op[2] >> 4) & 0x0f; -#line 936 "rx-decode.opc" +#line 974 "rx-decode.opc" int rsrc AU = op[2] & 0x0f; if (trace) { @@ -8025,7 +8307,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rsrc = 0x%x\n", rsrc); } SYNTAX("bnot %1, %0%S0"); -#line 936 "rx-decode.opc" +#line 974 "rx-decode.opc" ID(bnot); BWL(BSIZE); SR(rsrc); DD(sd, rdst, BSIZE); if (sd == 3) /* bset reg,reg */ BWL(LSIZE); @@ -8039,7 +8321,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_60; + goto op_semantics_62; break; } break; @@ -8048,7 +8330,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_60; + goto op_semantics_62; break; } break; @@ -8057,7 +8339,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_60; + goto op_semantics_62; break; } break; @@ -8066,14 +8348,14 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - op_semantics_61: + op_semantics_63: { /** 1111 1100 1000 00sd rsrc rdst fsub %1%S1, %0 */ -#line 867 "rx-decode.opc" +#line 905 "rx-decode.opc" int sd AU = op[1] & 0x03; -#line 867 "rx-decode.opc" +#line 905 "rx-decode.opc" int rsrc AU = (op[2] >> 4) & 0x0f; -#line 867 "rx-decode.opc" +#line 905 "rx-decode.opc" int rdst AU = op[2] & 0x0f; if (trace) { @@ -8085,7 +8367,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("fsub %1%S1, %0"); -#line 867 "rx-decode.opc" +#line 905 "rx-decode.opc" ID(fsub); DR(rdst); SD(sd, rsrc, LSIZE); F__SZ_; } @@ -8097,7 +8379,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_61; + goto op_semantics_63; break; } break; @@ -8106,7 +8388,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_61; + goto op_semantics_63; break; } break; @@ -8115,7 +8397,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_61; + goto op_semantics_63; break; } break; @@ -8124,14 +8406,14 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - op_semantics_62: + op_semantics_64: { /** 1111 1100 1000 01sd rsrc rdst fcmp %1%S1, %0 */ -#line 861 "rx-decode.opc" +#line 899 "rx-decode.opc" int sd AU = op[1] & 0x03; -#line 861 "rx-decode.opc" +#line 899 "rx-decode.opc" int rsrc AU = (op[2] >> 4) & 0x0f; -#line 861 "rx-decode.opc" +#line 899 "rx-decode.opc" int rdst AU = op[2] & 0x0f; if (trace) { @@ -8143,7 +8425,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("fcmp %1%S1, %0"); -#line 861 "rx-decode.opc" +#line 899 "rx-decode.opc" ID(fcmp); DR(rdst); SD(sd, rsrc, LSIZE); F_OSZ_; } @@ -8155,7 +8437,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_62; + goto op_semantics_64; break; } break; @@ -8164,7 +8446,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_62; + goto op_semantics_64; break; } break; @@ -8173,7 +8455,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_62; + goto op_semantics_64; break; } break; @@ -8182,14 +8464,14 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - op_semantics_63: + op_semantics_65: { /** 1111 1100 1000 10sd rsrc rdst fadd %1%S1, %0 */ -#line 855 "rx-decode.opc" +#line 893 "rx-decode.opc" int sd AU = op[1] & 0x03; -#line 855 "rx-decode.opc" +#line 893 "rx-decode.opc" int rsrc AU = (op[2] >> 4) & 0x0f; -#line 855 "rx-decode.opc" +#line 893 "rx-decode.opc" int rdst AU = op[2] & 0x0f; if (trace) { @@ -8201,7 +8483,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("fadd %1%S1, %0"); -#line 855 "rx-decode.opc" +#line 893 "rx-decode.opc" ID(fadd); DR(rdst); SD(sd, rsrc, LSIZE); F__SZ_; } @@ -8213,7 +8495,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_63; + goto op_semantics_65; break; } break; @@ -8222,7 +8504,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_63; + goto op_semantics_65; break; } break; @@ -8231,7 +8513,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_63; + goto op_semantics_65; break; } break; @@ -8240,14 +8522,14 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - op_semantics_64: + op_semantics_66: { /** 1111 1100 1000 11sd rsrc rdst fmul %1%S1, %0 */ -#line 876 "rx-decode.opc" +#line 914 "rx-decode.opc" int sd AU = op[1] & 0x03; -#line 876 "rx-decode.opc" +#line 914 "rx-decode.opc" int rsrc AU = (op[2] >> 4) & 0x0f; -#line 876 "rx-decode.opc" +#line 914 "rx-decode.opc" int rdst AU = op[2] & 0x0f; if (trace) { @@ -8259,7 +8541,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("fmul %1%S1, %0"); -#line 876 "rx-decode.opc" +#line 914 "rx-decode.opc" ID(fmul); DR(rdst); SD(sd, rsrc, LSIZE); F__SZ_; } @@ -8271,7 +8553,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_64; + goto op_semantics_66; break; } break; @@ -8280,7 +8562,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_64; + goto op_semantics_66; break; } break; @@ -8289,7 +8571,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_64; + goto op_semantics_66; break; } break; @@ -8298,14 +8580,14 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - op_semantics_65: + op_semantics_67: { /** 1111 1100 1001 00sd rsrc rdst fdiv %1%S1, %0 */ -#line 882 "rx-decode.opc" +#line 920 "rx-decode.opc" int sd AU = op[1] & 0x03; -#line 882 "rx-decode.opc" +#line 920 "rx-decode.opc" int rsrc AU = (op[2] >> 4) & 0x0f; -#line 882 "rx-decode.opc" +#line 920 "rx-decode.opc" int rdst AU = op[2] & 0x0f; if (trace) { @@ -8317,7 +8599,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("fdiv %1%S1, %0"); -#line 882 "rx-decode.opc" +#line 920 "rx-decode.opc" ID(fdiv); DR(rdst); SD(sd, rsrc, LSIZE); F__SZ_; } @@ -8329,7 +8611,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_65; + goto op_semantics_67; break; } break; @@ -8338,7 +8620,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_65; + goto op_semantics_67; break; } break; @@ -8347,7 +8629,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_65; + goto op_semantics_67; break; } break; @@ -8356,14 +8638,14 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - op_semantics_66: + op_semantics_68: { /** 1111 1100 1001 01sd rsrc rdst ftoi %1%S1, %0 */ -#line 870 "rx-decode.opc" +#line 908 "rx-decode.opc" int sd AU = op[1] & 0x03; -#line 870 "rx-decode.opc" +#line 908 "rx-decode.opc" int rsrc AU = (op[2] >> 4) & 0x0f; -#line 870 "rx-decode.opc" +#line 908 "rx-decode.opc" int rdst AU = op[2] & 0x0f; if (trace) { @@ -8375,7 +8657,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("ftoi %1%S1, %0"); -#line 870 "rx-decode.opc" +#line 908 "rx-decode.opc" ID(ftoi); DR(rdst); SD(sd, rsrc, LSIZE); F__SZ_; } @@ -8387,7 +8669,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_66; + goto op_semantics_68; break; } break; @@ -8396,7 +8678,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_66; + goto op_semantics_68; break; } break; @@ -8405,7 +8687,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_66; + goto op_semantics_68; break; } break; @@ -8414,14 +8696,14 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - op_semantics_67: + op_semantics_69: { /** 1111 1100 1001 10sd rsrc rdst round %1%S1, %0 */ -#line 885 "rx-decode.opc" +#line 923 "rx-decode.opc" int sd AU = op[1] & 0x03; -#line 885 "rx-decode.opc" +#line 923 "rx-decode.opc" int rsrc AU = (op[2] >> 4) & 0x0f; -#line 885 "rx-decode.opc" +#line 923 "rx-decode.opc" int rdst AU = op[2] & 0x0f; if (trace) { @@ -8433,7 +8715,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("round %1%S1, %0"); -#line 885 "rx-decode.opc" +#line 923 "rx-decode.opc" ID(round); DR(rdst); SD(sd, rsrc, LSIZE); F__SZ_; } @@ -8445,7 +8727,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_67; + goto op_semantics_69; break; } break; @@ -8454,7 +8736,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_67; + goto op_semantics_69; break; } break; @@ -8463,131 +8745,250 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_67; + goto op_semantics_69; break; } break; - case 0xd0: + case 0xa0: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - op_semantics_68: + op_semantics_70: { - /** 1111 1100 1101 sz sd rdst cond sc%1%s %0 */ -#line 1002 "rx-decode.opc" - int sz AU = (op[1] >> 2) & 0x03; -#line 1002 "rx-decode.opc" + /** 1111 1100 1010 00sd rsrc rdst fsqrt %1%S1, %0 */ +#line 1106 "rx-decode.opc" int sd AU = op[1] & 0x03; -#line 1002 "rx-decode.opc" - int rdst AU = (op[2] >> 4) & 0x0f; -#line 1002 "rx-decode.opc" - int cond AU = op[2] & 0x0f; +#line 1106 "rx-decode.opc" + int rsrc AU = (op[2] >> 4) & 0x0f; +#line 1106 "rx-decode.opc" + int rdst AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1100 1101 sz sd rdst cond sc%1%s %0 */", + "/** 1111 1100 1010 00sd rsrc rdst fsqrt %1%S1, %0 */", op[0], op[1], op[2]); - printf (" sz = 0x%x,", sz); printf (" sd = 0x%x,", sd); - printf (" rdst = 0x%x,", rdst); - printf (" cond = 0x%x\n", cond); + printf (" rsrc = 0x%x,", rsrc); + printf (" rdst = 0x%x\n", rdst); } - SYNTAX("sc%1%s %0"); -#line 1002 "rx-decode.opc" - ID(sccnd); BWL(sz); DD (sd, rdst, sz); Scc(cond); + SYNTAX("fsqrt %1%S1, %0"); +#line 1106 "rx-decode.opc" + ID(fsqrt); DR(rdst); SD(sd, rsrc, LSIZE); F__SZ_; } break; } break; - case 0xd1: - GETBYTE (); - switch (op[2] & 0x00) - { - case 0x00: - goto op_semantics_68; - break; - } - break; - case 0xd2: + case 0xa1: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_68; + goto op_semantics_70; break; } break; - case 0xd3: + case 0xa2: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_68; + goto op_semantics_70; break; } break; - case 0xd4: + case 0xa3: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_68; + goto op_semantics_70; break; } break; - case 0xd5: + case 0xa4: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_68; + op_semantics_71: + { + /** 1111 1100 1010 01sd rsrc rdst ftou %1%S1, %0 */ +#line 1109 "rx-decode.opc" + int sd AU = op[1] & 0x03; +#line 1109 "rx-decode.opc" + int rsrc AU = (op[2] >> 4) & 0x0f; +#line 1109 "rx-decode.opc" + int rdst AU = op[2] & 0x0f; + if (trace) + { + printf ("\033[33m%s\033[0m %02x %02x %02x\n", + "/** 1111 1100 1010 01sd rsrc rdst ftou %1%S1, %0 */", + op[0], op[1], op[2]); + printf (" sd = 0x%x,", sd); + printf (" rsrc = 0x%x,", rsrc); + printf (" rdst = 0x%x\n", rdst); + } + SYNTAX("ftou %1%S1, %0"); +#line 1109 "rx-decode.opc" + ID(ftou); DR(rdst); SD(sd, rsrc, LSIZE); F__SZ_; + + } break; } break; - case 0xd6: + case 0xa5: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_68; + goto op_semantics_71; break; } break; - case 0xd7: + case 0xa6: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_68; + goto op_semantics_71; break; } break; - case 0xd8: + case 0xa7: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_68; + goto op_semantics_71; break; } break; - case 0xd9: + case 0xd0: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_68; - break; - } - break; - case 0xda: - GETBYTE (); + op_semantics_72: + { + /** 1111 1100 1101 sz sd rdst cond sc%1%s %0 */ +#line 1040 "rx-decode.opc" + int sz AU = (op[1] >> 2) & 0x03; +#line 1040 "rx-decode.opc" + int sd AU = op[1] & 0x03; +#line 1040 "rx-decode.opc" + int rdst AU = (op[2] >> 4) & 0x0f; +#line 1040 "rx-decode.opc" + int cond AU = op[2] & 0x0f; + if (trace) + { + printf ("\033[33m%s\033[0m %02x %02x %02x\n", + "/** 1111 1100 1101 sz sd rdst cond sc%1%s %0 */", + op[0], op[1], op[2]); + printf (" sz = 0x%x,", sz); + printf (" sd = 0x%x,", sd); + printf (" rdst = 0x%x,", rdst); + printf (" cond = 0x%x\n", cond); + } + SYNTAX("sc%1%s %0"); +#line 1040 "rx-decode.opc" + ID(sccnd); BWL(sz); DD (sd, rdst, sz); Scc(cond); + + /*----------------------------------------------------------------------*/ + /* RXv2 enhanced */ + + } + break; + } + break; + case 0xd1: + GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_68; + goto op_semantics_72; + break; + } + break; + case 0xd2: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_72; + break; + } + break; + case 0xd3: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_72; + break; + } + break; + case 0xd4: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_72; + break; + } + break; + case 0xd5: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_72; + break; + } + break; + case 0xd6: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_72; + break; + } + break; + case 0xd7: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_72; + break; + } + break; + case 0xd8: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_72; + break; + } + break; + case 0xd9: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_72; + break; + } + break; + case 0xda: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_72; break; } break; @@ -8596,7 +8997,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_68; + goto op_semantics_72; break; } break; @@ -8619,16 +9020,16 @@ rx_decode_opcode (unsigned long pc AU, case 0x0c: case 0x0d: case 0x0e: - op_semantics_69: + op_semantics_73: { /** 1111 1100 111bit sd rdst cond bm%2 #%1, %0%S0 */ -#line 945 "rx-decode.opc" +#line 983 "rx-decode.opc" int bit AU = (op[1] >> 2) & 0x07; -#line 945 "rx-decode.opc" +#line 983 "rx-decode.opc" int sd AU = op[1] & 0x03; -#line 945 "rx-decode.opc" +#line 983 "rx-decode.opc" int rdst AU = (op[2] >> 4) & 0x0f; -#line 945 "rx-decode.opc" +#line 983 "rx-decode.opc" int cond AU = op[2] & 0x0f; if (trace) { @@ -8641,20 +9042,20 @@ rx_decode_opcode (unsigned long pc AU, printf (" cond = 0x%x\n", cond); } SYNTAX("bm%2 #%1, %0%S0"); -#line 945 "rx-decode.opc" +#line 983 "rx-decode.opc" ID(bmcc); BWL(BSIZE); S2cc(cond); SC(bit); DD(sd, rdst, BSIZE); } break; case 0x0f: - op_semantics_70: + op_semantics_74: { /** 1111 1100 111bit sd rdst 1111 bnot #%1, %0%S0 */ -#line 933 "rx-decode.opc" +#line 971 "rx-decode.opc" int bit AU = (op[1] >> 2) & 0x07; -#line 933 "rx-decode.opc" +#line 971 "rx-decode.opc" int sd AU = op[1] & 0x03; -#line 933 "rx-decode.opc" +#line 971 "rx-decode.opc" int rdst AU = (op[2] >> 4) & 0x0f; if (trace) { @@ -8666,7 +9067,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("bnot #%1, %0%S0"); -#line 933 "rx-decode.opc" +#line 971 "rx-decode.opc" ID(bnot); BWL(BSIZE); SC(bit); DD(sd, rdst, BSIZE); } @@ -8692,10 +9093,10 @@ rx_decode_opcode (unsigned long pc AU, case 0x0c: case 0x0d: case 0x0e: - goto op_semantics_69; + goto op_semantics_73; break; case 0x0f: - goto op_semantics_70; + goto op_semantics_74; break; } break; @@ -8718,10 +9119,10 @@ rx_decode_opcode (unsigned long pc AU, case 0x0c: case 0x0d: case 0x0e: - goto op_semantics_69; + goto op_semantics_73; break; case 0x0f: - goto op_semantics_70; + goto op_semantics_74; break; } break; @@ -8744,10 +9145,10 @@ rx_decode_opcode (unsigned long pc AU, case 0x0c: case 0x0d: case 0x0e: - goto op_semantics_69; + goto op_semantics_73; break; case 0x0f: - goto op_semantics_70; + goto op_semantics_74; break; } break; @@ -8770,10 +9171,10 @@ rx_decode_opcode (unsigned long pc AU, case 0x0c: case 0x0d: case 0x0e: - goto op_semantics_69; + goto op_semantics_73; break; case 0x0f: - goto op_semantics_70; + goto op_semantics_74; break; } break; @@ -8796,10 +9197,10 @@ rx_decode_opcode (unsigned long pc AU, case 0x0c: case 0x0d: case 0x0e: - goto op_semantics_69; + goto op_semantics_73; break; case 0x0f: - goto op_semantics_70; + goto op_semantics_74; break; } break; @@ -8822,10 +9223,10 @@ rx_decode_opcode (unsigned long pc AU, case 0x0c: case 0x0d: case 0x0e: - goto op_semantics_69; + goto op_semantics_73; break; case 0x0f: - goto op_semantics_70; + goto op_semantics_74; break; } break; @@ -8848,10 +9249,10 @@ rx_decode_opcode (unsigned long pc AU, case 0x0c: case 0x0d: case 0x0e: - goto op_semantics_69; + goto op_semantics_73; break; case 0x0f: - goto op_semantics_70; + goto op_semantics_74; break; } break; @@ -8874,10 +9275,10 @@ rx_decode_opcode (unsigned long pc AU, case 0x0c: case 0x0d: case 0x0e: - goto op_semantics_69; + goto op_semantics_73; break; case 0x0f: - goto op_semantics_70; + goto op_semantics_74; break; } break; @@ -8900,10 +9301,10 @@ rx_decode_opcode (unsigned long pc AU, case 0x0c: case 0x0d: case 0x0e: - goto op_semantics_69; + goto op_semantics_73; break; case 0x0f: - goto op_semantics_70; + goto op_semantics_74; break; } break; @@ -8926,10 +9327,10 @@ rx_decode_opcode (unsigned long pc AU, case 0x0c: case 0x0d: case 0x0e: - goto op_semantics_69; + goto op_semantics_73; break; case 0x0f: - goto op_semantics_70; + goto op_semantics_74; break; } break; @@ -8952,10 +9353,10 @@ rx_decode_opcode (unsigned long pc AU, case 0x0c: case 0x0d: case 0x0e: - goto op_semantics_69; + goto op_semantics_73; break; case 0x0f: - goto op_semantics_70; + goto op_semantics_74; break; } break; @@ -8978,10 +9379,10 @@ rx_decode_opcode (unsigned long pc AU, case 0x0c: case 0x0d: case 0x0e: - goto op_semantics_69; + goto op_semantics_73; break; case 0x0f: - goto op_semantics_70; + goto op_semantics_74; break; } break; @@ -9004,10 +9405,10 @@ rx_decode_opcode (unsigned long pc AU, case 0x0c: case 0x0d: case 0x0e: - goto op_semantics_69; + goto op_semantics_73; break; case 0x0f: - goto op_semantics_70; + goto op_semantics_74; break; } break; @@ -9030,10 +9431,10 @@ rx_decode_opcode (unsigned long pc AU, case 0x0c: case 0x0d: case 0x0e: - goto op_semantics_69; + goto op_semantics_73; break; case 0x0f: - goto op_semantics_70; + goto op_semantics_74; break; } break; @@ -9056,10 +9457,10 @@ rx_decode_opcode (unsigned long pc AU, case 0x0c: case 0x0d: case 0x0e: - goto op_semantics_69; + goto op_semantics_73; break; case 0x0f: - goto op_semantics_70; + goto op_semantics_74; break; } break; @@ -9082,10 +9483,10 @@ rx_decode_opcode (unsigned long pc AU, case 0x0c: case 0x0d: case 0x0e: - goto op_semantics_69; + goto op_semantics_73; break; case 0x0f: - goto op_semantics_70; + goto op_semantics_74; break; } break; @@ -9108,10 +9509,10 @@ rx_decode_opcode (unsigned long pc AU, case 0x0c: case 0x0d: case 0x0e: - goto op_semantics_69; + goto op_semantics_73; break; case 0x0f: - goto op_semantics_70; + goto op_semantics_74; break; } break; @@ -9134,10 +9535,10 @@ rx_decode_opcode (unsigned long pc AU, case 0x0c: case 0x0d: case 0x0e: - goto op_semantics_69; + goto op_semantics_73; break; case 0x0f: - goto op_semantics_70; + goto op_semantics_74; break; } break; @@ -9160,10 +9561,10 @@ rx_decode_opcode (unsigned long pc AU, case 0x0c: case 0x0d: case 0x0e: - goto op_semantics_69; + goto op_semantics_73; break; case 0x0f: - goto op_semantics_70; + goto op_semantics_74; break; } break; @@ -9186,10 +9587,10 @@ rx_decode_opcode (unsigned long pc AU, case 0x0c: case 0x0d: case 0x0e: - goto op_semantics_69; + goto op_semantics_73; break; case 0x0f: - goto op_semantics_70; + goto op_semantics_74; break; } break; @@ -9212,10 +9613,10 @@ rx_decode_opcode (unsigned long pc AU, case 0x0c: case 0x0d: case 0x0e: - goto op_semantics_69; + goto op_semantics_73; break; case 0x0f: - goto op_semantics_70; + goto op_semantics_74; break; } break; @@ -9238,10 +9639,10 @@ rx_decode_opcode (unsigned long pc AU, case 0x0c: case 0x0d: case 0x0e: - goto op_semantics_69; + goto op_semantics_73; break; case 0x0f: - goto op_semantics_70; + goto op_semantics_74; break; } break; @@ -9264,10 +9665,10 @@ rx_decode_opcode (unsigned long pc AU, case 0x0c: case 0x0d: case 0x0e: - goto op_semantics_69; + goto op_semantics_73; break; case 0x0f: - goto op_semantics_70; + goto op_semantics_74; break; } break; @@ -9290,10 +9691,10 @@ rx_decode_opcode (unsigned long pc AU, case 0x0c: case 0x0d: case 0x0e: - goto op_semantics_69; + goto op_semantics_73; break; case 0x0f: - goto op_semantics_70; + goto op_semantics_74; break; } break; @@ -9316,10 +9717,10 @@ rx_decode_opcode (unsigned long pc AU, case 0x0c: case 0x0d: case 0x0e: - goto op_semantics_69; + goto op_semantics_73; break; case 0x0f: - goto op_semantics_70; + goto op_semantics_74; break; } break; @@ -9342,10 +9743,10 @@ rx_decode_opcode (unsigned long pc AU, case 0x0c: case 0x0d: case 0x0e: - goto op_semantics_69; + goto op_semantics_73; break; case 0x0f: - goto op_semantics_70; + goto op_semantics_74; break; } break; @@ -9368,10 +9769,10 @@ rx_decode_opcode (unsigned long pc AU, case 0x0c: case 0x0d: case 0x0e: - goto op_semantics_69; + goto op_semantics_73; break; case 0x0f: - goto op_semantics_70; + goto op_semantics_74; break; } break; @@ -9394,10 +9795,10 @@ rx_decode_opcode (unsigned long pc AU, case 0x0c: case 0x0d: case 0x0e: - goto op_semantics_69; + goto op_semantics_73; break; case 0x0f: - goto op_semantics_70; + goto op_semantics_74; break; } break; @@ -9420,10 +9821,10 @@ rx_decode_opcode (unsigned long pc AU, case 0x0c: case 0x0d: case 0x0e: - goto op_semantics_69; + goto op_semantics_73; break; case 0x0f: - goto op_semantics_70; + goto op_semantics_74; break; } break; @@ -9446,10 +9847,10 @@ rx_decode_opcode (unsigned long pc AU, case 0x0c: case 0x0d: case 0x0e: - goto op_semantics_69; + goto op_semantics_73; break; case 0x0f: - goto op_semantics_70; + goto op_semantics_74; break; } break; @@ -9472,10 +9873,10 @@ rx_decode_opcode (unsigned long pc AU, case 0x0c: case 0x0d: case 0x0e: - goto op_semantics_69; + goto op_semantics_73; break; case 0x0f: - goto op_semantics_70; + goto op_semantics_74; break; } break; @@ -9491,23 +9892,27 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: + op_semantics_75: { - /** 1111 1101 0000 0000 srca srcb mulhi %1, %2 */ -#line 810 "rx-decode.opc" + /** 1111 1101 0000 a000 srca srcb mulhi %1, %2, %0 */ +#line 848 "rx-decode.opc" + int a AU = (op[1] >> 3) & 0x01; +#line 848 "rx-decode.opc" int srca AU = (op[2] >> 4) & 0x0f; -#line 810 "rx-decode.opc" +#line 848 "rx-decode.opc" int srcb AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0000 0000 srca srcb mulhi %1, %2 */", + "/** 1111 1101 0000 a000 srca srcb mulhi %1, %2, %0 */", op[0], op[1], op[2]); + printf (" a = 0x%x,", a); printf (" srca = 0x%x,", srca); printf (" srcb = 0x%x\n", srcb); } - SYNTAX("mulhi %1, %2"); -#line 810 "rx-decode.opc" - ID(mulhi); SR(srca); S2R(srcb); F_____; + SYNTAX("mulhi %1, %2, %0"); +#line 848 "rx-decode.opc" + ID(mulhi); DR(a+32); SR(srca); S2R(srcb); F_____; } break; @@ -9518,1145 +9923,1743 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: + op_semantics_76: { - /** 1111 1101 0000 0001 srca srcb mullo %1, %2 */ -#line 813 "rx-decode.opc" + /** 1111 1101 0000 a001 srca srcb mullo %1, %2, %0 */ +#line 851 "rx-decode.opc" + int a AU = (op[1] >> 3) & 0x01; +#line 851 "rx-decode.opc" int srca AU = (op[2] >> 4) & 0x0f; -#line 813 "rx-decode.opc" +#line 851 "rx-decode.opc" int srcb AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0000 0001 srca srcb mullo %1, %2 */", + "/** 1111 1101 0000 a001 srca srcb mullo %1, %2, %0 */", op[0], op[1], op[2]); + printf (" a = 0x%x,", a); printf (" srca = 0x%x,", srca); printf (" srcb = 0x%x\n", srcb); } - SYNTAX("mullo %1, %2"); -#line 813 "rx-decode.opc" - ID(mullo); SR(srca); S2R(srcb); F_____; + SYNTAX("mullo %1, %2, %0"); +#line 851 "rx-decode.opc" + ID(mullo); DR(a+32); SR(srca); S2R(srcb); F_____; } break; } break; - case 0x04: + case 0x02: GETBYTE (); switch (op[2] & 0x00) { case 0x00: + op_semantics_77: { - /** 1111 1101 0000 0100 srca srcb machi %1, %2 */ -#line 816 "rx-decode.opc" + /** 1111 1101 0000 a010 srca srcb mullh %1, %2, %0 */ +#line 1079 "rx-decode.opc" + int a AU = (op[1] >> 3) & 0x01; +#line 1079 "rx-decode.opc" int srca AU = (op[2] >> 4) & 0x0f; -#line 816 "rx-decode.opc" +#line 1079 "rx-decode.opc" int srcb AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0000 0100 srca srcb machi %1, %2 */", + "/** 1111 1101 0000 a010 srca srcb mullh %1, %2, %0 */", op[0], op[1], op[2]); + printf (" a = 0x%x,", a); printf (" srca = 0x%x,", srca); printf (" srcb = 0x%x\n", srcb); } - SYNTAX("machi %1, %2"); -#line 816 "rx-decode.opc" - ID(machi); SR(srca); S2R(srcb); F_____; + SYNTAX("mullh %1, %2, %0"); +#line 1079 "rx-decode.opc" + ID(mullh); DR(a+32); SR(srca); S2R(srcb); F_____; } break; } break; - case 0x05: + case 0x03: GETBYTE (); switch (op[2] & 0x00) { case 0x00: + op_semantics_78: { - /** 1111 1101 0000 0101 srca srcb maclo %1, %2 */ -#line 819 "rx-decode.opc" + /** 1111 1101 0000 a011 srca srcb emula %1, %2, %0 */ +#line 1064 "rx-decode.opc" + int a AU = (op[1] >> 3) & 0x01; +#line 1064 "rx-decode.opc" int srca AU = (op[2] >> 4) & 0x0f; -#line 819 "rx-decode.opc" +#line 1064 "rx-decode.opc" int srcb AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0000 0101 srca srcb maclo %1, %2 */", + "/** 1111 1101 0000 a011 srca srcb emula %1, %2, %0 */", op[0], op[1], op[2]); + printf (" a = 0x%x,", a); printf (" srca = 0x%x,", srca); printf (" srcb = 0x%x\n", srcb); } - SYNTAX("maclo %1, %2"); -#line 819 "rx-decode.opc" - ID(maclo); SR(srca); S2R(srcb); F_____; + SYNTAX("emula %1, %2, %0"); +#line 1064 "rx-decode.opc" + ID(emula); DR(a+32); SR(srca); S2R(srcb); F_____; } break; } break; - case 0x17: + case 0x04: GETBYTE (); - switch (op[2] & 0xf0) + switch (op[2] & 0x00) { case 0x00: + op_semantics_79: { - /** 1111 1101 0001 0111 0000 rsrc mvtachi %1 */ -#line 822 "rx-decode.opc" - int rsrc AU = op[2] & 0x0f; - if (trace) - { - printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0001 0111 0000 rsrc mvtachi %1 */", - op[0], op[1], op[2]); - printf (" rsrc = 0x%x\n", rsrc); - } - SYNTAX("mvtachi %1"); -#line 822 "rx-decode.opc" - ID(mvtachi); SR(rsrc); F_____; - - } - break; - case 0x10: - { - /** 1111 1101 0001 0111 0001 rsrc mvtaclo %1 */ -#line 825 "rx-decode.opc" - int rsrc AU = op[2] & 0x0f; + /** 1111 1101 0000 a100 srca srcb machi %1, %2, %0 */ +#line 854 "rx-decode.opc" + int a AU = (op[1] >> 3) & 0x01; +#line 854 "rx-decode.opc" + int srca AU = (op[2] >> 4) & 0x0f; +#line 854 "rx-decode.opc" + int srcb AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0001 0111 0001 rsrc mvtaclo %1 */", + "/** 1111 1101 0000 a100 srca srcb machi %1, %2, %0 */", op[0], op[1], op[2]); - printf (" rsrc = 0x%x\n", rsrc); + printf (" a = 0x%x,", a); + printf (" srca = 0x%x,", srca); + printf (" srcb = 0x%x\n", srcb); } - SYNTAX("mvtaclo %1"); -#line 825 "rx-decode.opc" - ID(mvtaclo); SR(rsrc); F_____; + SYNTAX("machi %1, %2, %0"); +#line 854 "rx-decode.opc" + ID(machi); DR(a+32); SR(srca); S2R(srcb); F_____; } break; - default: UNSUPPORTED(); break; } break; - case 0x18: + case 0x05: GETBYTE (); - switch (op[2] & 0xef) + switch (op[2] & 0x00) { case 0x00: + op_semantics_80: { - /** 1111 1101 0001 1000 000i 0000 racw #%1 */ -#line 837 "rx-decode.opc" - int i AU = (op[2] >> 4) & 0x01; + /** 1111 1101 0000 a101 srca srcb maclo %1, %2, %0 */ +#line 857 "rx-decode.opc" + int a AU = (op[1] >> 3) & 0x01; +#line 857 "rx-decode.opc" + int srca AU = (op[2] >> 4) & 0x0f; +#line 857 "rx-decode.opc" + int srcb AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0001 1000 000i 0000 racw #%1 */", + "/** 1111 1101 0000 a101 srca srcb maclo %1, %2, %0 */", op[0], op[1], op[2]); - printf (" i = 0x%x\n", i); + printf (" a = 0x%x,", a); + printf (" srca = 0x%x,", srca); + printf (" srcb = 0x%x\n", srcb); } - SYNTAX("racw #%1"); -#line 837 "rx-decode.opc" - ID(racw); SC(i+1); F_____; - - /*----------------------------------------------------------------------*/ - /* SAT */ + SYNTAX("maclo %1, %2, %0"); +#line 857 "rx-decode.opc" + ID(maclo); DR(a+32); SR(srca); S2R(srcb); F_____; } break; - default: UNSUPPORTED(); break; } break; - case 0x1f: + case 0x06: GETBYTE (); - switch (op[2] & 0xf0) + switch (op[2] & 0x00) { case 0x00: + op_semantics_81: { - /** 1111 1101 0001 1111 0000 rdst mvfachi %0 */ -#line 828 "rx-decode.opc" - int rdst AU = op[2] & 0x0f; - if (trace) - { - printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0001 1111 0000 rdst mvfachi %0 */", - op[0], op[1], op[2]); - printf (" rdst = 0x%x\n", rdst); - } - SYNTAX("mvfachi %0"); -#line 828 "rx-decode.opc" - ID(mvfachi); DR(rdst); F_____; - - } - break; - case 0x10: - { - /** 1111 1101 0001 1111 0001 rdst mvfaclo %0 */ -#line 834 "rx-decode.opc" - int rdst AU = op[2] & 0x0f; - if (trace) - { - printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0001 1111 0001 rdst mvfaclo %0 */", - op[0], op[1], op[2]); - printf (" rdst = 0x%x\n", rdst); - } - SYNTAX("mvfaclo %0"); -#line 834 "rx-decode.opc" - ID(mvfaclo); DR(rdst); F_____; - - } - break; - case 0x20: - { - /** 1111 1101 0001 1111 0010 rdst mvfacmi %0 */ -#line 831 "rx-decode.opc" - int rdst AU = op[2] & 0x0f; + /** 1111 1101 0000 a110 srca srcb maclh %1, %2, %0 */ +#line 1067 "rx-decode.opc" + int a AU = (op[1] >> 3) & 0x01; +#line 1067 "rx-decode.opc" + int srca AU = (op[2] >> 4) & 0x0f; +#line 1067 "rx-decode.opc" + int srcb AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0001 1111 0010 rdst mvfacmi %0 */", + "/** 1111 1101 0000 a110 srca srcb maclh %1, %2, %0 */", op[0], op[1], op[2]); - printf (" rdst = 0x%x\n", rdst); + printf (" a = 0x%x,", a); + printf (" srca = 0x%x,", srca); + printf (" srcb = 0x%x\n", srcb); } - SYNTAX("mvfacmi %0"); -#line 831 "rx-decode.opc" - ID(mvfacmi); DR(rdst); F_____; + SYNTAX("maclh %1, %2, %0"); +#line 1067 "rx-decode.opc" + ID(maclh); DR(a+32); SR(srca); S2R(srcb); F_____; } break; - default: UNSUPPORTED(); break; } break; - case 0x20: + case 0x07: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - op_semantics_71: + op_semantics_82: { - /** 1111 1101 0010 0p sz rdst rsrc mov%s %1, %0 */ -#line 344 "rx-decode.opc" - int p AU = (op[1] >> 2) & 0x01; -#line 344 "rx-decode.opc" - int sz AU = op[1] & 0x03; -#line 344 "rx-decode.opc" - int rdst AU = (op[2] >> 4) & 0x0f; -#line 344 "rx-decode.opc" - int rsrc AU = op[2] & 0x0f; + /** 1111 1101 0000 a111 srca srcb emaca %1, %2, %0 */ +#line 1058 "rx-decode.opc" + int a AU = (op[1] >> 3) & 0x01; +#line 1058 "rx-decode.opc" + int srca AU = (op[2] >> 4) & 0x0f; +#line 1058 "rx-decode.opc" + int srcb AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0010 0p sz rdst rsrc mov%s %1, %0 */", + "/** 1111 1101 0000 a111 srca srcb emaca %1, %2, %0 */", op[0], op[1], op[2]); - printf (" p = 0x%x,", p); - printf (" sz = 0x%x,", sz); - printf (" rdst = 0x%x,", rdst); - printf (" rsrc = 0x%x\n", rsrc); + printf (" a = 0x%x,", a); + printf (" srca = 0x%x,", srca); + printf (" srcb = 0x%x\n", srcb); } - SYNTAX("mov%s %1, %0"); -#line 344 "rx-decode.opc" - ID(mov); sBWL (sz); SR(rsrc); F_____; - OP(0, p ? RX_Operand_Predec : RX_Operand_Postinc, rdst, 0); + SYNTAX("emaca %1, %2, %0"); +#line 1058 "rx-decode.opc" + ID(emaca); DR(a+32); SR(srca); S2R(srcb); F_____; } break; } break; - case 0x21: + case 0x08: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_71; + goto op_semantics_75; break; } break; - case 0x22: + case 0x09: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_71; + goto op_semantics_76; break; } break; - case 0x24: + case 0x0a: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_71; + goto op_semantics_77; break; } break; - case 0x25: + case 0x0b: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_71; + goto op_semantics_78; break; } break; - case 0x26: + case 0x0c: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_71; + goto op_semantics_79; break; } break; - case 0x28: + case 0x0d: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - op_semantics_72: - { - /** 1111 1101 0010 1p sz rsrc rdst mov%s %1, %0 */ -#line 348 "rx-decode.opc" - int p AU = (op[1] >> 2) & 0x01; -#line 348 "rx-decode.opc" - int sz AU = op[1] & 0x03; -#line 348 "rx-decode.opc" - int rsrc AU = (op[2] >> 4) & 0x0f; -#line 348 "rx-decode.opc" - int rdst AU = op[2] & 0x0f; - if (trace) - { - printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0010 1p sz rsrc rdst mov%s %1, %0 */", - op[0], op[1], op[2]); - printf (" p = 0x%x,", p); - printf (" sz = 0x%x,", sz); - printf (" rsrc = 0x%x,", rsrc); - printf (" rdst = 0x%x\n", rdst); - } - SYNTAX("mov%s %1, %0"); -#line 348 "rx-decode.opc" - ID(mov); sBWL (sz); DR(rdst); F_____; - OP(1, p ? RX_Operand_Predec : RX_Operand_Postinc, rsrc, 0); - - } + goto op_semantics_80; break; } break; - case 0x29: + case 0x0e: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_72; + goto op_semantics_81; break; } break; - case 0x2a: + case 0x0f: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_72; + goto op_semantics_82; break; } break; - case 0x2c: + case 0x17: GETBYTE (); - switch (op[2] & 0x00) + switch (op[2] & 0x70) { case 0x00: - goto op_semantics_72; + { + /** 1111 1101 0001 0111 a000 rsrc mvtachi %1, %0 */ +#line 860 "rx-decode.opc" + int a AU = (op[2] >> 7) & 0x01; +#line 860 "rx-decode.opc" + int rsrc AU = op[2] & 0x0f; + if (trace) + { + printf ("\033[33m%s\033[0m %02x %02x %02x\n", + "/** 1111 1101 0001 0111 a000 rsrc mvtachi %1, %0 */", + op[0], op[1], op[2]); + printf (" a = 0x%x,", a); + printf (" rsrc = 0x%x\n", rsrc); + } + SYNTAX("mvtachi %1, %0"); +#line 860 "rx-decode.opc" + ID(mvtachi); DR(a+32); SR(rsrc); F_____; + + } break; - } - break; - case 0x2d: - GETBYTE (); - switch (op[2] & 0x00) - { - case 0x00: - goto op_semantics_72; + case 0x10: + { + /** 1111 1101 0001 0111 a001 rsrc mvtaclo %1, %0 */ +#line 863 "rx-decode.opc" + int a AU = (op[2] >> 7) & 0x01; +#line 863 "rx-decode.opc" + int rsrc AU = op[2] & 0x0f; + if (trace) + { + printf ("\033[33m%s\033[0m %02x %02x %02x\n", + "/** 1111 1101 0001 0111 a001 rsrc mvtaclo %1, %0 */", + op[0], op[1], op[2]); + printf (" a = 0x%x,", a); + printf (" rsrc = 0x%x\n", rsrc); + } + SYNTAX("mvtaclo %1, %0"); +#line 863 "rx-decode.opc" + ID(mvtaclo); DR(a+32); SR(rsrc); F_____; + + } break; - } - break; - case 0x2e: - GETBYTE (); - switch (op[2] & 0x00) - { - case 0x00: - goto op_semantics_72; + case 0x30: + { + /** 1111 1101 0001 0111 a011 rdst mvtacgu %0, %1 */ +#line 1085 "rx-decode.opc" + int a AU = (op[2] >> 7) & 0x01; +#line 1085 "rx-decode.opc" + int rdst AU = op[2] & 0x0f; + if (trace) + { + printf ("\033[33m%s\033[0m %02x %02x %02x\n", + "/** 1111 1101 0001 0111 a011 rdst mvtacgu %0, %1 */", + op[0], op[1], op[2]); + printf (" a = 0x%x,", a); + printf (" rdst = 0x%x\n", rdst); + } + SYNTAX("mvtacgu %0, %1"); +#line 1085 "rx-decode.opc" + ID(mvtacgu); SR(a+32); DR(rdst); F_____; + + } break; + default: UNSUPPORTED(); break; } break; - case 0x38: + case 0x18: GETBYTE (); - switch (op[2] & 0x00) + switch (op[2] & 0x6f) { case 0x00: - op_semantics_73: { - /** 1111 1101 0011 1p sz rsrc rdst movu%s %1, %0 */ -#line 358 "rx-decode.opc" - int p AU = (op[1] >> 2) & 0x01; -#line 358 "rx-decode.opc" - int sz AU = op[1] & 0x03; -#line 358 "rx-decode.opc" - int rsrc AU = (op[2] >> 4) & 0x0f; -#line 358 "rx-decode.opc" - int rdst AU = op[2] & 0x0f; + /** 1111 1101 0001 1000 a00i 0000 racw #%1, %0 */ +#line 875 "rx-decode.opc" + int a AU = (op[2] >> 7) & 0x01; +#line 875 "rx-decode.opc" + int i AU = (op[2] >> 4) & 0x01; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0011 1p sz rsrc rdst movu%s %1, %0 */", + "/** 1111 1101 0001 1000 a00i 0000 racw #%1, %0 */", op[0], op[1], op[2]); - printf (" p = 0x%x,", p); - printf (" sz = 0x%x,", sz); - printf (" rsrc = 0x%x,", rsrc); - printf (" rdst = 0x%x\n", rdst); + printf (" a = 0x%x,", a); + printf (" i = 0x%x\n", i); } - SYNTAX("movu%s %1, %0"); -#line 358 "rx-decode.opc" - ID(mov); uBW (sz); DR(rdst); F_____; - OP(1, p ? RX_Operand_Predec : RX_Operand_Postinc, rsrc, 0); + SYNTAX("racw #%1, %0"); +#line 875 "rx-decode.opc" + ID(racw); SC(i+1); DR(a+32); F_____; /*----------------------------------------------------------------------*/ - /* PUSH/POP */ + /* SAT */ } break; - } - break; - case 0x39: - GETBYTE (); - switch (op[2] & 0x00) - { - case 0x00: - goto op_semantics_73; + case 0x40: + { + /** 1111 1101 0001 1000 a10i 0000 rdacw #%1, %0 */ +#line 1094 "rx-decode.opc" + int a AU = (op[2] >> 7) & 0x01; +#line 1094 "rx-decode.opc" + int i AU = (op[2] >> 4) & 0x01; + if (trace) + { + printf ("\033[33m%s\033[0m %02x %02x %02x\n", + "/** 1111 1101 0001 1000 a10i 0000 rdacw #%1, %0 */", + op[0], op[1], op[2]); + printf (" a = 0x%x,", a); + printf (" i = 0x%x\n", i); + } + SYNTAX("rdacw #%1, %0"); +#line 1094 "rx-decode.opc" + ID(rdacw); SC(i+1); DR(a+32); F_____; + + } break; + default: UNSUPPORTED(); break; } break; - case 0x3a: + case 0x19: GETBYTE (); - switch (op[2] & 0x00) - { - case 0x00: - goto op_semantics_73; - break; - } - break; - case 0x3c: - GETBYTE (); - switch (op[2] & 0x00) - { - case 0x00: - goto op_semantics_73; - break; - } - break; - case 0x3d: - GETBYTE (); - switch (op[2] & 0x00) - { - case 0x00: - goto op_semantics_73; - break; - } - break; - case 0x3e: - GETBYTE (); - switch (op[2] & 0x00) - { - case 0x00: - goto op_semantics_73; - break; - } - break; - case 0x60: - GETBYTE (); - switch (op[2] & 0x00) + switch (op[2] & 0x6f) { case 0x00: { - /** 1111 1101 0110 0000 rsrc rdst shlr %2, %0 */ -#line 691 "rx-decode.opc" - int rsrc AU = (op[2] >> 4) & 0x0f; -#line 691 "rx-decode.opc" - int rdst AU = op[2] & 0x0f; + /** 1111 1101 0001 1001 a00i 0000 racl #%1, %0 */ +#line 1088 "rx-decode.opc" + int a AU = (op[2] >> 7) & 0x01; +#line 1088 "rx-decode.opc" + int i AU = (op[2] >> 4) & 0x01; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0110 0000 rsrc rdst shlr %2, %0 */", + "/** 1111 1101 0001 1001 a00i 0000 racl #%1, %0 */", op[0], op[1], op[2]); - printf (" rsrc = 0x%x,", rsrc); - printf (" rdst = 0x%x\n", rdst); + printf (" a = 0x%x,", a); + printf (" i = 0x%x\n", i); } - SYNTAX("shlr %2, %0"); -#line 691 "rx-decode.opc" - ID(shlr); S2R(rsrc); SR(rdst); DR(rdst); F__SZC; + SYNTAX("racl #%1, %0"); +#line 1088 "rx-decode.opc" + ID(racl); SC(i+1); DR(a+32); F_____; } break; - } - break; - case 0x61: - GETBYTE (); - switch (op[2] & 0x00) - { - case 0x00: + case 0x40: { - /** 1111 1101 0110 0001 rsrc rdst shar %2, %0 */ -#line 681 "rx-decode.opc" - int rsrc AU = (op[2] >> 4) & 0x0f; -#line 681 "rx-decode.opc" - int rdst AU = op[2] & 0x0f; + /** 1111 1101 0001 1001 a10i 0000 rdacl #%1, %0 */ +#line 1091 "rx-decode.opc" + int a AU = (op[2] >> 7) & 0x01; +#line 1091 "rx-decode.opc" + int i AU = (op[2] >> 4) & 0x01; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0110 0001 rsrc rdst shar %2, %0 */", + "/** 1111 1101 0001 1001 a10i 0000 rdacl #%1, %0 */", op[0], op[1], op[2]); - printf (" rsrc = 0x%x,", rsrc); - printf (" rdst = 0x%x\n", rdst); + printf (" a = 0x%x,", a); + printf (" i = 0x%x\n", i); } - SYNTAX("shar %2, %0"); -#line 681 "rx-decode.opc" - ID(shar); S2R(rsrc); SR(rdst); DR(rdst); F_0SZC; + SYNTAX("rdacl #%1, %0"); +#line 1091 "rx-decode.opc" + ID(rdacl); SC(i+1); DR(a+32); F_____; } break; + default: UNSUPPORTED(); break; } break; - case 0x62: + case 0x1e: GETBYTE (); - switch (op[2] & 0x00) + switch (op[2] & 0x30) { case 0x00: + op_semantics_83: { - /** 1111 1101 0110 0010 rsrc rdst shll %2, %0 */ -#line 671 "rx-decode.opc" - int rsrc AU = (op[2] >> 4) & 0x0f; -#line 671 "rx-decode.opc" + /** 1111 1101 0001 111i a m00 rdst mvfachi #%2, %1, %0 */ +#line 866 "rx-decode.opc" + int i AU = op[1] & 0x01; +#line 866 "rx-decode.opc" + int a AU = (op[2] >> 7) & 0x01; +#line 866 "rx-decode.opc" + int m AU = (op[2] >> 6) & 0x01; +#line 866 "rx-decode.opc" int rdst AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0110 0010 rsrc rdst shll %2, %0 */", + "/** 1111 1101 0001 111i a m00 rdst mvfachi #%2, %1, %0 */", op[0], op[1], op[2]); - printf (" rsrc = 0x%x,", rsrc); + printf (" i = 0x%x,", i); + printf (" a = 0x%x,", a); + printf (" m = 0x%x,", m); printf (" rdst = 0x%x\n", rdst); } - SYNTAX("shll %2, %0"); -#line 671 "rx-decode.opc" - ID(shll); S2R(rsrc); SR(rdst); DR(rdst); F_OSZC; + SYNTAX("mvfachi #%2, %1, %0"); +#line 866 "rx-decode.opc" + ID(mvfachi); S2C(((i^1)<<1)|m); SR(a+32); DR(rdst); F_____; } break; - } - break; - case 0x64: - GETBYTE (); - switch (op[2] & 0x00) - { - case 0x00: + case 0x10: + op_semantics_84: { - /** 1111 1101 0110 0100 rsrc rdst rotr %1, %0 */ -#line 715 "rx-decode.opc" - int rsrc AU = (op[2] >> 4) & 0x0f; -#line 715 "rx-decode.opc" + /** 1111 1101 0001 111i a m01 rdst mvfaclo #%2, %1, %0 */ +#line 872 "rx-decode.opc" + int i AU = op[1] & 0x01; +#line 872 "rx-decode.opc" + int a AU = (op[2] >> 7) & 0x01; +#line 872 "rx-decode.opc" + int m AU = (op[2] >> 6) & 0x01; +#line 872 "rx-decode.opc" int rdst AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0110 0100 rsrc rdst rotr %1, %0 */", + "/** 1111 1101 0001 111i a m01 rdst mvfaclo #%2, %1, %0 */", op[0], op[1], op[2]); - printf (" rsrc = 0x%x,", rsrc); + printf (" i = 0x%x,", i); + printf (" a = 0x%x,", a); + printf (" m = 0x%x,", m); printf (" rdst = 0x%x\n", rdst); } - SYNTAX("rotr %1, %0"); -#line 715 "rx-decode.opc" - ID(rotr); SR(rsrc); DR(rdst); F__SZC; + SYNTAX("mvfaclo #%2, %1, %0"); +#line 872 "rx-decode.opc" + ID(mvfaclo); S2C(((i^1)<<1)|m); SR(a+32); DR(rdst); F_____; } break; - } - break; - case 0x65: - GETBYTE (); - switch (op[2] & 0x00) - { - case 0x00: + case 0x20: + op_semantics_85: { - /** 1111 1101 0110 0101 rsrc rdst revw %1, %0 */ -#line 718 "rx-decode.opc" - int rsrc AU = (op[2] >> 4) & 0x0f; -#line 718 "rx-decode.opc" + /** 1111 1101 0001 111i a m10 rdst mvfacmi #%2, %1, %0 */ +#line 869 "rx-decode.opc" + int i AU = op[1] & 0x01; +#line 869 "rx-decode.opc" + int a AU = (op[2] >> 7) & 0x01; +#line 869 "rx-decode.opc" + int m AU = (op[2] >> 6) & 0x01; +#line 869 "rx-decode.opc" int rdst AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0110 0101 rsrc rdst revw %1, %0 */", + "/** 1111 1101 0001 111i a m10 rdst mvfacmi #%2, %1, %0 */", op[0], op[1], op[2]); - printf (" rsrc = 0x%x,", rsrc); + printf (" i = 0x%x,", i); + printf (" a = 0x%x,", a); + printf (" m = 0x%x,", m); printf (" rdst = 0x%x\n", rdst); } - SYNTAX("revw %1, %0"); -#line 718 "rx-decode.opc" - ID(revw); SR(rsrc); DR(rdst); + SYNTAX("mvfacmi #%2, %1, %0"); +#line 869 "rx-decode.opc" + ID(mvfacmi); S2C(((i^1)<<1)|m); SR(a+32); DR(rdst); F_____; } break; - } - break; - case 0x66: - GETBYTE (); - switch (op[2] & 0x00) - { - case 0x00: + case 0x30: + op_semantics_86: { - /** 1111 1101 0110 0110 rsrc rdst rotl %1, %0 */ -#line 709 "rx-decode.opc" - int rsrc AU = (op[2] >> 4) & 0x0f; -#line 709 "rx-decode.opc" + /** 1111 1101 0001 111i a m11 rdst mvfacgu #%2, %1, %0 */ +#line 1082 "rx-decode.opc" + int i AU = op[1] & 0x01; +#line 1082 "rx-decode.opc" + int a AU = (op[2] >> 7) & 0x01; +#line 1082 "rx-decode.opc" + int m AU = (op[2] >> 6) & 0x01; +#line 1082 "rx-decode.opc" int rdst AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0110 0110 rsrc rdst rotl %1, %0 */", + "/** 1111 1101 0001 111i a m11 rdst mvfacgu #%2, %1, %0 */", op[0], op[1], op[2]); - printf (" rsrc = 0x%x,", rsrc); + printf (" i = 0x%x,", i); + printf (" a = 0x%x,", a); + printf (" m = 0x%x,", m); printf (" rdst = 0x%x\n", rdst); } - SYNTAX("rotl %1, %0"); -#line 709 "rx-decode.opc" - ID(rotl); SR(rsrc); DR(rdst); F__SZC; + SYNTAX("mvfacgu #%2, %1, %0"); +#line 1082 "rx-decode.opc" + ID(mvfacgu); S2C(((i^1)<<1)|m); SR(a+32); DR(rdst); F_____; } break; } break; - case 0x67: + case 0x1f: GETBYTE (); - switch (op[2] & 0x00) + switch (op[2] & 0x30) { case 0x00: - { - /** 1111 1101 0110 0111 rsrc rdst revl %1, %0 */ -#line 721 "rx-decode.opc" - int rsrc AU = (op[2] >> 4) & 0x0f; -#line 721 "rx-decode.opc" - int rdst AU = op[2] & 0x0f; - if (trace) - { - printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0110 0111 rsrc rdst revl %1, %0 */", - op[0], op[1], op[2]); - printf (" rsrc = 0x%x,", rsrc); - printf (" rdst = 0x%x\n", rdst); - } - SYNTAX("revl %1, %0"); -#line 721 "rx-decode.opc" - ID(revl); SR(rsrc); DR(rdst); - - /*----------------------------------------------------------------------*/ - /* BRANCH */ - - } + goto op_semantics_83; + break; + case 0x10: + goto op_semantics_84; + break; + case 0x20: + goto op_semantics_85; + break; + case 0x30: + goto op_semantics_86; break; } break; - case 0x68: + case 0x20: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - op_semantics_74: + op_semantics_87: { - /** 1111 1101 0110 100c rsrc rdst mvtc %1, %0 */ -#line 972 "rx-decode.opc" - int c AU = op[1] & 0x01; -#line 972 "rx-decode.opc" - int rsrc AU = (op[2] >> 4) & 0x0f; -#line 972 "rx-decode.opc" - int rdst AU = op[2] & 0x0f; + /** 1111 1101 0010 0p sz rdst rsrc mov%s %1, %0 */ +#line 344 "rx-decode.opc" + int p AU = (op[1] >> 2) & 0x01; +#line 344 "rx-decode.opc" + int sz AU = op[1] & 0x03; +#line 344 "rx-decode.opc" + int rdst AU = (op[2] >> 4) & 0x0f; +#line 344 "rx-decode.opc" + int rsrc AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0110 100c rsrc rdst mvtc %1, %0 */", + "/** 1111 1101 0010 0p sz rdst rsrc mov%s %1, %0 */", op[0], op[1], op[2]); - printf (" c = 0x%x,", c); - printf (" rsrc = 0x%x,", rsrc); - printf (" rdst = 0x%x\n", rdst); + printf (" p = 0x%x,", p); + printf (" sz = 0x%x,", sz); + printf (" rdst = 0x%x,", rdst); + printf (" rsrc = 0x%x\n", rsrc); } - SYNTAX("mvtc %1, %0"); -#line 972 "rx-decode.opc" - ID(mov); SR(rsrc); DR(c*16+rdst + 16); + SYNTAX("mov%s %1, %0"); +#line 344 "rx-decode.opc" + ID(mov); sBWL (sz); SR(rsrc); F_____; + OP(0, p ? RX_Operand_Predec : RX_Operand_Postinc, rdst, 0); } break; } break; - case 0x69: + case 0x21: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_74; + goto op_semantics_87; break; } break; - case 0x6a: + case 0x22: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - op_semantics_75: - { - /** 1111 1101 0110 101s rsrc rdst mvfc %1, %0 */ -#line 975 "rx-decode.opc" - int s AU = op[1] & 0x01; -#line 975 "rx-decode.opc" - int rsrc AU = (op[2] >> 4) & 0x0f; -#line 975 "rx-decode.opc" - int rdst AU = op[2] & 0x0f; - if (trace) - { - printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0110 101s rsrc rdst mvfc %1, %0 */", - op[0], op[1], op[2]); - printf (" s = 0x%x,", s); - printf (" rsrc = 0x%x,", rsrc); - printf (" rdst = 0x%x\n", rdst); - } - SYNTAX("mvfc %1, %0"); -#line 975 "rx-decode.opc" - ID(mov); SR((s*16+rsrc) + 16); DR(rdst); - - /*----------------------------------------------------------------------*/ - /* INTERRUPTS */ - - } + goto op_semantics_87; break; } break; - case 0x6b: + case 0x24: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_75; + goto op_semantics_87; break; } break; - case 0x6c: + case 0x25: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - op_semantics_76: - { - /** 1111 1101 0110 110i mmmm rdst rotr #%1, %0 */ -#line 712 "rx-decode.opc" - int i AU = op[1] & 0x01; -#line 712 "rx-decode.opc" - int mmmm AU = (op[2] >> 4) & 0x0f; -#line 712 "rx-decode.opc" - int rdst AU = op[2] & 0x0f; - if (trace) - { - printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0110 110i mmmm rdst rotr #%1, %0 */", - op[0], op[1], op[2]); - printf (" i = 0x%x,", i); - printf (" mmmm = 0x%x,", mmmm); - printf (" rdst = 0x%x\n", rdst); - } - SYNTAX("rotr #%1, %0"); -#line 712 "rx-decode.opc" - ID(rotr); SC(i*16+mmmm); DR(rdst); F__SZC; - - } + goto op_semantics_87; break; } break; - case 0x6d: + case 0x26: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_76; + goto op_semantics_87; break; } break; - case 0x6e: + case 0x27: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - op_semantics_77: { - /** 1111 1101 0110 111i mmmm rdst rotl #%1, %0 */ -#line 706 "rx-decode.opc" - int i AU = op[1] & 0x01; -#line 706 "rx-decode.opc" - int mmmm AU = (op[2] >> 4) & 0x0f; -#line 706 "rx-decode.opc" + /** 1111 1101 0010 0111 rdst rsrc movco %1, [%0] */ +#line 1046 "rx-decode.opc" + int rdst AU = (op[2] >> 4) & 0x0f; +#line 1046 "rx-decode.opc" + int rsrc AU = op[2] & 0x0f; + if (trace) + { + printf ("\033[33m%s\033[0m %02x %02x %02x\n", + "/** 1111 1101 0010 0111 rdst rsrc movco %1, [%0] */", + op[0], op[1], op[2]); + printf (" rdst = 0x%x,", rdst); + printf (" rsrc = 0x%x\n", rsrc); + } + SYNTAX("movco %1, [%0]"); +#line 1046 "rx-decode.opc" + ID(mov); SR(rsrc); DR(rdst); F_____; + + } + break; + } + break; + case 0x28: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + op_semantics_88: + { + /** 1111 1101 0010 1p sz rsrc rdst mov%s %1, %0 */ +#line 348 "rx-decode.opc" + int p AU = (op[1] >> 2) & 0x01; +#line 348 "rx-decode.opc" + int sz AU = op[1] & 0x03; +#line 348 "rx-decode.opc" + int rsrc AU = (op[2] >> 4) & 0x0f; +#line 348 "rx-decode.opc" int rdst AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0110 111i mmmm rdst rotl #%1, %0 */", + "/** 1111 1101 0010 1p sz rsrc rdst mov%s %1, %0 */", op[0], op[1], op[2]); - printf (" i = 0x%x,", i); - printf (" mmmm = 0x%x,", mmmm); + printf (" p = 0x%x,", p); + printf (" sz = 0x%x,", sz); + printf (" rsrc = 0x%x,", rsrc); printf (" rdst = 0x%x\n", rdst); } - SYNTAX("rotl #%1, %0"); -#line 706 "rx-decode.opc" - ID(rotl); SC(i*16+mmmm); DR(rdst); F__SZC; + SYNTAX("mov%s %1, %0"); +#line 348 "rx-decode.opc" + ID(mov); sBWL (sz); DR(rdst); F_____; + OP(1, p ? RX_Operand_Predec : RX_Operand_Postinc, rsrc, 0); } break; } break; - case 0x6f: + case 0x29: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_77; + goto op_semantics_88; break; } break; - case 0x70: + case 0x2a: GETBYTE (); - switch (op[2] & 0xf0) + switch (op[2] & 0x00) { - case 0x20: - op_semantics_78: + case 0x00: + goto op_semantics_88; + break; + } + break; + case 0x2c: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_88; + break; + } + break; + case 0x2d: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_88; + break; + } + break; + case 0x2e: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_88; + break; + } + break; + case 0x2f: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: { - /** 1111 1101 0111 im00 0010rdst adc #%1, %0 */ -#line 488 "rx-decode.opc" - int im AU = (op[1] >> 2) & 0x03; -#line 488 "rx-decode.opc" + /** 1111 1101 0010 1111 rsrc rdst movli [%1], %0 */ +#line 1049 "rx-decode.opc" + int rsrc AU = (op[2] >> 4) & 0x0f; +#line 1049 "rx-decode.opc" int rdst AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0111 im00 0010rdst adc #%1, %0 */", + "/** 1111 1101 0010 1111 rsrc rdst movli [%1], %0 */", op[0], op[1], op[2]); - printf (" im = 0x%x,", im); + printf (" rsrc = 0x%x,", rsrc); printf (" rdst = 0x%x\n", rdst); } - SYNTAX("adc #%1, %0"); -#line 488 "rx-decode.opc" - ID(adc); SC(IMMex(im)); DR(rdst); F_OSZC; + SYNTAX("movli [%1], %0"); +#line 1049 "rx-decode.opc" + ID(mov); SR(rsrc); DR(rdst); F_____; } break; - case 0x40: - op_semantics_79: + } + break; + case 0x38: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + op_semantics_89: { - /** 1111 1101 0111 im00 0100rdst max #%1, %0 */ -#line 570 "rx-decode.opc" - int im AU = (op[1] >> 2) & 0x03; -#line 570 "rx-decode.opc" + /** 1111 1101 0011 1p sz rsrc rdst movu%s %1, %0 */ +#line 358 "rx-decode.opc" + int p AU = (op[1] >> 2) & 0x01; +#line 358 "rx-decode.opc" + int sz AU = op[1] & 0x03; +#line 358 "rx-decode.opc" + int rsrc AU = (op[2] >> 4) & 0x0f; +#line 358 "rx-decode.opc" int rdst AU = op[2] & 0x0f; - int val = IMMex (im); if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0111 im00 0100rdst max #%1, %0 */", + "/** 1111 1101 0011 1p sz rsrc rdst movu%s %1, %0 */", op[0], op[1], op[2]); - printf (" im = 0x%x,", im); + printf (" p = 0x%x,", p); + printf (" sz = 0x%x,", sz); + printf (" rsrc = 0x%x,", rsrc); printf (" rdst = 0x%x\n", rdst); } - SYNTAX("max #%1, %0"); -#line 570 "rx-decode.opc" - if (im == 0 && (unsigned) val == 0x80000000 && rdst == 0) - { - ID(nop7); - SYNTAX ("nop\t; max\t#0x80000000, r0"); - } - else - { - ID(max); - } - DR(rdst); SC(val); + SYNTAX("movu%s %1, %0"); +#line 358 "rx-decode.opc" + ID(mov); uBW (sz); DR(rdst); F_____; + OP(1, p ? RX_Operand_Predec : RX_Operand_Postinc, rsrc, 0); + + /*----------------------------------------------------------------------*/ + /* PUSH/POP */ + } break; - case 0x50: - op_semantics_80: + } + break; + case 0x39: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_89; + break; + } + break; + case 0x3a: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_89; + break; + } + break; + case 0x3c: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_89; + break; + } + break; + case 0x3d: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_89; + break; + } + break; + case 0x3e: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_89; + break; + } + break; + case 0x44: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + op_semantics_90: { - /** 1111 1101 0111 im00 0101rdst min #%1, %0 */ -#line 590 "rx-decode.opc" - int im AU = (op[1] >> 2) & 0x03; -#line 590 "rx-decode.opc" - int rdst AU = op[2] & 0x0f; + /** 1111 1101 0100 a100 srca srcb msbhi %1, %2, %0 */ +#line 1070 "rx-decode.opc" + int a AU = (op[1] >> 3) & 0x01; +#line 1070 "rx-decode.opc" + int srca AU = (op[2] >> 4) & 0x0f; +#line 1070 "rx-decode.opc" + int srcb AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0111 im00 0101rdst min #%1, %0 */", + "/** 1111 1101 0100 a100 srca srcb msbhi %1, %2, %0 */", op[0], op[1], op[2]); - printf (" im = 0x%x,", im); - printf (" rdst = 0x%x\n", rdst); + printf (" a = 0x%x,", a); + printf (" srca = 0x%x,", srca); + printf (" srcb = 0x%x\n", srcb); } - SYNTAX("min #%1, %0"); -#line 590 "rx-decode.opc" - ID(min); DR(rdst); SC(IMMex(im)); + SYNTAX("msbhi %1, %2, %0"); +#line 1070 "rx-decode.opc" + ID(msbhi); DR(a+32); SR(srca); S2R(srcb); F_____; } break; - case 0x60: - op_semantics_81: + } + break; + case 0x45: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + op_semantics_91: { - /** 1111 1101 0111 im00 0110rdst emul #%1, %0 */ -#line 620 "rx-decode.opc" - int im AU = (op[1] >> 2) & 0x03; -#line 620 "rx-decode.opc" - int rdst AU = op[2] & 0x0f; + /** 1111 1101 0100 a101 srca srcb msblo %1, %2, %0 */ +#line 1076 "rx-decode.opc" + int a AU = (op[1] >> 3) & 0x01; +#line 1076 "rx-decode.opc" + int srca AU = (op[2] >> 4) & 0x0f; +#line 1076 "rx-decode.opc" + int srcb AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0111 im00 0110rdst emul #%1, %0 */", + "/** 1111 1101 0100 a101 srca srcb msblo %1, %2, %0 */", op[0], op[1], op[2]); - printf (" im = 0x%x,", im); - printf (" rdst = 0x%x\n", rdst); + printf (" a = 0x%x,", a); + printf (" srca = 0x%x,", srca); + printf (" srcb = 0x%x\n", srcb); } - SYNTAX("emul #%1, %0"); -#line 620 "rx-decode.opc" - ID(emul); DR(rdst); SC(IMMex(im)); + SYNTAX("msblo %1, %2, %0"); +#line 1076 "rx-decode.opc" + ID(msblo); DR(a+32); SR(srca); S2R(srcb); F_____; } break; - case 0x70: - op_semantics_82: + } + break; + case 0x46: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + op_semantics_92: { - /** 1111 1101 0111 im00 0111rdst emulu #%1, %0 */ -#line 632 "rx-decode.opc" - int im AU = (op[1] >> 2) & 0x03; -#line 632 "rx-decode.opc" - int rdst AU = op[2] & 0x0f; + /** 1111 1101 0100 a110 srca srcb msblh %1, %2, %0 */ +#line 1073 "rx-decode.opc" + int a AU = (op[1] >> 3) & 0x01; +#line 1073 "rx-decode.opc" + int srca AU = (op[2] >> 4) & 0x0f; +#line 1073 "rx-decode.opc" + int srcb AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0111 im00 0111rdst emulu #%1, %0 */", + "/** 1111 1101 0100 a110 srca srcb msblh %1, %2, %0 */", op[0], op[1], op[2]); - printf (" im = 0x%x,", im); - printf (" rdst = 0x%x\n", rdst); + printf (" a = 0x%x,", a); + printf (" srca = 0x%x,", srca); + printf (" srcb = 0x%x\n", srcb); } - SYNTAX("emulu #%1, %0"); -#line 632 "rx-decode.opc" - ID(emulu); DR(rdst); SC(IMMex(im)); + SYNTAX("msblh %1, %2, %0"); +#line 1073 "rx-decode.opc" + ID(msblh); DR(a+32); SR(srca); S2R(srcb); F_____; } break; - case 0x80: - op_semantics_83: + } + break; + case 0x47: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + op_semantics_93: { - /** 1111 1101 0111 im00 1000rdst div #%1, %0 */ -#line 644 "rx-decode.opc" - int im AU = (op[1] >> 2) & 0x03; -#line 644 "rx-decode.opc" - int rdst AU = op[2] & 0x0f; + /** 1111 1101 0100 a111 srca srcb emsba %1, %2, %0 */ +#line 1061 "rx-decode.opc" + int a AU = (op[1] >> 3) & 0x01; +#line 1061 "rx-decode.opc" + int srca AU = (op[2] >> 4) & 0x0f; +#line 1061 "rx-decode.opc" + int srcb AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0111 im00 1000rdst div #%1, %0 */", + "/** 1111 1101 0100 a111 srca srcb emsba %1, %2, %0 */", op[0], op[1], op[2]); - printf (" im = 0x%x,", im); - printf (" rdst = 0x%x\n", rdst); + printf (" a = 0x%x,", a); + printf (" srca = 0x%x,", srca); + printf (" srcb = 0x%x\n", srcb); } - SYNTAX("div #%1, %0"); -#line 644 "rx-decode.opc" - ID(div); DR(rdst); SC(IMMex(im)); F_O___; + SYNTAX("emsba %1, %2, %0"); +#line 1061 "rx-decode.opc" + ID(emsba); DR(a+32); SR(srca); S2R(srcb); F_____; } break; - case 0x90: - op_semantics_84: + } + break; + case 0x4c: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_90; + break; + } + break; + case 0x4d: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_91; + break; + } + break; + case 0x4e: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_92; + break; + } + break; + case 0x4f: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_93; + break; + } + break; + case 0x60: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: { - /** 1111 1101 0111 im00 1001rdst divu #%1, %0 */ -#line 656 "rx-decode.opc" - int im AU = (op[1] >> 2) & 0x03; -#line 656 "rx-decode.opc" + /** 1111 1101 0110 0000 rsrc rdst shlr %2, %0 */ +#line 729 "rx-decode.opc" + int rsrc AU = (op[2] >> 4) & 0x0f; +#line 729 "rx-decode.opc" int rdst AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0111 im00 1001rdst divu #%1, %0 */", + "/** 1111 1101 0110 0000 rsrc rdst shlr %2, %0 */", op[0], op[1], op[2]); - printf (" im = 0x%x,", im); + printf (" rsrc = 0x%x,", rsrc); printf (" rdst = 0x%x\n", rdst); } - SYNTAX("divu #%1, %0"); -#line 656 "rx-decode.opc" - ID(divu); DR(rdst); SC(IMMex(im)); F_O___; + SYNTAX("shlr %2, %0"); +#line 729 "rx-decode.opc" + ID(shlr); S2R(rsrc); SR(rdst); DR(rdst); F__SZC; } break; - case 0xc0: - op_semantics_85: + } + break; + case 0x61: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: { - /** 1111 1101 0111 im00 1100rdst tst #%1, %2 */ -#line 467 "rx-decode.opc" - int im AU = (op[1] >> 2) & 0x03; -#line 467 "rx-decode.opc" + /** 1111 1101 0110 0001 rsrc rdst shar %2, %0 */ +#line 719 "rx-decode.opc" + int rsrc AU = (op[2] >> 4) & 0x0f; +#line 719 "rx-decode.opc" int rdst AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0111 im00 1100rdst tst #%1, %2 */", + "/** 1111 1101 0110 0001 rsrc rdst shar %2, %0 */", op[0], op[1], op[2]); - printf (" im = 0x%x,", im); + printf (" rsrc = 0x%x,", rsrc); printf (" rdst = 0x%x\n", rdst); } - SYNTAX("tst #%1, %2"); -#line 467 "rx-decode.opc" - ID(and); SC(IMMex(im)); S2R(rdst); F__SZ_; + SYNTAX("shar %2, %0"); +#line 719 "rx-decode.opc" + ID(shar); S2R(rsrc); SR(rdst); DR(rdst); F_0SZC; } break; - case 0xd0: - op_semantics_86: + } + break; + case 0x62: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: { - /** 1111 1101 0111 im00 1101rdst xor #%1, %0 */ -#line 446 "rx-decode.opc" - int im AU = (op[1] >> 2) & 0x03; -#line 446 "rx-decode.opc" + /** 1111 1101 0110 0010 rsrc rdst shll %2, %0 */ +#line 709 "rx-decode.opc" + int rsrc AU = (op[2] >> 4) & 0x0f; +#line 709 "rx-decode.opc" int rdst AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0111 im00 1101rdst xor #%1, %0 */", + "/** 1111 1101 0110 0010 rsrc rdst shll %2, %0 */", op[0], op[1], op[2]); - printf (" im = 0x%x,", im); + printf (" rsrc = 0x%x,", rsrc); printf (" rdst = 0x%x\n", rdst); } - SYNTAX("xor #%1, %0"); -#line 446 "rx-decode.opc" - ID(xor); SC(IMMex(im)); DR(rdst); F__SZ_; + SYNTAX("shll %2, %0"); +#line 709 "rx-decode.opc" + ID(shll); S2R(rsrc); SR(rdst); DR(rdst); F_OSZC; } break; - case 0xe0: - op_semantics_87: + } + break; + case 0x64: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: { - /** 1111 1101 0111 im00 1110rdst stz #%1, %0 */ -#line 392 "rx-decode.opc" - int im AU = (op[1] >> 2) & 0x03; -#line 392 "rx-decode.opc" + /** 1111 1101 0110 0100 rsrc rdst rotr %1, %0 */ +#line 753 "rx-decode.opc" + int rsrc AU = (op[2] >> 4) & 0x0f; +#line 753 "rx-decode.opc" int rdst AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0111 im00 1110rdst stz #%1, %0 */", + "/** 1111 1101 0110 0100 rsrc rdst rotr %1, %0 */", op[0], op[1], op[2]); - printf (" im = 0x%x,", im); + printf (" rsrc = 0x%x,", rsrc); printf (" rdst = 0x%x\n", rdst); } - SYNTAX("stz #%1, %0"); -#line 392 "rx-decode.opc" - ID(stcc); SC(IMMex(im)); DR(rdst); S2cc(RXC_z); + SYNTAX("rotr %1, %0"); +#line 753 "rx-decode.opc" + ID(rotr); SR(rsrc); DR(rdst); F__SZC; } break; - case 0xf0: - op_semantics_88: + } + break; + case 0x65: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: { - /** 1111 1101 0111 im00 1111rdst stnz #%1, %0 */ -#line 395 "rx-decode.opc" - int im AU = (op[1] >> 2) & 0x03; -#line 395 "rx-decode.opc" + /** 1111 1101 0110 0101 rsrc rdst revw %1, %0 */ +#line 756 "rx-decode.opc" + int rsrc AU = (op[2] >> 4) & 0x0f; +#line 756 "rx-decode.opc" int rdst AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0111 im00 1111rdst stnz #%1, %0 */", + "/** 1111 1101 0110 0101 rsrc rdst revw %1, %0 */", op[0], op[1], op[2]); - printf (" im = 0x%x,", im); + printf (" rsrc = 0x%x,", rsrc); printf (" rdst = 0x%x\n", rdst); } - SYNTAX("stnz #%1, %0"); -#line 395 "rx-decode.opc" - ID(stcc); SC(IMMex(im)); DR(rdst); S2cc(RXC_nz); - - /*----------------------------------------------------------------------*/ - /* RTSD */ + SYNTAX("revw %1, %0"); +#line 756 "rx-decode.opc" + ID(revw); SR(rsrc); DR(rdst); } break; - default: UNSUPPORTED(); break; } break; - case 0x72: + case 0x66: GETBYTE (); - switch (op[2] & 0xf0) + switch (op[2] & 0x00) { case 0x00: { - /** 1111 1101 0111 0010 0000 rdst fsub #%1, %0 */ -#line 864 "rx-decode.opc" + /** 1111 1101 0110 0110 rsrc rdst rotl %1, %0 */ +#line 747 "rx-decode.opc" + int rsrc AU = (op[2] >> 4) & 0x0f; +#line 747 "rx-decode.opc" int rdst AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0111 0010 0000 rdst fsub #%1, %0 */", + "/** 1111 1101 0110 0110 rsrc rdst rotl %1, %0 */", op[0], op[1], op[2]); + printf (" rsrc = 0x%x,", rsrc); printf (" rdst = 0x%x\n", rdst); } - SYNTAX("fsub #%1, %0"); -#line 864 "rx-decode.opc" - ID(fsub); DR(rdst); SC(IMM(0)); F__SZ_; + SYNTAX("rotl %1, %0"); +#line 747 "rx-decode.opc" + ID(rotl); SR(rsrc); DR(rdst); F__SZC; } break; - case 0x10: + } + break; + case 0x67: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: { - /** 1111 1101 0111 0010 0001 rdst fcmp #%1, %0 */ -#line 858 "rx-decode.opc" + /** 1111 1101 0110 0111 rsrc rdst revl %1, %0 */ +#line 759 "rx-decode.opc" + int rsrc AU = (op[2] >> 4) & 0x0f; +#line 759 "rx-decode.opc" int rdst AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0111 0010 0001 rdst fcmp #%1, %0 */", + "/** 1111 1101 0110 0111 rsrc rdst revl %1, %0 */", op[0], op[1], op[2]); + printf (" rsrc = 0x%x,", rsrc); printf (" rdst = 0x%x\n", rdst); } - SYNTAX("fcmp #%1, %0"); -#line 858 "rx-decode.opc" - ID(fcmp); DR(rdst); SC(IMM(0)); F_OSZ_; + SYNTAX("revl %1, %0"); +#line 759 "rx-decode.opc" + ID(revl); SR(rsrc); DR(rdst); + + /*----------------------------------------------------------------------*/ + /* BRANCH */ } break; - case 0x20: + } + break; + case 0x68: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + op_semantics_94: { - /** 1111 1101 0111 0010 0010 rdst fadd #%1, %0 */ -#line 852 "rx-decode.opc" + /** 1111 1101 0110 100c rsrc rdst mvtc %1, %0 */ +#line 1010 "rx-decode.opc" + int c AU = op[1] & 0x01; +#line 1010 "rx-decode.opc" + int rsrc AU = (op[2] >> 4) & 0x0f; +#line 1010 "rx-decode.opc" int rdst AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 0111 0010 0010 rdst fadd #%1, %0 */", + "/** 1111 1101 0110 100c rsrc rdst mvtc %1, %0 */", op[0], op[1], op[2]); + printf (" c = 0x%x,", c); + printf (" rsrc = 0x%x,", rsrc); printf (" rdst = 0x%x\n", rdst); } - SYNTAX("fadd #%1, %0"); -#line 852 "rx-decode.opc" - ID(fadd); DR(rdst); SC(IMM(0)); F__SZ_; + SYNTAX("mvtc %1, %0"); +#line 1010 "rx-decode.opc" + ID(mov); SR(rsrc); DR(c*16+rdst + 16); } break; - case 0x30: - { - /** 1111 1101 0111 0010 0011 rdst fmul #%1, %0 */ -#line 873 "rx-decode.opc" - int rdst AU = op[2] & 0x0f; - if (trace) - { - printf ("\033[33m%s\033[0m %02x %02x %02x\n", + } + break; + case 0x69: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_94; + break; + } + break; + case 0x6a: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + op_semantics_95: + { + /** 1111 1101 0110 101s rsrc rdst mvfc %1, %0 */ +#line 1013 "rx-decode.opc" + int s AU = op[1] & 0x01; +#line 1013 "rx-decode.opc" + int rsrc AU = (op[2] >> 4) & 0x0f; +#line 1013 "rx-decode.opc" + int rdst AU = op[2] & 0x0f; + if (trace) + { + printf ("\033[33m%s\033[0m %02x %02x %02x\n", + "/** 1111 1101 0110 101s rsrc rdst mvfc %1, %0 */", + op[0], op[1], op[2]); + printf (" s = 0x%x,", s); + printf (" rsrc = 0x%x,", rsrc); + printf (" rdst = 0x%x\n", rdst); + } + SYNTAX("mvfc %1, %0"); +#line 1013 "rx-decode.opc" + ID(mov); SR((s*16+rsrc) + 16); DR(rdst); + + /*----------------------------------------------------------------------*/ + /* INTERRUPTS */ + + } + break; + } + break; + case 0x6b: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_95; + break; + } + break; + case 0x6c: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + op_semantics_96: + { + /** 1111 1101 0110 110i mmmm rdst rotr #%1, %0 */ +#line 750 "rx-decode.opc" + int i AU = op[1] & 0x01; +#line 750 "rx-decode.opc" + int mmmm AU = (op[2] >> 4) & 0x0f; +#line 750 "rx-decode.opc" + int rdst AU = op[2] & 0x0f; + if (trace) + { + printf ("\033[33m%s\033[0m %02x %02x %02x\n", + "/** 1111 1101 0110 110i mmmm rdst rotr #%1, %0 */", + op[0], op[1], op[2]); + printf (" i = 0x%x,", i); + printf (" mmmm = 0x%x,", mmmm); + printf (" rdst = 0x%x\n", rdst); + } + SYNTAX("rotr #%1, %0"); +#line 750 "rx-decode.opc" + ID(rotr); SC(i*16+mmmm); DR(rdst); F__SZC; + + } + break; + } + break; + case 0x6d: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_96; + break; + } + break; + case 0x6e: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + op_semantics_97: + { + /** 1111 1101 0110 111i mmmm rdst rotl #%1, %0 */ +#line 744 "rx-decode.opc" + int i AU = op[1] & 0x01; +#line 744 "rx-decode.opc" + int mmmm AU = (op[2] >> 4) & 0x0f; +#line 744 "rx-decode.opc" + int rdst AU = op[2] & 0x0f; + if (trace) + { + printf ("\033[33m%s\033[0m %02x %02x %02x\n", + "/** 1111 1101 0110 111i mmmm rdst rotl #%1, %0 */", + op[0], op[1], op[2]); + printf (" i = 0x%x,", i); + printf (" mmmm = 0x%x,", mmmm); + printf (" rdst = 0x%x\n", rdst); + } + SYNTAX("rotl #%1, %0"); +#line 744 "rx-decode.opc" + ID(rotl); SC(i*16+mmmm); DR(rdst); F__SZC; + + } + break; + } + break; + case 0x6f: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_97; + break; + } + break; + case 0x70: + GETBYTE (); + switch (op[2] & 0xf0) + { + case 0x20: + op_semantics_98: + { + /** 1111 1101 0111 im00 0010rdst adc #%1, %0 */ +#line 488 "rx-decode.opc" + int im AU = (op[1] >> 2) & 0x03; +#line 488 "rx-decode.opc" + int rdst AU = op[2] & 0x0f; + if (trace) + { + printf ("\033[33m%s\033[0m %02x %02x %02x\n", + "/** 1111 1101 0111 im00 0010rdst adc #%1, %0 */", + op[0], op[1], op[2]); + printf (" im = 0x%x,", im); + printf (" rdst = 0x%x\n", rdst); + } + SYNTAX("adc #%1, %0"); +#line 488 "rx-decode.opc" + ID(adc); SC(IMMex(im)); DR(rdst); F_OSZC; + + } + break; + case 0x40: + op_semantics_99: + { + /** 1111 1101 0111 im00 0100rdst max #%1, %0 */ +#line 570 "rx-decode.opc" + int im AU = (op[1] >> 2) & 0x03; +#line 570 "rx-decode.opc" + int rdst AU = op[2] & 0x0f; + if (trace) + { + printf ("\033[33m%s\033[0m %02x %02x %02x\n", + "/** 1111 1101 0111 im00 0100rdst max #%1, %0 */", + op[0], op[1], op[2]); + printf (" im = 0x%x,", im); + printf (" rdst = 0x%x\n", rdst); + } + SYNTAX("max #%1, %0"); +#line 570 "rx-decode.opc" + int val = IMMex (im); + if (im == 0 && (unsigned) val == 0x80000000 && rdst == 0) + { + ID (nop7); + SYNTAX("nop\t; max\t#0x80000000, r0"); + } + else + { + ID(max); + } + DR(rdst); SC(val); + + } + break; + case 0x50: + op_semantics_100: + { + /** 1111 1101 0111 im00 0101rdst min #%1, %0 */ +#line 600 "rx-decode.opc" + int im AU = (op[1] >> 2) & 0x03; +#line 600 "rx-decode.opc" + int rdst AU = op[2] & 0x0f; + if (trace) + { + printf ("\033[33m%s\033[0m %02x %02x %02x\n", + "/** 1111 1101 0111 im00 0101rdst min #%1, %0 */", + op[0], op[1], op[2]); + printf (" im = 0x%x,", im); + printf (" rdst = 0x%x\n", rdst); + } + SYNTAX("min #%1, %0"); +#line 600 "rx-decode.opc" + ID(min); DR(rdst); SC(IMMex(im)); + + } + break; + case 0x60: + op_semantics_101: + { + /** 1111 1101 0111 im00 0110rdst emul #%1, %0 */ +#line 658 "rx-decode.opc" + int im AU = (op[1] >> 2) & 0x03; +#line 658 "rx-decode.opc" + int rdst AU = op[2] & 0x0f; + if (trace) + { + printf ("\033[33m%s\033[0m %02x %02x %02x\n", + "/** 1111 1101 0111 im00 0110rdst emul #%1, %0 */", + op[0], op[1], op[2]); + printf (" im = 0x%x,", im); + printf (" rdst = 0x%x\n", rdst); + } + SYNTAX("emul #%1, %0"); +#line 658 "rx-decode.opc" + ID(emul); DR(rdst); SC(IMMex(im)); + + } + break; + case 0x70: + op_semantics_102: + { + /** 1111 1101 0111 im00 0111rdst emulu #%1, %0 */ +#line 670 "rx-decode.opc" + int im AU = (op[1] >> 2) & 0x03; +#line 670 "rx-decode.opc" + int rdst AU = op[2] & 0x0f; + if (trace) + { + printf ("\033[33m%s\033[0m %02x %02x %02x\n", + "/** 1111 1101 0111 im00 0111rdst emulu #%1, %0 */", + op[0], op[1], op[2]); + printf (" im = 0x%x,", im); + printf (" rdst = 0x%x\n", rdst); + } + SYNTAX("emulu #%1, %0"); +#line 670 "rx-decode.opc" + ID(emulu); DR(rdst); SC(IMMex(im)); + + } + break; + case 0x80: + op_semantics_103: + { + /** 1111 1101 0111 im00 1000rdst div #%1, %0 */ +#line 682 "rx-decode.opc" + int im AU = (op[1] >> 2) & 0x03; +#line 682 "rx-decode.opc" + int rdst AU = op[2] & 0x0f; + if (trace) + { + printf ("\033[33m%s\033[0m %02x %02x %02x\n", + "/** 1111 1101 0111 im00 1000rdst div #%1, %0 */", + op[0], op[1], op[2]); + printf (" im = 0x%x,", im); + printf (" rdst = 0x%x\n", rdst); + } + SYNTAX("div #%1, %0"); +#line 682 "rx-decode.opc" + ID(div); DR(rdst); SC(IMMex(im)); F_O___; + + } + break; + case 0x90: + op_semantics_104: + { + /** 1111 1101 0111 im00 1001rdst divu #%1, %0 */ +#line 694 "rx-decode.opc" + int im AU = (op[1] >> 2) & 0x03; +#line 694 "rx-decode.opc" + int rdst AU = op[2] & 0x0f; + if (trace) + { + printf ("\033[33m%s\033[0m %02x %02x %02x\n", + "/** 1111 1101 0111 im00 1001rdst divu #%1, %0 */", + op[0], op[1], op[2]); + printf (" im = 0x%x,", im); + printf (" rdst = 0x%x\n", rdst); + } + SYNTAX("divu #%1, %0"); +#line 694 "rx-decode.opc" + ID(divu); DR(rdst); SC(IMMex(im)); F_O___; + + } + break; + case 0xc0: + op_semantics_105: + { + /** 1111 1101 0111 im00 1100rdst tst #%1, %2 */ +#line 467 "rx-decode.opc" + int im AU = (op[1] >> 2) & 0x03; +#line 467 "rx-decode.opc" + int rdst AU = op[2] & 0x0f; + if (trace) + { + printf ("\033[33m%s\033[0m %02x %02x %02x\n", + "/** 1111 1101 0111 im00 1100rdst tst #%1, %2 */", + op[0], op[1], op[2]); + printf (" im = 0x%x,", im); + printf (" rdst = 0x%x\n", rdst); + } + SYNTAX("tst #%1, %2"); +#line 467 "rx-decode.opc" + ID(and); SC(IMMex(im)); S2R(rdst); F__SZ_; + + } + break; + case 0xd0: + op_semantics_106: + { + /** 1111 1101 0111 im00 1101rdst xor #%1, %0 */ +#line 446 "rx-decode.opc" + int im AU = (op[1] >> 2) & 0x03; +#line 446 "rx-decode.opc" + int rdst AU = op[2] & 0x0f; + if (trace) + { + printf ("\033[33m%s\033[0m %02x %02x %02x\n", + "/** 1111 1101 0111 im00 1101rdst xor #%1, %0 */", + op[0], op[1], op[2]); + printf (" im = 0x%x,", im); + printf (" rdst = 0x%x\n", rdst); + } + SYNTAX("xor #%1, %0"); +#line 446 "rx-decode.opc" + ID(xor); SC(IMMex(im)); DR(rdst); F__SZ_; + + } + break; + case 0xe0: + op_semantics_107: + { + /** 1111 1101 0111 im00 1110rdst stz #%1, %0 */ +#line 392 "rx-decode.opc" + int im AU = (op[1] >> 2) & 0x03; +#line 392 "rx-decode.opc" + int rdst AU = op[2] & 0x0f; + if (trace) + { + printf ("\033[33m%s\033[0m %02x %02x %02x\n", + "/** 1111 1101 0111 im00 1110rdst stz #%1, %0 */", + op[0], op[1], op[2]); + printf (" im = 0x%x,", im); + printf (" rdst = 0x%x\n", rdst); + } + SYNTAX("stz #%1, %0"); +#line 392 "rx-decode.opc" + ID(stcc); SC(IMMex(im)); DR(rdst); S2cc(RXC_z); + + } + break; + case 0xf0: + op_semantics_108: + { + /** 1111 1101 0111 im00 1111rdst stnz #%1, %0 */ +#line 395 "rx-decode.opc" + int im AU = (op[1] >> 2) & 0x03; +#line 395 "rx-decode.opc" + int rdst AU = op[2] & 0x0f; + if (trace) + { + printf ("\033[33m%s\033[0m %02x %02x %02x\n", + "/** 1111 1101 0111 im00 1111rdst stnz #%1, %0 */", + op[0], op[1], op[2]); + printf (" im = 0x%x,", im); + printf (" rdst = 0x%x\n", rdst); + } + SYNTAX("stnz #%1, %0"); +#line 395 "rx-decode.opc" + ID(stcc); SC(IMMex(im)); DR(rdst); S2cc(RXC_nz); + + /*----------------------------------------------------------------------*/ + /* RTSD */ + + } + break; + default: UNSUPPORTED(); break; + } + break; + case 0x72: + GETBYTE (); + switch (op[2] & 0xf0) + { + case 0x00: + { + /** 1111 1101 0111 0010 0000 rdst fsub #%1, %0 */ +#line 902 "rx-decode.opc" + int rdst AU = op[2] & 0x0f; + if (trace) + { + printf ("\033[33m%s\033[0m %02x %02x %02x\n", + "/** 1111 1101 0111 0010 0000 rdst fsub #%1, %0 */", + op[0], op[1], op[2]); + printf (" rdst = 0x%x\n", rdst); + } + SYNTAX("fsub #%1, %0"); +#line 902 "rx-decode.opc" + ID(fsub); DR(rdst); SC(IMM(0)); F__SZ_; + + } + break; + case 0x10: + { + /** 1111 1101 0111 0010 0001 rdst fcmp #%1, %0 */ +#line 896 "rx-decode.opc" + int rdst AU = op[2] & 0x0f; + if (trace) + { + printf ("\033[33m%s\033[0m %02x %02x %02x\n", + "/** 1111 1101 0111 0010 0001 rdst fcmp #%1, %0 */", + op[0], op[1], op[2]); + printf (" rdst = 0x%x\n", rdst); + } + SYNTAX("fcmp #%1, %0"); +#line 896 "rx-decode.opc" + ID(fcmp); DR(rdst); SC(IMM(0)); F_OSZ_; + + } + break; + case 0x20: + { + /** 1111 1101 0111 0010 0010 rdst fadd #%1, %0 */ +#line 890 "rx-decode.opc" + int rdst AU = op[2] & 0x0f; + if (trace) + { + printf ("\033[33m%s\033[0m %02x %02x %02x\n", + "/** 1111 1101 0111 0010 0010 rdst fadd #%1, %0 */", + op[0], op[1], op[2]); + printf (" rdst = 0x%x\n", rdst); + } + SYNTAX("fadd #%1, %0"); +#line 890 "rx-decode.opc" + ID(fadd); DR(rdst); SC(IMM(0)); F__SZ_; + + } + break; + case 0x30: + { + /** 1111 1101 0111 0010 0011 rdst fmul #%1, %0 */ +#line 911 "rx-decode.opc" + int rdst AU = op[2] & 0x0f; + if (trace) + { + printf ("\033[33m%s\033[0m %02x %02x %02x\n", "/** 1111 1101 0111 0010 0011 rdst fmul #%1, %0 */", op[0], op[1], op[2]); printf (" rdst = 0x%x\n", rdst); } SYNTAX("fmul #%1, %0"); -#line 873 "rx-decode.opc" +#line 911 "rx-decode.opc" ID(fmul); DR(rdst); SC(IMM(0)); F__SZ_; } @@ -10664,7 +11667,7 @@ rx_decode_opcode (unsigned long pc AU, case 0x40: { /** 1111 1101 0111 0010 0100 rdst fdiv #%1, %0 */ -#line 879 "rx-decode.opc" +#line 917 "rx-decode.opc" int rdst AU = op[2] & 0x0f; if (trace) { @@ -10674,7 +11677,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("fdiv #%1, %0"); -#line 879 "rx-decode.opc" +#line 917 "rx-decode.opc" ID(fdiv); DR(rdst); SC(IMM(0)); F__SZ_; } @@ -10687,12 +11690,12 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0xe0) { case 0x00: - op_semantics_89: + op_semantics_109: { /** 1111 1101 0111 im11 000crdst mvtc #%1, %0 */ -#line 969 "rx-decode.opc" +#line 1007 "rx-decode.opc" int im AU = (op[1] >> 2) & 0x03; -#line 969 "rx-decode.opc" +#line 1007 "rx-decode.opc" int crdst AU = op[2] & 0x1f; if (trace) { @@ -10703,7 +11706,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" crdst = 0x%x\n", crdst); } SYNTAX("mvtc #%1, %0"); -#line 969 "rx-decode.opc" +#line 1007 "rx-decode.opc" ID(mov); SC(IMMex(im)); DR(crdst + 16); } @@ -10716,37 +11719,37 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0xf0) { case 0x20: - goto op_semantics_78; + goto op_semantics_98; break; case 0x40: - goto op_semantics_79; + goto op_semantics_99; break; case 0x50: - goto op_semantics_80; + goto op_semantics_100; break; case 0x60: - goto op_semantics_81; + goto op_semantics_101; break; case 0x70: - goto op_semantics_82; + goto op_semantics_102; break; case 0x80: - goto op_semantics_83; + goto op_semantics_103; break; case 0x90: - goto op_semantics_84; + goto op_semantics_104; break; case 0xc0: - goto op_semantics_85; + goto op_semantics_105; break; case 0xd0: - goto op_semantics_86; + goto op_semantics_106; break; case 0xe0: - goto op_semantics_87; + goto op_semantics_107; break; case 0xf0: - goto op_semantics_88; + goto op_semantics_108; break; default: UNSUPPORTED(); break; } @@ -10756,7 +11759,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0xe0) { case 0x00: - goto op_semantics_89; + goto op_semantics_109; break; default: UNSUPPORTED(); break; } @@ -10766,37 +11769,37 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0xf0) { case 0x20: - goto op_semantics_78; + goto op_semantics_98; break; case 0x40: - goto op_semantics_79; + goto op_semantics_99; break; case 0x50: - goto op_semantics_80; + goto op_semantics_100; break; case 0x60: - goto op_semantics_81; + goto op_semantics_101; break; case 0x70: - goto op_semantics_82; + goto op_semantics_102; break; case 0x80: - goto op_semantics_83; + goto op_semantics_103; break; case 0x90: - goto op_semantics_84; + goto op_semantics_104; break; case 0xc0: - goto op_semantics_85; + goto op_semantics_105; break; case 0xd0: - goto op_semantics_86; + goto op_semantics_106; break; case 0xe0: - goto op_semantics_87; + goto op_semantics_107; break; case 0xf0: - goto op_semantics_88; + goto op_semantics_108; break; default: UNSUPPORTED(); break; } @@ -10806,7 +11809,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0xe0) { case 0x00: - goto op_semantics_89; + goto op_semantics_109; break; default: UNSUPPORTED(); break; } @@ -10816,37 +11819,37 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0xf0) { case 0x20: - goto op_semantics_78; + goto op_semantics_98; break; case 0x40: - goto op_semantics_79; + goto op_semantics_99; break; case 0x50: - goto op_semantics_80; + goto op_semantics_100; break; case 0x60: - goto op_semantics_81; + goto op_semantics_101; break; case 0x70: - goto op_semantics_82; + goto op_semantics_102; break; case 0x80: - goto op_semantics_83; + goto op_semantics_103; break; case 0x90: - goto op_semantics_84; + goto op_semantics_104; break; case 0xc0: - goto op_semantics_85; + goto op_semantics_105; break; case 0xd0: - goto op_semantics_86; + goto op_semantics_106; break; case 0xe0: - goto op_semantics_87; + goto op_semantics_107; break; case 0xf0: - goto op_semantics_88; + goto op_semantics_108; break; default: UNSUPPORTED(); break; } @@ -10856,7 +11859,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0xe0) { case 0x00: - goto op_semantics_89; + goto op_semantics_109; break; default: UNSUPPORTED(); break; } @@ -10866,14 +11869,14 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - op_semantics_90: + op_semantics_110: { /** 1111 1101 100immmm rsrc rdst shlr #%2, %1, %0 */ -#line 694 "rx-decode.opc" +#line 732 "rx-decode.opc" int immmm AU = op[1] & 0x1f; -#line 694 "rx-decode.opc" +#line 732 "rx-decode.opc" int rsrc AU = (op[2] >> 4) & 0x0f; -#line 694 "rx-decode.opc" +#line 732 "rx-decode.opc" int rdst AU = op[2] & 0x0f; if (trace) { @@ -10885,7 +11888,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("shlr #%2, %1, %0"); -#line 694 "rx-decode.opc" +#line 732 "rx-decode.opc" ID(shlr); S2C(immmm); SR(rsrc); DR(rdst); F__SZC; /*----------------------------------------------------------------------*/ @@ -10900,7 +11903,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_90; + goto op_semantics_110; break; } break; @@ -10909,7 +11912,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_90; + goto op_semantics_110; break; } break; @@ -10918,7 +11921,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_90; + goto op_semantics_110; break; } break; @@ -10927,7 +11930,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_90; + goto op_semantics_110; break; } break; @@ -10936,7 +11939,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_90; + goto op_semantics_110; break; } break; @@ -10945,7 +11948,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_90; + goto op_semantics_110; break; } break; @@ -10954,7 +11957,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_90; + goto op_semantics_110; break; } break; @@ -10963,7 +11966,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_90; + goto op_semantics_110; break; } break; @@ -10972,7 +11975,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_90; + goto op_semantics_110; break; } break; @@ -10981,7 +11984,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_90; + goto op_semantics_110; break; } break; @@ -10990,7 +11993,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_90; + goto op_semantics_110; break; } break; @@ -10999,7 +12002,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_90; + goto op_semantics_110; break; } break; @@ -11008,7 +12011,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_90; + goto op_semantics_110; break; } break; @@ -11017,7 +12020,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_90; + goto op_semantics_110; break; } break; @@ -11026,7 +12029,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_90; + goto op_semantics_110; break; } break; @@ -11035,7 +12038,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_90; + goto op_semantics_110; break; } break; @@ -11044,7 +12047,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_90; + goto op_semantics_110; break; } break; @@ -11053,7 +12056,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_90; + goto op_semantics_110; break; } break; @@ -11062,7 +12065,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_90; + goto op_semantics_110; break; } break; @@ -11071,7 +12074,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_90; + goto op_semantics_110; break; } break; @@ -11080,7 +12083,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_90; + goto op_semantics_110; break; } break; @@ -11089,7 +12092,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_90; + goto op_semantics_110; break; } break; @@ -11098,7 +12101,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_90; + goto op_semantics_110; break; } break; @@ -11107,7 +12110,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_90; + goto op_semantics_110; break; } break; @@ -11116,7 +12119,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_90; + goto op_semantics_110; break; } break; @@ -11125,7 +12128,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_90; + goto op_semantics_110; break; } break; @@ -11134,7 +12137,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_90; + goto op_semantics_110; break; } break; @@ -11143,7 +12146,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_90; + goto op_semantics_110; break; } break; @@ -11152,7 +12155,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_90; + goto op_semantics_110; break; } break; @@ -11161,7 +12164,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_90; + goto op_semantics_110; break; } break; @@ -11170,7 +12173,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_90; + goto op_semantics_110; break; } break; @@ -11179,14 +12182,14 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - op_semantics_91: + op_semantics_111: { /** 1111 1101 101immmm rsrc rdst shar #%2, %1, %0 */ -#line 684 "rx-decode.opc" +#line 722 "rx-decode.opc" int immmm AU = op[1] & 0x1f; -#line 684 "rx-decode.opc" +#line 722 "rx-decode.opc" int rsrc AU = (op[2] >> 4) & 0x0f; -#line 684 "rx-decode.opc" +#line 722 "rx-decode.opc" int rdst AU = op[2] & 0x0f; if (trace) { @@ -11198,7 +12201,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("shar #%2, %1, %0"); -#line 684 "rx-decode.opc" +#line 722 "rx-decode.opc" ID(shar); S2C(immmm); SR(rsrc); DR(rdst); F_0SZC; @@ -11211,7 +12214,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_91; + goto op_semantics_111; break; } break; @@ -11220,7 +12223,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_91; + goto op_semantics_111; break; } break; @@ -11229,7 +12232,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_91; + goto op_semantics_111; break; } break; @@ -11238,7 +12241,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_91; + goto op_semantics_111; break; } break; @@ -11247,7 +12250,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_91; + goto op_semantics_111; break; } break; @@ -11256,7 +12259,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_91; + goto op_semantics_111; break; } break; @@ -11265,7 +12268,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_91; + goto op_semantics_111; break; } break; @@ -11274,7 +12277,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_91; + goto op_semantics_111; break; } break; @@ -11283,7 +12286,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_91; + goto op_semantics_111; break; } break; @@ -11292,7 +12295,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_91; + goto op_semantics_111; break; } break; @@ -11301,7 +12304,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_91; + goto op_semantics_111; break; } break; @@ -11310,7 +12313,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_91; + goto op_semantics_111; break; } break; @@ -11319,7 +12322,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_91; + goto op_semantics_111; break; } break; @@ -11328,7 +12331,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_91; + goto op_semantics_111; break; } break; @@ -11337,7 +12340,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_91; + goto op_semantics_111; break; } break; @@ -11346,7 +12349,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_91; + goto op_semantics_111; break; } break; @@ -11355,7 +12358,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_91; + goto op_semantics_111; break; } break; @@ -11364,7 +12367,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_91; + goto op_semantics_111; break; } break; @@ -11373,7 +12376,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_91; + goto op_semantics_111; break; } break; @@ -11382,7 +12385,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_91; + goto op_semantics_111; break; } break; @@ -11391,7 +12394,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_91; + goto op_semantics_111; break; } break; @@ -11400,7 +12403,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_91; + goto op_semantics_111; break; } break; @@ -11409,7 +12412,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_91; + goto op_semantics_111; break; } break; @@ -11418,7 +12421,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_91; + goto op_semantics_111; break; } break; @@ -11427,7 +12430,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_91; + goto op_semantics_111; break; } break; @@ -11436,7 +12439,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_91; + goto op_semantics_111; break; } break; @@ -11445,7 +12448,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_91; + goto op_semantics_111; break; } break; @@ -11454,7 +12457,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_91; + goto op_semantics_111; break; } break; @@ -11463,7 +12466,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_91; + goto op_semantics_111; break; } break; @@ -11472,7 +12475,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_91; + goto op_semantics_111; break; } break; @@ -11481,7 +12484,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_91; + goto op_semantics_111; break; } break; @@ -11490,14 +12493,14 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - op_semantics_92: + op_semantics_112: { /** 1111 1101 110immmm rsrc rdst shll #%2, %1, %0 */ -#line 674 "rx-decode.opc" +#line 712 "rx-decode.opc" int immmm AU = op[1] & 0x1f; -#line 674 "rx-decode.opc" +#line 712 "rx-decode.opc" int rsrc AU = (op[2] >> 4) & 0x0f; -#line 674 "rx-decode.opc" +#line 712 "rx-decode.opc" int rdst AU = op[2] & 0x0f; if (trace) { @@ -11509,7 +12512,7 @@ rx_decode_opcode (unsigned long pc AU, printf (" rdst = 0x%x\n", rdst); } SYNTAX("shll #%2, %1, %0"); -#line 674 "rx-decode.opc" +#line 712 "rx-decode.opc" ID(shll); S2C(immmm); SR(rsrc); DR(rdst); F_OSZC; @@ -11522,7 +12525,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_92; + goto op_semantics_112; break; } break; @@ -11531,7 +12534,7 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_92; + goto op_semantics_112; break; } break; @@ -11540,263 +12543,750 @@ rx_decode_opcode (unsigned long pc AU, switch (op[2] & 0x00) { case 0x00: - goto op_semantics_92; + goto op_semantics_112; + break; + } + break; + case 0xc4: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_112; + break; + } + break; + case 0xc5: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_112; + break; + } + break; + case 0xc6: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_112; + break; + } + break; + case 0xc7: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_112; + break; + } + break; + case 0xc8: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_112; + break; + } + break; + case 0xc9: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_112; + break; + } + break; + case 0xca: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_112; + break; + } + break; + case 0xcb: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_112; + break; + } + break; + case 0xcc: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_112; + break; + } + break; + case 0xcd: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_112; + break; + } + break; + case 0xce: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_112; + break; + } + break; + case 0xcf: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_112; + break; + } + break; + case 0xd0: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_112; + break; + } + break; + case 0xd1: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_112; + break; + } + break; + case 0xd2: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_112; + break; + } + break; + case 0xd3: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_112; + break; + } + break; + case 0xd4: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_112; break; } break; - case 0xc4: + case 0xd5: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_92; + goto op_semantics_112; break; } break; - case 0xc5: + case 0xd6: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_92; + goto op_semantics_112; break; } break; - case 0xc6: + case 0xd7: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_92; + goto op_semantics_112; break; } break; - case 0xc7: + case 0xd8: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_92; + goto op_semantics_112; break; } break; - case 0xc8: + case 0xd9: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_92; + goto op_semantics_112; break; } break; - case 0xc9: + case 0xda: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_92; + goto op_semantics_112; break; } break; - case 0xca: + case 0xdb: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_92; + goto op_semantics_112; break; } break; - case 0xcb: + case 0xdc: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_92; + goto op_semantics_112; break; } break; - case 0xcc: + case 0xdd: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_92; + goto op_semantics_112; break; } break; - case 0xcd: + case 0xde: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_92; + goto op_semantics_112; break; } break; - case 0xce: + case 0xdf: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_92; + goto op_semantics_112; break; } break; - case 0xcf: + case 0xe0: GETBYTE (); - switch (op[2] & 0x00) + switch (op[2] & 0xf0) { case 0x00: - goto op_semantics_92; + case 0x10: + case 0x20: + case 0x30: + case 0x40: + case 0x50: + case 0x60: + case 0x70: + case 0x80: + case 0x90: + case 0xa0: + case 0xb0: + case 0xc0: + case 0xd0: + case 0xe0: + op_semantics_113: + { + /** 1111 1101 111 bittt cond rdst bm%2 #%1, %0%S0 */ +#line 986 "rx-decode.opc" + int bittt AU = op[1] & 0x1f; +#line 986 "rx-decode.opc" + int cond AU = (op[2] >> 4) & 0x0f; +#line 986 "rx-decode.opc" + int rdst AU = op[2] & 0x0f; + if (trace) + { + printf ("\033[33m%s\033[0m %02x %02x %02x\n", + "/** 1111 1101 111 bittt cond rdst bm%2 #%1, %0%S0 */", + op[0], op[1], op[2]); + printf (" bittt = 0x%x,", bittt); + printf (" cond = 0x%x,", cond); + printf (" rdst = 0x%x\n", rdst); + } + SYNTAX("bm%2 #%1, %0%S0"); +#line 986 "rx-decode.opc" + ID(bmcc); BWL(LSIZE); S2cc(cond); SC(bittt); DR(rdst); + + /*----------------------------------------------------------------------*/ + /* CONTROL REGISTERS */ + + } + break; + case 0xf0: + op_semantics_114: + { + /** 1111 1101 111bittt 1111 rdst bnot #%1, %0 */ +#line 979 "rx-decode.opc" + int bittt AU = op[1] & 0x1f; +#line 979 "rx-decode.opc" + int rdst AU = op[2] & 0x0f; + if (trace) + { + printf ("\033[33m%s\033[0m %02x %02x %02x\n", + "/** 1111 1101 111bittt 1111 rdst bnot #%1, %0 */", + op[0], op[1], op[2]); + printf (" bittt = 0x%x,", bittt); + printf (" rdst = 0x%x\n", rdst); + } + SYNTAX("bnot #%1, %0"); +#line 979 "rx-decode.opc" + ID(bnot); BWL(LSIZE); SC(bittt); DR(rdst); + + + } break; } break; - case 0xd0: + case 0xe1: GETBYTE (); - switch (op[2] & 0x00) + switch (op[2] & 0xf0) { case 0x00: - goto op_semantics_92; + case 0x10: + case 0x20: + case 0x30: + case 0x40: + case 0x50: + case 0x60: + case 0x70: + case 0x80: + case 0x90: + case 0xa0: + case 0xb0: + case 0xc0: + case 0xd0: + case 0xe0: + goto op_semantics_113; + break; + case 0xf0: + goto op_semantics_114; break; } break; - case 0xd1: + case 0xe2: GETBYTE (); - switch (op[2] & 0x00) + switch (op[2] & 0xf0) { case 0x00: - goto op_semantics_92; + case 0x10: + case 0x20: + case 0x30: + case 0x40: + case 0x50: + case 0x60: + case 0x70: + case 0x80: + case 0x90: + case 0xa0: + case 0xb0: + case 0xc0: + case 0xd0: + case 0xe0: + goto op_semantics_113; + break; + case 0xf0: + goto op_semantics_114; break; } break; - case 0xd2: + case 0xe3: GETBYTE (); - switch (op[2] & 0x00) + switch (op[2] & 0xf0) { case 0x00: - goto op_semantics_92; + case 0x10: + case 0x20: + case 0x30: + case 0x40: + case 0x50: + case 0x60: + case 0x70: + case 0x80: + case 0x90: + case 0xa0: + case 0xb0: + case 0xc0: + case 0xd0: + case 0xe0: + goto op_semantics_113; + break; + case 0xf0: + goto op_semantics_114; break; } break; - case 0xd3: + case 0xe4: GETBYTE (); - switch (op[2] & 0x00) + switch (op[2] & 0xf0) { case 0x00: - goto op_semantics_92; + case 0x10: + case 0x20: + case 0x30: + case 0x40: + case 0x50: + case 0x60: + case 0x70: + case 0x80: + case 0x90: + case 0xa0: + case 0xb0: + case 0xc0: + case 0xd0: + case 0xe0: + goto op_semantics_113; + break; + case 0xf0: + goto op_semantics_114; break; } break; - case 0xd4: + case 0xe5: GETBYTE (); - switch (op[2] & 0x00) + switch (op[2] & 0xf0) { case 0x00: - goto op_semantics_92; + case 0x10: + case 0x20: + case 0x30: + case 0x40: + case 0x50: + case 0x60: + case 0x70: + case 0x80: + case 0x90: + case 0xa0: + case 0xb0: + case 0xc0: + case 0xd0: + case 0xe0: + goto op_semantics_113; + break; + case 0xf0: + goto op_semantics_114; break; } break; - case 0xd5: + case 0xe6: GETBYTE (); - switch (op[2] & 0x00) + switch (op[2] & 0xf0) { case 0x00: - goto op_semantics_92; + case 0x10: + case 0x20: + case 0x30: + case 0x40: + case 0x50: + case 0x60: + case 0x70: + case 0x80: + case 0x90: + case 0xa0: + case 0xb0: + case 0xc0: + case 0xd0: + case 0xe0: + goto op_semantics_113; + break; + case 0xf0: + goto op_semantics_114; break; } break; - case 0xd6: + case 0xe7: GETBYTE (); - switch (op[2] & 0x00) + switch (op[2] & 0xf0) { case 0x00: - goto op_semantics_92; + case 0x10: + case 0x20: + case 0x30: + case 0x40: + case 0x50: + case 0x60: + case 0x70: + case 0x80: + case 0x90: + case 0xa0: + case 0xb0: + case 0xc0: + case 0xd0: + case 0xe0: + goto op_semantics_113; + break; + case 0xf0: + goto op_semantics_114; break; } break; - case 0xd7: + case 0xe8: GETBYTE (); - switch (op[2] & 0x00) + switch (op[2] & 0xf0) { case 0x00: - goto op_semantics_92; + case 0x10: + case 0x20: + case 0x30: + case 0x40: + case 0x50: + case 0x60: + case 0x70: + case 0x80: + case 0x90: + case 0xa0: + case 0xb0: + case 0xc0: + case 0xd0: + case 0xe0: + goto op_semantics_113; + break; + case 0xf0: + goto op_semantics_114; break; } break; - case 0xd8: + case 0xe9: GETBYTE (); - switch (op[2] & 0x00) + switch (op[2] & 0xf0) { case 0x00: - goto op_semantics_92; + case 0x10: + case 0x20: + case 0x30: + case 0x40: + case 0x50: + case 0x60: + case 0x70: + case 0x80: + case 0x90: + case 0xa0: + case 0xb0: + case 0xc0: + case 0xd0: + case 0xe0: + goto op_semantics_113; + break; + case 0xf0: + goto op_semantics_114; break; } break; - case 0xd9: + case 0xea: GETBYTE (); - switch (op[2] & 0x00) + switch (op[2] & 0xf0) { case 0x00: - goto op_semantics_92; + case 0x10: + case 0x20: + case 0x30: + case 0x40: + case 0x50: + case 0x60: + case 0x70: + case 0x80: + case 0x90: + case 0xa0: + case 0xb0: + case 0xc0: + case 0xd0: + case 0xe0: + goto op_semantics_113; + break; + case 0xf0: + goto op_semantics_114; break; } break; - case 0xda: + case 0xeb: GETBYTE (); - switch (op[2] & 0x00) + switch (op[2] & 0xf0) { case 0x00: - goto op_semantics_92; + case 0x10: + case 0x20: + case 0x30: + case 0x40: + case 0x50: + case 0x60: + case 0x70: + case 0x80: + case 0x90: + case 0xa0: + case 0xb0: + case 0xc0: + case 0xd0: + case 0xe0: + goto op_semantics_113; + break; + case 0xf0: + goto op_semantics_114; break; } break; - case 0xdb: + case 0xec: GETBYTE (); - switch (op[2] & 0x00) + switch (op[2] & 0xf0) { case 0x00: - goto op_semantics_92; + case 0x10: + case 0x20: + case 0x30: + case 0x40: + case 0x50: + case 0x60: + case 0x70: + case 0x80: + case 0x90: + case 0xa0: + case 0xb0: + case 0xc0: + case 0xd0: + case 0xe0: + goto op_semantics_113; + break; + case 0xf0: + goto op_semantics_114; break; } break; - case 0xdc: + case 0xed: GETBYTE (); - switch (op[2] & 0x00) + switch (op[2] & 0xf0) { case 0x00: - goto op_semantics_92; + case 0x10: + case 0x20: + case 0x30: + case 0x40: + case 0x50: + case 0x60: + case 0x70: + case 0x80: + case 0x90: + case 0xa0: + case 0xb0: + case 0xc0: + case 0xd0: + case 0xe0: + goto op_semantics_113; + break; + case 0xf0: + goto op_semantics_114; break; } break; - case 0xdd: + case 0xee: GETBYTE (); - switch (op[2] & 0x00) + switch (op[2] & 0xf0) { case 0x00: - goto op_semantics_92; + case 0x10: + case 0x20: + case 0x30: + case 0x40: + case 0x50: + case 0x60: + case 0x70: + case 0x80: + case 0x90: + case 0xa0: + case 0xb0: + case 0xc0: + case 0xd0: + case 0xe0: + goto op_semantics_113; + break; + case 0xf0: + goto op_semantics_114; break; } break; - case 0xde: + case 0xef: GETBYTE (); - switch (op[2] & 0x00) + switch (op[2] & 0xf0) { case 0x00: - goto op_semantics_92; + case 0x10: + case 0x20: + case 0x30: + case 0x40: + case 0x50: + case 0x60: + case 0x70: + case 0x80: + case 0x90: + case 0xa0: + case 0xb0: + case 0xc0: + case 0xd0: + case 0xe0: + goto op_semantics_113; + break; + case 0xf0: + goto op_semantics_114; break; } break; - case 0xdf: + case 0xf0: GETBYTE (); - switch (op[2] & 0x00) + switch (op[2] & 0xf0) { case 0x00: - goto op_semantics_92; + case 0x10: + case 0x20: + case 0x30: + case 0x40: + case 0x50: + case 0x60: + case 0x70: + case 0x80: + case 0x90: + case 0xa0: + case 0xb0: + case 0xc0: + case 0xd0: + case 0xe0: + goto op_semantics_113; + break; + case 0xf0: + goto op_semantics_114; break; } break; - case 0xe0: + case 0xf1: GETBYTE (); switch (op[2] & 0xf0) { @@ -11815,59 +13305,14 @@ rx_decode_opcode (unsigned long pc AU, case 0xc0: case 0xd0: case 0xe0: - op_semantics_93: - { - /** 1111 1101 111 bittt cond rdst bm%2 #%1, %0%S0 */ -#line 948 "rx-decode.opc" - int bittt AU = op[1] & 0x1f; -#line 948 "rx-decode.opc" - int cond AU = (op[2] >> 4) & 0x0f; -#line 948 "rx-decode.opc" - int rdst AU = op[2] & 0x0f; - if (trace) - { - printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 111 bittt cond rdst bm%2 #%1, %0%S0 */", - op[0], op[1], op[2]); - printf (" bittt = 0x%x,", bittt); - printf (" cond = 0x%x,", cond); - printf (" rdst = 0x%x\n", rdst); - } - SYNTAX("bm%2 #%1, %0%S0"); -#line 948 "rx-decode.opc" - ID(bmcc); BWL(LSIZE); S2cc(cond); SC(bittt); DR(rdst); - - /*----------------------------------------------------------------------*/ - /* CONTROL REGISTERS */ - - } + goto op_semantics_113; break; case 0xf0: - op_semantics_94: - { - /** 1111 1101 111bittt 1111 rdst bnot #%1, %0 */ -#line 941 "rx-decode.opc" - int bittt AU = op[1] & 0x1f; -#line 941 "rx-decode.opc" - int rdst AU = op[2] & 0x0f; - if (trace) - { - printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1101 111bittt 1111 rdst bnot #%1, %0 */", - op[0], op[1], op[2]); - printf (" bittt = 0x%x,", bittt); - printf (" rdst = 0x%x\n", rdst); - } - SYNTAX("bnot #%1, %0"); -#line 941 "rx-decode.opc" - ID(bnot); BWL(LSIZE); SC(bittt); DR(rdst); - - - } + goto op_semantics_114; break; } break; - case 0xe1: + case 0xf2: GETBYTE (); switch (op[2] & 0xf0) { @@ -11886,14 +13331,14 @@ rx_decode_opcode (unsigned long pc AU, case 0xc0: case 0xd0: case 0xe0: - goto op_semantics_93; + goto op_semantics_113; break; case 0xf0: - goto op_semantics_94; + goto op_semantics_114; break; } break; - case 0xe2: + case 0xf3: GETBYTE (); switch (op[2] & 0xf0) { @@ -11912,14 +13357,14 @@ rx_decode_opcode (unsigned long pc AU, case 0xc0: case 0xd0: case 0xe0: - goto op_semantics_93; + goto op_semantics_113; break; case 0xf0: - goto op_semantics_94; + goto op_semantics_114; break; } break; - case 0xe3: + case 0xf4: GETBYTE (); switch (op[2] & 0xf0) { @@ -11938,14 +13383,14 @@ rx_decode_opcode (unsigned long pc AU, case 0xc0: case 0xd0: case 0xe0: - goto op_semantics_93; + goto op_semantics_113; break; case 0xf0: - goto op_semantics_94; + goto op_semantics_114; break; } break; - case 0xe4: + case 0xf5: GETBYTE (); switch (op[2] & 0xf0) { @@ -11964,14 +13409,14 @@ rx_decode_opcode (unsigned long pc AU, case 0xc0: case 0xd0: case 0xe0: - goto op_semantics_93; + goto op_semantics_113; break; case 0xf0: - goto op_semantics_94; + goto op_semantics_114; break; } break; - case 0xe5: + case 0xf6: GETBYTE (); switch (op[2] & 0xf0) { @@ -11990,14 +13435,14 @@ rx_decode_opcode (unsigned long pc AU, case 0xc0: case 0xd0: case 0xe0: - goto op_semantics_93; + goto op_semantics_113; break; case 0xf0: - goto op_semantics_94; + goto op_semantics_114; break; } break; - case 0xe6: + case 0xf7: GETBYTE (); switch (op[2] & 0xf0) { @@ -12016,14 +13461,14 @@ rx_decode_opcode (unsigned long pc AU, case 0xc0: case 0xd0: case 0xe0: - goto op_semantics_93; + goto op_semantics_113; break; case 0xf0: - goto op_semantics_94; + goto op_semantics_114; break; } break; - case 0xe7: + case 0xf8: GETBYTE (); switch (op[2] & 0xf0) { @@ -12042,14 +13487,14 @@ rx_decode_opcode (unsigned long pc AU, case 0xc0: case 0xd0: case 0xe0: - goto op_semantics_93; + goto op_semantics_113; break; case 0xf0: - goto op_semantics_94; + goto op_semantics_114; break; } break; - case 0xe8: + case 0xf9: GETBYTE (); switch (op[2] & 0xf0) { @@ -12068,14 +13513,14 @@ rx_decode_opcode (unsigned long pc AU, case 0xc0: case 0xd0: case 0xe0: - goto op_semantics_93; + goto op_semantics_113; break; case 0xf0: - goto op_semantics_94; + goto op_semantics_114; break; } break; - case 0xe9: + case 0xfa: GETBYTE (); switch (op[2] & 0xf0) { @@ -12094,14 +13539,14 @@ rx_decode_opcode (unsigned long pc AU, case 0xc0: case 0xd0: case 0xe0: - goto op_semantics_93; + goto op_semantics_113; break; case 0xf0: - goto op_semantics_94; + goto op_semantics_114; break; } break; - case 0xea: + case 0xfb: GETBYTE (); switch (op[2] & 0xf0) { @@ -12120,14 +13565,14 @@ rx_decode_opcode (unsigned long pc AU, case 0xc0: case 0xd0: case 0xe0: - goto op_semantics_93; + goto op_semantics_113; break; case 0xf0: - goto op_semantics_94; + goto op_semantics_114; break; } break; - case 0xeb: + case 0xfc: GETBYTE (); switch (op[2] & 0xf0) { @@ -12146,14 +13591,14 @@ rx_decode_opcode (unsigned long pc AU, case 0xc0: case 0xd0: case 0xe0: - goto op_semantics_93; + goto op_semantics_113; break; case 0xf0: - goto op_semantics_94; + goto op_semantics_114; break; } break; - case 0xec: + case 0xfd: GETBYTE (); switch (op[2] & 0xf0) { @@ -12172,14 +13617,14 @@ rx_decode_opcode (unsigned long pc AU, case 0xc0: case 0xd0: case 0xe0: - goto op_semantics_93; + goto op_semantics_113; break; case 0xf0: - goto op_semantics_94; + goto op_semantics_114; break; } break; - case 0xed: + case 0xfe: GETBYTE (); switch (op[2] & 0xf0) { @@ -12198,14 +13643,14 @@ rx_decode_opcode (unsigned long pc AU, case 0xc0: case 0xd0: case 0xe0: - goto op_semantics_93; + goto op_semantics_113; break; case 0xf0: - goto op_semantics_94; + goto op_semantics_114; break; } break; - case 0xee: + case 0xff: GETBYTE (); switch (op[2] & 0xf0) { @@ -12224,2682 +13669,2738 @@ rx_decode_opcode (unsigned long pc AU, case 0xc0: case 0xd0: case 0xe0: - goto op_semantics_93; + goto op_semantics_113; break; case 0xf0: - goto op_semantics_94; + goto op_semantics_114; + break; + } + break; + default: UNSUPPORTED(); break; + } + break; + case 0xfe: + GETBYTE (); + switch (op[1] & 0xff) + { + case 0x00: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + op_semantics_115: + { + /** 1111 1110 00sz isrc bsrc rdst mov%s %0, [%1, %2] */ +#line 338 "rx-decode.opc" + int sz AU = (op[1] >> 4) & 0x03; +#line 338 "rx-decode.opc" + int isrc AU = op[1] & 0x0f; +#line 338 "rx-decode.opc" + int bsrc AU = (op[2] >> 4) & 0x0f; +#line 338 "rx-decode.opc" + int rdst AU = op[2] & 0x0f; + if (trace) + { + printf ("\033[33m%s\033[0m %02x %02x %02x\n", + "/** 1111 1110 00sz isrc bsrc rdst mov%s %0, [%1, %2] */", + op[0], op[1], op[2]); + printf (" sz = 0x%x,", sz); + printf (" isrc = 0x%x,", isrc); + printf (" bsrc = 0x%x,", bsrc); + printf (" rdst = 0x%x\n", rdst); + } + SYNTAX("mov%s %0, [%1, %2]"); +#line 338 "rx-decode.opc" + ID(movbir); sBWL(sz); DR(rdst); SRR(isrc); S2R(bsrc); F_____; + + } + break; + } + break; + case 0x01: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_115; + break; + } + break; + case 0x02: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_115; + break; + } + break; + case 0x03: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_115; + break; + } + break; + case 0x04: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_115; + break; + } + break; + case 0x05: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_115; + break; + } + break; + case 0x06: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_115; + break; + } + break; + case 0x07: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_115; + break; + } + break; + case 0x08: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_115; + break; + } + break; + case 0x09: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_115; + break; + } + break; + case 0x0a: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_115; + break; + } + break; + case 0x0b: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_115; + break; + } + break; + case 0x0c: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_115; + break; + } + break; + case 0x0d: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_115; + break; + } + break; + case 0x0e: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_115; + break; + } + break; + case 0x0f: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_115; + break; + } + break; + case 0x10: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_115; + break; + } + break; + case 0x11: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_115; + break; + } + break; + case 0x12: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_115; + break; + } + break; + case 0x13: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_115; + break; + } + break; + case 0x14: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_115; + break; + } + break; + case 0x15: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_115; + break; + } + break; + case 0x16: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_115; + break; + } + break; + case 0x17: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_115; + break; + } + break; + case 0x18: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_115; + break; + } + break; + case 0x19: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_115; break; } break; - case 0xef: + case 0x1a: GETBYTE (); - switch (op[2] & 0xf0) + switch (op[2] & 0x00) { case 0x00: - case 0x10: - case 0x20: - case 0x30: - case 0x40: - case 0x50: - case 0x60: - case 0x70: - case 0x80: - case 0x90: - case 0xa0: - case 0xb0: - case 0xc0: - case 0xd0: - case 0xe0: - goto op_semantics_93; - break; - case 0xf0: - goto op_semantics_94; + goto op_semantics_115; break; } break; - case 0xf0: + case 0x1b: GETBYTE (); - switch (op[2] & 0xf0) + switch (op[2] & 0x00) { case 0x00: - case 0x10: - case 0x20: - case 0x30: - case 0x40: - case 0x50: - case 0x60: - case 0x70: - case 0x80: - case 0x90: - case 0xa0: - case 0xb0: - case 0xc0: - case 0xd0: - case 0xe0: - goto op_semantics_93; - break; - case 0xf0: - goto op_semantics_94; + goto op_semantics_115; break; } break; - case 0xf1: + case 0x1c: GETBYTE (); - switch (op[2] & 0xf0) + switch (op[2] & 0x00) { case 0x00: - case 0x10: - case 0x20: - case 0x30: - case 0x40: - case 0x50: - case 0x60: - case 0x70: - case 0x80: - case 0x90: - case 0xa0: - case 0xb0: - case 0xc0: - case 0xd0: - case 0xe0: - goto op_semantics_93; - break; - case 0xf0: - goto op_semantics_94; + goto op_semantics_115; break; } break; - case 0xf2: + case 0x1d: GETBYTE (); - switch (op[2] & 0xf0) + switch (op[2] & 0x00) { case 0x00: - case 0x10: - case 0x20: - case 0x30: - case 0x40: - case 0x50: - case 0x60: - case 0x70: - case 0x80: - case 0x90: - case 0xa0: - case 0xb0: - case 0xc0: - case 0xd0: - case 0xe0: - goto op_semantics_93; - break; - case 0xf0: - goto op_semantics_94; + goto op_semantics_115; break; } break; - case 0xf3: + case 0x1e: GETBYTE (); - switch (op[2] & 0xf0) + switch (op[2] & 0x00) { case 0x00: - case 0x10: - case 0x20: - case 0x30: - case 0x40: - case 0x50: - case 0x60: - case 0x70: - case 0x80: - case 0x90: - case 0xa0: - case 0xb0: - case 0xc0: - case 0xd0: - case 0xe0: - goto op_semantics_93; - break; - case 0xf0: - goto op_semantics_94; + goto op_semantics_115; break; } break; - case 0xf4: + case 0x1f: GETBYTE (); - switch (op[2] & 0xf0) + switch (op[2] & 0x00) { case 0x00: - case 0x10: - case 0x20: - case 0x30: - case 0x40: - case 0x50: - case 0x60: - case 0x70: - case 0x80: - case 0x90: - case 0xa0: - case 0xb0: - case 0xc0: - case 0xd0: - case 0xe0: - goto op_semantics_93; - break; - case 0xf0: - goto op_semantics_94; + goto op_semantics_115; break; } break; - case 0xf5: + case 0x20: GETBYTE (); - switch (op[2] & 0xf0) + switch (op[2] & 0x00) { case 0x00: - case 0x10: - case 0x20: - case 0x30: - case 0x40: - case 0x50: - case 0x60: - case 0x70: - case 0x80: - case 0x90: - case 0xa0: - case 0xb0: - case 0xc0: - case 0xd0: - case 0xe0: - goto op_semantics_93; - break; - case 0xf0: - goto op_semantics_94; + goto op_semantics_115; break; } break; - case 0xf6: + case 0x21: GETBYTE (); - switch (op[2] & 0xf0) + switch (op[2] & 0x00) { case 0x00: - case 0x10: - case 0x20: - case 0x30: - case 0x40: - case 0x50: - case 0x60: - case 0x70: - case 0x80: - case 0x90: - case 0xa0: - case 0xb0: - case 0xc0: - case 0xd0: - case 0xe0: - goto op_semantics_93; - break; - case 0xf0: - goto op_semantics_94; + goto op_semantics_115; break; } break; - case 0xf7: + case 0x22: GETBYTE (); - switch (op[2] & 0xf0) + switch (op[2] & 0x00) { case 0x00: - case 0x10: - case 0x20: - case 0x30: - case 0x40: - case 0x50: - case 0x60: - case 0x70: - case 0x80: - case 0x90: - case 0xa0: - case 0xb0: - case 0xc0: - case 0xd0: - case 0xe0: - goto op_semantics_93; + goto op_semantics_115; break; - case 0xf0: - goto op_semantics_94; + } + break; + case 0x23: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_115; break; } break; - case 0xf8: + case 0x24: GETBYTE (); - switch (op[2] & 0xf0) + switch (op[2] & 0x00) { case 0x00: - case 0x10: - case 0x20: - case 0x30: - case 0x40: - case 0x50: - case 0x60: - case 0x70: - case 0x80: - case 0x90: - case 0xa0: - case 0xb0: - case 0xc0: - case 0xd0: - case 0xe0: - goto op_semantics_93; + goto op_semantics_115; break; - case 0xf0: - goto op_semantics_94; + } + break; + case 0x25: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_115; break; } break; - case 0xf9: + case 0x26: GETBYTE (); - switch (op[2] & 0xf0) + switch (op[2] & 0x00) { case 0x00: - case 0x10: - case 0x20: - case 0x30: - case 0x40: - case 0x50: - case 0x60: - case 0x70: - case 0x80: - case 0x90: - case 0xa0: - case 0xb0: - case 0xc0: - case 0xd0: - case 0xe0: - goto op_semantics_93; + goto op_semantics_115; break; - case 0xf0: - goto op_semantics_94; + } + break; + case 0x27: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_115; break; } break; - case 0xfa: + case 0x28: GETBYTE (); - switch (op[2] & 0xf0) + switch (op[2] & 0x00) { case 0x00: - case 0x10: - case 0x20: - case 0x30: - case 0x40: - case 0x50: - case 0x60: - case 0x70: - case 0x80: - case 0x90: - case 0xa0: - case 0xb0: - case 0xc0: - case 0xd0: - case 0xe0: - goto op_semantics_93; - break; - case 0xf0: - goto op_semantics_94; + goto op_semantics_115; break; } break; - case 0xfb: + case 0x29: GETBYTE (); - switch (op[2] & 0xf0) + switch (op[2] & 0x00) { case 0x00: - case 0x10: - case 0x20: - case 0x30: - case 0x40: - case 0x50: - case 0x60: - case 0x70: - case 0x80: - case 0x90: - case 0xa0: - case 0xb0: - case 0xc0: - case 0xd0: - case 0xe0: - goto op_semantics_93; - break; - case 0xf0: - goto op_semantics_94; + goto op_semantics_115; break; } break; - case 0xfc: + case 0x2a: GETBYTE (); - switch (op[2] & 0xf0) + switch (op[2] & 0x00) { case 0x00: - case 0x10: - case 0x20: - case 0x30: - case 0x40: - case 0x50: - case 0x60: - case 0x70: - case 0x80: - case 0x90: - case 0xa0: - case 0xb0: - case 0xc0: - case 0xd0: - case 0xe0: - goto op_semantics_93; - break; - case 0xf0: - goto op_semantics_94; + goto op_semantics_115; break; } break; - case 0xfd: + case 0x2b: GETBYTE (); - switch (op[2] & 0xf0) + switch (op[2] & 0x00) { case 0x00: - case 0x10: - case 0x20: - case 0x30: - case 0x40: - case 0x50: - case 0x60: - case 0x70: - case 0x80: - case 0x90: - case 0xa0: - case 0xb0: - case 0xc0: - case 0xd0: - case 0xe0: - goto op_semantics_93; - break; - case 0xf0: - goto op_semantics_94; + goto op_semantics_115; break; } break; - case 0xfe: + case 0x2c: GETBYTE (); - switch (op[2] & 0xf0) + switch (op[2] & 0x00) { case 0x00: - case 0x10: - case 0x20: - case 0x30: - case 0x40: - case 0x50: - case 0x60: - case 0x70: - case 0x80: - case 0x90: - case 0xa0: - case 0xb0: - case 0xc0: - case 0xd0: - case 0xe0: - goto op_semantics_93; + goto op_semantics_115; break; - case 0xf0: - goto op_semantics_94; + } + break; + case 0x2d: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_115; break; } break; - case 0xff: + case 0x2e: GETBYTE (); - switch (op[2] & 0xf0) + switch (op[2] & 0x00) { case 0x00: - case 0x10: - case 0x20: - case 0x30: - case 0x40: - case 0x50: - case 0x60: - case 0x70: - case 0x80: - case 0x90: - case 0xa0: - case 0xb0: - case 0xc0: - case 0xd0: - case 0xe0: - goto op_semantics_93; + goto op_semantics_115; break; - case 0xf0: - goto op_semantics_94; + } + break; + case 0x2f: + GETBYTE (); + switch (op[2] & 0x00) + { + case 0x00: + goto op_semantics_115; break; } break; - default: UNSUPPORTED(); break; - } - break; - case 0xfe: - GETBYTE (); - switch (op[1] & 0xff) - { - case 0x00: + case 0x40: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - op_semantics_95: + op_semantics_116: { - /** 1111 1110 00sz isrc bsrc rdst mov%s %0, [%1, %2] */ -#line 338 "rx-decode.opc" + /** 1111 1110 01sz isrc bsrc rdst mov%s [%1, %2], %0 */ +#line 335 "rx-decode.opc" int sz AU = (op[1] >> 4) & 0x03; -#line 338 "rx-decode.opc" +#line 335 "rx-decode.opc" int isrc AU = op[1] & 0x0f; -#line 338 "rx-decode.opc" +#line 335 "rx-decode.opc" int bsrc AU = (op[2] >> 4) & 0x0f; -#line 338 "rx-decode.opc" +#line 335 "rx-decode.opc" int rdst AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1110 00sz isrc bsrc rdst mov%s %0, [%1, %2] */", + "/** 1111 1110 01sz isrc bsrc rdst mov%s [%1, %2], %0 */", op[0], op[1], op[2]); printf (" sz = 0x%x,", sz); printf (" isrc = 0x%x,", isrc); printf (" bsrc = 0x%x,", bsrc); printf (" rdst = 0x%x\n", rdst); } - SYNTAX("mov%s %0, [%1, %2]"); -#line 338 "rx-decode.opc" - ID(movbir); sBWL(sz); DR(rdst); SRR(isrc); S2R(bsrc); F_____; + SYNTAX("mov%s [%1, %2], %0"); +#line 335 "rx-decode.opc" + ID(movbi); sBWL(sz); DR(rdst); SRR(isrc); S2R(bsrc); F_____; } break; } break; - case 0x01: + case 0x41: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x02: + case 0x42: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x03: + case 0x43: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x04: + case 0x44: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x05: + case 0x45: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x06: + case 0x46: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x07: + case 0x47: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x08: + case 0x48: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x09: + case 0x49: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x0a: + case 0x4a: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x0b: + case 0x4b: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x0c: + case 0x4c: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x0d: + case 0x4d: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x0e: + case 0x4e: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x0f: + case 0x4f: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x10: + case 0x50: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x11: + case 0x51: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x12: + case 0x52: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x13: + case 0x53: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x14: + case 0x54: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x15: + case 0x55: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x16: + case 0x56: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x17: + case 0x57: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x18: + case 0x58: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x19: + case 0x59: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x1a: + case 0x5a: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x1b: + case 0x5b: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x1c: + case 0x5c: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x1d: + case 0x5d: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x1e: + case 0x5e: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x1f: + case 0x5f: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x20: + case 0x60: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x21: + case 0x61: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x22: + case 0x62: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x23: + case 0x63: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x24: + case 0x64: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x25: + case 0x65: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x26: + case 0x66: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x27: + case 0x67: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x28: + case 0x68: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x29: + case 0x69: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x2a: + case 0x6a: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x2b: + case 0x6b: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x2c: + case 0x6c: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x2d: + case 0x6d: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x2e: + case 0x6e: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x2f: + case 0x6f: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_95; + goto op_semantics_116; break; } break; - case 0x40: + case 0xc0: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - op_semantics_96: + op_semantics_117: { - /** 1111 1110 01sz isrc bsrc rdst mov%s [%1, %2], %0 */ -#line 335 "rx-decode.opc" + /** 1111 1110 11sz isrc bsrc rdst movu%s [%1, %2], %0 */ +#line 341 "rx-decode.opc" int sz AU = (op[1] >> 4) & 0x03; -#line 335 "rx-decode.opc" +#line 341 "rx-decode.opc" int isrc AU = op[1] & 0x0f; -#line 335 "rx-decode.opc" +#line 341 "rx-decode.opc" int bsrc AU = (op[2] >> 4) & 0x0f; -#line 335 "rx-decode.opc" +#line 341 "rx-decode.opc" int rdst AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1110 01sz isrc bsrc rdst mov%s [%1, %2], %0 */", + "/** 1111 1110 11sz isrc bsrc rdst movu%s [%1, %2], %0 */", op[0], op[1], op[2]); printf (" sz = 0x%x,", sz); printf (" isrc = 0x%x,", isrc); printf (" bsrc = 0x%x,", bsrc); printf (" rdst = 0x%x\n", rdst); } - SYNTAX("mov%s [%1, %2], %0"); -#line 335 "rx-decode.opc" - ID(movbi); sBWL(sz); DR(rdst); SRR(isrc); S2R(bsrc); F_____; + SYNTAX("movu%s [%1, %2], %0"); +#line 341 "rx-decode.opc" + ID(movbi); uBW(sz); DR(rdst); SRR(isrc); S2R(bsrc); F_____; } break; } break; - case 0x41: + case 0xc1: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x42: + case 0xc2: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x43: + case 0xc3: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x44: + case 0xc4: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x45: + case 0xc5: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x46: + case 0xc6: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x47: + case 0xc7: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x48: + case 0xc8: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x49: + case 0xc9: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x4a: + case 0xca: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x4b: + case 0xcb: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x4c: + case 0xcc: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x4d: + case 0xcd: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x4e: + case 0xce: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x4f: + case 0xcf: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x50: + case 0xd0: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x51: + case 0xd1: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x52: + case 0xd2: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x53: + case 0xd3: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x54: + case 0xd4: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x55: + case 0xd5: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x56: + case 0xd6: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x57: + case 0xd7: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x58: + case 0xd8: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x59: + case 0xd9: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x5a: + case 0xda: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x5b: + case 0xdb: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x5c: + case 0xdc: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x5d: + case 0xdd: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x5e: + case 0xde: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x5f: + case 0xdf: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x60: + case 0xe0: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x61: + case 0xe1: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x62: + case 0xe2: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x63: + case 0xe3: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x64: + case 0xe4: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x65: + case 0xe5: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x66: + case 0xe6: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x67: + case 0xe7: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x68: + case 0xe8: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x69: + case 0xe9: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x6a: + case 0xea: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x6b: + case 0xeb: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x6c: + case 0xec: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x6d: + case 0xed: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x6e: + case 0xee: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0x6f: + case 0xef: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_96; + goto op_semantics_117; break; } break; - case 0xc0: + default: UNSUPPORTED(); break; + } + break; + case 0xff: + GETBYTE (); + switch (op[1] & 0xff) + { + case 0x00: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - op_semantics_97: + op_semantics_118: { - /** 1111 1110 11sz isrc bsrc rdst movu%s [%1, %2], %0 */ -#line 341 "rx-decode.opc" - int sz AU = (op[1] >> 4) & 0x03; -#line 341 "rx-decode.opc" - int isrc AU = op[1] & 0x0f; -#line 341 "rx-decode.opc" - int bsrc AU = (op[2] >> 4) & 0x0f; -#line 341 "rx-decode.opc" - int rdst AU = op[2] & 0x0f; + /** 1111 1111 0000 rdst srca srcb sub %2, %1, %0 */ +#line 545 "rx-decode.opc" + int rdst AU = op[1] & 0x0f; +#line 545 "rx-decode.opc" + int srca AU = (op[2] >> 4) & 0x0f; +#line 545 "rx-decode.opc" + int srcb AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1110 11sz isrc bsrc rdst movu%s [%1, %2], %0 */", - op[0], op[1], op[2]); - printf (" sz = 0x%x,", sz); - printf (" isrc = 0x%x,", isrc); - printf (" bsrc = 0x%x,", bsrc); - printf (" rdst = 0x%x\n", rdst); + "/** 1111 1111 0000 rdst srca srcb sub %2, %1, %0 */", + op[0], op[1], op[2]); + printf (" rdst = 0x%x,", rdst); + printf (" srca = 0x%x,", srca); + printf (" srcb = 0x%x\n", srcb); } - SYNTAX("movu%s [%1, %2], %0"); -#line 341 "rx-decode.opc" - ID(movbi); uBW(sz); DR(rdst); SRR(isrc); S2R(bsrc); F_____; + SYNTAX("sub %2, %1, %0"); +#line 545 "rx-decode.opc" + ID(sub); DR(rdst); SR(srcb); S2R(srca); F_OSZC; + + /*----------------------------------------------------------------------*/ + /* SBB */ } break; } break; - case 0xc1: + case 0x01: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_118; break; } break; - case 0xc2: + case 0x02: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_118; break; } break; - case 0xc3: + case 0x03: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_118; break; } break; - case 0xc4: + case 0x04: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_118; break; } break; - case 0xc5: + case 0x05: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_118; break; } break; - case 0xc6: + case 0x06: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_118; break; } break; - case 0xc7: + case 0x07: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_118; break; } break; - case 0xc8: + case 0x08: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_118; break; } break; - case 0xc9: + case 0x09: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_118; break; } break; - case 0xca: + case 0x0a: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_118; break; } break; - case 0xcb: + case 0x0b: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_118; break; } break; - case 0xcc: + case 0x0c: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_118; break; } break; - case 0xcd: + case 0x0d: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_118; break; } break; - case 0xce: + case 0x0e: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_118; break; } break; - case 0xcf: + case 0x0f: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_118; break; } break; - case 0xd0: + case 0x20: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + op_semantics_119: + { + /** 1111 1111 0010 rdst srca srcb add %2, %1, %0 */ +#line 512 "rx-decode.opc" + int rdst AU = op[1] & 0x0f; +#line 512 "rx-decode.opc" + int srca AU = (op[2] >> 4) & 0x0f; +#line 512 "rx-decode.opc" + int srcb AU = op[2] & 0x0f; + if (trace) + { + printf ("\033[33m%s\033[0m %02x %02x %02x\n", + "/** 1111 1111 0010 rdst srca srcb add %2, %1, %0 */", + op[0], op[1], op[2]); + printf (" rdst = 0x%x,", rdst); + printf (" srca = 0x%x,", srca); + printf (" srcb = 0x%x\n", srcb); + } + SYNTAX("add %2, %1, %0"); +#line 512 "rx-decode.opc" + ID(add); DR(rdst); SR(srcb); S2R(srca); F_OSZC; + + /*----------------------------------------------------------------------*/ + /* CMP */ + + } break; } break; - case 0xd1: + case 0x21: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_119; break; } break; - case 0xd2: + case 0x22: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_119; break; } break; - case 0xd3: + case 0x23: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_119; break; } break; - case 0xd4: + case 0x24: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_119; break; } break; - case 0xd5: + case 0x25: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_119; break; } break; - case 0xd6: + case 0x26: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_119; break; } break; - case 0xd7: + case 0x27: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_119; break; } break; - case 0xd8: + case 0x28: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_119; break; } break; - case 0xd9: + case 0x29: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_119; break; } break; - case 0xda: + case 0x2a: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_119; break; } break; - case 0xdb: + case 0x2b: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_119; break; } break; - case 0xdc: + case 0x2c: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_119; break; } break; - case 0xdd: + case 0x2d: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_119; break; } break; - case 0xde: + case 0x2e: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_119; break; } break; - case 0xdf: + case 0x2f: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_119; break; } break; - case 0xe0: + case 0x30: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + op_semantics_120: + { + /** 1111 1111 0011 rdst srca srcb mul %2, %1, %0 */ +#line 652 "rx-decode.opc" + int rdst AU = op[1] & 0x0f; +#line 652 "rx-decode.opc" + int srca AU = (op[2] >> 4) & 0x0f; +#line 652 "rx-decode.opc" + int srcb AU = op[2] & 0x0f; + if (trace) + { + printf ("\033[33m%s\033[0m %02x %02x %02x\n", + "/** 1111 1111 0011 rdst srca srcb mul %2, %1, %0 */", + op[0], op[1], op[2]); + printf (" rdst = 0x%x,", rdst); + printf (" srca = 0x%x,", srca); + printf (" srcb = 0x%x\n", srcb); + } + SYNTAX("mul %2, %1, %0"); +#line 652 "rx-decode.opc" + ID(mul); DR(rdst); SR(srcb); S2R(srca); F_____; + + /*----------------------------------------------------------------------*/ + /* EMUL */ + + } break; } break; - case 0xe1: + case 0x31: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_120; break; } break; - case 0xe2: + case 0x32: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_120; break; } break; - case 0xe3: + case 0x33: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_120; break; } break; - case 0xe4: + case 0x34: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_120; break; } break; - case 0xe5: + case 0x35: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_120; break; } break; - case 0xe6: + case 0x36: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_120; break; } break; - case 0xe7: + case 0x37: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_120; break; } break; - case 0xe8: + case 0x38: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_120; break; } break; - case 0xe9: + case 0x39: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_120; break; } break; - case 0xea: + case 0x3a: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_120; break; } break; - case 0xeb: + case 0x3b: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_120; break; } break; - case 0xec: + case 0x3c: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_120; break; } break; - case 0xed: + case 0x3d: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_120; break; } break; - case 0xee: + case 0x3e: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_120; break; } break; - case 0xef: + case 0x3f: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_97; + goto op_semantics_120; break; } break; - default: UNSUPPORTED(); break; - } - break; - case 0xff: - GETBYTE (); - switch (op[1] & 0xff) - { - case 0x00: + case 0x40: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - op_semantics_98: + op_semantics_121: { - /** 1111 1111 0000 rdst srca srcb sub %2, %1, %0 */ -#line 545 "rx-decode.opc" + /** 1111 1111 0100 rdst srca srcb and %2, %1, %0 */ +#line 422 "rx-decode.opc" int rdst AU = op[1] & 0x0f; -#line 545 "rx-decode.opc" +#line 422 "rx-decode.opc" int srca AU = (op[2] >> 4) & 0x0f; -#line 545 "rx-decode.opc" +#line 422 "rx-decode.opc" int srcb AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1111 0000 rdst srca srcb sub %2, %1, %0 */", + "/** 1111 1111 0100 rdst srca srcb and %2, %1, %0 */", op[0], op[1], op[2]); printf (" rdst = 0x%x,", rdst); printf (" srca = 0x%x,", srca); printf (" srcb = 0x%x\n", srcb); } - SYNTAX("sub %2, %1, %0"); -#line 545 "rx-decode.opc" - ID(sub); DR(rdst); SR(srcb); S2R(srca); F_OSZC; + SYNTAX("and %2, %1, %0"); +#line 422 "rx-decode.opc" + ID(and); DR(rdst); SR(srcb); S2R(srca); F__SZ_; /*----------------------------------------------------------------------*/ - /* SBB */ + /* OR */ } break; } break; - case 0x01: + case 0x41: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_98; + goto op_semantics_121; break; } break; - case 0x02: + case 0x42: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_98; + goto op_semantics_121; break; } break; - case 0x03: + case 0x43: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_98; + goto op_semantics_121; break; } break; - case 0x04: + case 0x44: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_98; + goto op_semantics_121; break; } break; - case 0x05: + case 0x45: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_98; + goto op_semantics_121; break; } break; - case 0x06: + case 0x46: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_98; + goto op_semantics_121; break; } break; - case 0x07: + case 0x47: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_98; + goto op_semantics_121; break; } break; - case 0x08: + case 0x48: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_98; + goto op_semantics_121; break; } break; - case 0x09: + case 0x49: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_98; + goto op_semantics_121; break; } break; - case 0x0a: + case 0x4a: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_98; + goto op_semantics_121; break; } break; - case 0x0b: + case 0x4b: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_98; + goto op_semantics_121; break; } break; - case 0x0c: + case 0x4c: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_98; + goto op_semantics_121; break; } break; - case 0x0d: + case 0x4d: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_98; + goto op_semantics_121; break; } break; - case 0x0e: + case 0x4e: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_98; + goto op_semantics_121; break; } break; - case 0x0f: + case 0x4f: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_98; + goto op_semantics_121; break; } break; - case 0x20: + case 0x50: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - op_semantics_99: + op_semantics_122: { - /** 1111 1111 0010 rdst srca srcb add %2, %1, %0 */ -#line 512 "rx-decode.opc" + /** 1111 1111 0101 rdst srca srcb or %2, %1, %0 */ +#line 440 "rx-decode.opc" int rdst AU = op[1] & 0x0f; -#line 512 "rx-decode.opc" +#line 440 "rx-decode.opc" int srca AU = (op[2] >> 4) & 0x0f; -#line 512 "rx-decode.opc" +#line 440 "rx-decode.opc" int srcb AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1111 0010 rdst srca srcb add %2, %1, %0 */", + "/** 1111 1111 0101 rdst srca srcb or %2, %1, %0 */", op[0], op[1], op[2]); printf (" rdst = 0x%x,", rdst); printf (" srca = 0x%x,", srca); printf (" srcb = 0x%x\n", srcb); } - SYNTAX("add %2, %1, %0"); -#line 512 "rx-decode.opc" - ID(add); DR(rdst); SR(srcb); S2R(srca); F_OSZC; + SYNTAX("or %2, %1, %0"); +#line 440 "rx-decode.opc" + ID(or); DR(rdst); SR(srcb); S2R(srca); F__SZ_; /*----------------------------------------------------------------------*/ - /* CMP */ + /* XOR */ } break; } break; - case 0x21: + case 0x51: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_99; + goto op_semantics_122; break; } break; - case 0x22: + case 0x52: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_99; + goto op_semantics_122; break; } break; - case 0x23: + case 0x53: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_99; + goto op_semantics_122; break; } break; - case 0x24: + case 0x54: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_99; + goto op_semantics_122; break; } break; - case 0x25: + case 0x55: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_99; + goto op_semantics_122; break; } break; - case 0x26: + case 0x56: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_99; + goto op_semantics_122; break; } break; - case 0x27: + case 0x57: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_99; + goto op_semantics_122; break; } break; - case 0x28: + case 0x58: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_99; + goto op_semantics_122; break; } break; - case 0x29: + case 0x59: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_99; + goto op_semantics_122; break; } break; - case 0x2a: + case 0x5a: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_99; + goto op_semantics_122; break; } break; - case 0x2b: + case 0x5b: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_99; + goto op_semantics_122; break; } break; - case 0x2c: + case 0x5c: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_99; + goto op_semantics_122; break; } break; - case 0x2d: + case 0x5d: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_99; + goto op_semantics_122; break; } break; - case 0x2e: + case 0x5e: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_99; + goto op_semantics_122; break; } break; - case 0x2f: + case 0x5f: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_99; + goto op_semantics_122; break; } break; - case 0x30: + case 0x80: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - op_semantics_100: + op_semantics_123: { - /** 1111 1111 0011 rdst srca srcb mul %2, %1, %0 */ -#line 614 "rx-decode.opc" + /** 1111 1111 1000 rdst srca srcb fsub %2, %1, %0 */ +#line 1100 "rx-decode.opc" int rdst AU = op[1] & 0x0f; -#line 614 "rx-decode.opc" +#line 1100 "rx-decode.opc" int srca AU = (op[2] >> 4) & 0x0f; -#line 614 "rx-decode.opc" +#line 1100 "rx-decode.opc" int srcb AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1111 0011 rdst srca srcb mul %2, %1, %0 */", + "/** 1111 1111 1000 rdst srca srcb fsub %2, %1, %0 */", op[0], op[1], op[2]); printf (" rdst = 0x%x,", rdst); printf (" srca = 0x%x,", srca); printf (" srcb = 0x%x\n", srcb); } - SYNTAX("mul %2, %1, %0"); -#line 614 "rx-decode.opc" - ID(mul); DR(rdst); SR(srcb); S2R(srca); F_____; - - /*----------------------------------------------------------------------*/ - /* EMUL */ + SYNTAX("fsub %2, %1, %0"); +#line 1100 "rx-decode.opc" + ID(fsub); DR(rdst); SR(srcb); S2R(srca); F__SZ_; } break; } break; - case 0x31: + case 0x81: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_100; + goto op_semantics_123; break; } break; - case 0x32: + case 0x82: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_100; + goto op_semantics_123; break; } break; - case 0x33: + case 0x83: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_100; + goto op_semantics_123; break; } break; - case 0x34: + case 0x84: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_100; + goto op_semantics_123; break; } break; - case 0x35: + case 0x85: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_100; + goto op_semantics_123; break; } break; - case 0x36: + case 0x86: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_100; + goto op_semantics_123; break; } break; - case 0x37: + case 0x87: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_100; + goto op_semantics_123; break; } break; - case 0x38: + case 0x88: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_100; + goto op_semantics_123; break; } break; - case 0x39: + case 0x89: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_100; + goto op_semantics_123; break; } break; - case 0x3a: + case 0x8a: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_100; + goto op_semantics_123; break; } break; - case 0x3b: + case 0x8b: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_100; + goto op_semantics_123; break; } break; - case 0x3c: + case 0x8c: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_100; + goto op_semantics_123; break; } break; - case 0x3d: + case 0x8d: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_100; + goto op_semantics_123; break; } break; - case 0x3e: + case 0x8e: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_100; + goto op_semantics_123; break; } break; - case 0x3f: + case 0x8f: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_100; + goto op_semantics_123; break; } break; - case 0x40: + case 0xa0: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - op_semantics_101: + op_semantics_124: { - /** 1111 1111 0100 rdst srca srcb and %2, %1, %0 */ -#line 422 "rx-decode.opc" + /** 1111 1111 1010 rdst srca srcb fadd %2, %1, %0 */ +#line 1097 "rx-decode.opc" int rdst AU = op[1] & 0x0f; -#line 422 "rx-decode.opc" +#line 1097 "rx-decode.opc" int srca AU = (op[2] >> 4) & 0x0f; -#line 422 "rx-decode.opc" +#line 1097 "rx-decode.opc" int srcb AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1111 0100 rdst srca srcb and %2, %1, %0 */", + "/** 1111 1111 1010 rdst srca srcb fadd %2, %1, %0 */", op[0], op[1], op[2]); printf (" rdst = 0x%x,", rdst); printf (" srca = 0x%x,", srca); printf (" srcb = 0x%x\n", srcb); } - SYNTAX("and %2, %1, %0"); -#line 422 "rx-decode.opc" - ID(and); DR(rdst); SR(srcb); S2R(srca); F__SZ_; - - /*----------------------------------------------------------------------*/ - /* OR */ + SYNTAX("fadd %2, %1, %0"); +#line 1097 "rx-decode.opc" + ID(fadd); DR(rdst); SR(srcb); S2R(srca); F__SZ_; } break; } break; - case 0x41: + case 0xa1: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_101; + goto op_semantics_124; break; } break; - case 0x42: + case 0xa2: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_101; + goto op_semantics_124; break; } break; - case 0x43: + case 0xa3: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_101; + goto op_semantics_124; break; } break; - case 0x44: + case 0xa4: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_101; + goto op_semantics_124; break; } break; - case 0x45: + case 0xa5: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_101; + goto op_semantics_124; break; } break; - case 0x46: + case 0xa6: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_101; + goto op_semantics_124; break; } break; - case 0x47: + case 0xa7: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_101; + goto op_semantics_124; break; } break; - case 0x48: + case 0xa8: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_101; + goto op_semantics_124; break; } break; - case 0x49: + case 0xa9: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_101; + goto op_semantics_124; break; } break; - case 0x4a: + case 0xaa: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_101; + goto op_semantics_124; break; } break; - case 0x4b: + case 0xab: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_101; + goto op_semantics_124; break; } break; - case 0x4c: + case 0xac: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_101; + goto op_semantics_124; break; } break; - case 0x4d: + case 0xad: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_101; + goto op_semantics_124; break; } break; - case 0x4e: + case 0xae: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_101; + goto op_semantics_124; break; } break; - case 0x4f: + case 0xaf: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_101; + goto op_semantics_124; break; } break; - case 0x50: + case 0xb0: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - op_semantics_102: + op_semantics_125: { - /** 1111 1111 0101 rdst srca srcb or %2, %1, %0 */ -#line 440 "rx-decode.opc" + /** 1111 1111 1011 rdst srca srcb fmul %2, %1, %0 */ +#line 1103 "rx-decode.opc" int rdst AU = op[1] & 0x0f; -#line 440 "rx-decode.opc" +#line 1103 "rx-decode.opc" int srca AU = (op[2] >> 4) & 0x0f; -#line 440 "rx-decode.opc" +#line 1103 "rx-decode.opc" int srcb AU = op[2] & 0x0f; if (trace) { printf ("\033[33m%s\033[0m %02x %02x %02x\n", - "/** 1111 1111 0101 rdst srca srcb or %2, %1, %0 */", + "/** 1111 1111 1011 rdst srca srcb fmul %2, %1, %0 */", op[0], op[1], op[2]); printf (" rdst = 0x%x,", rdst); printf (" srca = 0x%x,", srca); printf (" srcb = 0x%x\n", srcb); } - SYNTAX("or %2, %1, %0"); -#line 440 "rx-decode.opc" - ID(or); DR(rdst); SR(srcb); S2R(srca); F__SZ_; - - /*----------------------------------------------------------------------*/ - /* XOR */ + SYNTAX("fmul %2, %1, %0"); +#line 1103 "rx-decode.opc" + ID(fmul); DR(rdst); SR(srcb); S2R(srca); F__SZ_; } break; } break; - case 0x51: + case 0xb1: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_102; + goto op_semantics_125; break; } break; - case 0x52: + case 0xb2: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_102; + goto op_semantics_125; break; } break; - case 0x53: + case 0xb3: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_102; + goto op_semantics_125; break; } break; - case 0x54: + case 0xb4: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_102; + goto op_semantics_125; break; } break; - case 0x55: + case 0xb5: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_102; + goto op_semantics_125; break; } break; - case 0x56: + case 0xb6: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_102; + goto op_semantics_125; break; } break; - case 0x57: + case 0xb7: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_102; + goto op_semantics_125; break; } break; - case 0x58: + case 0xb8: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_102; + goto op_semantics_125; break; } break; - case 0x59: + case 0xb9: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_102; + goto op_semantics_125; break; } break; - case 0x5a: + case 0xba: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_102; + goto op_semantics_125; break; } break; - case 0x5b: + case 0xbb: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_102; + goto op_semantics_125; break; } break; - case 0x5c: + case 0xbc: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_102; + goto op_semantics_125; break; } break; - case 0x5d: + case 0xbd: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_102; + goto op_semantics_125; break; } break; - case 0x5e: + case 0xbe: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_102; + goto op_semantics_125; break; } break; - case 0x5f: + case 0xbf: GETBYTE (); switch (op[2] & 0x00) { case 0x00: - goto op_semantics_102; + goto op_semantics_125; break; } break; @@ -14908,7 +16409,7 @@ rx_decode_opcode (unsigned long pc AU, break; default: UNSUPPORTED(); break; } -#line 1005 "rx-decode.opc" +#line 1118 "rx-decode.opc" return rx->n_bytes; } diff --git a/opcodes/rx-decode.opc b/opcodes/rx-decode.opc index 12f689398e..a3cc751199 100644 --- a/opcodes/rx-decode.opc +++ b/opcodes/rx-decode.opc @@ -844,35 +844,35 @@ rx_decode_opcode (unsigned long pc AU, /*----------------------------------------------------------------------*/ /* HI/LO stuff */ -/** 1111 1101 0000 0000 srca srcb mulhi %1, %2 */ - ID(mulhi); SR(srca); S2R(srcb); F_____; +/** 1111 1101 0000 a000 srca srcb mulhi %1, %2, %0 */ + ID(mulhi); DR(a+32); SR(srca); S2R(srcb); F_____; -/** 1111 1101 0000 0001 srca srcb mullo %1, %2 */ - ID(mullo); SR(srca); S2R(srcb); F_____; +/** 1111 1101 0000 a001 srca srcb mullo %1, %2, %0 */ + ID(mullo); DR(a+32); SR(srca); S2R(srcb); F_____; -/** 1111 1101 0000 0100 srca srcb machi %1, %2 */ - ID(machi); SR(srca); S2R(srcb); F_____; +/** 1111 1101 0000 a100 srca srcb machi %1, %2, %0 */ + ID(machi); DR(a+32); SR(srca); S2R(srcb); F_____; -/** 1111 1101 0000 0101 srca srcb maclo %1, %2 */ - ID(maclo); SR(srca); S2R(srcb); F_____; +/** 1111 1101 0000 a101 srca srcb maclo %1, %2, %0 */ + ID(maclo); DR(a+32); SR(srca); S2R(srcb); F_____; -/** 1111 1101 0001 0111 0000 rsrc mvtachi %1 */ - ID(mvtachi); SR(rsrc); F_____; +/** 1111 1101 0001 0111 a000 rsrc mvtachi %1, %0 */ + ID(mvtachi); DR(a+32); SR(rsrc); F_____; -/** 1111 1101 0001 0111 0001 rsrc mvtaclo %1 */ - ID(mvtaclo); SR(rsrc); F_____; +/** 1111 1101 0001 0111 a001 rsrc mvtaclo %1, %0 */ + ID(mvtaclo); DR(a+32); SR(rsrc); F_____; -/** 1111 1101 0001 1111 0000 rdst mvfachi %0 */ - ID(mvfachi); DR(rdst); F_____; +/** 1111 1101 0001 111i a m00 rdst mvfachi #%2, %1, %0 */ + ID(mvfachi); S2C(((i^1)<<1)|m); SR(a+32); DR(rdst); F_____; -/** 1111 1101 0001 1111 0010 rdst mvfacmi %0 */ - ID(mvfacmi); DR(rdst); F_____; +/** 1111 1101 0001 111i a m10 rdst mvfacmi #%2, %1, %0 */ + ID(mvfacmi); S2C(((i^1)<<1)|m); SR(a+32); DR(rdst); F_____; -/** 1111 1101 0001 1111 0001 rdst mvfaclo %0 */ - ID(mvfaclo); DR(rdst); F_____; +/** 1111 1101 0001 111i a m01 rdst mvfaclo #%2, %1, %0 */ + ID(mvfaclo); S2C(((i^1)<<1)|m); SR(a+32); DR(rdst); F_____; -/** 1111 1101 0001 1000 000i 0000 racw #%1 */ - ID(racw); SC(i+1); F_____; +/** 1111 1101 0001 1000 a00i 0000 racw #%1, %0 */ + ID(racw); SC(i+1); DR(a+32); F_____; /*----------------------------------------------------------------------*/ /* SAT */ @@ -1039,6 +1039,81 @@ rx_decode_opcode (unsigned long pc AU, /** 1111 1100 1101 sz sd rdst cond sc%1%s %0 */ ID(sccnd); BWL(sz); DD (sd, rdst, sz); Scc(cond); +/*----------------------------------------------------------------------*/ +/* RXv2 enhanced */ + +/** 1111 1101 0010 0111 rdst rsrc movco %1, [%0] */ + ID(mov); SR(rsrc); DR(rdst); F_____; + +/** 1111 1101 0010 1111 rsrc rdst movli [%1], %0 */ + ID(mov); SR(rsrc); DR(rdst); F_____; + +/** 1111 1100 0100 1011 rsrc rdst stz %1, %0 */ + ID(stcc); SR(rsrc); DR(rdst); S2cc(RXC_z); + +/** 1111 1100 0100 1111 rsrc rdst stnz %1, %0 */ + ID(stcc); SR(rsrc); DR(rdst); S2cc(RXC_z); + +/** 1111 1101 0000 a111 srca srcb emaca %1, %2, %0 */ + ID(emaca); DR(a+32); SR(srca); S2R(srcb); F_____; + +/** 1111 1101 0100 a111 srca srcb emsba %1, %2, %0 */ + ID(emsba); DR(a+32); SR(srca); S2R(srcb); F_____; + +/** 1111 1101 0000 a011 srca srcb emula %1, %2, %0 */ + ID(emula); DR(a+32); SR(srca); S2R(srcb); F_____; + +/** 1111 1101 0000 a110 srca srcb maclh %1, %2, %0 */ + ID(maclh); DR(a+32); SR(srca); S2R(srcb); F_____; + +/** 1111 1101 0100 a100 srca srcb msbhi %1, %2, %0 */ + ID(msbhi); DR(a+32); SR(srca); S2R(srcb); F_____; + +/** 1111 1101 0100 a110 srca srcb msblh %1, %2, %0 */ + ID(msblh); DR(a+32); SR(srca); S2R(srcb); F_____; + +/** 1111 1101 0100 a101 srca srcb msblo %1, %2, %0 */ + ID(msblo); DR(a+32); SR(srca); S2R(srcb); F_____; + +/** 1111 1101 0000 a010 srca srcb mullh %1, %2, %0 */ + ID(mullh); DR(a+32); SR(srca); S2R(srcb); F_____; + +/** 1111 1101 0001 111i a m11 rdst mvfacgu #%2, %1, %0 */ + ID(mvfacgu); S2C(((i^1)<<1)|m); SR(a+32); DR(rdst); F_____; + +/** 1111 1101 0001 0111 a011 rdst mvtacgu %0, %1 */ + ID(mvtacgu); SR(a+32); DR(rdst); F_____; + +/** 1111 1101 0001 1001 a00i 0000 racl #%1, %0 */ + ID(racl); SC(i+1); DR(a+32); F_____; + +/** 1111 1101 0001 1001 a10i 0000 rdacl #%1, %0 */ + ID(rdacl); SC(i+1); DR(a+32); F_____; + +/** 1111 1101 0001 1000 a10i 0000 rdacw #%1, %0 */ + ID(rdacw); SC(i+1); DR(a+32); F_____; + +/** 1111 1111 1010 rdst srca srcb fadd %2, %1, %0 */ + ID(fadd); DR(rdst); SR(srcb); S2R(srca); F__SZ_; + +/** 1111 1111 1000 rdst srca srcb fsub %2, %1, %0 */ + ID(fsub); DR(rdst); SR(srcb); S2R(srca); F__SZ_; + +/** 1111 1111 1011 rdst srca srcb fmul %2, %1, %0 */ + ID(fmul); DR(rdst); SR(srcb); S2R(srca); F__SZ_; + +/** 1111 1100 1010 00sd rsrc rdst fsqrt %1%S1, %0 */ + ID(fsqrt); DR(rdst); SD(sd, rsrc, LSIZE); F__SZ_; + +/** 1111 1100 1010 01sd rsrc rdst ftou %1%S1, %0 */ + ID(ftou); DR(rdst); SD(sd, rsrc, LSIZE); F__SZ_; + +/** 1111 1100 0101 01sd rsrc rdst utof %1%S1, %0 */ + ID(utof); DR (rdst); SP(sd, rsrc); F__SZ_; + +/** 0000 0110 mx10 00sd 0001 0101 rsrc rdst utof %1%S1, %0 */ + ID(utof); DR (rdst); SPm(sd, rsrc, mx); F__SZ_; + /** */ return rx->n_bytes; diff --git a/opcodes/rx-dis.c b/opcodes/rx-dis.c index 01d0385a96..74ad726fad 100644 --- a/opcodes/rx-dis.c +++ b/opcodes/rx-dis.c @@ -65,9 +65,9 @@ static char const * register_names[] = "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15", /* control register */ "psw", "pc", "usp", "fpsw", NULL, NULL, NULL, NULL, - "bpsw", "bpc", "isp", "fintv", "intb", NULL, NULL, NULL, + "bpsw", "bpc", "isp", "fintv", "intb", "extb", NULL, NULL, + "a0", "a1", NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }; static char const * condition_names[] = -- 2.34.1