| /* Instruction opcode table for mep. |
| |
| THIS FILE IS MACHINE GENERATED WITH CGEN. |
| |
| Copyright (C) 1996-2016 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 "mep-desc.h" |
| #include "mep-opc.h" |
| #include "libiberty.h" |
| |
| /* -- opc.c */ |
| #include "elf/mep.h" |
| |
| /* A mask for all ISAs executed by the core. */ |
| CGEN_ATTR_VALUE_BITSET_TYPE mep_all_core_isas_mask = {0, 0}; |
| |
| void |
| init_mep_all_core_isas_mask (void) |
| { |
| if (mep_all_core_isas_mask.length != 0) |
| return; |
| cgen_bitset_init (& mep_all_core_isas_mask, ISA_MAX); |
| cgen_bitset_set (& mep_all_core_isas_mask, ISA_MEP); |
| /* begin-all-core-isas */ |
| cgen_bitset_add (& mep_all_core_isas_mask, ISA_EXT_CORE1); |
| /* end-all-core-isas */ |
| } |
| |
| CGEN_ATTR_VALUE_BITSET_TYPE mep_all_cop_isas_mask = {0, 0}; |
| |
| void |
| init_mep_all_cop_isas_mask (void) |
| { |
| if (mep_all_cop_isas_mask.length != 0) |
| return; |
| cgen_bitset_init (& mep_all_cop_isas_mask, ISA_MAX); |
| /* begin-all-cop-isas */ |
| cgen_bitset_add (& mep_all_cop_isas_mask, ISA_EXT_COP1_16); |
| cgen_bitset_add (& mep_all_cop_isas_mask, ISA_EXT_COP1_32); |
| cgen_bitset_add (& mep_all_cop_isas_mask, ISA_EXT_COP1_48); |
| cgen_bitset_add (& mep_all_cop_isas_mask, ISA_EXT_COP1_64); |
| /* end-all-cop-isas */ |
| } |
| |
| int |
| mep_insn_supported_by_isa (const CGEN_INSN *insn, CGEN_ATTR_VALUE_BITSET_TYPE *isa_mask) |
| { |
| CGEN_BITSET insn_isas = CGEN_INSN_BITSET_ATTR_VALUE (insn, CGEN_INSN_ISA); |
| return cgen_bitset_intersect_p (& insn_isas, isa_mask); |
| } |
| |
| #define OPTION_MASK \ |
| ( (1 << CGEN_INSN_OPTIONAL_BIT_INSN) \ |
| | (1 << CGEN_INSN_OPTIONAL_MUL_INSN) \ |
| | (1 << CGEN_INSN_OPTIONAL_DIV_INSN) \ |
| | (1 << CGEN_INSN_OPTIONAL_DEBUG_INSN) \ |
| | (1 << CGEN_INSN_OPTIONAL_LDZ_INSN) \ |
| | (1 << CGEN_INSN_OPTIONAL_ABS_INSN) \ |
| | (1 << CGEN_INSN_OPTIONAL_AVE_INSN) \ |
| | (1 << CGEN_INSN_OPTIONAL_MINMAX_INSN) \ |
| | (1 << CGEN_INSN_OPTIONAL_CLIP_INSN) \ |
| | (1 << CGEN_INSN_OPTIONAL_SAT_INSN) \ |
| | (1 << CGEN_INSN_OPTIONAL_UCI_INSN) \ |
| | (1 << CGEN_INSN_OPTIONAL_DSP_INSN) \ |
| | (1 << CGEN_INSN_OPTIONAL_CP_INSN) \ |
| | (1 << CGEN_INSN_OPTIONAL_CP64_INSN) ) |
| |
| |
| mep_config_map_struct mep_config_map[] = |
| { |
| /* config-map-start */ |
| /* Default entry: first module, with all options enabled. */ |
| { "", 0, EF_MEP_COP_IVC2 | EF_MEP_CPU_C5,0, 64, { 1, "\x20" }, { 1, "\x10" }, { 1, "\x8" }, { 1, "\x4" }, { 1, "\x3c" }, { 1, "\xc0" }, OPTION_MASK | (1 << CGEN_INSN_OPTIONAL_DSP_INSN) | (1 << CGEN_INSN_OPTIONAL_UCI_INSN) }, |
| { "default", CONFIG_DEFAULT, EF_MEP_COP_IVC2 | EF_MEP_CPU_C5, 0, 64, { 1, "\x20" }, { 1, "\x10" }, { 1, "\x8" }, { 1, "\x4" }, { 1, "\x3c" }, { 1, "\xc0" }, |
| 0 |
| | (1 << CGEN_INSN_OPTIONAL_CP_INSN) |
| | (1 << CGEN_INSN_OPTIONAL_CP64_INSN) |
| | (1 << CGEN_INSN_OPTIONAL_MUL_INSN) |
| | (1 << CGEN_INSN_OPTIONAL_DIV_INSN) |
| | (1 << CGEN_INSN_OPTIONAL_BIT_INSN) |
| | (1 << CGEN_INSN_OPTIONAL_LDZ_INSN) |
| | (1 << CGEN_INSN_OPTIONAL_ABS_INSN) |
| | (1 << CGEN_INSN_OPTIONAL_AVE_INSN) |
| | (1 << CGEN_INSN_OPTIONAL_MINMAX_INSN) |
| | (1 << CGEN_INSN_OPTIONAL_CLIP_INSN) |
| | (1 << CGEN_INSN_OPTIONAL_SAT_INSN) }, |
| /* config-map-end */ |
| { 0, 0, 0, 0, 0, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, {0, 0}, 0 } |
| }; |
| |
| int mep_config_index = 0; |
| |
| static int |
| check_configured_mach (int machs) |
| { |
| /* All base insns are supported. */ |
| int mach = 1 << MACH_BASE; |
| switch (MEP_CPU & EF_MEP_CPU_MASK) |
| { |
| case EF_MEP_CPU_C2: |
| case EF_MEP_CPU_C3: |
| mach |= (1 << MACH_MEP); |
| break; |
| case EF_MEP_CPU_H1: |
| mach |= (1 << MACH_H1); |
| break; |
| case EF_MEP_CPU_C5: |
| mach |= (1 << MACH_MEP); |
| mach |= (1 << MACH_C5); |
| break; |
| default: |
| break; |
| } |
| return machs & mach; |
| } |
| |
| int |
| mep_cgen_insn_supported (CGEN_CPU_DESC cd, const CGEN_INSN *insn) |
| { |
| int iconfig = CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_CONFIG); |
| int machs = CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_MACH); |
| CGEN_BITSET isas = CGEN_INSN_BITSET_ATTR_VALUE (insn, CGEN_INSN_ISA); |
| int ok1; |
| int ok2; |
| int ok3; |
| |
| /* If the insn has an option bit set that we don't want, |
| reject it. */ |
| if (CGEN_INSN_ATTRS (insn)->bool_ & OPTION_MASK & ~MEP_OMASK) |
| return 0; |
| |
| /* If attributes are absent, assume no restriction. */ |
| if (machs == 0) |
| machs = ~0; |
| |
| ok1 = ((machs & cd->machs) && cgen_bitset_intersect_p (& isas, cd->isas)); |
| /* If the insn is config-specific, make sure it matches. */ |
| ok2 = (iconfig == 0 || iconfig == MEP_CONFIG); |
| /* Make sure the insn is supported by the configured mach */ |
| ok3 = check_configured_mach (machs); |
| |
| return (ok1 && ok2 && ok3); |
| } |
| |
| int |
| mep_cgen_insn_supported_asm (CGEN_CPU_DESC cd, const CGEN_INSN *insn) |
| { |
| #ifdef MEP_IVC2_SUPPORTED |
| /* If we're assembling VLIW packets, ignore the 12-bit BSR as we |
| can't relax that. The 24-bit BSR is matched instead. */ |
| if (insn->base->num == MEP_INSN_BSR12 |
| && cgen_bitset_contains (cd->isas, ISA_EXT_COP1_64)) |
| return 0; |
| #endif |
| |
| return mep_cgen_insn_supported (cd, insn); |
| } |
| /* 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) & mep_cgen_ifld_table[MEP_##f] |
| static const CGEN_IFMT ifmt_empty ATTRIBUTE_UNUSED = { |
| 0, 0, 0x0, { { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_stcb_r ATTRIBUTE_UNUSED = { |
| 16, 16, 0xf00f, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_RM) }, { F (F_SUB4) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_pref ATTRIBUTE_UNUSED = { |
| 16, 16, 0xf00f, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_RM) }, { F (F_SUB4) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_prefd ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf00f0000, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_RM) }, { F (F_SUB4) }, { F (F_16S16) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_casb3 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf00ff0ff, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_RM) }, { F (F_SUB4) }, { F (F_C5N4) }, { F (F_RL5) }, { F (F_C5N6) }, { F (F_C5N7) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_sbcp ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf00ff000, { { F (F_MAJOR) }, { F (F_CRN) }, { F (F_RM) }, { F (F_SUB4) }, { F (F_EXT4) }, { F (F_12S20) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_lbucpa ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf00ffc00, { { F (F_MAJOR) }, { F (F_CRN) }, { F (F_RM) }, { F (F_SUB4) }, { F (F_EXT4) }, { F (F_EXT62) }, { F (F_CDISP10) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_lhucpa ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf00ffc00, { { F (F_MAJOR) }, { F (F_CRN) }, { F (F_RM) }, { F (F_SUB4) }, { F (F_EXT4) }, { F (F_EXT62) }, { F (F_CDISP10) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_uci ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf00f0000, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_RM) }, { F (F_SUB4) }, { F (F_16S16) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_dsp ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf00f0000, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_RM) }, { F (F_SUB4) }, { F (F_16U16) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_dsp0 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf00f0000, { { F (F_MAJOR) }, { F (F_C5_RNMUIMM24) }, { F (F_SUB4) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_dsp1 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf00f0000, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_C5_RMUIMM20) }, { F (F_SUB4) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_sb ATTRIBUTE_UNUSED = { |
| 16, 16, 0xf00f, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_RM) }, { F (F_SUB4) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_sh ATTRIBUTE_UNUSED = { |
| 16, 16, 0xf00f, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_RM) }, { F (F_SUB4) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_sw ATTRIBUTE_UNUSED = { |
| 16, 16, 0xf00f, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_RM) }, { F (F_SUB4) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_lbu ATTRIBUTE_UNUSED = { |
| 16, 16, 0xf00f, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_RM) }, { F (F_SUB4) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_lhu ATTRIBUTE_UNUSED = { |
| 16, 16, 0xf00f, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_RM) }, { F (F_SUB4) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_sw_sp ATTRIBUTE_UNUSED = { |
| 16, 16, 0xf083, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_8) }, { F (F_7U9A4) }, { F (F_SUB2) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_sb_tp ATTRIBUTE_UNUSED = { |
| 16, 16, 0xf880, { { F (F_MAJOR) }, { F (F_4) }, { F (F_RN3) }, { F (F_8) }, { F (F_7U9) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_sh_tp ATTRIBUTE_UNUSED = { |
| 16, 16, 0xf881, { { F (F_MAJOR) }, { F (F_4) }, { F (F_RN3) }, { F (F_8) }, { F (F_7U9A2) }, { F (F_15) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_sw_tp ATTRIBUTE_UNUSED = { |
| 16, 16, 0xf883, { { F (F_MAJOR) }, { F (F_4) }, { F (F_RN3) }, { F (F_8) }, { F (F_7U9A4) }, { F (F_SUB2) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_lbu_tp ATTRIBUTE_UNUSED = { |
| 16, 16, 0xf880, { { F (F_MAJOR) }, { F (F_4) }, { F (F_RN3) }, { F (F_8) }, { F (F_7U9) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_lhu_tp ATTRIBUTE_UNUSED = { |
| 16, 16, 0xf881, { { F (F_MAJOR) }, { F (F_4) }, { F (F_RN3) }, { F (F_8) }, { F (F_7U9A2) }, { F (F_15) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_sb16 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf00f0000, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_RM) }, { F (F_SUB4) }, { F (F_16S16) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_sh16 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf00f0000, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_RM) }, { F (F_SUB4) }, { F (F_16S16) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_sw16 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf00f0000, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_RM) }, { F (F_SUB4) }, { F (F_16S16) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_lbu16 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf00f0000, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_RM) }, { F (F_SUB4) }, { F (F_16S16) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_lhu16 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf00f0000, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_RM) }, { F (F_SUB4) }, { F (F_16S16) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_sw24 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf0030000, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_24U8A4N) }, { F (F_SUB2) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_extb ATTRIBUTE_UNUSED = { |
| 16, 16, 0xf0ff, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_RM) }, { F (F_SUB4) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_ssarb ATTRIBUTE_UNUSED = { |
| 16, 16, 0xfc0f, { { F (F_MAJOR) }, { F (F_4) }, { F (F_5) }, { F (F_2U6) }, { F (F_RM) }, { F (F_SUB4) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_mov ATTRIBUTE_UNUSED = { |
| 16, 16, 0xf00f, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_RM) }, { F (F_SUB4) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_movi8 ATTRIBUTE_UNUSED = { |
| 16, 16, 0xf000, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_8S8) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_movi16 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf0ff0000, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_RM) }, { F (F_SUB4) }, { F (F_16S16) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_movu24 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf8000000, { { F (F_MAJOR) }, { F (F_4) }, { F (F_RN3) }, { F (F_24U8N) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_movu16 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf0ff0000, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_RM) }, { F (F_SUB4) }, { F (F_16U16) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_add3 ATTRIBUTE_UNUSED = { |
| 16, 16, 0xf000, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_RM) }, { F (F_RL) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_add ATTRIBUTE_UNUSED = { |
| 16, 16, 0xf003, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_6S8) }, { F (F_SUB2) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_add3i ATTRIBUTE_UNUSED = { |
| 16, 16, 0xf083, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_8) }, { F (F_7U9A4) }, { F (F_SUB2) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_slt3i ATTRIBUTE_UNUSED = { |
| 16, 16, 0xf007, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_5U8) }, { F (F_SUB3) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_bra ATTRIBUTE_UNUSED = { |
| 16, 16, 0xf001, { { F (F_MAJOR) }, { F (F_12S4A2) }, { F (F_15) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_beqz ATTRIBUTE_UNUSED = { |
| 16, 16, 0xf001, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_8S8A2) }, { F (F_15) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_beqi ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf00f0000, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_4U8) }, { F (F_SUB4) }, { F (F_17S16A2) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_beq ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf00f0000, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_RM) }, { F (F_SUB4) }, { F (F_17S16A2) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_bsr24 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf80f0000, { { F (F_MAJOR) }, { F (F_4) }, { F (F_24S5A2N) }, { F (F_SUB4) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_jmp ATTRIBUTE_UNUSED = { |
| 16, 16, 0xff0f, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_RM) }, { F (F_SUB4) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_jmp24 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf80f0000, { { F (F_MAJOR) }, { F (F_4) }, { F (F_24U5A2N) }, { F (F_SUB4) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_ret ATTRIBUTE_UNUSED = { |
| 16, 16, 0xffff, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_RM) }, { F (F_SUB4) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_repeat ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf0ff0000, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_RM) }, { F (F_SUB4) }, { F (F_17S16A2) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_erepeat ATTRIBUTE_UNUSED = { |
| 32, 32, 0xffff0000, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_RM) }, { F (F_SUB4) }, { F (F_17S16A2) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_stc_lp ATTRIBUTE_UNUSED = { |
| 16, 16, 0xf0ff, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_CSRN_LO) }, { F (F_12) }, { F (F_13) }, { F (F_14) }, { F (F_CSRN_HI) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_stc ATTRIBUTE_UNUSED = { |
| 16, 16, 0xf00e, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_CSRN) }, { F (F_12) }, { F (F_13) }, { F (F_14) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_swi ATTRIBUTE_UNUSED = { |
| 16, 16, 0xffcf, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_8) }, { F (F_9) }, { F (F_2U10) }, { F (F_SUB4) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_bsetm ATTRIBUTE_UNUSED = { |
| 16, 16, 0xf80f, { { F (F_MAJOR) }, { F (F_4) }, { F (F_3U5) }, { F (F_RM) }, { F (F_SUB4) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_madd ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf00fffff, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_RM) }, { F (F_SUB4) }, { F (F_16U16) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_clip ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf0ffff07, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_RM) }, { F (F_SUB4) }, { F (F_EXT) }, { F (F_5U24) }, { F (F_29) }, { F (F_30) }, { F (F_31) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_swcp ATTRIBUTE_UNUSED = { |
| 16, 16, 0xf00f, { { F (F_MAJOR) }, { F (F_CRN) }, { F (F_RM) }, { F (F_SUB4) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_smcp ATTRIBUTE_UNUSED = { |
| 16, 16, 0xf00f, { { F (F_MAJOR) }, { F (F_CRN) }, { F (F_RM) }, { F (F_SUB4) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_swcp16 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf00f0000, { { F (F_MAJOR) }, { F (F_CRN) }, { F (F_RM) }, { F (F_SUB4) }, { F (F_16S16) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_smcp16 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf00f0000, { { F (F_MAJOR) }, { F (F_CRN) }, { F (F_RM) }, { F (F_SUB4) }, { F (F_16S16) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_swcpa ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf00ffc00, { { F (F_MAJOR) }, { F (F_CRN) }, { F (F_RM) }, { F (F_SUB4) }, { F (F_EXT4) }, { F (F_EXT62) }, { F (F_CDISP10) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_smcpa ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf00ffc00, { { F (F_MAJOR) }, { F (F_CRN) }, { F (F_RM) }, { F (F_SUB4) }, { F (F_EXT4) }, { F (F_EXT62) }, { F (F_CDISP10) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_bcpeq ATTRIBUTE_UNUSED = { |
| 32, 32, 0xff0f0000, { { F (F_MAJOR) }, { F (F_RN) }, { F (F_RM) }, { F (F_SUB4) }, { F (F_17S16A2) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_sim_syscall ATTRIBUTE_UNUSED = { |
| 16, 16, 0xf8ef, { { F (F_MAJOR) }, { F (F_4) }, { F (F_CALLNUM) }, { F (F_8) }, { F (F_9) }, { F (F_10) }, { F (F_SUB4) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_cmov_crn_rm ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf00ffff7, { { F (F_MAJOR) }, { F (F_CRNX) }, { F (F_RM) }, { F (F_SUB4) }, { F (F_IVC2_4U16) }, { F (F_IVC2_4U20) }, { F (F_IVC2_4U24) }, { F (F_29) }, { F (F_30) }, { F (F_31) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_cmovc_ccrn_rm ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf00ffff3, { { F (F_MAJOR) }, { F (F_IVC2_CCRN_C3) }, { F (F_RM) }, { F (F_SUB4) }, { F (F_IVC2_4U16) }, { F (F_IVC2_4U20) }, { F (F_IVC2_4U24) }, { F (F_30) }, { F (F_31) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_cmov_crn_rm_p0 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xfff7ff, { { F (F_IVC2_CRNX) }, { F (F_IVC2_CRM) }, { F (F_IVC2_CMOV1) }, { F (F_21) }, { F (F_IVC2_CMOV2) }, { F (F_IVC2_CMOV3) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_cmovc_ccrn_rm_p0 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xfff3ff, { { F (F_IVC2_CCRN) }, { F (F_IVC2_CRM) }, { F (F_IVC2_CMOV1) }, { F (F_IVC2_CMOV2) }, { F (F_IVC2_CMOV3) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_cpadd3_b_C3 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xfe0ff801, { { F (F_MAJOR) }, { F (F_IVC2_3U4) }, { F (F_IVC2_5U7) }, { F (F_SUB4) }, { F (F_IVC2_5U16) }, { F (F_IVC2_5U21) }, { F (F_IVC2_5U26) }, { F (F_IVC2_1U31) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_cpfsftbi_C3 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf00ff801, { { F (F_MAJOR) }, { F (F_IVC2_3U4) }, { F (F_IVC2_5U7) }, { F (F_SUB4) }, { F (F_IVC2_5U16) }, { F (F_IVC2_5U21) }, { F (F_IVC2_5U26) }, { F (F_IVC2_1U31) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_cpmovfrcsar0_C3 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xfe0fffff, { { F (F_MAJOR) }, { F (F_IVC2_3U4) }, { F (F_IVC2_5U7) }, { F (F_SUB4) }, { F (F_IVC2_5U16) }, { F (F_IVC2_5U21) }, { F (F_IVC2_5U26) }, { F (F_IVC2_1U31) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_cpmovtocsar0_C3 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xfffff83f, { { F (F_MAJOR) }, { F (F_IVC2_3U4) }, { F (F_IVC2_5U7) }, { F (F_SUB4) }, { F (F_IVC2_5U16) }, { F (F_IVC2_5U21) }, { F (F_IVC2_5U26) }, { F (F_IVC2_1U31) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_cpmov_C3 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xfe0ff83f, { { F (F_MAJOR) }, { F (F_IVC2_3U4) }, { F (F_IVC2_5U7) }, { F (F_SUB4) }, { F (F_IVC2_5U16) }, { F (F_IVC2_5U21) }, { F (F_IVC2_5U26) }, { F (F_IVC2_1U31) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_cpcmpeqz_b_C3 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xfffff801, { { F (F_MAJOR) }, { F (F_IVC2_3U4) }, { F (F_IVC2_5U7) }, { F (F_SUB4) }, { F (F_IVC2_5U16) }, { F (F_IVC2_5U21) }, { F (F_IVC2_5U26) }, { F (F_IVC2_1U31) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_cpsrli3_b_C3 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xfc0ff801, { { F (F_MAJOR) }, { F (F_IVC2_2U4) }, { F (F_IVC2_3U6) }, { F (F_IVC2_3U9) }, { F (F_SUB4) }, { F (F_IVC2_5U16) }, { F (F_IVC2_5U21) }, { F (F_IVC2_5U26) }, { F (F_IVC2_1U31) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_cpsrli3_h_C3 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xfc0ff801, { { F (F_MAJOR) }, { F (F_IVC2_2U4) }, { F (F_IVC2_2U6) }, { F (F_IVC2_4U8) }, { F (F_SUB4) }, { F (F_IVC2_5U16) }, { F (F_IVC2_5U21) }, { F (F_IVC2_5U26) }, { F (F_IVC2_1U31) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_cpsrli3_w_C3 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xfc0ff801, { { F (F_MAJOR) }, { F (F_IVC2_2U4) }, { F (F_IVC2_1U6) }, { F (F_IVC2_5U7) }, { F (F_SUB4) }, { F (F_IVC2_5U16) }, { F (F_IVC2_5U21) }, { F (F_IVC2_5U26) }, { F (F_IVC2_1U31) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_cdsrli3_C3 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xfc0ff801, { { F (F_MAJOR) }, { F (F_IVC2_2U4) }, { F (F_IVC2_6U6) }, { F (F_SUB4) }, { F (F_IVC2_5U16) }, { F (F_IVC2_5U21) }, { F (F_IVC2_5U26) }, { F (F_IVC2_1U31) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_cpmovi_b_C3 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf00ff83f, { { F (F_MAJOR) }, { F (F_IVC2_8S4) }, { F (F_SUB4) }, { F (F_IVC2_5U16) }, { F (F_IVC2_5U21) }, { F (F_IVC2_5U26) }, { F (F_IVC2_1U31) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_cpmoviu_h_C3 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf00ff83f, { { F (F_MAJOR) }, { F (F_IVC2_8U4) }, { F (F_SUB4) }, { F (F_IVC2_5U16) }, { F (F_IVC2_5U21) }, { F (F_IVC2_5U26) }, { F (F_IVC2_1U31) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_cpsrlia1_P1 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xfc0fffff, { { F (F_MAJOR) }, { F (F_IVC2_2U4) }, { F (F_IVC2_1U6) }, { F (F_IVC2_5U7) }, { F (F_SUB4) }, { F (F_IVC2_5U16) }, { F (F_IVC2_5U21) }, { F (F_IVC2_5U26) }, { F (F_IVC2_1U31) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_c0nop_P0_P0S ATTRIBUTE_UNUSED = { |
| 32, 32, 0xffffffff, { { F (F_IVC2_8U0) }, { F (F_IVC2_5U8) }, { F (F_IVC2_5U13) }, { F (F_IVC2_5U18) }, { F (F_IVC2_5U23) }, { F (F_IVC2_4U28) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_cpadd3_b_P0S_P1 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xfff8000f, { { F (F_IVC2_8U0) }, { F (F_IVC2_5U8) }, { F (F_IVC2_5U13) }, { F (F_IVC2_5U18) }, { F (F_IVC2_5U23) }, { F (F_IVC2_4U28) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_cpmov_P0S_P1 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xfff83e0f, { { F (F_IVC2_8U0) }, { F (F_IVC2_5U8) }, { F (F_IVC2_5U13) }, { F (F_IVC2_5U18) }, { F (F_IVC2_5U23) }, { F (F_IVC2_4U28) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_cpccadd_b_P0S_P1 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xfff83fff, { { F (F_IVC2_8U0) }, { F (F_IVC2_5U8) }, { F (F_IVC2_5U13) }, { F (F_IVC2_5U18) }, { F (F_IVC2_5U23) }, { F (F_IVC2_4U28) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_cpmovfrcsar0_P0S_P1 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xfffffe0f, { { F (F_IVC2_8U0) }, { F (F_IVC2_5U8) }, { F (F_IVC2_5U13) }, { F (F_IVC2_5U18) }, { F (F_IVC2_5U23) }, { F (F_IVC2_4U28) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_cpcmpeqz_b_P0S_P1 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xfff801ff, { { F (F_IVC2_8U0) }, { F (F_IVC2_5U8) }, { F (F_IVC2_5U13) }, { F (F_IVC2_5U18) }, { F (F_IVC2_5U23) }, { F (F_IVC2_4U28) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_cpsrlia0_P0S ATTRIBUTE_UNUSED = { |
| 32, 32, 0xfffffe0f, { { F (F_IVC2_8U0) }, { F (F_IVC2_5U8) }, { F (F_IVC2_5U13) }, { F (F_IVC2_5U18) }, { F (F_IVC2_5U23) }, { F (F_IVC2_4U28) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_cpfsftbi_P0_P1 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf8000f, { { F (F_IVC2_5U0) }, { F (F_IVC2_3U5) }, { F (F_IVC2_5U8) }, { F (F_IVC2_5U13) }, { F (F_IVC2_5U18) }, { F (F_IVC2_5U23) }, { F (F_IVC2_4U28) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_cpsrli3_b_P0_P1 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf83e0f, { { F (F_IVC2_5U0) }, { F (F_IVC2_3U5) }, { F (F_IVC2_5U8) }, { F (F_IVC2_5U13) }, { F (F_IVC2_5U18) }, { F (F_IVC2_5U23) }, { F (F_IVC2_4U28) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_cpsrli3_h_P0_P1 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf83e0f, { { F (F_IVC2_4U0) }, { F (F_IVC2_4U4) }, { F (F_IVC2_5U8) }, { F (F_IVC2_5U13) }, { F (F_IVC2_5U18) }, { F (F_IVC2_5U23) }, { F (F_IVC2_4U28) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_cpsrli3_w_P0_P1 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf83e0f, { { F (F_IVC2_3U0) }, { F (F_IVC2_5U3) }, { F (F_IVC2_5U8) }, { F (F_IVC2_5U13) }, { F (F_IVC2_5U18) }, { F (F_IVC2_5U23) }, { F (F_IVC2_4U28) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_cdsrli3_P0_P1 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf83e0f, { { F (F_IVC2_2U0) }, { F (F_IVC2_6U2) }, { F (F_IVC2_5U8) }, { F (F_IVC2_5U13) }, { F (F_IVC2_5U18) }, { F (F_IVC2_5U23) }, { F (F_IVC2_4U28) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_cpmovi_h_P0_P1 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf8300f, { { F (F_IVC2_SIMM16P0) }, { F (F_IVC2_5U8) }, { F (F_IVC2_5U13) }, { F (F_IVC2_2U18) }, { F (F_IVC2_4U28) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_cpmoviu_w_P0_P1 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf8300f, { { F (F_IVC2_IMM16P0) }, { F (F_IVC2_5U8) }, { F (F_IVC2_5U13) }, { F (F_IVC2_2U18) }, { F (F_IVC2_4U28) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_cpmovi_b_P0S_P1 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xfff8300f, { { F (F_IVC2_8U0) }, { F (F_IVC2_5U8) }, { F (F_IVC2_5U13) }, { F (F_IVC2_2U18) }, { F (F_IVC2_8U20) }, { F (F_IVC2_4U28) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_cpfmulia1s0u_b_P1 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf801ff, { { F (F_IVC2_8S0) }, { F (F_IVC2_5U8) }, { F (F_IVC2_5U13) }, { F (F_IVC2_5U18) }, { F (F_IVC2_5U23) }, { F (F_IVC2_4U28) }, { 0 } } |
| }; |
| |
| static const CGEN_IFMT ifmt_cpfmulia1u_b_P1 ATTRIBUTE_UNUSED = { |
| 32, 32, 0xf8018f, { { F (F_IVC2_8S0) }, { F (F_IVC2_5U8) }, { F (F_IVC2_5U13) }, { F (F_IVC2_5U18) }, { F (F_IVC2_2U23) }, { F (F_IVC2_3U25) }, { F (F_IVC2_4U28) }, { 0 } } |
| }; |
| |
| #undef F |
| |
| #define A(a) (1 << CGEN_INSN_##a) |
| #define OPERAND(op) MEP_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 mep_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}}, |
| /* stcb $rn,($rma) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', '(', OP (RMA), ')', 0 } }, |
| & ifmt_stcb_r, { 0x700c } |
| }, |
| /* ldcb $rn,($rma) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', '(', OP (RMA), ')', 0 } }, |
| & ifmt_stcb_r, { 0x700d } |
| }, |
| /* pref $cimm4,($rma) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CIMM4), ',', '(', OP (RMA), ')', 0 } }, |
| & ifmt_pref, { 0x7005 } |
| }, |
| /* pref $cimm4,$sdisp16($rma) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CIMM4), ',', OP (SDISP16), '(', OP (RMA), ')', 0 } }, |
| & ifmt_prefd, { 0xf0030000 } |
| }, |
| /* casb3 $rl5,$rn,($rm) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RL5), ',', OP (RN), ',', '(', OP (RM), ')', 0 } }, |
| & ifmt_casb3, { 0xf0012000 } |
| }, |
| /* cash3 $rl5,$rn,($rm) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RL5), ',', OP (RN), ',', '(', OP (RM), ')', 0 } }, |
| & ifmt_casb3, { 0xf0012001 } |
| }, |
| /* casw3 $rl5,$rn,($rm) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RL5), ',', OP (RN), ',', '(', OP (RM), ')', 0 } }, |
| & ifmt_casb3, { 0xf0012002 } |
| }, |
| /* sbcp $crn,$cdisp12($rma) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN), ',', OP (CDISP12), '(', OP (RMA), ')', 0 } }, |
| & ifmt_sbcp, { 0xf0060000 } |
| }, |
| /* lbcp $crn,$cdisp12($rma) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN), ',', OP (CDISP12), '(', OP (RMA), ')', 0 } }, |
| & ifmt_sbcp, { 0xf0064000 } |
| }, |
| /* lbucp $crn,$cdisp12($rma) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN), ',', OP (CDISP12), '(', OP (RMA), ')', 0 } }, |
| & ifmt_sbcp, { 0xf006c000 } |
| }, |
| /* shcp $crn,$cdisp12($rma) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN), ',', OP (CDISP12), '(', OP (RMA), ')', 0 } }, |
| & ifmt_sbcp, { 0xf0061000 } |
| }, |
| /* lhcp $crn,$cdisp12($rma) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN), ',', OP (CDISP12), '(', OP (RMA), ')', 0 } }, |
| & ifmt_sbcp, { 0xf0065000 } |
| }, |
| /* lhucp $crn,$cdisp12($rma) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN), ',', OP (CDISP12), '(', OP (RMA), ')', 0 } }, |
| & ifmt_sbcp, { 0xf006d000 } |
| }, |
| /* lbucpa $crn,($rma+),$cdisp10 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN), ',', '(', OP (RMA), '+', ')', ',', OP (CDISP10), 0 } }, |
| & ifmt_lbucpa, { 0xf005c000 } |
| }, |
| /* lhucpa $crn,($rma+),$cdisp10a2 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN), ',', '(', OP (RMA), '+', ')', ',', OP (CDISP10A2), 0 } }, |
| & ifmt_lhucpa, { 0xf005d000 } |
| }, |
| /* lbucpm0 $crn,($rma+),$cdisp10 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN), ',', '(', OP (RMA), '+', ')', ',', OP (CDISP10), 0 } }, |
| & ifmt_lbucpa, { 0xf005c800 } |
| }, |
| /* lhucpm0 $crn,($rma+),$cdisp10a2 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN), ',', '(', OP (RMA), '+', ')', ',', OP (CDISP10A2), 0 } }, |
| & ifmt_lhucpa, { 0xf005d800 } |
| }, |
| /* lbucpm1 $crn,($rma+),$cdisp10 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN), ',', '(', OP (RMA), '+', ')', ',', OP (CDISP10), 0 } }, |
| & ifmt_lbucpa, { 0xf005cc00 } |
| }, |
| /* lhucpm1 $crn,($rma+),$cdisp10a2 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN), ',', '(', OP (RMA), '+', ')', ',', OP (CDISP10A2), 0 } }, |
| & ifmt_lhucpa, { 0xf005dc00 } |
| }, |
| /* uci $rn,$rm,$uimm16 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), ',', OP (UIMM16), 0 } }, |
| & ifmt_uci, { 0xf0020000 } |
| }, |
| /* dsp $rn,$rm,$uimm16 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), ',', OP (UIMM16), 0 } }, |
| & ifmt_dsp, { 0xf0000000 } |
| }, |
| /* dsp0 $c5rnmuimm24 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (C5RNMUIMM24), 0 } }, |
| & ifmt_dsp0, { 0xf0000000 } |
| }, |
| /* dsp1 $rn,$c5rmuimm20 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (C5RMUIMM20), 0 } }, |
| & ifmt_dsp1, { 0xf0000000 } |
| }, |
| /* sb $rnc,($rma) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RNC), ',', '(', OP (RMA), ')', 0 } }, |
| & ifmt_sb, { 0x8 } |
| }, |
| /* sh $rns,($rma) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RNS), ',', '(', OP (RMA), ')', 0 } }, |
| & ifmt_sh, { 0x9 } |
| }, |
| /* sw $rnl,($rma) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RNL), ',', '(', OP (RMA), ')', 0 } }, |
| & ifmt_sw, { 0xa } |
| }, |
| /* lb $rnc,($rma) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RNC), ',', '(', OP (RMA), ')', 0 } }, |
| & ifmt_sb, { 0xc } |
| }, |
| /* lh $rns,($rma) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RNS), ',', '(', OP (RMA), ')', 0 } }, |
| & ifmt_sh, { 0xd } |
| }, |
| /* lw $rnl,($rma) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RNL), ',', '(', OP (RMA), ')', 0 } }, |
| & ifmt_sw, { 0xe } |
| }, |
| /* lbu $rnuc,($rma) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RNUC), ',', '(', OP (RMA), ')', 0 } }, |
| & ifmt_lbu, { 0xb } |
| }, |
| /* lhu $rnus,($rma) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RNUS), ',', '(', OP (RMA), ')', 0 } }, |
| & ifmt_lhu, { 0xf } |
| }, |
| /* sw $rnl,$udisp7a4($spr) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RNL), ',', OP (UDISP7A4), '(', OP (SPR), ')', 0 } }, |
| & ifmt_sw_sp, { 0x4002 } |
| }, |
| /* lw $rnl,$udisp7a4($spr) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RNL), ',', OP (UDISP7A4), '(', OP (SPR), ')', 0 } }, |
| & ifmt_sw_sp, { 0x4003 } |
| }, |
| /* sb $rn3c,$udisp7($tpr) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN3C), ',', OP (UDISP7), '(', OP (TPR), ')', 0 } }, |
| & ifmt_sb_tp, { 0x8000 } |
| }, |
| /* sh $rn3s,$udisp7a2($tpr) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN3S), ',', OP (UDISP7A2), '(', OP (TPR), ')', 0 } }, |
| & ifmt_sh_tp, { 0x8080 } |
| }, |
| /* sw $rn3l,$udisp7a4($tpr) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN3L), ',', OP (UDISP7A4), '(', OP (TPR), ')', 0 } }, |
| & ifmt_sw_tp, { 0x4082 } |
| }, |
| /* lb $rn3c,$udisp7($tpr) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN3C), ',', OP (UDISP7), '(', OP (TPR), ')', 0 } }, |
| & ifmt_sb_tp, { 0x8800 } |
| }, |
| /* lh $rn3s,$udisp7a2($tpr) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN3S), ',', OP (UDISP7A2), '(', OP (TPR), ')', 0 } }, |
| & ifmt_sh_tp, { 0x8880 } |
| }, |
| /* lw $rn3l,$udisp7a4($tpr) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN3L), ',', OP (UDISP7A4), '(', OP (TPR), ')', 0 } }, |
| & ifmt_sw_tp, { 0x4083 } |
| }, |
| /* lbu $rn3uc,$udisp7($tpr) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN3UC), ',', OP (UDISP7), '(', OP (TPR), ')', 0 } }, |
| & ifmt_lbu_tp, { 0x4880 } |
| }, |
| /* lhu $rn3us,$udisp7a2($tpr) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN3US), ',', OP (UDISP7A2), '(', OP (TPR), ')', 0 } }, |
| & ifmt_lhu_tp, { 0x8881 } |
| }, |
| /* sb $rnc,$sdisp16($rma) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RNC), ',', OP (SDISP16), '(', OP (RMA), ')', 0 } }, |
| & ifmt_sb16, { 0xc0080000 } |
| }, |
| /* sh $rns,$sdisp16($rma) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RNS), ',', OP (SDISP16), '(', OP (RMA), ')', 0 } }, |
| & ifmt_sh16, { 0xc0090000 } |
| }, |
| /* sw $rnl,$sdisp16($rma) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RNL), ',', OP (SDISP16), '(', OP (RMA), ')', 0 } }, |
| & ifmt_sw16, { 0xc00a0000 } |
| }, |
| /* lb $rnc,$sdisp16($rma) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RNC), ',', OP (SDISP16), '(', OP (RMA), ')', 0 } }, |
| & ifmt_sb16, { 0xc00c0000 } |
| }, |
| /* lh $rns,$sdisp16($rma) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RNS), ',', OP (SDISP16), '(', OP (RMA), ')', 0 } }, |
| & ifmt_sh16, { 0xc00d0000 } |
| }, |
| /* lw $rnl,$sdisp16($rma) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RNL), ',', OP (SDISP16), '(', OP (RMA), ')', 0 } }, |
| & ifmt_sw16, { 0xc00e0000 } |
| }, |
| /* lbu $rnuc,$sdisp16($rma) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RNUC), ',', OP (SDISP16), '(', OP (RMA), ')', 0 } }, |
| & ifmt_lbu16, { 0xc00b0000 } |
| }, |
| /* lhu $rnus,$sdisp16($rma) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RNUS), ',', OP (SDISP16), '(', OP (RMA), ')', 0 } }, |
| & ifmt_lhu16, { 0xc00f0000 } |
| }, |
| /* sw $rnl,($addr24a4) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RNL), ',', '(', OP (ADDR24A4), ')', 0 } }, |
| & ifmt_sw24, { 0xe0020000 } |
| }, |
| /* lw $rnl,($addr24a4) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RNL), ',', '(', OP (ADDR24A4), ')', 0 } }, |
| & ifmt_sw24, { 0xe0030000 } |
| }, |
| /* extb $rn */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), 0 } }, |
| & ifmt_extb, { 0x100d } |
| }, |
| /* exth $rn */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), 0 } }, |
| & ifmt_extb, { 0x102d } |
| }, |
| /* extub $rn */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), 0 } }, |
| & ifmt_extb, { 0x108d } |
| }, |
| /* extuh $rn */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), 0 } }, |
| & ifmt_extb, { 0x10ad } |
| }, |
| /* ssarb $udisp2($rm) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (UDISP2), '(', OP (RM), ')', 0 } }, |
| & ifmt_ssarb, { 0x100c } |
| }, |
| /* mov $rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_mov, { 0x0 } |
| }, |
| /* mov $rn,$simm8 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (SIMM8), 0 } }, |
| & ifmt_movi8, { 0x5000 } |
| }, |
| /* mov $rn,$simm16 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (SIMM16), 0 } }, |
| & ifmt_movi16, { 0xc0010000 } |
| }, |
| /* movu $rn3,$uimm24 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN3), ',', OP (UIMM24), 0 } }, |
| & ifmt_movu24, { 0xd0000000 } |
| }, |
| /* movu $rn,$uimm16 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (UIMM16), 0 } }, |
| & ifmt_movu16, { 0xc0110000 } |
| }, |
| /* movh $rn,$uimm16 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (UIMM16), 0 } }, |
| & ifmt_movu16, { 0xc0210000 } |
| }, |
| /* add3 $rl,$rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RL), ',', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_add3, { 0x9000 } |
| }, |
| /* add $rn,$simm6 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (SIMM6), 0 } }, |
| & ifmt_add, { 0x6000 } |
| }, |
| /* add3 $rn,$spr,$uimm7a4 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (SPR), ',', OP (UIMM7A4), 0 } }, |
| & ifmt_add3i, { 0x4000 } |
| }, |
| /* advck3 \$0,$rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', '$', '0', ',', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_mov, { 0x7 } |
| }, |
| /* sub $rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_mov, { 0x4 } |
| }, |
| /* sbvck3 \$0,$rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', '$', '0', ',', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_mov, { 0x5 } |
| }, |
| /* neg $rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_mov, { 0x1 } |
| }, |
| /* slt3 \$0,$rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', '$', '0', ',', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_mov, { 0x2 } |
| }, |
| /* sltu3 \$0,$rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', '$', '0', ',', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_mov, { 0x3 } |
| }, |
| /* slt3 \$0,$rn,$uimm5 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', '$', '0', ',', OP (RN), ',', OP (UIMM5), 0 } }, |
| & ifmt_slt3i, { 0x6001 } |
| }, |
| /* sltu3 \$0,$rn,$uimm5 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', '$', '0', ',', OP (RN), ',', OP (UIMM5), 0 } }, |
| & ifmt_slt3i, { 0x6005 } |
| }, |
| /* sl1ad3 \$0,$rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', '$', '0', ',', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_mov, { 0x2006 } |
| }, |
| /* sl2ad3 \$0,$rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', '$', '0', ',', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_mov, { 0x2007 } |
| }, |
| /* add3 $rn,$rm,$simm16 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), ',', OP (SIMM16), 0 } }, |
| & ifmt_uci, { 0xc0000000 } |
| }, |
| /* slt3 $rn,$rm,$simm16 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), ',', OP (SIMM16), 0 } }, |
| & ifmt_uci, { 0xc0020000 } |
| }, |
| /* sltu3 $rn,$rm,$uimm16 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), ',', OP (UIMM16), 0 } }, |
| & ifmt_dsp, { 0xc0030000 } |
| }, |
| /* or $rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_mov, { 0x1000 } |
| }, |
| /* and $rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_mov, { 0x1001 } |
| }, |
| /* xor $rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_mov, { 0x1002 } |
| }, |
| /* nor $rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_mov, { 0x1003 } |
| }, |
| /* or3 $rn,$rm,$uimm16 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), ',', OP (UIMM16), 0 } }, |
| & ifmt_dsp, { 0xc0040000 } |
| }, |
| /* and3 $rn,$rm,$uimm16 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), ',', OP (UIMM16), 0 } }, |
| & ifmt_dsp, { 0xc0050000 } |
| }, |
| /* xor3 $rn,$rm,$uimm16 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), ',', OP (UIMM16), 0 } }, |
| & ifmt_dsp, { 0xc0060000 } |
| }, |
| /* sra $rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_mov, { 0x200d } |
| }, |
| /* srl $rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_mov, { 0x200c } |
| }, |
| /* sll $rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_mov, { 0x200e } |
| }, |
| /* sra $rn,$uimm5 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (UIMM5), 0 } }, |
| & ifmt_slt3i, { 0x6003 } |
| }, |
| /* srl $rn,$uimm5 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (UIMM5), 0 } }, |
| & ifmt_slt3i, { 0x6002 } |
| }, |
| /* sll $rn,$uimm5 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (UIMM5), 0 } }, |
| & ifmt_slt3i, { 0x6006 } |
| }, |
| /* sll3 \$0,$rn,$uimm5 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', '$', '0', ',', OP (RN), ',', OP (UIMM5), 0 } }, |
| & ifmt_slt3i, { 0x6007 } |
| }, |
| /* fsft $rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_mov, { 0x200f } |
| }, |
| /* bra $pcrel12a2 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (PCREL12A2), 0 } }, |
| & ifmt_bra, { 0xb000 } |
| }, |
| /* beqz $rn,$pcrel8a2 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (PCREL8A2), 0 } }, |
| & ifmt_beqz, { 0xa000 } |
| }, |
| /* bnez $rn,$pcrel8a2 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (PCREL8A2), 0 } }, |
| & ifmt_beqz, { 0xa001 } |
| }, |
| /* beqi $rn,$uimm4,$pcrel17a2 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (UIMM4), ',', OP (PCREL17A2), 0 } }, |
| & ifmt_beqi, { 0xe0000000 } |
| }, |
| /* bnei $rn,$uimm4,$pcrel17a2 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (UIMM4), ',', OP (PCREL17A2), 0 } }, |
| & ifmt_beqi, { 0xe0040000 } |
| }, |
| /* blti $rn,$uimm4,$pcrel17a2 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (UIMM4), ',', OP (PCREL17A2), 0 } }, |
| & ifmt_beqi, { 0xe00c0000 } |
| }, |
| /* bgei $rn,$uimm4,$pcrel17a2 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (UIMM4), ',', OP (PCREL17A2), 0 } }, |
| & ifmt_beqi, { 0xe0080000 } |
| }, |
| /* beq $rn,$rm,$pcrel17a2 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), ',', OP (PCREL17A2), 0 } }, |
| & ifmt_beq, { 0xe0010000 } |
| }, |
| /* bne $rn,$rm,$pcrel17a2 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), ',', OP (PCREL17A2), 0 } }, |
| & ifmt_beq, { 0xe0050000 } |
| }, |
| /* bsr $pcrel12a2 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (PCREL12A2), 0 } }, |
| & ifmt_bra, { 0xb001 } |
| }, |
| /* bsr $pcrel24a2 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (PCREL24A2), 0 } }, |
| & ifmt_bsr24, { 0xd8090000 } |
| }, |
| /* jmp $rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RM), 0 } }, |
| & ifmt_jmp, { 0x100e } |
| }, |
| /* jmp $pcabs24a2 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (PCABS24A2), 0 } }, |
| & ifmt_jmp24, { 0xd8080000 } |
| }, |
| /* jsr $rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RM), 0 } }, |
| & ifmt_jmp, { 0x100f } |
| }, |
| /* ret */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, 0 } }, |
| & ifmt_ret, { 0x7002 } |
| }, |
| /* repeat $rn,$pcrel17a2 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (PCREL17A2), 0 } }, |
| & ifmt_repeat, { 0xe0090000 } |
| }, |
| /* erepeat $pcrel17a2 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (PCREL17A2), 0 } }, |
| & ifmt_erepeat, { 0xe0190000 } |
| }, |
| /* stc $rn,\$lp */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', '$', 'l', 'p', 0 } }, |
| & ifmt_stc_lp, { 0x7018 } |
| }, |
| /* stc $rn,\$hi */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', '$', 'h', 'i', 0 } }, |
| & ifmt_stc_lp, { 0x7078 } |
| }, |
| /* stc $rn,\$lo */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', '$', 'l', 'o', 0 } }, |
| & ifmt_stc_lp, { 0x7088 } |
| }, |
| /* stc $rn,$csrn */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (CSRN), 0 } }, |
| & ifmt_stc, { 0x7008 } |
| }, |
| /* ldc $rn,\$lp */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', '$', 'l', 'p', 0 } }, |
| & ifmt_stc_lp, { 0x701a } |
| }, |
| /* ldc $rn,\$hi */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', '$', 'h', 'i', 0 } }, |
| & ifmt_stc_lp, { 0x707a } |
| }, |
| /* ldc $rn,\$lo */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', '$', 'l', 'o', 0 } }, |
| & ifmt_stc_lp, { 0x708a } |
| }, |
| /* ldc $rn,$csrn */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (CSRN), 0 } }, |
| & ifmt_stc, { 0x700a } |
| }, |
| /* di */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, 0 } }, |
| & ifmt_ret, { 0x7000 } |
| }, |
| /* ei */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, 0 } }, |
| & ifmt_ret, { 0x7010 } |
| }, |
| /* reti */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, 0 } }, |
| & ifmt_ret, { 0x7012 } |
| }, |
| /* halt */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, 0 } }, |
| & ifmt_ret, { 0x7022 } |
| }, |
| /* sleep */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, 0 } }, |
| & ifmt_ret, { 0x7062 } |
| }, |
| /* swi $uimm2 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (UIMM2), 0 } }, |
| & ifmt_swi, { 0x7006 } |
| }, |
| /* break */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, 0 } }, |
| & ifmt_ret, { 0x7032 } |
| }, |
| /* syncm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, 0 } }, |
| & ifmt_ret, { 0x7011 } |
| }, |
| /* stcb $rn,$uimm16 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (UIMM16), 0 } }, |
| & ifmt_movu16, { 0xf0040000 } |
| }, |
| /* ldcb $rn,$uimm16 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (UIMM16), 0 } }, |
| & ifmt_movu16, { 0xf0140000 } |
| }, |
| /* bsetm ($rma),$uimm3 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', '(', OP (RMA), ')', ',', OP (UIMM3), 0 } }, |
| & ifmt_bsetm, { 0x2000 } |
| }, |
| /* bclrm ($rma),$uimm3 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', '(', OP (RMA), ')', ',', OP (UIMM3), 0 } }, |
| & ifmt_bsetm, { 0x2001 } |
| }, |
| /* bnotm ($rma),$uimm3 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', '(', OP (RMA), ')', ',', OP (UIMM3), 0 } }, |
| & ifmt_bsetm, { 0x2002 } |
| }, |
| /* btstm \$0,($rma),$uimm3 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', '$', '0', ',', '(', OP (RMA), ')', ',', OP (UIMM3), 0 } }, |
| & ifmt_bsetm, { 0x2003 } |
| }, |
| /* tas $rn,($rma) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', '(', OP (RMA), ')', 0 } }, |
| & ifmt_stcb_r, { 0x2004 } |
| }, |
| /* cache $cimm4,($rma) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CIMM4), ',', '(', OP (RMA), ')', 0 } }, |
| & ifmt_pref, { 0x7004 } |
| }, |
| /* mul $rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_mov, { 0x1004 } |
| }, |
| /* mulu $rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_mov, { 0x1005 } |
| }, |
| /* mulr $rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_mov, { 0x1006 } |
| }, |
| /* mulru $rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_mov, { 0x1007 } |
| }, |
| /* madd $rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_madd, { 0xf0013004 } |
| }, |
| /* maddu $rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_madd, { 0xf0013005 } |
| }, |
| /* maddr $rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_madd, { 0xf0013006 } |
| }, |
| /* maddru $rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_madd, { 0xf0013007 } |
| }, |
| /* div $rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_mov, { 0x1008 } |
| }, |
| /* divu $rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_mov, { 0x1009 } |
| }, |
| /* dret */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, 0 } }, |
| & ifmt_ret, { 0x7013 } |
| }, |
| /* dbreak */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, 0 } }, |
| & ifmt_ret, { 0x7033 } |
| }, |
| /* ldz $rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_madd, { 0xf0010000 } |
| }, |
| /* abs $rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_madd, { 0xf0010003 } |
| }, |
| /* ave $rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_madd, { 0xf0010002 } |
| }, |
| /* min $rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_madd, { 0xf0010004 } |
| }, |
| /* max $rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_madd, { 0xf0010005 } |
| }, |
| /* minu $rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_madd, { 0xf0010006 } |
| }, |
| /* maxu $rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_madd, { 0xf0010007 } |
| }, |
| /* clip $rn,$cimm5 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (CIMM5), 0 } }, |
| & ifmt_clip, { 0xf0011000 } |
| }, |
| /* clipu $rn,$cimm5 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (CIMM5), 0 } }, |
| & ifmt_clip, { 0xf0011001 } |
| }, |
| /* sadd $rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_madd, { 0xf0010008 } |
| }, |
| /* ssub $rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_madd, { 0xf001000a } |
| }, |
| /* saddu $rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_madd, { 0xf0010009 } |
| }, |
| /* ssubu $rn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RN), ',', OP (RM), 0 } }, |
| & ifmt_madd, { 0xf001000b } |
| }, |
| /* swcp $crn,($rma) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN), ',', '(', OP (RMA), ')', 0 } }, |
| & ifmt_swcp, { 0x3008 } |
| }, |
| /* lwcp $crn,($rma) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN), ',', '(', OP (RMA), ')', 0 } }, |
| & ifmt_swcp, { 0x3009 } |
| }, |
| /* smcp $crn64,($rma) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN64), ',', '(', OP (RMA), ')', 0 } }, |
| & ifmt_smcp, { 0x300a } |
| }, |
| /* lmcp $crn64,($rma) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN64), ',', '(', OP (RMA), ')', 0 } }, |
| & ifmt_smcp, { 0x300b } |
| }, |
| /* swcpi $crn,($rma+) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN), ',', '(', OP (RMA), '+', ')', 0 } }, |
| & ifmt_swcp, { 0x3000 } |
| }, |
| /* lwcpi $crn,($rma+) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN), ',', '(', OP (RMA), '+', ')', 0 } }, |
| & ifmt_swcp, { 0x3001 } |
| }, |
| /* smcpi $crn64,($rma+) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN64), ',', '(', OP (RMA), '+', ')', 0 } }, |
| & ifmt_smcp, { 0x3002 } |
| }, |
| /* lmcpi $crn64,($rma+) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN64), ',', '(', OP (RMA), '+', ')', 0 } }, |
| & ifmt_smcp, { 0x3003 } |
| }, |
| /* swcp $crn,$sdisp16($rma) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN), ',', OP (SDISP16), '(', OP (RMA), ')', 0 } }, |
| & ifmt_swcp16, { 0xf00c0000 } |
| }, |
| /* lwcp $crn,$sdisp16($rma) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN), ',', OP (SDISP16), '(', OP (RMA), ')', 0 } }, |
| & ifmt_swcp16, { 0xf00d0000 } |
| }, |
| /* smcp $crn64,$sdisp16($rma) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN64), ',', OP (SDISP16), '(', OP (RMA), ')', 0 } }, |
| & ifmt_smcp16, { 0xf00e0000 } |
| }, |
| /* lmcp $crn64,$sdisp16($rma) */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN64), ',', OP (SDISP16), '(', OP (RMA), ')', 0 } }, |
| & ifmt_smcp16, { 0xf00f0000 } |
| }, |
| /* sbcpa $crn,($rma+),$cdisp10 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN), ',', '(', OP (RMA), '+', ')', ',', OP (CDISP10), 0 } }, |
| & ifmt_lbucpa, { 0xf0050000 } |
| }, |
| /* lbcpa $crn,($rma+),$cdisp10 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN), ',', '(', OP (RMA), '+', ')', ',', OP (CDISP10), 0 } }, |
| & ifmt_lbucpa, { 0xf0054000 } |
| }, |
| /* shcpa $crn,($rma+),$cdisp10a2 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN), ',', '(', OP (RMA), '+', ')', ',', OP (CDISP10A2), 0 } }, |
| & ifmt_lhucpa, { 0xf0051000 } |
| }, |
| /* lhcpa $crn,($rma+),$cdisp10a2 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN), ',', '(', OP (RMA), '+', ')', ',', OP (CDISP10A2), 0 } }, |
| & ifmt_lhucpa, { 0xf0055000 } |
| }, |
| /* swcpa $crn,($rma+),$cdisp10a4 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN), ',', '(', OP (RMA), '+', ')', ',', OP (CDISP10A4), 0 } }, |
| & ifmt_swcpa, { 0xf0052000 } |
| }, |
| /* lwcpa $crn,($rma+),$cdisp10a4 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN), ',', '(', OP (RMA), '+', ')', ',', OP (CDISP10A4), 0 } }, |
| & ifmt_swcpa, { 0xf0056000 } |
| }, |
| /* smcpa $crn64,($rma+),$cdisp10a8 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN64), ',', '(', OP (RMA), '+', ')', ',', OP (CDISP10A8), 0 } }, |
| & ifmt_smcpa, { 0xf0053000 } |
| }, |
| /* lmcpa $crn64,($rma+),$cdisp10a8 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN64), ',', '(', OP (RMA), '+', ')', ',', OP (CDISP10A8), 0 } }, |
| & ifmt_smcpa, { 0xf0057000 } |
| }, |
| /* sbcpm0 $crn,($rma+),$cdisp10 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN), ',', '(', OP (RMA), '+', ')', ',', OP (CDISP10), 0 } }, |
| & ifmt_lbucpa, { 0xf0050800 } |
| }, |
| /* lbcpm0 $crn,($rma+),$cdisp10 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN), ',', '(', OP (RMA), '+', ')', ',', OP (CDISP10), 0 } }, |
| & ifmt_lbucpa, { 0xf0054800 } |
| }, |
| /* shcpm0 $crn,($rma+),$cdisp10a2 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN), ',', '(', OP (RMA), '+', ')', ',', OP (CDISP10A2), 0 } }, |
| & ifmt_lhucpa, { 0xf0051800 } |
| }, |
| /* lhcpm0 $crn,($rma+),$cdisp10a2 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN), ',', '(', OP (RMA), '+', ')', ',', OP (CDISP10A2), 0 } }, |
| & ifmt_lhucpa, { 0xf0055800 } |
| }, |
| /* swcpm0 $crn,($rma+),$cdisp10a4 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN), ',', '(', OP (RMA), '+', ')', ',', OP (CDISP10A4), 0 } }, |
| & ifmt_swcpa, { 0xf0052800 } |
| }, |
| /* lwcpm0 $crn,($rma+),$cdisp10a4 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN), ',', '(', OP (RMA), '+', ')', ',', OP (CDISP10A4), 0 } }, |
| & ifmt_swcpa, { 0xf0056800 } |
| }, |
| /* smcpm0 $crn64,($rma+),$cdisp10a8 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN64), ',', '(', OP (RMA), '+', ')', ',', OP (CDISP10A8), 0 } }, |
| & ifmt_smcpa, { 0xf0053800 } |
| }, |
| /* lmcpm0 $crn64,($rma+),$cdisp10a8 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN64), ',', '(', OP (RMA), '+', ')', ',', OP (CDISP10A8), 0 } }, |
| & ifmt_smcpa, { 0xf0057800 } |
| }, |
| /* sbcpm1 $crn,($rma+),$cdisp10 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN), ',', '(', OP (RMA), '+', ')', ',', OP (CDISP10), 0 } }, |
| & ifmt_lbucpa, { 0xf0050c00 } |
| }, |
| /* lbcpm1 $crn,($rma+),$cdisp10 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN), ',', '(', OP (RMA), '+', ')', ',', OP (CDISP10), 0 } }, |
| & ifmt_lbucpa, { 0xf0054c00 } |
| }, |
| /* shcpm1 $crn,($rma+),$cdisp10a2 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN), ',', '(', OP (RMA), '+', ')', ',', OP (CDISP10A2), 0 } }, |
| & ifmt_lhucpa, { 0xf0051c00 } |
| }, |
| /* lhcpm1 $crn,($rma+),$cdisp10a2 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN), ',', '(', OP (RMA), '+', ')', ',', OP (CDISP10A2), 0 } }, |
| & ifmt_lhucpa, { 0xf0055c00 } |
| }, |
| /* swcpm1 $crn,($rma+),$cdisp10a4 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN), ',', '(', OP (RMA), '+', ')', ',', OP (CDISP10A4), 0 } }, |
| & ifmt_swcpa, { 0xf0052c00 } |
| }, |
| /* lwcpm1 $crn,($rma+),$cdisp10a4 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN), ',', '(', OP (RMA), '+', ')', ',', OP (CDISP10A4), 0 } }, |
| & ifmt_swcpa, { 0xf0056c00 } |
| }, |
| /* smcpm1 $crn64,($rma+),$cdisp10a8 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN64), ',', '(', OP (RMA), '+', ')', ',', OP (CDISP10A8), 0 } }, |
| & ifmt_smcpa, { 0xf0053c00 } |
| }, |
| /* lmcpm1 $crn64,($rma+),$cdisp10a8 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRN64), ',', '(', OP (RMA), '+', ')', ',', OP (CDISP10A8), 0 } }, |
| & ifmt_smcpa, { 0xf0057c00 } |
| }, |
| /* bcpeq $cccc,$pcrel17a2 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CCCC), ',', OP (PCREL17A2), 0 } }, |
| & ifmt_bcpeq, { 0xd8040000 } |
| }, |
| /* bcpne $cccc,$pcrel17a2 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CCCC), ',', OP (PCREL17A2), 0 } }, |
| & ifmt_bcpeq, { 0xd8050000 } |
| }, |
| /* bcpat $cccc,$pcrel17a2 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CCCC), ',', OP (PCREL17A2), 0 } }, |
| & ifmt_bcpeq, { 0xd8060000 } |
| }, |
| /* bcpaf $cccc,$pcrel17a2 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CCCC), ',', OP (PCREL17A2), 0 } }, |
| & ifmt_bcpeq, { 0xd8070000 } |
| }, |
| /* synccp */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, 0 } }, |
| & ifmt_ret, { 0x7021 } |
| }, |
| /* jsrv $rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RM), 0 } }, |
| & ifmt_jmp, { 0x180f } |
| }, |
| /* bsrv $pcrel24a2 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (PCREL24A2), 0 } }, |
| & ifmt_bsr24, { 0xd80b0000 } |
| }, |
| /* --syscall-- */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, 0 } }, |
| & ifmt_sim_syscall, { 0x7800 } |
| }, |
| /* --reserved-- */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, 0 } }, |
| & ifmt_mov, { 0x6 } |
| }, |
| /* --reserved-- */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, 0 } }, |
| & ifmt_mov, { 0x100a } |
| }, |
| /* --reserved-- */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, 0 } }, |
| & ifmt_mov, { 0x100b } |
| }, |
| /* --reserved-- */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, 0 } }, |
| & ifmt_mov, { 0x2005 } |
| }, |
| /* --reserved-- */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, 0 } }, |
| & ifmt_mov, { 0x2008 } |
| }, |
| /* --reserved-- */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, 0 } }, |
| & ifmt_mov, { 0x2009 } |
| }, |
| /* --reserved-- */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, 0 } }, |
| & ifmt_mov, { 0x200a } |
| }, |
| /* --reserved-- */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, 0 } }, |
| & ifmt_mov, { 0x200b } |
| }, |
| /* --reserved-- */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, 0 } }, |
| & ifmt_mov, { 0x3004 } |
| }, |
| /* --reserved-- */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, 0 } }, |
| & ifmt_mov, { 0x3005 } |
| }, |
| /* --reserved-- */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, 0 } }, |
| & ifmt_mov, { 0x3006 } |
| }, |
| /* --reserved-- */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, 0 } }, |
| & ifmt_mov, { 0x3007 } |
| }, |
| /* --reserved-- */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, 0 } }, |
| & ifmt_mov, { 0x300c } |
| }, |
| /* --reserved-- */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, 0 } }, |
| & ifmt_mov, { 0x300d } |
| }, |
| /* --reserved-- */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, 0 } }, |
| & ifmt_mov, { 0x300e } |
| }, |
| /* --reserved-- */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, 0 } }, |
| & ifmt_mov, { 0x300f } |
| }, |
| /* --reserved-- */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, 0 } }, |
| & ifmt_mov, { 0x7007 } |
| }, |
| /* --reserved-- */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, 0 } }, |
| & ifmt_mov, { 0x700e } |
| }, |
| /* --reserved-- */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, 0 } }, |
| & ifmt_mov, { 0x700f } |
| }, |
| /* --reserved-- */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, 0 } }, |
| & ifmt_mov, { 0xc007 } |
| }, |
| /* --reserved-- */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, 0 } }, |
| & ifmt_mov, { 0xe00d } |
| }, |
| /* --reserved-- */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, 0 } }, |
| & ifmt_mov, { 0xf008 } |
| }, |
| /* cmov $crnx64,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRNX64), ',', OP (RM), 0 } }, |
| & ifmt_cmov_crn_rm, { 0xf007f000 } |
| }, |
| /* cmov $rm,$crnx64 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RM), ',', OP (CRNX64), 0 } }, |
| & ifmt_cmov_crn_rm, { 0xf007f001 } |
| }, |
| /* cmovc $ivc2c3ccrn,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (IVC2C3CCRN), ',', OP (RM), 0 } }, |
| & ifmt_cmovc_ccrn_rm, { 0xf007f002 } |
| }, |
| /* cmovc $rm,$ivc2c3ccrn */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RM), ',', OP (IVC2C3CCRN), 0 } }, |
| & ifmt_cmovc_ccrn_rm, { 0xf007f003 } |
| }, |
| /* cmovh $crnx64,$rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CRNX64), ',', OP (RM), 0 } }, |
| & ifmt_cmov_crn_rm, { 0xf007f100 } |
| }, |
| /* cmovh $rm,$crnx64 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (RM), ',', OP (CRNX64), 0 } }, |
| & ifmt_cmov_crn_rm, { 0xf007f101 } |
| }, |
| /* cmov $ivc2crn,$ivc2rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (IVC2CRN), ',', OP (IVC2RM), 0 } }, |
| & ifmt_cmov_crn_rm_p0, { 0xf00000 } |
| }, |
| /* cmov $ivc2rm,$ivc2crn */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (IVC2RM), ',', OP (IVC2CRN), 0 } }, |
| & ifmt_cmov_crn_rm_p0, { 0xf00100 } |
| }, |
| /* cmovc $ivc2ccrn,$ivc2rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (IVC2CCRN), ',', OP (IVC2RM), 0 } }, |
| & ifmt_cmovc_ccrn_rm_p0, { 0xf00200 } |
| }, |
| /* cmovc $ivc2rm,$ivc2ccrn */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (IVC2RM), ',', OP (IVC2CCRN), 0 } }, |
| & ifmt_cmovc_ccrn_rm_p0, { 0xf00300 } |
| }, |
| /* cmovh $ivc2crn,$ivc2rm */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (IVC2CRN), ',', OP (IVC2RM), 0 } }, |
| & ifmt_cmov_crn_rm_p0, { 0xf10000 } |
| }, |
| /* cmovh $ivc2rm,$ivc2crn */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (IVC2RM), ',', OP (IVC2CRN), 0 } }, |
| & ifmt_cmov_crn_rm_p0, { 0xf10100 } |
| }, |
| /* cpadd3.b $croc,$crqc,$crpc */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CROC), ',', OP (CRQC), ',', OP (CRPC), 0 } }, |
| & ifmt_cpadd3_b_C3, { 0xf0070000 } |
| }, |
| /* cpadd3.h $croc,$crqc,$crpc */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CROC), ',', OP (CRQC), ',', OP (CRPC), 0 } }, |
| & ifmt_cpadd3_b_C3, { 0xf2070000 } |
| }, |
| /* cpadd3.w $croc,$crqc,$crpc */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CROC), ',', OP (CRQC), ',', OP (CRPC), 0 } }, |
| & ifmt_cpadd3_b_C3, { 0xf4070000 } |
| }, |
| /* cdadd3 $croc,$crqc,$crpc */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CROC), ',', OP (CRQC), ',', OP (CRPC), 0 } }, |
| & ifmt_cpadd3_b_C3, { 0xf6070000 } |
| }, |
| /* cpsub3.b $croc,$crqc,$crpc */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CROC), ',', OP (CRQC), ',', OP (CRPC), 0 } }, |
| & ifmt_cpadd3_b_C3, { 0xf8070000 } |
| }, |
| /* cpsub3.h $croc,$crqc,$crpc */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CROC), ',', OP (CRQC), ',', OP (CRPC), 0 } }, |
| & ifmt_cpadd3_b_C3, { 0xfa070000 } |
| }, |
| /* cpsub3.w $croc,$crqc,$crpc */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CROC), ',', OP (CRQC), ',', OP (CRPC), 0 } }, |
| & ifmt_cpadd3_b_C3, { 0xfc070000 } |
| }, |
| /* cdsub3 $croc,$crqc,$crpc */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CROC), ',', OP (CRQC), ',', OP (CRPC), 0 } }, |
| & ifmt_cpadd3_b_C3, { 0xfe070000 } |
| }, |
| /* cpand3 $croc,$crqc,$crpc */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CROC), ',', OP (CRQC), ',', OP (CRPC), 0 } }, |
| & ifmt_cpadd3_b_C3, { 0xf0070800 } |
| }, |
| /* cpor3 $croc,$crqc,$crpc */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CROC), ',', OP (CRQC), ',', OP (CRPC), 0 } }, |
| & ifmt_cpadd3_b_C3, { 0xf2070800 } |
| }, |
| /* cpnor3 $croc,$crqc,$crpc */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CROC), ',', OP (CRQC), ',', OP (CRPC), 0 } }, |
| & ifmt_cpadd3_b_C3, { 0xf4070800 } |
| }, |
| /* cpxor3 $croc,$crqc,$crpc */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CROC), ',', OP (CRQC), ',', OP (CRPC), 0 } }, |
| & ifmt_cpadd3_b_C3, { 0xf6070800 } |
| }, |
| /* cpsel $croc,$crqc,$crpc */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CROC), ',', OP (CRQC), ',', OP (CRPC), 0 } }, |
| & ifmt_cpadd3_b_C3, { 0xf8070800 } |
| }, |
| /* cpfsftbi $croc,$crqc,$crpc,$imm3p4 */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CROC), ',', OP (CRQC), ',', OP (CRPC), ',', OP (IMM3P4), 0 } }, |
| & ifmt_cpfsftbi_C3, { 0xf007e800 } |
| }, |
| /* cpfsftbs0 $croc,$crqc,$crpc */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CROC), ',', OP (CRQC), ',', OP (CRPC), 0 } }, |
| & ifmt_cpadd3_b_C3, { 0xfc070800 } |
| }, |
| /* cpfsftbs1 $croc,$crqc,$crpc */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CROC), ',', OP (CRQC), ',', OP (CRPC), 0 } }, |
| & ifmt_cpadd3_b_C3, { 0xfe070800 } |
| }, |
| /* cpunpacku.b $croc,$crqc,$crpc */ |
| { |
| { 0, 0, 0, 0 }, |
| { { MNEM, ' ', OP (CROC), ',', OP (CRQC), ',', OP (CRPC), 0 } }, |
| & ifmt_cpadd3_b_C3, { 0xf0071000 } |
| }, |
| /* cpunpacku.h $croc,$crqc,$crpc */ |
| { |
| { 0, 0, 0 |