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.
This commit is contained in:
Yoshinori Sato 2015-12-15 09:26:56 +00:00 committed by Nick Clifton
parent ef603459d5
commit a117b0a51c
92 changed files with 3802 additions and 1370 deletions

View file

@ -1,3 +1,7 @@
2015-12-14 Yoshinori Sato <ysato@users.sourceforge.jp>
* readelf.c (get_machine_flags): Add support for RX v2 flag.
2015-12-14 Jan Beulich <jbeulich@suse.com>
* nm.c: Include coff/external.h, coff/internal.h, and

View file

@ -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:

View file

@ -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 <ysato@users.sourceforge.jp>
* 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 <jbeulich@suse.com>
* dw2gencfi.c (dot_cfi_label): Free "name".

View file

@ -38,7 +38,8 @@ enum rx_cpu_types
RX600,
RX610,
RX200,
RX100
RX100,
RXV2
};
extern int rx_pid_register;

View file

@ -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 <regno> REG FLAG CREG BCND BMCND SCCND
%type <regno> REG FLAG CREG BCND BMCND SCCND ACC
%type <regno> flag bwl bw memex
%type <exp> 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"));
}

View file

@ -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=<value>\n"));
fprintf (stream, _(" --mcpu=<rx100|rx200|rx600|rx610>\n"));
fprintf (stream, _(" --mcpu=<rx100|rx200|rx600|rx610|rxv2>\n"));
fprintf (stream, _(" --mno-allow-string-insns"));
}

View file

@ -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

View file

@ -68,6 +68,71 @@
* gas/aarch64/advsimd-fp16.d: New.
* gas/aarch64/advsimd-fp16.s: New.
2015-12-14 Yoshinori Sato <ysato@users.sourceforge.jp>
* 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 <amodra@gmail.com>
* gas/sh/tlsd.s: Use .tdata not .tbss.

View file

@ -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

View file

@ -0,0 +1,2 @@
emaca {reg},{reg},a0
emaca {reg},{reg},a1

View file

@ -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

View file

@ -0,0 +1,2 @@
emsba {reg},{reg},a0
emsba {reg},{reg},a1

View file

@ -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

View file

@ -0,0 +1,2 @@
emula {reg},{reg},a0
emula {reg},{reg},a1

View file

@ -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

View file

@ -1,3 +1,4 @@
fadd #{imm32},{reg}
fadd {reg},{reg}
fadd {mem}.L,{reg}
fadd {reg},{reg},{reg}

View file

@ -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

View file

@ -1,3 +1,4 @@
fmul #{imm32},{reg}
fmul {reg},{reg}
fmul {mem}.L,{reg}
fmul {reg},{reg},{reg}

View file

@ -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

View file

@ -0,0 +1,2 @@
fsqrt {reg},{reg}
fsqrt {mem}.L,{reg}

View file

@ -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

View file

@ -1,3 +1,4 @@
fsub #{imm32},{reg}
fsub {reg},{reg}
fsub {mem}.L,{reg}
fsub {reg},{reg},{reg}

View file

@ -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

View file

@ -0,0 +1,2 @@
ftou {reg},{reg}
ftou {mem}.L,{reg}

View file

@ -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

View file

@ -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

View file

@ -1 +1,3 @@
machi {reg},{reg}
machi {reg},{reg},a0
machi {reg},{reg},a1

View file

@ -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

View file

@ -0,0 +1,2 @@
maclh {reg},{reg},a0
maclh {reg},{reg},a1

View file

@ -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

View file

@ -1 +1,3 @@
maclo {reg},{reg}
maclo {reg},{reg},a0
maclo {reg},{reg},a1

View file

@ -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}

View file

@ -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

View file

@ -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\]

View file

@ -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\]

View file

@ -0,0 +1 @@
movco {reg},[{reg}]

View file

@ -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

View file

@ -0,0 +1 @@
movli [{reg}],{reg}

View file

@ -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

View file

@ -0,0 +1,2 @@
msbhi {reg},{reg},a0
msbhi {reg},{reg},a1

View file

@ -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

View file

@ -0,0 +1,2 @@
msblh {reg},{reg},a0
msblh {reg},{reg},a1

View file

@ -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

View file

@ -0,0 +1,2 @@
msblo {reg},{reg},a0
msblo {reg},{reg},a1

View file

@ -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

View file

@ -1 +1,3 @@
mulhi {reg},{reg}
mulhi {reg},{reg},a0
mulhi {reg},{reg},a1

View file

@ -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

View file

@ -0,0 +1,2 @@
mullh {reg},{reg},a0
mullh {reg},{reg},a1

View file

@ -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

View file

@ -1 +1,3 @@
mullo {reg},{reg}
mullo {reg},{reg},a0
mullo {reg},{reg},a1

View file

@ -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

View file

@ -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}

View file

@ -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

View file

@ -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}

View file

@ -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

View file

@ -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}

View file

@ -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

View file

@ -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}

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,2 @@
mvtacgu {reg},a0
mvtacgu {reg},a1

View file

@ -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

View file

@ -1 +1,3 @@
mvtachi {reg}
mvtachi {reg},a0
mvtachi {reg},a1

View file

@ -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

View file

@ -1 +1,3 @@
mvtaclo {reg}
mvtaclo {reg},a0
mvtaclo {reg},a1

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,4 @@
racl #1,a0
racl #2,a0
racl #1,a1
racl #2,a1

View file

@ -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

View file

@ -1,2 +1,6 @@
racw #1
racw #2
racw #1,a0
racw #2,a0
racw #1,a1
racw #2,a1

View file

@ -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

View file

@ -0,0 +1,4 @@
rdacl #1,a0
rdacl #2,a0
rdacl #1,a1
rdacl #2,a1

View file

@ -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

View file

@ -0,0 +1,4 @@
rdacw #1,a0
rdacw #2,a0
rdacw #1,a1
rdacw #2,a1

View file

@ -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"

View file

@ -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

View file

@ -1 +1,2 @@
stnz #{imm},{reg}
stnz {reg},{reg}

View file

@ -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

View file

@ -1 +1,2 @@
stz #{imm},{reg}
stz {reg},{reg}

View file

@ -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

View file

@ -0,0 +1,2 @@
utof {reg},{reg}
utof {memx},{reg}

View file

@ -1,3 +1,7 @@
2015-12-14 Yoshinori Sato <ysato@users.sourceforge.jp>
* rx.h (E_FLAG_RX_V2): New RXv2 type.
2015-12-07 Alan Modra <amodra@gmail.com>
* ppc64.h (R_PPC64_ENTRY): Define.

View file

@ -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. */

View file

@ -3,6 +3,10 @@
* aarch64.h (enum aarch64_opnd_qualifier): Add
AARCH64_OPND_QLF_V_2H.
2015-12-14 Yoshinori Sato <ysato@users.sourceforge.jp>
* rx.h: Add new instructions.
2015-12-11 Matthew Wahab <matthew.wahab@arm.com>
* aarch64.h (aarch64_opnd): Add AARCH64_OPND_BARRIER_PSB.

View file

@ -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. */

View file

@ -1,3 +1,9 @@
2015-12-14 Yoshinori Sato <ysato@users.sourceforge.jp>
* rx-deocde.opc: Add new instructions pattern.
* rx-deocde.c: Regenerate.
* rx-dis.c (register_name): Add new register.
2015-12-14 Matthew Wahab <matthew.wahab@arm.com>
* aarch64-asm-2.c: Regenerate.

File diff suppressed because it is too large Load diff

View file

@ -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;

View file

@ -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[] =