/* Instruction opcode table for epiphany. THIS FILE IS MACHINE GENERATED WITH CGEN. Copyright (C) 1996-2014 Free Software Foundation, Inc. This file is part of the GNU Binutils and/or GDB, the GNU debugger. 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. 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., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #include "sysdep.h" #include "ansidecl.h" #include "bfd.h" #include "symcat.h" #include "epiphany-desc.h" #include "epiphany-opc.h" #include "libiberty.h" /* -- opc.c */ /* -- asm.c */ /* The hash functions are recorded here to help keep assembler code out of the disassembler and vice versa. */ 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. */ #define F(f) & epiphany_cgen_ifld_table[EPIPHANY_##f] static const CGEN_IFMT ifmt_empty ATTRIBUTE_UNUSED = { 0, 0, 0x0, { { 0 } } }; static const CGEN_IFMT ifmt_beq16 ATTRIBUTE_UNUSED = { 16, 16, 0xff, { { F (F_SIMM8) }, { F (F_CONDCODE) }, { F (F_OPC) }, { 0 } } }; static const CGEN_IFMT ifmt_beq ATTRIBUTE_UNUSED = { 32, 32, 0xff, { { F (F_SIMM24) }, { F (F_CONDCODE) }, { F (F_OPC) }, { 0 } } }; static const CGEN_IFMT ifmt_jr16 ATTRIBUTE_UNUSED = { 16, 16, 0xe3ff, { { F (F_DC_15_3) }, { F (F_RN) }, { F (F_DC_9_1) }, { F (F_OPC_8_5) }, { F (F_OPC) }, { 0 } } }; static const CGEN_IFMT ifmt_rts ATTRIBUTE_UNUSED = { 32, 32, 0xffffffff, { { F (F_DC_31_3) }, { F (F_RN_X) }, { F (F_DC_25_6) }, { F (F_OPC_19_4) }, { F (F_DC_15_3) }, { F (F_RN) }, { F (F_DC_9_1) }, { F (F_OPC_8_5) }, { F (F_OPC) }, { 0 } } }; static const CGEN_IFMT ifmt_jr ATTRIBUTE_UNUSED = { 32, 32, 0xe3ffe3ff, { { F (F_DC_31_3) }, { F (F_DC_25_6) }, { F (F_OPC_19_4) }, { F (F_DC_15_3) }, { F (F_RN6) }, { F (F_DC_9_1) }, { F (F_OPC_8_5) }, { F (F_OPC) }, { 0 } } }; static const CGEN_IFMT ifmt_ldrbx16_s ATTRIBUTE_UNUSED = { 16, 16, 0x7f, { { F (F_RD) }, { F (F_RN) }, { F (F_RM) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC) }, { 0 } } }; static const CGEN_IFMT ifmt_ldrbx_l ATTRIBUTE_UNUSED = { 32, 32, 0x6f007f, { { F (F_DC_22_1) }, { F (F_DC_21_1) }, { F (F_ADDSUBX) }, { F (F_OPC_19_4) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC) }, { 0 } } }; static const CGEN_IFMT ifmt_ldrbp_l ATTRIBUTE_UNUSED = { 32, 32, 0x6f007f, { { F (F_DC_22_2) }, { F (F_ADDSUBX) }, { F (F_OPC_19_4) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC) }, { 0 } } }; static const CGEN_IFMT ifmt_ldrbd16_s ATTRIBUTE_UNUSED = { 16, 16, 0x7f, { { F (F_RD) }, { F (F_RN) }, { F (F_DISP3) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC) }, { 0 } } }; static const CGEN_IFMT ifmt_ldrbd_l ATTRIBUTE_UNUSED = { 32, 32, 0x200007f, { { F (F_PM) }, { F (F_SUBD) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_DISP11) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC) }, { 0 } } }; static const CGEN_IFMT ifmt_cmov16EQ ATTRIBUTE_UNUSED = { 16, 16, 0x3ff, { { F (F_RD) }, { F (F_RN) }, { F (F_DC_9_1) }, { F (F_OPC_8_1) }, { F (F_CONDCODE) }, { F (F_OPC) }, { 0 } } }; static const CGEN_IFMT ifmt_cmovEQ ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_DC_25_6) }, { F (F_OPC_19_4) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_DC_9_1) }, { F (F_OPC_8_1) }, { F (F_CONDCODE) }, { F (F_OPC) }, { 0 } } }; static const CGEN_IFMT ifmt_movts16 ATTRIBUTE_UNUSED = { 16, 16, 0x3ff, { { F (F_RD) }, { F (F_SN) }, { F (F_DC_9_1) }, { F (F_OPC_8_5) }, { F (F_OPC) }, { 0 } } }; static const CGEN_IFMT ifmt_movts6 ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_DC_25_4) }, { F (F_DC_21_2) }, { F (F_OPC_19_4) }, { F (F_RD6) }, { F (F_SN6) }, { F (F_DC_9_1) }, { F (F_OPC_8_1) }, { F (F_DC_7_4) }, { F (F_OPC) }, { 0 } } }; static const CGEN_IFMT ifmt_movtsdma ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_DC_25_4) }, { F (F_DC_21_2) }, { F (F_OPC_19_4) }, { F (F_RD6) }, { F (F_SN6) }, { F (F_DC_9_1) }, { F (F_OPC_8_1) }, { F (F_DC_7_4) }, { F (F_OPC) }, { 0 } } }; static const CGEN_IFMT ifmt_movtsmem ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_DC_25_4) }, { F (F_DC_21_2) }, { F (F_OPC_19_4) }, { F (F_RD6) }, { F (F_SN6) }, { F (F_DC_9_1) }, { F (F_OPC_8_1) }, { F (F_DC_7_4) }, { F (F_OPC) }, { 0 } } }; static const CGEN_IFMT ifmt_movtsmesh ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_DC_25_4) }, { F (F_DC_21_2) }, { F (F_OPC_19_4) }, { F (F_RD6) }, { F (F_SN6) }, { F (F_DC_9_1) }, { F (F_OPC_8_1) }, { F (F_DC_7_4) }, { F (F_OPC) }, { 0 } } }; static const CGEN_IFMT ifmt_nop ATTRIBUTE_UNUSED = { 16, 16, 0xffff, { { F (F_DC_15_7) }, { F (F_OPC_8_5) }, { F (F_OPC) }, { 0 } } }; static const CGEN_IFMT ifmt_unimpl ATTRIBUTE_UNUSED = { 32, 32, 0xffffffff, { { F (F_OPC_31_32) }, { 0 } } }; static const CGEN_IFMT ifmt_gien ATTRIBUTE_UNUSED = { 16, 16, 0xffff, { { F (F_DC_15_6) }, { F (F_GIEN_GIDIS_9_1) }, { F (F_OPC_8_5) }, { F (F_OPC) }, { 0 } } }; static const CGEN_IFMT ifmt_swi_num ATTRIBUTE_UNUSED = { 16, 16, 0x3ff, { { F (F_TRAP_NUM) }, { F (F_TRAP_SWI_9_1) }, { F (F_OPC_8_5) }, { F (F_OPC) }, { 0 } } }; static const CGEN_IFMT ifmt_swi ATTRIBUTE_UNUSED = { 16, 16, 0xffff, { { F (F_DC_15_6) }, { F (F_TRAP_SWI_9_1) }, { F (F_OPC_8_5) }, { F (F_OPC) }, { 0 } } }; static const CGEN_IFMT ifmt_trap16 ATTRIBUTE_UNUSED = { 16, 16, 0x3ff, { { F (F_TRAP_NUM) }, { F (F_TRAP_SWI_9_1) }, { F (F_OPC_8_5) }, { F (F_OPC) }, { 0 } } }; static const CGEN_IFMT ifmt_add16 ATTRIBUTE_UNUSED = { 16, 16, 0x7f, { { F (F_RD) }, { F (F_RN) }, { F (F_RM) }, { F (F_OPC_6_3) }, { F (F_OPC) }, { 0 } } }; static const CGEN_IFMT ifmt_add ATTRIBUTE_UNUSED = { 32, 32, 0x7f007f, { { F (F_DC_22_3) }, { F (F_OPC_19_4) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { F (F_OPC_6_3) }, { F (F_OPC) }, { 0 } } }; static const CGEN_IFMT ifmt_addi16 ATTRIBUTE_UNUSED = { 16, 16, 0x7f, { { F (F_RD) }, { F (F_RN) }, { F (F_SDISP3) }, { F (F_OPC_6_3) }, { F (F_OPC) }, { 0 } } }; static const CGEN_IFMT ifmt_addi ATTRIBUTE_UNUSED = { 32, 32, 0x300007f, { { F (F_DC_25_2) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SDISP11) }, { F (F_OPC_6_3) }, { F (F_OPC) }, { 0 } } }; static const CGEN_IFMT ifmt_lsri16 ATTRIBUTE_UNUSED = { 16, 16, 0x1f, { { F (F_RD) }, { F (F_RN) }, { F (F_SHIFT) }, { F (F_OPC_4_1) }, { F (F_OPC) }, { 0 } } }; static const CGEN_IFMT ifmt_lsri32 ATTRIBUTE_UNUSED = { 32, 32, 0x3ff001f, { { F (F_DC_25_6) }, { F (F_OPC_19_4) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SHIFT) }, { F (F_OPC_4_1) }, { F (F_OPC) }, { 0 } } }; static const CGEN_IFMT ifmt_bitr16 ATTRIBUTE_UNUSED = { 16, 16, 0x3ff, { { F (F_RD) }, { F (F_RN) }, { F (F_SHIFT) }, { F (F_OPC_4_1) }, { F (F_OPC) }, { 0 } } }; static const CGEN_IFMT ifmt_bitr ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_DC_25_6) }, { F (F_OPC_19_4) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SHIFT) }, { F (F_OPC_4_1) }, { F (F_OPC) }, { 0 } } }; static const CGEN_IFMT ifmt_fext ATTRIBUTE_UNUSED = { 32, 32, 0x7f007f, { { F (F_DC_22_2) }, { F (F_DC_20_1) }, { F (F_OPC_19_4) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { F (F_OPC_6_3) }, { F (F_OPC) }, { 0 } } }; static const CGEN_IFMT ifmt_mov8 ATTRIBUTE_UNUSED = { 16, 16, 0x1f, { { F (F_RD) }, { F (F_IMM8) }, { F (F_OPC_4_1) }, { F (F_OPC) }, { 0 } } }; static const CGEN_IFMT ifmt_mov16 ATTRIBUTE_UNUSED = { 32, 32, 0x100f001f, { { F (F_DC_28_1) }, { F (F_OPC_19_4) }, { F (F_RD6) }, { F (F_IMM16) }, { F (F_OPC_4_1) }, { F (F_OPC) }, { 0 } } }; static const CGEN_IFMT ifmt_f_absf16 ATTRIBUTE_UNUSED = { 16, 16, 0x7f, { { F (F_RD) }, { F (F_RN) }, { F (F_RN) }, { F (F_OPC_6_3) }, { F (F_OPC) }, { 0 } } }; static const CGEN_IFMT ifmt_f_absf32 ATTRIBUTE_UNUSED = { 32, 32, 0x7f007f, { { F (F_DC_22_3) }, { F (F_OPC_19_4) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RN6) }, { F (F_OPC_6_3) }, { F (F_OPC) }, { 0 } } }; static const CGEN_IFMT ifmt_f_loatf16 ATTRIBUTE_UNUSED = { 16, 16, 0x7f, { { F (F_RD) }, { F (F_RN) }, { F (F_RN) }, { F (F_OPC_6_3) }, { F (F_OPC) }, { 0 } } }; static const CGEN_IFMT ifmt_f_recipf32 ATTRIBUTE_UNUSED = { 32, 32, 0x7f007f, { { F (F_DC_22_2) }, { F (F_DC_20_1) }, { F (F_OPC_19_4) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RN6) }, { F (F_OPC_6_3) }, { F (F_OPC) }, { 0 } } }; #undef F #define A(a) (1 << CGEN_INSN_##a) #define OPERAND(op) EPIPHANY_OPERAND_##op #define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */ #define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field)) /* The instruction table. */ static const CGEN_OPCODE epiphany_cgen_insn_opcode_table[MAX_INSNS] = { /* Special null first entry. A `num' value of zero is thus invalid. Also, the special `invalid' insn resides here. */ { { 0, 0, 0, 0 }, {{0}}, 0, {0}}, /* beq.s $simm8 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SIMM8), 0 } }, & ifmt_beq16, { 0x0 } }, /* beq.l $simm24 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SIMM24), 0 } }, & ifmt_beq, { 0x8 } }, /* bne.s $simm8 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SIMM8), 0 } }, & ifmt_beq16, { 0x10 } }, /* bne.l $simm24 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SIMM24), 0 } }, & ifmt_beq, { 0x18 } }, /* bgtu.s $simm8 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SIMM8), 0 } }, & ifmt_beq16, { 0x20 } }, /* bgtu.l $simm24 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SIMM24), 0 } }, & ifmt_beq, { 0x28 } }, /* bgteu.s $simm8 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SIMM8), 0 } }, & ifmt_beq16, { 0x30 } }, /* bgteu.l $simm24 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SIMM24), 0 } }, & ifmt_beq, { 0x38 } }, /* blteu.s $simm8 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SIMM8), 0 } }, & ifmt_beq16, { 0x40 } }, /* blteu.l $simm24 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SIMM24), 0 } }, & ifmt_beq, { 0x48 } }, /* bltu.s $simm8 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SIMM8), 0 } }, & ifmt_beq16, { 0x50 } }, /* bltu.l $simm24 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SIMM24), 0 } }, & ifmt_beq, { 0x58 } }, /* bgt.s $simm8 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SIMM8), 0 } }, & ifmt_beq16, { 0x60 } }, /* bgt.l $simm24 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SIMM24), 0 } }, & ifmt_beq, { 0x68 } }, /* bgte.s $simm8 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SIMM8), 0 } }, & ifmt_beq16, { 0x70 } }, /* bgte.l $simm24 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SIMM24), 0 } }, & ifmt_beq, { 0x78 } }, /* blt.s $simm8 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SIMM8), 0 } }, & ifmt_beq16, { 0x80 } }, /* blt.l $simm24 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SIMM24), 0 } }, & ifmt_beq, { 0x88 } }, /* blte.s $simm8 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SIMM8), 0 } }, & ifmt_beq16, { 0x90 } }, /* blte.l $simm24 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SIMM24), 0 } }, & ifmt_beq, { 0x98 } }, /* bbeq.s $simm8 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SIMM8), 0 } }, & ifmt_beq16, { 0xa0 } }, /* bbeq.l $simm24 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SIMM24), 0 } }, & ifmt_beq, { 0xa8 } }, /* bbne.s $simm8 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SIMM8), 0 } }, & ifmt_beq16, { 0xb0 } }, /* bbne.l $simm24 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SIMM24), 0 } }, & ifmt_beq, { 0xb8 } }, /* bblt.s $simm8 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SIMM8), 0 } }, & ifmt_beq16, { 0xc0 } }, /* bblt.l $simm24 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SIMM24), 0 } }, & ifmt_beq, { 0xc8 } }, /* bblte.s $simm8 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SIMM8), 0 } }, & ifmt_beq16, { 0xd0 } }, /* bblte.l $simm24 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SIMM24), 0 } }, & ifmt_beq, { 0xd8 } }, /* b.s $simm8 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SIMM8), 0 } }, & ifmt_beq16, { 0xe0 } }, /* b.l $simm24 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SIMM24), 0 } }, & ifmt_beq, { 0xe8 } }, /* bl.s $simm8 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SIMM8), 0 } }, & ifmt_beq16, { 0xf0 } }, /* bl.l $simm24 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SIMM24), 0 } }, & ifmt_beq, { 0xf8 } }, /* jr $rn */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RN), 0 } }, & ifmt_jr16, { 0x142 } }, /* rts */ { { 0, 0, 0, 0 }, { { MNEM, 0 } }, & ifmt_rts, { 0x402194f } }, /* jr $rn6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RN6), 0 } }, & ifmt_jr, { 0x2014f } }, /* jalr $rn */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RN), 0 } }, & ifmt_jr16, { 0x152 } }, /* jalr $rn6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RN6), 0 } }, & ifmt_jr, { 0x2015f } }, /* ldrb $rd,[$rn,$rm] */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ',', OP (RM), ']', 0 } }, & ifmt_ldrbx16_s, { 0x1 } }, /* ldrb $rd,[$rn],$rm */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ']', ',', OP (RM), 0 } }, & ifmt_ldrbx16_s, { 0x5 } }, /* ldrb $rd6,[$rn6,$direction$rm6] */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DIRECTION), OP (RM6), ']', 0 } }, & ifmt_ldrbx_l, { 0x9 } }, /* ldrb $rd6,[$rn6],$direction$rm6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DIRECTION), OP (RM6), 0 } }, & ifmt_ldrbp_l, { 0xd } }, /* ldrb $rd,[$rn,$disp3] */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ',', OP (DISP3), ']', 0 } }, & ifmt_ldrbd16_s, { 0x4 } }, /* ldrb $rd6,[$rn6,$dpmi$disp11] */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DPMI), OP (DISP11), ']', 0 } }, & ifmt_ldrbd_l, { 0xc } }, /* ldrb $rd6,[$rn6],$dpmi$disp11 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DPMI), OP (DISP11), 0 } }, & ifmt_ldrbd_l, { 0x200000c } }, /* ldrh $rd,[$rn,$rm] */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ',', OP (RM), ']', 0 } }, & ifmt_ldrbx16_s, { 0x21 } }, /* ldrh $rd,[$rn],$rm */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ']', ',', OP (RM), 0 } }, & ifmt_ldrbx16_s, { 0x25 } }, /* ldrh $rd6,[$rn6,$direction$rm6] */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DIRECTION), OP (RM6), ']', 0 } }, & ifmt_ldrbx_l, { 0x29 } }, /* ldrh $rd6,[$rn6],$direction$rm6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DIRECTION), OP (RM6), 0 } }, & ifmt_ldrbp_l, { 0x2d } }, /* ldrh $rd,[$rn,$disp3] */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ',', OP (DISP3), ']', 0 } }, & ifmt_ldrbd16_s, { 0x24 } }, /* ldrh $rd6,[$rn6,$dpmi$disp11] */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DPMI), OP (DISP11), ']', 0 } }, & ifmt_ldrbd_l, { 0x2c } }, /* ldrh $rd6,[$rn6],$dpmi$disp11 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DPMI), OP (DISP11), 0 } }, & ifmt_ldrbd_l, { 0x200002c } }, /* ldr $rd,[$rn,$rm] */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ',', OP (RM), ']', 0 } }, & ifmt_ldrbx16_s, { 0x41 } }, /* ldr $rd,[$rn],$rm */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ']', ',', OP (RM), 0 } }, & ifmt_ldrbx16_s, { 0x45 } }, /* ldr $rd6,[$rn6,$direction$rm6] */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DIRECTION), OP (RM6), ']', 0 } }, & ifmt_ldrbx_l, { 0x49 } }, /* ldr $rd6,[$rn6],$direction$rm6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DIRECTION), OP (RM6), 0 } }, & ifmt_ldrbp_l, { 0x4d } }, /* ldr $rd,[$rn,$disp3] */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ',', OP (DISP3), ']', 0 } }, & ifmt_ldrbd16_s, { 0x44 } }, /* ldr $rd6,[$rn6,$dpmi$disp11] */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DPMI), OP (DISP11), ']', 0 } }, & ifmt_ldrbd_l, { 0x4c } }, /* ldr $rd6,[$rn6],$dpmi$disp11 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DPMI), OP (DISP11), 0 } }, & ifmt_ldrbd_l, { 0x200004c } }, /* ldrd $rd,[$rn,$rm] */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ',', OP (RM), ']', 0 } }, & ifmt_ldrbx16_s, { 0x61 } }, /* ldrd $rd,[$rn],$rm */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ']', ',', OP (RM), 0 } }, & ifmt_ldrbx16_s, { 0x65 } }, /* ldrd $rd6,[$rn6,$direction$rm6] */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DIRECTION), OP (RM6), ']', 0 } }, & ifmt_ldrbx_l, { 0x69 } }, /* ldrd $rd6,[$rn6],$direction$rm6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DIRECTION), OP (RM6), 0 } }, & ifmt_ldrbp_l, { 0x6d } }, /* ldrd $rd,[$rn,$disp3] */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ',', OP (DISP3), ']', 0 } }, & ifmt_ldrbd16_s, { 0x64 } }, /* ldrd $rd6,[$rn6,$dpmi$disp11] */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DPMI), OP (DISP11), ']', 0 } }, & ifmt_ldrbd_l, { 0x6c } }, /* ldrd $rd6,[$rn6],$dpmi$disp11 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DPMI), OP (DISP11), 0 } }, & ifmt_ldrbd_l, { 0x200006c } }, /* testsetb $rd6,[$rn6,$direction$rm6] */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DIRECTION), OP (RM6), ']', 0 } }, & ifmt_ldrbx_l, { 0x200009 } }, /* testseth $rd6,[$rn6,$direction$rm6] */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DIRECTION), OP (RM6), ']', 0 } }, & ifmt_ldrbx_l, { 0x200029 } }, /* testset $rd6,[$rn6,$direction$rm6] */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DIRECTION), OP (RM6), ']', 0 } }, & ifmt_ldrbx_l, { 0x200049 } }, /* strb $rd,[$rn,$rm] */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ',', OP (RM), ']', 0 } }, & ifmt_ldrbx16_s, { 0x11 } }, /* strb $rd6,[$rn6,$direction$rm6] */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DIRECTION), OP (RM6), ']', 0 } }, & ifmt_ldrbx_l, { 0x19 } }, /* strb $rd,[$rn],$rm */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ']', ',', OP (RM), 0 } }, & ifmt_ldrbx16_s, { 0x15 } }, /* strb $rd6,[$rn6],$direction$rm6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DIRECTION), OP (RM6), 0 } }, & ifmt_ldrbp_l, { 0x1d } }, /* strb $rd,[$rn,$disp3] */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ',', OP (DISP3), ']', 0 } }, & ifmt_ldrbd16_s, { 0x14 } }, /* strb $rd6,[$rn6,$dpmi$disp11] */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DPMI), OP (DISP11), ']', 0 } }, & ifmt_ldrbd_l, { 0x1c } }, /* strb $rd6,[$rn6],$dpmi$disp11 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DPMI), OP (DISP11), 0 } }, & ifmt_ldrbd_l, { 0x200001c } }, /* strh $rd,[$rn,$rm] */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ',', OP (RM), ']', 0 } }, & ifmt_ldrbx16_s, { 0x31 } }, /* strh $rd6,[$rn6,$direction$rm6] */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DIRECTION), OP (RM6), ']', 0 } }, & ifmt_ldrbx_l, { 0x39 } }, /* strh $rd,[$rn],$rm */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ']', ',', OP (RM), 0 } }, & ifmt_ldrbx16_s, { 0x35 } }, /* strh $rd6,[$rn6],$direction$rm6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DIRECTION), OP (RM6), 0 } }, & ifmt_ldrbp_l, { 0x3d } }, /* strh $rd,[$rn,$disp3] */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ',', OP (DISP3), ']', 0 } }, & ifmt_ldrbd16_s, { 0x34 } }, /* strh $rd6,[$rn6,$dpmi$disp11] */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DPMI), OP (DISP11), ']', 0 } }, & ifmt_ldrbd_l, { 0x3c } }, /* strh $rd6,[$rn6],$dpmi$disp11 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DPMI), OP (DISP11), 0 } }, & ifmt_ldrbd_l, { 0x200003c } }, /* str $rd,[$rn,$rm] */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ',', OP (RM), ']', 0 } }, & ifmt_ldrbx16_s, { 0x51 } }, /* str $rd6,[$rn6,$direction$rm6] */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DIRECTION), OP (RM6), ']', 0 } }, & ifmt_ldrbx_l, { 0x59 } }, /* str $rd,[$rn],$rm */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ']', ',', OP (RM), 0 } }, & ifmt_ldrbx16_s, { 0x55 } }, /* str $rd6,[$rn6],$direction$rm6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DIRECTION), OP (RM6), 0 } }, & ifmt_ldrbp_l, { 0x5d } }, /* str $rd,[$rn,$disp3] */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ',', OP (DISP3), ']', 0 } }, & ifmt_ldrbd16_s, { 0x54 } }, /* str $rd6,[$rn6,$dpmi$disp11] */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DPMI), OP (DISP11), ']', 0 } }, & ifmt_ldrbd_l, { 0x5c } }, /* str $rd6,[$rn6],$dpmi$disp11 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DPMI), OP (DISP11), 0 } }, & ifmt_ldrbd_l, { 0x200005c } }, /* strd $rd,[$rn,$rm] */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ',', OP (RM), ']', 0 } }, & ifmt_ldrbx16_s, { 0x71 } }, /* strd $rd6,[$rn6,$direction$rm6] */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DIRECTION), OP (RM6), ']', 0 } }, & ifmt_ldrbx_l, { 0x79 } }, /* strd $rd,[$rn],$rm */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ']', ',', OP (RM), 0 } }, & ifmt_ldrbx16_s, { 0x75 } }, /* strd $rd6,[$rn6],$direction$rm6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DIRECTION), OP (RM6), 0 } }, & ifmt_ldrbp_l, { 0x7d } }, /* strd $rd,[$rn,$disp3] */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', '[', OP (RN), ',', OP (DISP3), ']', 0 } }, & ifmt_ldrbd16_s, { 0x74 } }, /* strd $rd6,[$rn6,$dpmi$disp11] */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ',', OP (DPMI), OP (DISP11), ']', 0 } }, & ifmt_ldrbd_l, { 0x7c } }, /* strd $rd6,[$rn6],$dpmi$disp11 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', '[', OP (RN6), ']', ',', OP (DPMI), OP (DISP11), 0 } }, & ifmt_ldrbd_l, { 0x200007c } }, /* moveq $rd,$rn */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (RN), 0 } }, & ifmt_cmov16EQ, { 0x2 } }, /* moveq $rd6,$rn6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } }, & ifmt_cmovEQ, { 0x2000f } }, /* movne $rd,$rn */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (RN), 0 } }, & ifmt_cmov16EQ, { 0x12 } }, /* movne $rd6,$rn6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } }, & ifmt_cmovEQ, { 0x2001f } }, /* movgtu $rd,$rn */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (RN), 0 } }, & ifmt_cmov16EQ, { 0x22 } }, /* movgtu $rd6,$rn6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } }, & ifmt_cmovEQ, { 0x2002f } }, /* movgteu $rd,$rn */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (RN), 0 } }, & ifmt_cmov16EQ, { 0x32 } }, /* movgteu $rd6,$rn6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } }, & ifmt_cmovEQ, { 0x2003f } }, /* movlteu $rd,$rn */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (RN), 0 } }, & ifmt_cmov16EQ, { 0x42 } }, /* movlteu $rd6,$rn6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } }, & ifmt_cmovEQ, { 0x2004f } }, /* movltu $rd,$rn */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (RN), 0 } }, & ifmt_cmov16EQ, { 0x52 } }, /* movltu $rd6,$rn6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } }, & ifmt_cmovEQ, { 0x2005f } }, /* movgt $rd,$rn */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (RN), 0 } }, & ifmt_cmov16EQ, { 0x62 } }, /* movgt $rd6,$rn6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } }, & ifmt_cmovEQ, { 0x2006f } }, /* movgte $rd,$rn */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (RN), 0 } }, & ifmt_cmov16EQ, { 0x72 } }, /* movgte $rd6,$rn6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } }, & ifmt_cmovEQ, { 0x2007f } }, /* movlt $rd,$rn */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (RN), 0 } }, & ifmt_cmov16EQ, { 0x82 } }, /* movlt $rd6,$rn6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } }, & ifmt_cmovEQ, { 0x2008f } }, /* movlte $rd,$rn */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (RN), 0 } }, & ifmt_cmov16EQ, { 0x92 } }, /* movlte $rd6,$rn6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } }, & ifmt_cmovEQ, { 0x2009f } }, /* mov $rd,$rn */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (RN), 0 } }, & ifmt_cmov16EQ, { 0xe2 } }, /* mov $rd6,$rn6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } }, & ifmt_cmovEQ, { 0x200ef } }, /* movbeq $rd,$rn */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (RN), 0 } }, & ifmt_cmov16EQ, { 0xa2 } }, /* movbeq $rd6,$rn6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } }, & ifmt_cmovEQ, { 0x200af } }, /* movbne $rd,$rn */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (RN), 0 } }, & ifmt_cmov16EQ, { 0xb2 } }, /* movbne $rd6,$rn6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } }, & ifmt_cmovEQ, { 0x200bf } }, /* movblt $rd,$rn */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (RN), 0 } }, & ifmt_cmov16EQ, { 0xc2 } }, /* movblt $rd6,$rn6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } }, & ifmt_cmovEQ, { 0x200cf } }, /* movblte $rd,$rn */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (RN), 0 } }, & ifmt_cmov16EQ, { 0xd2 } }, /* movblte $rd6,$rn6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } }, & ifmt_cmovEQ, { 0x200df } }, /* movts $sn,$rd */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SN), ',', OP (RD), 0 } }, & ifmt_movts16, { 0x102 } }, /* movts $sn6,$rd6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SN6), ',', OP (RD6), 0 } }, & ifmt_movts6, { 0x2010f } }, /* movts $sndma,$rd6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SNDMA), ',', OP (RD6), 0 } }, & ifmt_movtsdma, { 0x12010f } }, /* movts $snmem,$rd6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SNMEM), ',', OP (RD6), 0 } }, & ifmt_movtsmem, { 0x22010f } }, /* movts $snmesh,$rd6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SNMESH), ',', OP (RD6), 0 } }, & ifmt_movtsmesh, { 0x32010f } }, /* movfs $rd,$sn */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (SN), 0 } }, & ifmt_movts16, { 0x112 } }, /* movfs $rd6,$sn6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (SN6), 0 } }, & ifmt_movts6, { 0x2011f } }, /* movfs $rd6,$sndma */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (SNDMA), 0 } }, & ifmt_movtsdma, { 0x12011f } }, /* movfs $rd6,$snmem */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (SNMEM), 0 } }, & ifmt_movtsmem, { 0x22011f } }, /* movfs $rd6,$snmesh */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (SNMESH), 0 } }, & ifmt_movtsmesh, { 0x32011f } }, /* nop */ { { 0, 0, 0, 0 }, { { MNEM, 0 } }, & ifmt_nop, { 0x1a2 } }, /* snop */ { { 0, 0, 0, 0 }, { { MNEM, 0 } }, & ifmt_nop, { 0x3a2 } }, /* unimpl */ { { 0, 0, 0, 0 }, { { MNEM, 0 } }, & ifmt_unimpl, { 0xf000f } }, /* idle */ { { 0, 0, 0, 0 }, { { MNEM, 0 } }, & ifmt_nop, { 0x1b2 } }, /* bkpt */ { { 0, 0, 0, 0 }, { { MNEM, 0 } }, & ifmt_nop, { 0x1c2 } }, /* mbkpt */ { { 0, 0, 0, 0 }, { { MNEM, 0 } }, & ifmt_nop, { 0x3c2 } }, /* rti */ { { 0, 0, 0, 0 }, { { MNEM, 0 } }, & ifmt_nop, { 0x1d2 } }, /* wand */ { { 0, 0, 0, 0 }, { { MNEM, 0 } }, & ifmt_nop, { 0x182 } }, /* sync */ { { 0, 0, 0, 0 }, { { MNEM, 0 } }, & ifmt_nop, { 0x1f2 } }, /* gie */ { { 0, 0, 0, 0 }, { { MNEM, 0 } }, & ifmt_gien, { 0x192 } }, /* gid */ { { 0, 0, 0, 0 }, { { MNEM, 0 } }, & ifmt_gien, { 0x392 } }, /* swi $swi_num */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (SWI_NUM), 0 } }, & ifmt_swi_num, { 0x1e2 } }, /* swi */ { { 0, 0, 0, 0 }, { { MNEM, 0 } }, & ifmt_swi, { 0x1e2 } }, /* trap $trapnum6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (TRAPNUM6), 0 } }, & ifmt_trap16, { 0x3e2 } }, /* add $rd,$rn,$rm */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (RM), 0 } }, & ifmt_add16, { 0x1a } }, /* add $rd6,$rn6,$rm6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } }, & ifmt_add, { 0xa001f } }, /* sub $rd,$rn,$rm */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (RM), 0 } }, & ifmt_add16, { 0x3a } }, /* sub $rd6,$rn6,$rm6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } }, & ifmt_add, { 0xa003f } }, /* and $rd,$rn,$rm */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (RM), 0 } }, & ifmt_add16, { 0x5a } }, /* and $rd6,$rn6,$rm6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } }, & ifmt_add, { 0xa005f } }, /* orr $rd,$rn,$rm */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (RM), 0 } }, & ifmt_add16, { 0x7a } }, /* orr $rd6,$rn6,$rm6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } }, & ifmt_add, { 0xa007f } }, /* eor $rd,$rn,$rm */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (RM), 0 } }, & ifmt_add16, { 0xa } }, /* eor $rd6,$rn6,$rm6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } }, & ifmt_add, { 0xa000f } }, /* add.s $rd,$rn,$simm3 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (SIMM3), 0 } }, & ifmt_addi16, { 0x13 } }, /* add.l $rd6,$rn6,$simm11 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (SIMM11), 0 } }, & ifmt_addi, { 0x1b } }, /* sub.s $rd,$rn,$simm3 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (SIMM3), 0 } }, & ifmt_addi16, { 0x33 } }, /* sub.l $rd6,$rn6,$simm11 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (SIMM11), 0 } }, & ifmt_addi, { 0x3b } }, /* asr $rd,$rn,$rm */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (RM), 0 } }, & ifmt_add16, { 0x6a } }, /* asr $rd6,$rn6,$rm6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } }, & ifmt_add, { 0xa006f } }, /* lsr $rd,$rn,$rm */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (RM), 0 } }, & ifmt_add16, { 0x4a } }, /* lsr $rd6,$rn6,$rm6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } }, & ifmt_add, { 0xa004f } }, /* lsl $rd,$rn,$rm */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (RM), 0 } }, & ifmt_add16, { 0x2a } }, /* lsl $rd6,$rn6,$rm6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } }, & ifmt_add, { 0xa002f } }, /* lsr $rd,$rn,$shift */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (SHIFT), 0 } }, & ifmt_lsri16, { 0x6 } }, /* lsr $rd6,$rn6,$shift */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (SHIFT), 0 } }, & ifmt_lsri32, { 0x6000f } }, /* lsl $rd,$rn,$shift */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (SHIFT), 0 } }, & ifmt_lsri16, { 0x16 } }, /* lsl $rd6,$rn6,$shift */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (SHIFT), 0 } }, & ifmt_lsri32, { 0x6001f } }, /* asr $rd,$rn,$shift */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (SHIFT), 0 } }, & ifmt_lsri16, { 0xe } }, /* asr $rd6,$rn6,$shift */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (SHIFT), 0 } }, & ifmt_lsri32, { 0xe000f } }, /* bitr $rd,$rn */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (RN), 0 } }, & ifmt_bitr16, { 0x1e } }, /* bitr $rd6,$rn6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } }, & ifmt_bitr, { 0xe001f } }, /* fext $rd6,$rn6,$rm6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } }, & ifmt_fext, { 0x1a000f } }, /* fdep $rd6,$rn6,$rm6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } }, & ifmt_fext, { 0x1a001f } }, /* lfsr $rd6,$rn6,$rm6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } }, & ifmt_fext, { 0x1a002f } }, /* mov.b $rd,$imm8 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (IMM8), 0 } }, & ifmt_mov8, { 0x3 } }, /* mov.l $rd6,$imm16 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (IMM16), 0 } }, & ifmt_mov16, { 0x2000b } }, /* movt $rd6,$imm16 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (IMM16), 0 } }, & ifmt_mov16, { 0x1002000b } }, /* fadd $rd,$rn,$rm */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (RM), 0 } }, & ifmt_add16, { 0x7 } }, /* fadd $rd6,$rn6,$rm6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } }, & ifmt_add, { 0x7000f } }, /* fsub $rd,$rn,$rm */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (RM), 0 } }, & ifmt_add16, { 0x17 } }, /* fsub $rd6,$rn6,$rm6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } }, & ifmt_add, { 0x7001f } }, /* fmul $rd,$rn,$rm */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (RM), 0 } }, & ifmt_add16, { 0x27 } }, /* fmul $rd6,$rn6,$rm6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } }, & ifmt_add, { 0x7002f } }, /* fmadd $rd,$rn,$rm */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (RM), 0 } }, & ifmt_add16, { 0x37 } }, /* fmadd $rd6,$rn6,$rm6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } }, & ifmt_add, { 0x7003f } }, /* fmsub $rd,$rn,$rm */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (RN), ',', OP (RM), 0 } }, & ifmt_add16, { 0x47 } }, /* fmsub $rd6,$rn6,$rm6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), ',', OP (RM6), 0 } }, & ifmt_add, { 0x7004f } }, /* fabs rd,rn */ { { 0, 0, 0, 0 }, { { MNEM, ' ', 'r', 'd', ',', 'r', 'n', 0 } }, & ifmt_f_absf16, { 0x77 } }, /* fabs $rd6,$rn6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } }, & ifmt_f_absf32, { 0x7007f } }, /* float $rd,$rn */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (RN), 0 } }, & ifmt_f_loatf16, { 0x57 } }, /* float $rd6,$rn6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } }, & ifmt_f_absf32, { 0x7005f } }, /* fix $rd,$rn */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD), ',', OP (RN), 0 } }, & ifmt_f_absf16, { 0x67 } }, /* fix $rd6,$rn6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (RD6), ',', OP (RN6), 0 } }, & ifmt_f_absf32, { 0x7006f } }, /* frecip $frd6,$frn6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (FRD6), ',', OP (FRN6), 0 } }, & ifmt_f_recipf32, { 0x17000f } }, /* fsqrt $frd6,$frn6 */ { { 0, 0, 0, 0 }, { { MNEM, ' ', OP (FRD6), ',', OP (FRN6), 0 } }, & ifmt_f_recipf32, { 0x17001f } }, }; #undef A #undef OPERAND #undef MNEM #undef OP /* Formats for ALIAS macro-insns. */ #define F(f) & epiphany_cgen_ifld_table[EPIPHANY_##f] static const CGEN_IFMT ifmt_beq16r ATTRIBUTE_UNUSED = { 16, 16, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM8) }, { 0 } } }; static const CGEN_IFMT ifmt_beq32r ATTRIBUTE_UNUSED = { 32, 32, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM24) }, { 0 } } }; static const CGEN_IFMT ifmt_bne16r ATTRIBUTE_UNUSED = { 16, 16, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM8) }, { 0 } } }; static const CGEN_IFMT ifmt_bne32r ATTRIBUTE_UNUSED = { 32, 32, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM24) }, { 0 } } }; static const CGEN_IFMT ifmt_bgtu16r ATTRIBUTE_UNUSED = { 16, 16, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM8) }, { 0 } } }; static const CGEN_IFMT ifmt_bgtu32r ATTRIBUTE_UNUSED = { 32, 32, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM24) }, { 0 } } }; static const CGEN_IFMT ifmt_bgteu16r ATTRIBUTE_UNUSED = { 16, 16, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM8) }, { 0 } } }; static const CGEN_IFMT ifmt_bgteu32r ATTRIBUTE_UNUSED = { 32, 32, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM24) }, { 0 } } }; static const CGEN_IFMT ifmt_blteu16r ATTRIBUTE_UNUSED = { 16, 16, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM8) }, { 0 } } }; static const CGEN_IFMT ifmt_blteu32r ATTRIBUTE_UNUSED = { 32, 32, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM24) }, { 0 } } }; static const CGEN_IFMT ifmt_bltu16r ATTRIBUTE_UNUSED = { 16, 16, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM8) }, { 0 } } }; static const CGEN_IFMT ifmt_bltu32r ATTRIBUTE_UNUSED = { 32, 32, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM24) }, { 0 } } }; static const CGEN_IFMT ifmt_bgt16r ATTRIBUTE_UNUSED = { 16, 16, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM8) }, { 0 } } }; static const CGEN_IFMT ifmt_bgt32r ATTRIBUTE_UNUSED = { 32, 32, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM24) }, { 0 } } }; static const CGEN_IFMT ifmt_bgte16r ATTRIBUTE_UNUSED = { 16, 16, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM8) }, { 0 } } }; static const CGEN_IFMT ifmt_bgte32r ATTRIBUTE_UNUSED = { 32, 32, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM24) }, { 0 } } }; static const CGEN_IFMT ifmt_blt16r ATTRIBUTE_UNUSED = { 16, 16, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM8) }, { 0 } } }; static const CGEN_IFMT ifmt_blt32r ATTRIBUTE_UNUSED = { 32, 32, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM24) }, { 0 } } }; static const CGEN_IFMT ifmt_blte16r ATTRIBUTE_UNUSED = { 16, 16, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM8) }, { 0 } } }; static const CGEN_IFMT ifmt_blte32r ATTRIBUTE_UNUSED = { 32, 32, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM24) }, { 0 } } }; static const CGEN_IFMT ifmt_bbeq16r ATTRIBUTE_UNUSED = { 16, 16, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM8) }, { 0 } } }; static const CGEN_IFMT ifmt_bbeq32r ATTRIBUTE_UNUSED = { 32, 32, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM24) }, { 0 } } }; static const CGEN_IFMT ifmt_bbne16r ATTRIBUTE_UNUSED = { 16, 16, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM8) }, { 0 } } }; static const CGEN_IFMT ifmt_bbne32r ATTRIBUTE_UNUSED = { 32, 32, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM24) }, { 0 } } }; static const CGEN_IFMT ifmt_bblt16r ATTRIBUTE_UNUSED = { 16, 16, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM8) }, { 0 } } }; static const CGEN_IFMT ifmt_bblt32r ATTRIBUTE_UNUSED = { 32, 32, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM24) }, { 0 } } }; static const CGEN_IFMT ifmt_bblte16r ATTRIBUTE_UNUSED = { 16, 16, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM8) }, { 0 } } }; static const CGEN_IFMT ifmt_bblte32r ATTRIBUTE_UNUSED = { 32, 32, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM24) }, { 0 } } }; static const CGEN_IFMT ifmt_b16r ATTRIBUTE_UNUSED = { 16, 16, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM8) }, { 0 } } }; static const CGEN_IFMT ifmt_b32r ATTRIBUTE_UNUSED = { 32, 32, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM24) }, { 0 } } }; static const CGEN_IFMT ifmt_bl16r ATTRIBUTE_UNUSED = { 16, 16, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM8) }, { 0 } } }; static const CGEN_IFMT ifmt_blr ATTRIBUTE_UNUSED = { 32, 32, 0xff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_SIMM24) }, { 0 } } }; static const CGEN_IFMT ifmt_ldrbx ATTRIBUTE_UNUSED = { 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_1) }, { F (F_DC_21_1) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_ldrbp ATTRIBUTE_UNUSED = { 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_2) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_ldrbd ATTRIBUTE_UNUSED = { 32, 32, 0x200007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } } }; static const CGEN_IFMT ifmt_ldrbdpm ATTRIBUTE_UNUSED = { 32, 32, 0x200007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } } }; static const CGEN_IFMT ifmt_ldrbds0 ATTRIBUTE_UNUSED = { 16, 16, 0x3ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_RD) }, { F (F_RN) }, { F (F_DISP3) }, { 0 } } }; static const CGEN_IFMT ifmt_ldrbdl0 ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } } }; static const CGEN_IFMT ifmt_ldrbdl0_l ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } } }; static const CGEN_IFMT ifmt_ldrhx ATTRIBUTE_UNUSED = { 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_1) }, { F (F_DC_21_1) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_ldrhp ATTRIBUTE_UNUSED = { 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_2) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_ldrhd ATTRIBUTE_UNUSED = { 32, 32, 0x200007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } } }; static const CGEN_IFMT ifmt_ldrhdpm ATTRIBUTE_UNUSED = { 32, 32, 0x200007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } } }; static const CGEN_IFMT ifmt_ldrhds0 ATTRIBUTE_UNUSED = { 16, 16, 0x3ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_RD) }, { F (F_RN) }, { F (F_DISP3) }, { 0 } } }; static const CGEN_IFMT ifmt_ldrhdl0 ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } } }; static const CGEN_IFMT ifmt_ldrhdl0_l ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } } }; static const CGEN_IFMT ifmt_ldrx ATTRIBUTE_UNUSED = { 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_1) }, { F (F_DC_21_1) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_ldrp ATTRIBUTE_UNUSED = { 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_2) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_ldrd ATTRIBUTE_UNUSED = { 32, 32, 0x200007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } } }; static const CGEN_IFMT ifmt_ldrdpm ATTRIBUTE_UNUSED = { 32, 32, 0x200007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } } }; static const CGEN_IFMT ifmt_ldrds0 ATTRIBUTE_UNUSED = { 16, 16, 0x3ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_RD) }, { F (F_RN) }, { F (F_DISP3) }, { 0 } } }; static const CGEN_IFMT ifmt_ldrdl0 ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } } }; static const CGEN_IFMT ifmt_ldrdl0_l ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } } }; static const CGEN_IFMT ifmt_ldrdx ATTRIBUTE_UNUSED = { 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_1) }, { F (F_DC_21_1) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_ldrdp ATTRIBUTE_UNUSED = { 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_2) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_ldrdd ATTRIBUTE_UNUSED = { 32, 32, 0x200007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } } }; static const CGEN_IFMT ifmt_ldrddpm ATTRIBUTE_UNUSED = { 32, 32, 0x200007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } } }; static const CGEN_IFMT ifmt_ldrdds0 ATTRIBUTE_UNUSED = { 16, 16, 0x3ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_RD) }, { F (F_RN) }, { F (F_DISP3) }, { 0 } } }; static const CGEN_IFMT ifmt_ldrddl0 ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } } }; static const CGEN_IFMT ifmt_ldrddl0_l ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } } }; static const CGEN_IFMT ifmt_testsetbt_l ATTRIBUTE_UNUSED = { 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_1) }, { F (F_DC_21_1) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_testsetht_l ATTRIBUTE_UNUSED = { 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_1) }, { F (F_DC_21_1) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_testsett_l ATTRIBUTE_UNUSED = { 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_1) }, { F (F_DC_21_1) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_strbx_l ATTRIBUTE_UNUSED = { 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_1) }, { F (F_DC_21_1) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_strbp_l ATTRIBUTE_UNUSED = { 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_2) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_strbd_l ATTRIBUTE_UNUSED = { 32, 32, 0x200007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } } }; static const CGEN_IFMT ifmt_strbdpm_l ATTRIBUTE_UNUSED = { 32, 32, 0x200007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } } }; static const CGEN_IFMT ifmt_strbds0 ATTRIBUTE_UNUSED = { 16, 16, 0x3ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_RD) }, { F (F_RN) }, { F (F_DISP3) }, { 0 } } }; static const CGEN_IFMT ifmt_strbdl0 ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } } }; static const CGEN_IFMT ifmt_strbdl0_l ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } } }; static const CGEN_IFMT ifmt_strhx_l ATTRIBUTE_UNUSED = { 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_1) }, { F (F_DC_21_1) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_strhp_l ATTRIBUTE_UNUSED = { 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_2) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_strhd_l ATTRIBUTE_UNUSED = { 32, 32, 0x200007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } } }; static const CGEN_IFMT ifmt_strhdpm_l ATTRIBUTE_UNUSED = { 32, 32, 0x200007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } } }; static const CGEN_IFMT ifmt_strhds0 ATTRIBUTE_UNUSED = { 16, 16, 0x3ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_RD) }, { F (F_RN) }, { F (F_DISP3) }, { 0 } } }; static const CGEN_IFMT ifmt_strhdl0 ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } } }; static const CGEN_IFMT ifmt_strhdl0_l ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } } }; static const CGEN_IFMT ifmt_strx_l ATTRIBUTE_UNUSED = { 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_1) }, { F (F_DC_21_1) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_strp_l ATTRIBUTE_UNUSED = { 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_2) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_strd_l ATTRIBUTE_UNUSED = { 32, 32, 0x200007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } } }; static const CGEN_IFMT ifmt_strdpm_l ATTRIBUTE_UNUSED = { 32, 32, 0x200007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } } }; static const CGEN_IFMT ifmt_strds0 ATTRIBUTE_UNUSED = { 16, 16, 0x3ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_RD) }, { F (F_RN) }, { F (F_DISP3) }, { 0 } } }; static const CGEN_IFMT ifmt_strdl0 ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } } }; static const CGEN_IFMT ifmt_strdl0_l ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } } }; static const CGEN_IFMT ifmt_strdx_l ATTRIBUTE_UNUSED = { 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_1) }, { F (F_DC_21_1) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_strdp_l ATTRIBUTE_UNUSED = { 32, 32, 0x6f007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_OPC_19_4) }, { F (F_DC_22_2) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_ADDSUBX) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_strdd_l ATTRIBUTE_UNUSED = { 32, 32, 0x200007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } } }; static const CGEN_IFMT ifmt_strddpm_l ATTRIBUTE_UNUSED = { 32, 32, 0x200007f, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } } }; static const CGEN_IFMT ifmt_strdds0 ATTRIBUTE_UNUSED = { 16, 16, 0x3ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_RD) }, { F (F_RN) }, { F (F_DISP3) }, { 0 } } }; static const CGEN_IFMT ifmt_strddl0 ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } } }; static const CGEN_IFMT ifmt_strddl0_l ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_WORDSIZE) }, { F (F_STORE) }, { F (F_PM) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SUBD) }, { F (F_DISP11) }, { 0 } } }; static const CGEN_IFMT ifmt_cmov_lEQ ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { 0 } } }; static const CGEN_IFMT ifmt_cmov_lNE ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { 0 } } }; static const CGEN_IFMT ifmt_cmov_lGTU ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { 0 } } }; static const CGEN_IFMT ifmt_cmov_lGTEU ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { 0 } } }; static const CGEN_IFMT ifmt_cmov_lLTEU ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { 0 } } }; static const CGEN_IFMT ifmt_cmov_lLTU ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { 0 } } }; static const CGEN_IFMT ifmt_cmov_lGT ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { 0 } } }; static const CGEN_IFMT ifmt_cmov_lGTE ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { 0 } } }; static const CGEN_IFMT ifmt_cmov_lLT ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { 0 } } }; static const CGEN_IFMT ifmt_cmov_lLTE ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { 0 } } }; static const CGEN_IFMT ifmt_cmov_lB ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { 0 } } }; static const CGEN_IFMT ifmt_cmov_lBEQ ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { 0 } } }; static const CGEN_IFMT ifmt_cmov_lBNE ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { 0 } } }; static const CGEN_IFMT ifmt_cmov_lBLT ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { 0 } } }; static const CGEN_IFMT ifmt_cmov_lBLTE ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_CONDCODE) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { 0 } } }; static const CGEN_IFMT ifmt_movts_l6 ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_DC_7_4) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_4) }, { F (F_DC_21_2) }, { F (F_SN6) }, { F (F_RD6) }, { 0 } } }; static const CGEN_IFMT ifmt_movts_ldma ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_DC_7_4) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_4) }, { F (F_DC_21_2) }, { F (F_SN6) }, { F (F_RD6) }, { 0 } } }; static const CGEN_IFMT ifmt_movts_lmem ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_DC_7_4) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_4) }, { F (F_DC_21_2) }, { F (F_SN6) }, { F (F_RD6) }, { 0 } } }; static const CGEN_IFMT ifmt_movts_lmesh ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_DC_7_4) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_4) }, { F (F_DC_21_2) }, { F (F_SN6) }, { F (F_RD6) }, { 0 } } }; static const CGEN_IFMT ifmt_movfs_l6 ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_DC_7_4) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_4) }, { F (F_DC_21_2) }, { F (F_RD6) }, { F (F_SN6) }, { 0 } } }; static const CGEN_IFMT ifmt_movfs_ldma ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_DC_7_4) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_4) }, { F (F_DC_21_2) }, { F (F_RD6) }, { F (F_SN6) }, { 0 } } }; static const CGEN_IFMT ifmt_movfs_lmem ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_DC_7_4) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_4) }, { F (F_DC_21_2) }, { F (F_RD6) }, { F (F_SN6) }, { 0 } } }; static const CGEN_IFMT ifmt_movfs_lmesh ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_DC_7_4) }, { F (F_OPC_8_1) }, { F (F_DC_9_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_4) }, { F (F_DC_21_2) }, { F (F_RD6) }, { F (F_SN6) }, { 0 } } }; static const CGEN_IFMT ifmt_add_l ATTRIBUTE_UNUSED = { 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_sub_l ATTRIBUTE_UNUSED = { 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_and_l ATTRIBUTE_UNUSED = { 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_orr_l ATTRIBUTE_UNUSED = { 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_eor_l ATTRIBUTE_UNUSED = { 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_addir ATTRIBUTE_UNUSED = { 16, 16, 0x7f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_RD) }, { F (F_RN) }, { F (F_SDISP3) }, { 0 } } }; static const CGEN_IFMT ifmt_addi32r ATTRIBUTE_UNUSED = { 32, 32, 0x300007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_DC_25_2) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SDISP11) }, { 0 } } }; static const CGEN_IFMT ifmt_addi32m ATTRIBUTE_UNUSED = { 32, 32, 0x300007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_DC_25_2) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SDISP11) }, { 0 } } }; static const CGEN_IFMT ifmt_subir ATTRIBUTE_UNUSED = { 16, 16, 0x7f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_RD) }, { F (F_RN) }, { F (F_SDISP3) }, { 0 } } }; static const CGEN_IFMT ifmt_subi32r ATTRIBUTE_UNUSED = { 32, 32, 0x300007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_DC_25_2) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SDISP11) }, { 0 } } }; static const CGEN_IFMT ifmt_subi32m ATTRIBUTE_UNUSED = { 32, 32, 0x300007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_DC_25_2) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SDISP11) }, { 0 } } }; static const CGEN_IFMT ifmt_asr_l ATTRIBUTE_UNUSED = { 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_lsr_l ATTRIBUTE_UNUSED = { 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_lsl_l ATTRIBUTE_UNUSED = { 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_lsri32_l ATTRIBUTE_UNUSED = { 32, 32, 0x3ff001f, { { F (F_OPC) }, { F (F_OPC_4_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SHIFT) }, { 0 } } }; static const CGEN_IFMT ifmt_lsli32_l ATTRIBUTE_UNUSED = { 32, 32, 0x3ff001f, { { F (F_OPC) }, { F (F_OPC_4_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SHIFT) }, { 0 } } }; static const CGEN_IFMT ifmt_asri32_l ATTRIBUTE_UNUSED = { 32, 32, 0x3ff001f, { { F (F_OPC) }, { F (F_OPC_4_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SHIFT) }, { 0 } } }; static const CGEN_IFMT ifmt_bitrl ATTRIBUTE_UNUSED = { 32, 32, 0x3ff03ff, { { F (F_OPC) }, { F (F_OPC_4_1) }, { F (F_OPC_19_4) }, { F (F_DC_25_6) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_SHIFT) }, { 0 } } }; static const CGEN_IFMT ifmt_fext_l ATTRIBUTE_UNUSED = { 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_2) }, { F (F_DC_20_1) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_fdep_l ATTRIBUTE_UNUSED = { 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_2) }, { F (F_DC_20_1) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_lfsr_l ATTRIBUTE_UNUSED = { 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_2) }, { F (F_DC_20_1) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_mov8r ATTRIBUTE_UNUSED = { 16, 16, 0x1f, { { F (F_OPC) }, { F (F_OPC_4_1) }, { F (F_RD) }, { F (F_IMM8) }, { 0 } } }; static const CGEN_IFMT ifmt_mov16r ATTRIBUTE_UNUSED = { 32, 32, 0x100f001f, { { F (F_OPC) }, { F (F_OPC_4_1) }, { F (F_OPC_19_4) }, { F (F_DC_28_1) }, { F (F_RD6) }, { F (F_IMM16) }, { 0 } } }; static const CGEN_IFMT ifmt_movtl ATTRIBUTE_UNUSED = { 32, 32, 0x100f001f, { { F (F_OPC) }, { F (F_OPC_4_1) }, { F (F_OPC_19_4) }, { F (F_DC_28_1) }, { F (F_RD6) }, { F (F_IMM16) }, { 0 } } }; static const CGEN_IFMT ifmt_i_addf16 ATTRIBUTE_UNUSED = { 16, 16, 0x7f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_RD) }, { F (F_RN) }, { F (F_RM) }, { 0 } } }; static const CGEN_IFMT ifmt_f_addf32_l ATTRIBUTE_UNUSED = { 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_i_addf32 ATTRIBUTE_UNUSED = { 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_i_addf32_l ATTRIBUTE_UNUSED = { 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_i_subf16 ATTRIBUTE_UNUSED = { 16, 16, 0x7f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_RD) }, { F (F_RN) }, { F (F_RM) }, { 0 } } }; static const CGEN_IFMT ifmt_f_subf32_l ATTRIBUTE_UNUSED = { 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_i_subf32 ATTRIBUTE_UNUSED = { 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_i_subf32_l ATTRIBUTE_UNUSED = { 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_i_mulf16 ATTRIBUTE_UNUSED = { 16, 16, 0x7f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_RD) }, { F (F_RN) }, { F (F_RM) }, { 0 } } }; static const CGEN_IFMT ifmt_f_mulf32_l ATTRIBUTE_UNUSED = { 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_i_mulf32 ATTRIBUTE_UNUSED = { 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_i_mulf32_l ATTRIBUTE_UNUSED = { 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_i_maddf16 ATTRIBUTE_UNUSED = { 16, 16, 0x7f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_RD) }, { F (F_RN) }, { F (F_RM) }, { 0 } } }; static const CGEN_IFMT ifmt_f_maddf32_l ATTRIBUTE_UNUSED = { 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_i_maddf32 ATTRIBUTE_UNUSED = { 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_i_maddf32_l ATTRIBUTE_UNUSED = { 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_i_msubf16 ATTRIBUTE_UNUSED = { 16, 16, 0x7f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_RD) }, { F (F_RN) }, { F (F_RM) }, { 0 } } }; static const CGEN_IFMT ifmt_f_msubf32_l ATTRIBUTE_UNUSED = { 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_i_msubf32 ATTRIBUTE_UNUSED = { 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_i_msubf32_l ATTRIBUTE_UNUSED = { 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RM6) }, { 0 } } }; static const CGEN_IFMT ifmt_f_absf32_l ATTRIBUTE_UNUSED = { 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RN6) }, { 0 } } }; static const CGEN_IFMT ifmt_f_loatf32_l ATTRIBUTE_UNUSED = { 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RN6) }, { 0 } } }; static const CGEN_IFMT ifmt_f_ixf32_l ATTRIBUTE_UNUSED = { 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_3) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RN6) }, { 0 } } }; static const CGEN_IFMT ifmt_f_recipf32_l ATTRIBUTE_UNUSED = { 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_2) }, { F (F_DC_20_1) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RN6) }, { 0 } } }; static const CGEN_IFMT ifmt_f_sqrtf32_l ATTRIBUTE_UNUSED = { 32, 32, 0x7f007f, { { F (F_OPC) }, { F (F_OPC_6_3) }, { F (F_OPC_19_4) }, { F (F_DC_22_2) }, { F (F_DC_20_1) }, { F (F_RD6) }, { F (F_RN6) }, { F (F_RN6) }, { 0 } } }; #undef F /* Each non-simple macro entry points to an array of expansion possibilities. */ #define A(a) (1 << CGEN_INSN_##a) #define OPERAND(op) EPIPHANY_OPERAND_##op #define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */ #define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field)) /* The macro instruction table. */ static const CGEN_IBASE epiphany_cgen_macro_insn_table[] = { /* beq $simm8 */ { -1, "beq16r", "beq", 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]; epiphany_cgen_build_insn_regex (& insns[i]); } cd->macro_insn_table.init_entries = insns; cd->macro_insn_table.entry_size = sizeof (CGEN_IBASE); cd->macro_insn_table.num_init_entries = num_macros; oc = & epiphany_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]; epiphany_cgen_build_insn_regex (& insns[i]); } cd->sizeof_fields = sizeof (CGEN_FIELDS); cd->set_fields_bitsize = set_fields_bitsize; cd->asm_hash_p = asm_hash_insn_p; cd->asm_hash = asm_hash_insn; cd->asm_hash_size = CGEN_ASM_HASH_SIZE; cd->dis_hash_p = dis_hash_insn_p; cd->dis_hash = dis_hash_insn; cd->dis_hash_size = CGEN_DIS_HASH_SIZE; }