X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=opcodes%2Fm32r-opc.c;h=2ae8c40421351a6acff206cf4f4650d105c72e7d;hb=5aae9ae97f65f6651cf91db856a1f8b4bef5e896;hp=44d5437603148669ec0974dab9cab42390575e36;hpb=b3466c39bc29323e1912f5fa17c70e63af56e001;p=deliverable%2Fbinutils-gdb.git diff --git a/opcodes/m32r-opc.c b/opcodes/m32r-opc.c index 44d5437603..2ae8c40421 100644 --- a/opcodes/m32r-opc.c +++ b/opcodes/m32r-opc.c @@ -1,24 +1,25 @@ +/* DO NOT EDIT! -*- buffer-read-only: t -*- vi:set ro: */ /* Instruction opcode table for m32r. THIS FILE IS MACHINE GENERATED WITH CGEN. -Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. +Copyright (C) 1996-2020 Free Software Foundation, Inc. This file is part of the GNU Binutils and/or GDB, the GNU debugger. -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. + This file is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. + It is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public + License for more details. -You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., -59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ @@ -30,161 +31,184 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "m32r-opc.h" #include "libiberty.h" +/* -- opc.c */ +unsigned int +m32r_cgen_dis_hash (const char * buf ATTRIBUTE_UNUSED, CGEN_INSN_INT value) +{ + unsigned int x; + + if (value & 0xffff0000) /* 32bit instructions. */ + value = (value >> 16) & 0xffff; + + x = (value >> 8) & 0xf0; + if (x == 0x40 || x == 0xe0 || x == 0x60 || x == 0x50) + return x; + + if (x == 0x70 || x == 0xf0) + return x | ((value >> 8) & 0x0f); + + if (x == 0x30) + return x | ((value & 0x70) >> 4); + else + return x | ((value & 0xf0) >> 4); +} + +/* -- */ /* The hash functions are recorded here to help keep assembler code out of the disassembler and vice versa. */ -static int asm_hash_insn_p PARAMS ((const CGEN_INSN *)); -static unsigned int asm_hash_insn PARAMS ((const char *)); -static int dis_hash_insn_p PARAMS ((const CGEN_INSN *)); -static unsigned int dis_hash_insn PARAMS ((const char *, CGEN_INSN_INT)); +static int asm_hash_insn_p (const CGEN_INSN *); +static unsigned int asm_hash_insn (const char *); +static int dis_hash_insn_p (const CGEN_INSN *); +static unsigned int dis_hash_insn (const char *, CGEN_INSN_INT); /* Instruction formats. */ -#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) #define F(f) & m32r_cgen_ifld_table[M32R_##f] -#else -#define F(f) & m32r_cgen_ifld_table[M32R_/**/f] -#endif -static const CGEN_IFMT ifmt_empty = { +static const CGEN_IFMT ifmt_empty ATTRIBUTE_UNUSED = { 0, 0, 0x0, { { 0 } } }; -static const CGEN_IFMT ifmt_add = { +static const CGEN_IFMT ifmt_add ATTRIBUTE_UNUSED = { 16, 16, 0xf0f0, { { F (F_OP1) }, { F (F_R1) }, { F (F_OP2) }, { F (F_R2) }, { 0 } } }; -static const CGEN_IFMT ifmt_add3 = { +static const CGEN_IFMT ifmt_add3 ATTRIBUTE_UNUSED = { 32, 32, 0xf0f00000, { { F (F_OP1) }, { F (F_R1) }, { F (F_OP2) }, { F (F_R2) }, { F (F_SIMM16) }, { 0 } } }; -static const CGEN_IFMT ifmt_and3 = { +static const CGEN_IFMT ifmt_and3 ATTRIBUTE_UNUSED = { 32, 32, 0xf0f00000, { { F (F_OP1) }, { F (F_R1) }, { F (F_OP2) }, { F (F_R2) }, { F (F_UIMM16) }, { 0 } } }; -static const CGEN_IFMT ifmt_or3 = { +static const CGEN_IFMT ifmt_or3 ATTRIBUTE_UNUSED = { 32, 32, 0xf0f00000, { { F (F_OP1) }, { F (F_R1) }, { F (F_OP2) }, { F (F_R2) }, { F (F_UIMM16) }, { 0 } } }; -static const CGEN_IFMT ifmt_addi = { +static const CGEN_IFMT ifmt_addi ATTRIBUTE_UNUSED = { 16, 16, 0xf000, { { F (F_OP1) }, { F (F_R1) }, { F (F_SIMM8) }, { 0 } } }; -static const CGEN_IFMT ifmt_addv3 = { +static const CGEN_IFMT ifmt_addv3 ATTRIBUTE_UNUSED = { 32, 32, 0xf0f00000, { { F (F_OP1) }, { F (F_R1) }, { F (F_OP2) }, { F (F_R2) }, { F (F_SIMM16) }, { 0 } } }; -static const CGEN_IFMT ifmt_bc8 = { +static const CGEN_IFMT ifmt_bc8 ATTRIBUTE_UNUSED = { 16, 16, 0xff00, { { F (F_OP1) }, { F (F_R1) }, { F (F_DISP8) }, { 0 } } }; -static const CGEN_IFMT ifmt_bc24 = { +static const CGEN_IFMT ifmt_bc24 ATTRIBUTE_UNUSED = { 32, 32, 0xff000000, { { F (F_OP1) }, { F (F_R1) }, { F (F_DISP24) }, { 0 } } }; -static const CGEN_IFMT ifmt_beq = { +static const CGEN_IFMT ifmt_beq ATTRIBUTE_UNUSED = { 32, 32, 0xf0f00000, { { F (F_OP1) }, { F (F_R1) }, { F (F_OP2) }, { F (F_R2) }, { F (F_DISP16) }, { 0 } } }; -static const CGEN_IFMT ifmt_beqz = { +static const CGEN_IFMT ifmt_beqz ATTRIBUTE_UNUSED = { 32, 32, 0xfff00000, { { F (F_OP1) }, { F (F_R1) }, { F (F_OP2) }, { F (F_R2) }, { F (F_DISP16) }, { 0 } } }; -static const CGEN_IFMT ifmt_cmp = { +static const CGEN_IFMT ifmt_cmp ATTRIBUTE_UNUSED = { 16, 16, 0xf0f0, { { F (F_OP1) }, { F (F_R1) }, { F (F_OP2) }, { F (F_R2) }, { 0 } } }; -static const CGEN_IFMT ifmt_cmpi = { +static const CGEN_IFMT ifmt_cmpi ATTRIBUTE_UNUSED = { 32, 32, 0xfff00000, { { F (F_OP1) }, { F (F_R1) }, { F (F_OP2) }, { F (F_R2) }, { F (F_SIMM16) }, { 0 } } }; -static const CGEN_IFMT ifmt_cmpz = { +static const CGEN_IFMT ifmt_cmpz ATTRIBUTE_UNUSED = { 16, 16, 0xfff0, { { F (F_OP1) }, { F (F_R1) }, { F (F_OP2) }, { F (F_R2) }, { 0 } } }; -static const CGEN_IFMT ifmt_div = { +static const CGEN_IFMT ifmt_div ATTRIBUTE_UNUSED = { 32, 32, 0xf0f0ffff, { { F (F_OP1) }, { F (F_R1) }, { F (F_OP2) }, { F (F_R2) }, { F (F_SIMM16) }, { 0 } } }; -static const CGEN_IFMT ifmt_jc = { +static const CGEN_IFMT ifmt_jc ATTRIBUTE_UNUSED = { 16, 16, 0xfff0, { { F (F_OP1) }, { F (F_R1) }, { F (F_OP2) }, { F (F_R2) }, { 0 } } }; -static const CGEN_IFMT ifmt_ld24 = { +static const CGEN_IFMT ifmt_ld24 ATTRIBUTE_UNUSED = { 32, 32, 0xf0000000, { { F (F_OP1) }, { F (F_R1) }, { F (F_UIMM24) }, { 0 } } }; -static const CGEN_IFMT ifmt_ldi16 = { +static const CGEN_IFMT ifmt_ldi16 ATTRIBUTE_UNUSED = { 32, 32, 0xf0ff0000, { { F (F_OP1) }, { F (F_R1) }, { F (F_OP2) }, { F (F_R2) }, { F (F_SIMM16) }, { 0 } } }; -static const CGEN_IFMT ifmt_machi_a = { +static const CGEN_IFMT ifmt_machi_a ATTRIBUTE_UNUSED = { 16, 16, 0xf070, { { F (F_OP1) }, { F (F_R1) }, { F (F_ACC) }, { F (F_OP23) }, { F (F_R2) }, { 0 } } }; -static const CGEN_IFMT ifmt_mvfachi = { +static const CGEN_IFMT ifmt_mvfachi ATTRIBUTE_UNUSED = { 16, 16, 0xf0ff, { { F (F_OP1) }, { F (F_R1) }, { F (F_OP2) }, { F (F_R2) }, { 0 } } }; -static const CGEN_IFMT ifmt_mvfachi_a = { +static const CGEN_IFMT ifmt_mvfachi_a ATTRIBUTE_UNUSED = { 16, 16, 0xf0f3, { { F (F_OP1) }, { F (F_R1) }, { F (F_OP2) }, { F (F_ACCS) }, { F (F_OP3) }, { 0 } } }; -static const CGEN_IFMT ifmt_mvfc = { +static const CGEN_IFMT ifmt_mvfc ATTRIBUTE_UNUSED = { 16, 16, 0xf0f0, { { F (F_OP1) }, { F (F_R1) }, { F (F_OP2) }, { F (F_R2) }, { 0 } } }; -static const CGEN_IFMT ifmt_mvtachi = { +static const CGEN_IFMT ifmt_mvtachi ATTRIBUTE_UNUSED = { 16, 16, 0xf0ff, { { F (F_OP1) }, { F (F_R1) }, { F (F_OP2) }, { F (F_R2) }, { 0 } } }; -static const CGEN_IFMT ifmt_mvtachi_a = { +static const CGEN_IFMT ifmt_mvtachi_a ATTRIBUTE_UNUSED = { 16, 16, 0xf0f3, { { F (F_OP1) }, { F (F_R1) }, { F (F_OP2) }, { F (F_ACCS) }, { F (F_OP3) }, { 0 } } }; -static const CGEN_IFMT ifmt_mvtc = { +static const CGEN_IFMT ifmt_mvtc ATTRIBUTE_UNUSED = { 16, 16, 0xf0f0, { { F (F_OP1) }, { F (F_R1) }, { F (F_OP2) }, { F (F_R2) }, { 0 } } }; -static const CGEN_IFMT ifmt_nop = { +static const CGEN_IFMT ifmt_nop ATTRIBUTE_UNUSED = { 16, 16, 0xffff, { { F (F_OP1) }, { F (F_R1) }, { F (F_OP2) }, { F (F_R2) }, { 0 } } }; -static const CGEN_IFMT ifmt_rac_dsi = { +static const CGEN_IFMT ifmt_rac_dsi ATTRIBUTE_UNUSED = { 16, 16, 0xf3f2, { { F (F_OP1) }, { F (F_ACCD) }, { F (F_BITS67) }, { F (F_OP2) }, { F (F_ACCS) }, { F (F_BIT14) }, { F (F_IMM1) }, { 0 } } }; -static const CGEN_IFMT ifmt_seth = { +static const CGEN_IFMT ifmt_seth ATTRIBUTE_UNUSED = { 32, 32, 0xf0ff0000, { { F (F_OP1) }, { F (F_R1) }, { F (F_OP2) }, { F (F_R2) }, { F (F_HI16) }, { 0 } } }; -static const CGEN_IFMT ifmt_slli = { +static const CGEN_IFMT ifmt_slli ATTRIBUTE_UNUSED = { 16, 16, 0xf0e0, { { F (F_OP1) }, { F (F_R1) }, { F (F_SHIFT_OP2) }, { F (F_UIMM5) }, { 0 } } }; -static const CGEN_IFMT ifmt_st_d = { +static const CGEN_IFMT ifmt_st_d ATTRIBUTE_UNUSED = { 32, 32, 0xf0f00000, { { F (F_OP1) }, { F (F_R1) }, { F (F_OP2) }, { F (F_R2) }, { F (F_SIMM16) }, { 0 } } }; -static const CGEN_IFMT ifmt_trap = { +static const CGEN_IFMT ifmt_trap ATTRIBUTE_UNUSED = { 16, 16, 0xfff0, { { F (F_OP1) }, { F (F_R1) }, { F (F_OP2) }, { F (F_UIMM4) }, { 0 } } }; -static const CGEN_IFMT ifmt_satb = { +static const CGEN_IFMT ifmt_satb ATTRIBUTE_UNUSED = { 32, 32, 0xf0f0ffff, { { F (F_OP1) }, { F (F_R1) }, { F (F_OP2) }, { F (F_R2) }, { F (F_UIMM16) }, { 0 } } }; +static const CGEN_IFMT ifmt_clrpsw ATTRIBUTE_UNUSED = { + 16, 16, 0xff00, { { F (F_OP1) }, { F (F_R1) }, { F (F_UIMM8) }, { 0 } } +}; + +static const CGEN_IFMT ifmt_bset ATTRIBUTE_UNUSED = { + 32, 32, 0xf8f00000, { { F (F_OP1) }, { F (F_BIT4) }, { F (F_UIMM3) }, { F (F_OP2) }, { F (F_R2) }, { F (F_SIMM16) }, { 0 } } +}; + +static const CGEN_IFMT ifmt_btst ATTRIBUTE_UNUSED = { + 16, 16, 0xf8f0, { { F (F_OP1) }, { F (F_BIT4) }, { F (F_UIMM3) }, { F (F_OP2) }, { F (F_R2) }, { 0 } } +}; + #undef F -#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) #define A(a) (1 << CGEN_INSN_##a) -#else -#define A(a) (1 << CGEN_INSN_/**/a) -#endif -#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) #define OPERAND(op) M32R_OPERAND_##op -#else -#define OPERAND(op) M32R_OPERAND_/**/op -#endif #define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */ #define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field)) @@ -448,6 +472,48 @@ static const CGEN_OPCODE m32r_cgen_insn_opcode_table[MAX_INSNS] = { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } }, & ifmt_div, { 0x90300000 } }, +/* remh $dr,$sr */ + { + { 0, 0, 0, 0 }, + { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } }, + & ifmt_div, { 0x90200010 } + }, +/* remuh $dr,$sr */ + { + { 0, 0, 0, 0 }, + { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } }, + & ifmt_div, { 0x90300010 } + }, +/* remb $dr,$sr */ + { + { 0, 0, 0, 0 }, + { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } }, + & ifmt_div, { 0x90200018 } + }, +/* remub $dr,$sr */ + { + { 0, 0, 0, 0 }, + { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } }, + & ifmt_div, { 0x90300018 } + }, +/* divuh $dr,$sr */ + { + { 0, 0, 0, 0 }, + { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } }, + & ifmt_div, { 0x90100010 } + }, +/* divb $dr,$sr */ + { + { 0, 0, 0, 0 }, + { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } }, + & ifmt_div, { 0x90000018 } + }, +/* divub $dr,$sr */ + { + { 0, 0, 0, 0 }, + { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } }, + & ifmt_div, { 0x90100018 } + }, /* divh $dr,$sr */ { { 0, 0, 0, 0 }, @@ -898,6 +964,18 @@ static const CGEN_OPCODE m32r_cgen_insn_opcode_table[MAX_INSNS] = { { MNEM, ' ', OP (SRC1), ',', '@', '+', OP (SRC2), 0 } }, & ifmt_cmp, { 0x2060 } }, +/* sth $src1,@$src2+ */ + { + { 0, 0, 0, 0 }, + { { MNEM, ' ', OP (SRC1), ',', '@', OP (SRC2), '+', 0 } }, + & ifmt_cmp, { 0x2030 } + }, +/* stb $src1,@$src2+ */ + { + { 0, 0, 0, 0 }, + { { MNEM, ' ', OP (SRC1), ',', '@', OP (SRC2), '+', 0 } }, + & ifmt_cmp, { 0x2010 } + }, /* st $src1,@-$src2 */ { { 0, 0, 0, 0 }, @@ -1000,6 +1078,36 @@ static const CGEN_OPCODE m32r_cgen_insn_opcode_table[MAX_INSNS] = { { MNEM, 0 } }, & ifmt_nop, { 0x7501 } }, +/* clrpsw $uimm8 */ + { + { 0, 0, 0, 0 }, + { { MNEM, ' ', OP (UIMM8), 0 } }, + & ifmt_clrpsw, { 0x7200 } + }, +/* setpsw $uimm8 */ + { + { 0, 0, 0, 0 }, + { { MNEM, ' ', OP (UIMM8), 0 } }, + & ifmt_clrpsw, { 0x7100 } + }, +/* bset $uimm3,@($slo16,$sr) */ + { + { 0, 0, 0, 0 }, + { { MNEM, ' ', OP (UIMM3), ',', '@', '(', OP (SLO16), ',', OP (SR), ')', 0 } }, + & ifmt_bset, { 0xa0600000 } + }, +/* bclr $uimm3,@($slo16,$sr) */ + { + { 0, 0, 0, 0 }, + { { MNEM, ' ', OP (UIMM3), ',', '@', '(', OP (SLO16), ',', OP (SR), ')', 0 } }, + & ifmt_bset, { 0xa0700000 } + }, +/* btst $uimm3,$sr */ + { + { 0, 0, 0, 0 }, + { { MNEM, ' ', OP (UIMM3), ',', OP (SR), 0 } }, + & ifmt_btst, { 0xf0 } + }, }; #undef A @@ -1009,152 +1117,148 @@ static const CGEN_OPCODE m32r_cgen_insn_opcode_table[MAX_INSNS] = /* Formats for ALIAS macro-insns. */ -#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) #define F(f) & m32r_cgen_ifld_table[M32R_##f] -#else -#define F(f) & m32r_cgen_ifld_table[M32R_/**/f] -#endif -static const CGEN_IFMT ifmt_bc8r = { +static const CGEN_IFMT ifmt_bc8r ATTRIBUTE_UNUSED = { 16, 16, 0xff00, { { F (F_OP1) }, { F (F_R1) }, { F (F_DISP8) }, { 0 } } }; -static const CGEN_IFMT ifmt_bc24r = { +static const CGEN_IFMT ifmt_bc24r ATTRIBUTE_UNUSED = { 32, 32, 0xff000000, { { F (F_OP1) }, { F (F_R1) }, { F (F_DISP24) }, { 0 } } }; -static const CGEN_IFMT ifmt_bl8r = { +static const CGEN_IFMT ifmt_bl8r ATTRIBUTE_UNUSED = { 16, 16, 0xff00, { { F (F_OP1) }, { F (F_R1) }, { F (F_DISP8) }, { 0 } } }; -static const CGEN_IFMT ifmt_bl24r = { +static const CGEN_IFMT ifmt_bl24r ATTRIBUTE_UNUSED = { 32, 32, 0xff000000, { { F (F_OP1) }, { F (F_R1) }, { F (F_DISP24) }, { 0 } } }; -static const CGEN_IFMT ifmt_bcl8r = { +static const CGEN_IFMT ifmt_bcl8r ATTRIBUTE_UNUSED = { 16, 16, 0xff00, { { F (F_OP1) }, { F (F_R1) }, { F (F_DISP8) }, { 0 } } }; -static const CGEN_IFMT ifmt_bcl24r = { +static const CGEN_IFMT ifmt_bcl24r ATTRIBUTE_UNUSED = { 32, 32, 0xff000000, { { F (F_OP1) }, { F (F_R1) }, { F (F_DISP24) }, { 0 } } }; -static const CGEN_IFMT ifmt_bnc8r = { +static const CGEN_IFMT ifmt_bnc8r ATTRIBUTE_UNUSED = { 16, 16, 0xff00, { { F (F_OP1) }, { F (F_R1) }, { F (F_DISP8) }, { 0 } } }; -static const CGEN_IFMT ifmt_bnc24r = { +static const CGEN_IFMT ifmt_bnc24r ATTRIBUTE_UNUSED = { 32, 32, 0xff000000, { { F (F_OP1) }, { F (F_R1) }, { F (F_DISP24) }, { 0 } } }; -static const CGEN_IFMT ifmt_bra8r = { +static const CGEN_IFMT ifmt_bra8r ATTRIBUTE_UNUSED = { 16, 16, 0xff00, { { F (F_OP1) }, { F (F_R1) }, { F (F_DISP8) }, { 0 } } }; -static const CGEN_IFMT ifmt_bra24r = { +static const CGEN_IFMT ifmt_bra24r ATTRIBUTE_UNUSED = { 32, 32, 0xff000000, { { F (F_OP1) }, { F (F_R1) }, { F (F_DISP24) }, { 0 } } }; -static const CGEN_IFMT ifmt_bncl8r = { +static const CGEN_IFMT ifmt_bncl8r ATTRIBUTE_UNUSED = { 16, 16, 0xff00, { { F (F_OP1) }, { F (F_R1) }, { F (F_DISP8) }, { 0 } } }; -static const CGEN_IFMT ifmt_bncl24r = { +static const CGEN_IFMT ifmt_bncl24r ATTRIBUTE_UNUSED = { 32, 32, 0xff000000, { { F (F_OP1) }, { F (F_R1) }, { F (F_DISP24) }, { 0 } } }; -static const CGEN_IFMT ifmt_ld_2 = { +static const CGEN_IFMT ifmt_ld_2 ATTRIBUTE_UNUSED = { 16, 16, 0xf0f0, { { F (F_OP1) }, { F (F_OP2) }, { F (F_R1) }, { F (F_R2) }, { 0 } } }; -static const CGEN_IFMT ifmt_ld_d2 = { +static const CGEN_IFMT ifmt_ld_d2 ATTRIBUTE_UNUSED = { 32, 32, 0xf0f00000, { { F (F_OP1) }, { F (F_OP2) }, { F (F_R1) }, { F (F_R2) }, { F (F_SIMM16) }, { 0 } } }; -static const CGEN_IFMT ifmt_ldb_2 = { +static const CGEN_IFMT ifmt_ldb_2 ATTRIBUTE_UNUSED = { 16, 16, 0xf0f0, { { F (F_OP1) }, { F (F_OP2) }, { F (F_R1) }, { F (F_R2) }, { 0 } } }; -static const CGEN_IFMT ifmt_ldb_d2 = { +static const CGEN_IFMT ifmt_ldb_d2 ATTRIBUTE_UNUSED = { 32, 32, 0xf0f00000, { { F (F_OP1) }, { F (F_OP2) }, { F (F_R1) }, { F (F_R2) }, { F (F_SIMM16) }, { 0 } } }; -static const CGEN_IFMT ifmt_ldh_2 = { +static const CGEN_IFMT ifmt_ldh_2 ATTRIBUTE_UNUSED = { 16, 16, 0xf0f0, { { F (F_OP1) }, { F (F_OP2) }, { F (F_R1) }, { F (F_R2) }, { 0 } } }; -static const CGEN_IFMT ifmt_ldh_d2 = { +static const CGEN_IFMT ifmt_ldh_d2 ATTRIBUTE_UNUSED = { 32, 32, 0xf0f00000, { { F (F_OP1) }, { F (F_OP2) }, { F (F_R1) }, { F (F_R2) }, { F (F_SIMM16) }, { 0 } } }; -static const CGEN_IFMT ifmt_ldub_2 = { +static const CGEN_IFMT ifmt_ldub_2 ATTRIBUTE_UNUSED = { 16, 16, 0xf0f0, { { F (F_OP1) }, { F (F_OP2) }, { F (F_R1) }, { F (F_R2) }, { 0 } } }; -static const CGEN_IFMT ifmt_ldub_d2 = { +static const CGEN_IFMT ifmt_ldub_d2 ATTRIBUTE_UNUSED = { 32, 32, 0xf0f00000, { { F (F_OP1) }, { F (F_OP2) }, { F (F_R1) }, { F (F_R2) }, { F (F_SIMM16) }, { 0 } } }; -static const CGEN_IFMT ifmt_lduh_2 = { +static const CGEN_IFMT ifmt_lduh_2 ATTRIBUTE_UNUSED = { 16, 16, 0xf0f0, { { F (F_OP1) }, { F (F_OP2) }, { F (F_R1) }, { F (F_R2) }, { 0 } } }; -static const CGEN_IFMT ifmt_lduh_d2 = { +static const CGEN_IFMT ifmt_lduh_d2 ATTRIBUTE_UNUSED = { 32, 32, 0xf0f00000, { { F (F_OP1) }, { F (F_OP2) }, { F (F_R1) }, { F (F_R2) }, { F (F_SIMM16) }, { 0 } } }; -static const CGEN_IFMT ifmt_pop = { +static const CGEN_IFMT ifmt_pop ATTRIBUTE_UNUSED = { 16, 16, 0xf0ff, { { F (F_OP1) }, { F (F_R1) }, { F (F_OP2) }, { F (F_R2) }, { 0 } } }; -static const CGEN_IFMT ifmt_ldi8a = { +static const CGEN_IFMT ifmt_ldi8a ATTRIBUTE_UNUSED = { 16, 16, 0xf000, { { F (F_OP1) }, { F (F_R1) }, { F (F_SIMM8) }, { 0 } } }; -static const CGEN_IFMT ifmt_ldi16a = { +static const CGEN_IFMT ifmt_ldi16a ATTRIBUTE_UNUSED = { 32, 32, 0xf0ff0000, { { F (F_OP1) }, { F (F_OP2) }, { F (F_R2) }, { F (F_R1) }, { F (F_SIMM16) }, { 0 } } }; -static const CGEN_IFMT ifmt_rac_d = { +static const CGEN_IFMT ifmt_rac_d ATTRIBUTE_UNUSED = { 16, 16, 0xf3ff, { { F (F_OP1) }, { F (F_ACCD) }, { F (F_BITS67) }, { F (F_OP2) }, { F (F_ACCS) }, { F (F_BIT14) }, { F (F_IMM1) }, { 0 } } }; -static const CGEN_IFMT ifmt_rac_ds = { +static const CGEN_IFMT ifmt_rac_ds ATTRIBUTE_UNUSED = { 16, 16, 0xf3f3, { { F (F_OP1) }, { F (F_ACCD) }, { F (F_BITS67) }, { F (F_OP2) }, { F (F_ACCS) }, { F (F_BIT14) }, { F (F_IMM1) }, { 0 } } }; -static const CGEN_IFMT ifmt_rach_d = { +static const CGEN_IFMT ifmt_rach_d ATTRIBUTE_UNUSED = { 16, 16, 0xf3ff, { { F (F_OP1) }, { F (F_ACCD) }, { F (F_BITS67) }, { F (F_OP2) }, { F (F_ACCS) }, { F (F_BIT14) }, { F (F_IMM1) }, { 0 } } }; -static const CGEN_IFMT ifmt_rach_ds = { +static const CGEN_IFMT ifmt_rach_ds ATTRIBUTE_UNUSED = { 16, 16, 0xf3f3, { { F (F_OP1) }, { F (F_ACCD) }, { F (F_BITS67) }, { F (F_OP2) }, { F (F_ACCS) }, { F (F_BIT14) }, { F (F_IMM1) }, { 0 } } }; -static const CGEN_IFMT ifmt_st_2 = { +static const CGEN_IFMT ifmt_st_2 ATTRIBUTE_UNUSED = { 16, 16, 0xf0f0, { { F (F_OP1) }, { F (F_OP2) }, { F (F_R1) }, { F (F_R2) }, { 0 } } }; -static const CGEN_IFMT ifmt_st_d2 = { +static const CGEN_IFMT ifmt_st_d2 ATTRIBUTE_UNUSED = { 32, 32, 0xf0f00000, { { F (F_OP1) }, { F (F_OP2) }, { F (F_R1) }, { F (F_R2) }, { F (F_SIMM16) }, { 0 } } }; -static const CGEN_IFMT ifmt_stb_2 = { +static const CGEN_IFMT ifmt_stb_2 ATTRIBUTE_UNUSED = { 16, 16, 0xf0f0, { { F (F_OP1) }, { F (F_OP2) }, { F (F_R1) }, { F (F_R2) }, { 0 } } }; -static const CGEN_IFMT ifmt_stb_d2 = { +static const CGEN_IFMT ifmt_stb_d2 ATTRIBUTE_UNUSED = { 32, 32, 0xf0f00000, { { F (F_OP1) }, { F (F_OP2) }, { F (F_R1) }, { F (F_R2) }, { F (F_SIMM16) }, { 0 } } }; -static const CGEN_IFMT ifmt_sth_2 = { +static const CGEN_IFMT ifmt_sth_2 ATTRIBUTE_UNUSED = { 16, 16, 0xf0f0, { { F (F_OP1) }, { F (F_OP2) }, { F (F_R1) }, { F (F_R2) }, { 0 } } }; -static const CGEN_IFMT ifmt_sth_d2 = { +static const CGEN_IFMT ifmt_sth_d2 ATTRIBUTE_UNUSED = { 32, 32, 0xf0f00000, { { F (F_OP1) }, { F (F_OP2) }, { F (F_R1) }, { F (F_R2) }, { F (F_SIMM16) }, { 0 } } }; -static const CGEN_IFMT ifmt_push = { +static const CGEN_IFMT ifmt_push ATTRIBUTE_UNUSED = { 16, 16, 0xf0ff, { { F (F_OP1) }, { F (F_OP2) }, { F (F_R1) }, { F (F_R2) }, { 0 } } }; @@ -1162,16 +1266,8 @@ static const CGEN_IFMT ifmt_push = { /* Each non-simple macro entry points to an array of expansion possibilities. */ -#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) #define A(a) (1 << CGEN_INSN_##a) -#else -#define A(a) (1 << CGEN_INSN_/**/a) -#endif -#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) #define OPERAND(op) M32R_OPERAND_##op -#else -#define OPERAND(op) M32R_OPERAND_/**/op -#endif #define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */ #define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field)) @@ -1182,182 +1278,182 @@ static const CGEN_IBASE m32r_cgen_macro_insn_table[] = /* bc $disp8 */ { -1, "bc8r", "bc", 16, - { 0|A(RELAXABLE)|A(COND_CTI)|A(ALIAS), { (1<= 1) + memset (insns, 0, num_macros * sizeof (CGEN_INSN)); for (i = 0; i < num_macros; ++i) { insns[i].base = &ib[i]; insns[i].opcode = &oc[i]; + m32r_cgen_build_insn_regex (& insns[i]); } cd->macro_insn_table.init_entries = insns; cd->macro_insn_table.entry_size = sizeof (CGEN_IBASE); @@ -1693,7 +1787,10 @@ m32r_cgen_init_opcode_table (cd) oc = & m32r_cgen_insn_opcode_table[0]; insns = (CGEN_INSN *) cd->insn_table.init_entries; for (i = 0; i < MAX_INSNS; ++i) - insns[i].opcode = &oc[i]; + { + insns[i].opcode = &oc[i]; + m32r_cgen_build_insn_regex (& insns[i]); + } cd->sizeof_fields = sizeof (CGEN_FIELDS); cd->set_fields_bitsize = set_fields_bitsize;