| /* Xtensa configuration-specific ISA information. | |
| Copyright 2003 Free Software Foundation, Inc. | |
| This file is part of BFD, the Binary File Descriptor library. | |
| This program is free software; you can redistribute it and/or modify | |
| it under the terms of the GNU General Public License as published by | |
| the Free Software Foundation; either version 2 of the License, or | |
| (at your option) any later version. | |
| This program is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| GNU General Public License for more details. | |
| You should have received a copy of the GNU General Public License | |
| along with this program; if not, write to the Free Software | |
| Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ | |
| #include <xtensa-isa.h> | |
| #include "xtensa-isa-internal.h" | |
| #include "ansidecl.h" | |
| #define BPW 32 | |
| #define WINDEX(_n) ((_n) / BPW) | |
| #define BINDEX(_n) ((_n) %% BPW) | |
| static uint32 tie_do_reloc_l (uint32, uint32) ATTRIBUTE_UNUSED; | |
| static uint32 tie_undo_reloc_l (uint32, uint32) ATTRIBUTE_UNUSED; | |
| static uint32 | |
| tie_do_reloc_l (uint32 addr, uint32 pc) | |
| { | |
| return (addr - pc); | |
| } | |
| static uint32 | |
| tie_undo_reloc_l (uint32 offset, uint32 pc) | |
| { | |
| return (pc + offset); | |
| } | |
| xtensa_opcode_internal** get_opcodes (void); | |
| int get_num_opcodes (void); | |
| int decode_insn (const xtensa_insnbuf); | |
| int interface_version (void); | |
| uint32 get_bbi_field (const xtensa_insnbuf); | |
| void set_bbi_field (xtensa_insnbuf, uint32); | |
| uint32 get_bbi4_field (const xtensa_insnbuf); | |
| void set_bbi4_field (xtensa_insnbuf, uint32); | |
| uint32 get_i_field (const xtensa_insnbuf); | |
| void set_i_field (xtensa_insnbuf, uint32); | |
| uint32 get_imm12_field (const xtensa_insnbuf); | |
| void set_imm12_field (xtensa_insnbuf, uint32); | |
| uint32 get_imm12b_field (const xtensa_insnbuf); | |
| void set_imm12b_field (xtensa_insnbuf, uint32); | |
| uint32 get_imm16_field (const xtensa_insnbuf); | |
| void set_imm16_field (xtensa_insnbuf, uint32); | |
| uint32 get_imm4_field (const xtensa_insnbuf); | |
| void set_imm4_field (xtensa_insnbuf, uint32); | |
| uint32 get_imm6_field (const xtensa_insnbuf); | |
| void set_imm6_field (xtensa_insnbuf, uint32); | |
| uint32 get_imm6hi_field (const xtensa_insnbuf); | |
| void set_imm6hi_field (xtensa_insnbuf, uint32); | |
| uint32 get_imm6lo_field (const xtensa_insnbuf); | |
| void set_imm6lo_field (xtensa_insnbuf, uint32); | |
| uint32 get_imm7_field (const xtensa_insnbuf); | |
| void set_imm7_field (xtensa_insnbuf, uint32); | |
| uint32 get_imm7hi_field (const xtensa_insnbuf); | |
| void set_imm7hi_field (xtensa_insnbuf, uint32); | |
| uint32 get_imm7lo_field (const xtensa_insnbuf); | |
| void set_imm7lo_field (xtensa_insnbuf, uint32); | |
| uint32 get_imm8_field (const xtensa_insnbuf); | |
| void set_imm8_field (xtensa_insnbuf, uint32); | |
| uint32 get_m_field (const xtensa_insnbuf); | |
| void set_m_field (xtensa_insnbuf, uint32); | |
| uint32 get_mn_field (const xtensa_insnbuf); | |
| void set_mn_field (xtensa_insnbuf, uint32); | |
| uint32 get_n_field (const xtensa_insnbuf); | |
| void set_n_field (xtensa_insnbuf, uint32); | |
| uint32 get_none_field (const xtensa_insnbuf); | |
| void set_none_field (xtensa_insnbuf, uint32); | |
| uint32 get_offset_field (const xtensa_insnbuf); | |
| void set_offset_field (xtensa_insnbuf, uint32); | |
| uint32 get_op0_field (const xtensa_insnbuf); | |
| void set_op0_field (xtensa_insnbuf, uint32); | |
| uint32 get_op1_field (const xtensa_insnbuf); | |
| void set_op1_field (xtensa_insnbuf, uint32); | |
| uint32 get_op2_field (const xtensa_insnbuf); | |
| void set_op2_field (xtensa_insnbuf, uint32); | |
| uint32 get_r_field (const xtensa_insnbuf); | |
| void set_r_field (xtensa_insnbuf, uint32); | |
| uint32 get_s_field (const xtensa_insnbuf); | |
| void set_s_field (xtensa_insnbuf, uint32); | |
| uint32 get_sa4_field (const xtensa_insnbuf); | |
| void set_sa4_field (xtensa_insnbuf, uint32); | |
| uint32 get_sae_field (const xtensa_insnbuf); | |
| void set_sae_field (xtensa_insnbuf, uint32); | |
| uint32 get_sae4_field (const xtensa_insnbuf); | |
| void set_sae4_field (xtensa_insnbuf, uint32); | |
| uint32 get_sal_field (const xtensa_insnbuf); | |
| void set_sal_field (xtensa_insnbuf, uint32); | |
| uint32 get_sar_field (const xtensa_insnbuf); | |
| void set_sar_field (xtensa_insnbuf, uint32); | |
| uint32 get_sas_field (const xtensa_insnbuf); | |
| void set_sas_field (xtensa_insnbuf, uint32); | |
| uint32 get_sas4_field (const xtensa_insnbuf); | |
| void set_sas4_field (xtensa_insnbuf, uint32); | |
| uint32 get_sr_field (const xtensa_insnbuf); | |
| void set_sr_field (xtensa_insnbuf, uint32); | |
| uint32 get_t_field (const xtensa_insnbuf); | |
| void set_t_field (xtensa_insnbuf, uint32); | |
| uint32 get_thi3_field (const xtensa_insnbuf); | |
| void set_thi3_field (xtensa_insnbuf, uint32); | |
| uint32 get_z_field (const xtensa_insnbuf); | |
| void set_z_field (xtensa_insnbuf, uint32); | |
| uint32 | |
| get_bbi_field (const xtensa_insnbuf insn) | |
| { | |
| return ((insn[0] & 0xf0000) >> 16) | | |
| ((insn[0] & 0x100) >> 4); | |
| } | |
| void | |
| set_bbi_field (xtensa_insnbuf insn, uint32 val) | |
| { | |
| insn[0] = (insn[0] & 0xfff0ffff) | ((val << 16) & 0xf0000); | |
| insn[0] = (insn[0] & 0xfffffeff) | ((val << 4) & 0x100); | |
| } | |
| uint32 | |
| get_bbi4_field (const xtensa_insnbuf insn) | |
| { | |
| return ((insn[0] & 0x100) >> 8); | |
| } | |
| void | |
| set_bbi4_field (xtensa_insnbuf insn, uint32 val) | |
| { | |
| insn[0] = (insn[0] & 0xfffffeff) | ((val << 8) & 0x100); | |
| } | |
| uint32 | |
| get_i_field (const xtensa_insnbuf insn) | |
| { | |
| return ((insn[0] & 0x80000) >> 19); | |
| } | |
| void | |
| set_i_field (xtensa_insnbuf insn, uint32 val) | |
| { | |
| insn[0] = (insn[0] & 0xfff7ffff) | ((val << 19) & 0x80000); | |
| } | |
| uint32 | |
| get_imm12_field (const xtensa_insnbuf insn) | |
| { | |
| return ((insn[0] & 0xfff)); | |
| } | |
| void | |
| set_imm12_field (xtensa_insnbuf insn, uint32 val) | |
| { | |
| insn[0] = (insn[0] & 0xfffff000) | (val & 0xfff); | |
| } | |
| uint32 | |
| get_imm12b_field (const xtensa_insnbuf insn) | |
| { | |
| return ((insn[0] & 0xff)) | | |
| ((insn[0] & 0xf000) >> 4); | |
| } | |
| void | |
| set_imm12b_field (xtensa_insnbuf insn, uint32 val) | |
| { | |
| insn[0] = (insn[0] & 0xffffff00) | (val & 0xff); | |
| insn[0] = (insn[0] & 0xffff0fff) | ((val << 4) & 0xf000); | |
| } | |
| uint32 | |
| get_imm16_field (const xtensa_insnbuf insn) | |
| { | |
| return ((insn[0] & 0xffff)); | |
| } | |
| void | |
| set_imm16_field (xtensa_insnbuf insn, uint32 val) | |
| { | |
| insn[0] = (insn[0] & 0xffff0000) | (val & 0xffff); | |
| } | |
| uint32 | |
| get_imm4_field (const xtensa_insnbuf insn) | |
| { | |
| return ((insn[0] & 0xf00) >> 8); | |
| } | |
| void | |
| set_imm4_field (xtensa_insnbuf insn, uint32 val) | |
| { | |
| insn[0] = (insn[0] & 0xfffff0ff) | ((val << 8) & 0xf00); | |
| } | |
| uint32 | |
| get_imm6_field (const xtensa_insnbuf insn) | |
| { | |
| return ((insn[0] & 0xf00) >> 8) | | |
| ((insn[0] & 0x30000) >> 12); | |
| } | |
| void | |
| set_imm6_field (xtensa_insnbuf insn, uint32 val) | |
| { | |
| insn[0] = (insn[0] & 0xfffff0ff) | ((val << 8) & 0xf00); | |
| insn[0] = (insn[0] & 0xfffcffff) | ((val << 12) & 0x30000); | |
| } | |
| uint32 | |
| get_imm6hi_field (const xtensa_insnbuf insn) | |
| { | |
| return ((insn[0] & 0x30000) >> 16); | |
| } | |
| void | |
| set_imm6hi_field (xtensa_insnbuf insn, uint32 val) | |
| { | |
| insn[0] = (insn[0] & 0xfffcffff) | ((val << 16) & 0x30000); | |
| } | |
| uint32 | |
| get_imm6lo_field (const xtensa_insnbuf insn) | |
| { | |
| return ((insn[0] & 0xf00) >> 8); | |
| } | |
| void | |
| set_imm6lo_field (xtensa_insnbuf insn, uint32 val) | |
| { | |
| insn[0] = (insn[0] & 0xfffff0ff) | ((val << 8) & 0xf00); | |
| } | |
| uint32 | |
| get_imm7_field (const xtensa_insnbuf insn) | |
| { | |
| return ((insn[0] & 0xf00) >> 8) | | |
| ((insn[0] & 0x70000) >> 12); | |
| } | |
| void | |
| set_imm7_field (xtensa_insnbuf insn, uint32 val) | |
| { | |
| insn[0] = (insn[0] & 0xfffff0ff) | ((val << 8) & 0xf00); | |
| insn[0] = (insn[0] & 0xfff8ffff) | ((val << 12) & 0x70000); | |
| } | |
| uint32 | |
| get_imm7hi_field (const xtensa_insnbuf insn) | |
| { | |
| return ((insn[0] & 0x70000) >> 16); | |
| } | |
| void | |
| set_imm7hi_field (xtensa_insnbuf insn, uint32 val) | |
| { | |
| insn[0] = (insn[0] & 0xfff8ffff) | ((val << 16) & 0x70000); | |
| } | |
| uint32 | |
| get_imm7lo_field (const xtensa_insnbuf insn) | |
| { | |
| return ((insn[0] & 0xf00) >> 8); | |
| } | |
| void | |
| set_imm7lo_field (xtensa_insnbuf insn, uint32 val) | |
| { | |
| insn[0] = (insn[0] & 0xfffff0ff) | ((val << 8) & 0xf00); | |
| } | |
| uint32 | |
| get_imm8_field (const xtensa_insnbuf insn) | |
| { | |
| return ((insn[0] & 0xff)); | |
| } | |
| void | |
| set_imm8_field (xtensa_insnbuf insn, uint32 val) | |
| { | |
| insn[0] = (insn[0] & 0xffffff00) | (val & 0xff); | |
| } | |
| uint32 | |
| get_m_field (const xtensa_insnbuf insn) | |
| { | |
| return ((insn[0] & 0x30000) >> 16); | |
| } | |
| void | |
| set_m_field (xtensa_insnbuf insn, uint32 val) | |
| { | |
| insn[0] = (insn[0] & 0xfffcffff) | ((val << 16) & 0x30000); | |
| } | |
| uint32 | |
| get_mn_field (const xtensa_insnbuf insn) | |
| { | |
| return ((insn[0] & 0x30000) >> 16) | | |
| ((insn[0] & 0xc0000) >> 16); | |
| } | |
| void | |
| set_mn_field (xtensa_insnbuf insn, uint32 val) | |
| { | |
| insn[0] = (insn[0] & 0xfffcffff) | ((val << 16) & 0x30000); | |
| insn[0] = (insn[0] & 0xfff3ffff) | ((val << 16) & 0xc0000); | |
| } | |
| uint32 | |
| get_n_field (const xtensa_insnbuf insn) | |
| { | |
| return ((insn[0] & 0xc0000) >> 18); | |
| } | |
| void | |
| set_n_field (xtensa_insnbuf insn, uint32 val) | |
| { | |
| insn[0] = (insn[0] & 0xfff3ffff) | ((val << 18) & 0xc0000); | |
| } | |
| uint32 | |
| get_none_field (const xtensa_insnbuf insn) | |
| { | |
| return ((insn[0] & 0x0)); | |
| } | |
| void | |
| set_none_field (xtensa_insnbuf insn, uint32 val) | |
| { | |
| insn[0] = (insn[0] & 0xffffffff) | (val & 0x0); | |
| } | |
| uint32 | |
| get_offset_field (const xtensa_insnbuf insn) | |
| { | |
| return ((insn[0] & 0x3ffff)); | |
| } | |
| void | |
| set_offset_field (xtensa_insnbuf insn, uint32 val) | |
| { | |
| insn[0] = (insn[0] & 0xfffc0000) | (val & 0x3ffff); | |
| } | |
| uint32 | |
| get_op0_field (const xtensa_insnbuf insn) | |
| { | |
| return ((insn[0] & 0xf00000) >> 20); | |
| } | |
| void | |
| set_op0_field (xtensa_insnbuf insn, uint32 val) | |
| { | |
| insn[0] = (insn[0] & 0xff0fffff) | ((val << 20) & 0xf00000); | |
| } | |
| uint32 | |
| get_op1_field (const xtensa_insnbuf insn) | |
| { | |
| return ((insn[0] & 0xf0) >> 4); | |
| } | |
| void | |
| set_op1_field (xtensa_insnbuf insn, uint32 val) | |
| { | |
| insn[0] = (insn[0] & 0xffffff0f) | ((val << 4) & 0xf0); | |
| } | |
| uint32 | |
| get_op2_field (const xtensa_insnbuf insn) | |
| { | |
| return ((insn[0] & 0xf)); | |
| } | |
| void | |
| set_op2_field (xtensa_insnbuf insn, uint32 val) | |
| { | |
| insn[0] = (insn[0] & 0xfffffff0) | (val & 0xf); | |
| } | |
| uint32 | |
| get_r_field (const xtensa_insnbuf insn) | |
| { | |
| return ((insn[0] & 0xf00) >> 8); | |
| } | |
| void | |
| set_r_field (xtensa_insnbuf insn, uint32 val) | |
| { | |
| insn[0] = (insn[0] & 0xfffff0ff) | ((val << 8) & 0xf00); | |
| } | |
| uint32 | |
| get_s_field (const xtensa_insnbuf insn) | |
| { | |
| return ((insn[0] & 0xf000) >> 12); | |
| } | |
| void | |
| set_s_field (xtensa_insnbuf insn, uint32 val) | |
| { | |
| insn[0] = (insn[0] & 0xffff0fff) | ((val << 12) & 0xf000); | |
| } | |
| uint32 | |
| get_sa4_field (const xtensa_insnbuf insn) | |
| { | |
| return ((insn[0] & 0x1)); | |
| } | |
| void | |
| set_sa4_field (xtensa_insnbuf insn, uint32 val) | |
| { | |
| insn[0] = (insn[0] & 0xfffffffe) | (val & 0x1); | |
| } | |
| uint32 | |
| get_sae_field (const xtensa_insnbuf insn) | |
| { | |
| return ((insn[0] & 0xf000) >> 12) | | |
| ((insn[0] & 0x10)); | |
| } | |
| void | |
| set_sae_field (xtensa_insnbuf insn, uint32 val) | |
| { | |
| insn[0] = (insn[0] & 0xffff0fff) | ((val << 12) & 0xf000); | |
| insn[0] = (insn[0] & 0xffffffef) | (val & 0x10); | |
| } | |
| uint32 | |
| get_sae4_field (const xtensa_insnbuf insn) | |
| { | |
| return ((insn[0] & 0x10) >> 4); | |
| } | |
| void | |
| set_sae4_field (xtensa_insnbuf insn, uint32 val) | |
| { | |
| insn[0] = (insn[0] & 0xffffffef) | ((val << 4) & 0x10); | |
| } | |
| uint32 | |
| get_sal_field (const xtensa_insnbuf insn) | |
| { | |
| return ((insn[0] & 0xf0000) >> 16) | | |
| ((insn[0] & 0x1) << 4); | |
| } | |
| void | |
| set_sal_field (xtensa_insnbuf insn, uint32 val) | |
| { | |
| insn[0] = (insn[0] & 0xfff0ffff) | ((val << 16) & 0xf0000); | |
| insn[0] = (insn[0] & 0xfffffffe) | ((val >> 4) & 0x1); | |
| } | |
| uint32 | |
| get_sar_field (const xtensa_insnbuf insn) | |
| { | |
| return ((insn[0] & 0xf000) >> 12) | | |
| ((insn[0] & 0x1) << 4); | |
| } | |
| void | |
| set_sar_field (xtensa_insnbuf insn, uint32 val) | |
| { | |
| insn[0] = (insn[0] & 0xffff0fff) | ((val << 12) & 0xf000); | |
| insn[0] = (insn[0] & 0xfffffffe) | ((val >> 4) & 0x1); | |
| } | |
| uint32 | |
| get_sas_field (const xtensa_insnbuf insn) | |
| { | |
| return ((insn[0] & 0xf000) >> 12) | | |
| ((insn[0] & 0x10000) >> 12); | |
| } | |
| void | |
| set_sas_field (xtensa_insnbuf insn, uint32 val) | |
| { | |
| insn[0] = (insn[0] & 0xffff0fff) | ((val << 12) & 0xf000); | |
| insn[0] = (insn[0] & 0xfffeffff) | ((val << 12) & 0x10000); | |
| } | |
| uint32 | |
| get_sas4_field (const xtensa_insnbuf insn) | |
| { | |
| return ((insn[0] & 0x10000) >> 16); | |
| } | |
| void | |
| set_sas4_field (xtensa_insnbuf insn, uint32 val) | |
| { | |
| insn[0] = (insn[0] & 0xfffeffff) | ((val << 16) & 0x10000); | |
| } | |
| uint32 | |
| get_sr_field (const xtensa_insnbuf insn) | |
| { | |
| return ((insn[0] & 0xf00) >> 8) | | |
| ((insn[0] & 0xf000) >> 8); | |
| } | |
| void | |
| set_sr_field (xtensa_insnbuf insn, uint32 val) | |
| { | |
| insn[0] = (insn[0] & 0xfffff0ff) | ((val << 8) & 0xf00); | |
| insn[0] = (insn[0] & 0xffff0fff) | ((val << 8) & 0xf000); | |
| } | |
| uint32 | |
| get_t_field (const xtensa_insnbuf insn) | |
| { | |
| return ((insn[0] & 0xf0000) >> 16); | |
| } | |
| void | |
| set_t_field (xtensa_insnbuf insn, uint32 val) | |
| { | |
| insn[0] = (insn[0] & 0xfff0ffff) | ((val << 16) & 0xf0000); | |
| } | |
| uint32 | |
| get_thi3_field (const xtensa_insnbuf insn) | |
| { | |
| return ((insn[0] & 0xe0000) >> 17); | |
| } | |
| void | |
| set_thi3_field (xtensa_insnbuf insn, uint32 val) | |
| { | |
| insn[0] = (insn[0] & 0xfff1ffff) | ((val << 17) & 0xe0000); | |
| } | |
| uint32 | |
| get_z_field (const xtensa_insnbuf insn) | |
| { | |
| return ((insn[0] & 0x40000) >> 18); | |
| } | |
| void | |
| set_z_field (xtensa_insnbuf insn, uint32 val) | |
| { | |
| insn[0] = (insn[0] & 0xfffbffff) | ((val << 18) & 0x40000); | |
| } | |
| uint32 decode_b4constu (uint32); | |
| xtensa_encode_result encode_b4constu (uint32 *); | |
| uint32 decode_simm8x256 (uint32); | |
| xtensa_encode_result encode_simm8x256 (uint32 *); | |
| uint32 decode_soffset (uint32); | |
| xtensa_encode_result encode_soffset (uint32 *); | |
| uint32 decode_imm4 (uint32); | |
| xtensa_encode_result encode_imm4 (uint32 *); | |
| uint32 decode_op0 (uint32); | |
| xtensa_encode_result encode_op0 (uint32 *); | |
| uint32 decode_op1 (uint32); | |
| xtensa_encode_result encode_op1 (uint32 *); | |
| uint32 decode_imm6 (uint32); | |
| xtensa_encode_result encode_imm6 (uint32 *); | |
| uint32 decode_op2 (uint32); | |
| xtensa_encode_result encode_op2 (uint32 *); | |
| uint32 decode_imm7 (uint32); | |
| xtensa_encode_result encode_imm7 (uint32 *); | |
| uint32 decode_simm4 (uint32); | |
| xtensa_encode_result encode_simm4 (uint32 *); | |
| uint32 decode_ai4const (uint32); | |
| xtensa_encode_result encode_ai4const (uint32 *); | |
| uint32 decode_imm8 (uint32); | |
| xtensa_encode_result encode_imm8 (uint32 *); | |
| uint32 decode_sae (uint32); | |
| xtensa_encode_result encode_sae (uint32 *); | |
| uint32 decode_imm7lo (uint32); | |
| xtensa_encode_result encode_imm7lo (uint32 *); | |
| uint32 decode_simm7 (uint32); | |
| xtensa_encode_result encode_simm7 (uint32 *); | |
| uint32 decode_simm8 (uint32); | |
| xtensa_encode_result encode_simm8 (uint32 *); | |
| uint32 decode_uimm12x8 (uint32); | |
| xtensa_encode_result encode_uimm12x8 (uint32 *); | |
| uint32 decode_sal (uint32); | |
| xtensa_encode_result encode_sal (uint32 *); | |
| uint32 decode_uimm6 (uint32); | |
| xtensa_encode_result encode_uimm6 (uint32 *); | |
| uint32 decode_sas4 (uint32); | |
| xtensa_encode_result encode_sas4 (uint32 *); | |
| uint32 decode_uimm8 (uint32); | |
| xtensa_encode_result encode_uimm8 (uint32 *); | |
| uint32 decode_uimm16x4 (uint32); | |
| xtensa_encode_result encode_uimm16x4 (uint32 *); | |
| uint32 decode_sar (uint32); | |
| xtensa_encode_result encode_sar (uint32 *); | |
| uint32 decode_sa4 (uint32); | |
| xtensa_encode_result encode_sa4 (uint32 *); | |
| uint32 decode_sas (uint32); | |
| xtensa_encode_result encode_sas (uint32 *); | |
| uint32 decode_imm6hi (uint32); | |
| xtensa_encode_result encode_imm6hi (uint32 *); | |
| uint32 decode_bbi (uint32); | |
| xtensa_encode_result encode_bbi (uint32 *); | |
| uint32 decode_uimm8x2 (uint32); | |
| xtensa_encode_result encode_uimm8x2 (uint32 *); | |
| uint32 decode_uimm8x4 (uint32); | |
| xtensa_encode_result encode_uimm8x4 (uint32 *); | |
| uint32 decode_msalp32 (uint32); | |
| xtensa_encode_result encode_msalp32 (uint32 *); | |
| uint32 decode_bbi4 (uint32); | |
| xtensa_encode_result encode_bbi4 (uint32 *); | |
| uint32 decode_op2p1 (uint32); | |
| xtensa_encode_result encode_op2p1 (uint32 *); | |
| uint32 decode_soffsetx4 (uint32); | |
| xtensa_encode_result encode_soffsetx4 (uint32 *); | |
| uint32 decode_imm6lo (uint32); | |
| xtensa_encode_result encode_imm6lo (uint32 *); | |
| uint32 decode_imm12 (uint32); | |
| xtensa_encode_result encode_imm12 (uint32 *); | |
| uint32 decode_b4const (uint32); | |
| xtensa_encode_result encode_b4const (uint32 *); | |
| uint32 decode_i (uint32); | |
| xtensa_encode_result encode_i (uint32 *); | |
| uint32 decode_imm16 (uint32); | |
| xtensa_encode_result encode_imm16 (uint32 *); | |
| uint32 decode_mn (uint32); | |
| xtensa_encode_result encode_mn (uint32 *); | |
| uint32 decode_m (uint32); | |
| xtensa_encode_result encode_m (uint32 *); | |
| uint32 decode_n (uint32); | |
| xtensa_encode_result encode_n (uint32 *); | |
| uint32 decode_none (uint32); | |
| xtensa_encode_result encode_none (uint32 *); | |
| uint32 decode_imm12b (uint32); | |
| xtensa_encode_result encode_imm12b (uint32 *); | |
| uint32 decode_r (uint32); | |
| xtensa_encode_result encode_r (uint32 *); | |
| uint32 decode_s (uint32); | |
| xtensa_encode_result encode_s (uint32 *); | |
| uint32 decode_t (uint32); | |
| xtensa_encode_result encode_t (uint32 *); | |
| uint32 decode_thi3 (uint32); | |
| xtensa_encode_result encode_thi3 (uint32 *); | |
| uint32 decode_sae4 (uint32); | |
| xtensa_encode_result encode_sae4 (uint32 *); | |
| uint32 decode_offset (uint32); | |
| xtensa_encode_result encode_offset (uint32 *); | |
| uint32 decode_imm7hi (uint32); | |
| xtensa_encode_result encode_imm7hi (uint32 *); | |
| uint32 decode_uimm4x16 (uint32); | |
| xtensa_encode_result encode_uimm4x16 (uint32 *); | |
| uint32 decode_simm12b (uint32); | |
| xtensa_encode_result encode_simm12b (uint32 *); | |
| uint32 decode_lsi4x4 (uint32); | |
| xtensa_encode_result encode_lsi4x4 (uint32 *); | |
| uint32 decode_z (uint32); | |
| xtensa_encode_result encode_z (uint32 *); | |
| uint32 decode_simm12 (uint32); | |
| xtensa_encode_result encode_simm12 (uint32 *); | |
| uint32 decode_sr (uint32); | |
| xtensa_encode_result encode_sr (uint32 *); | |
| uint32 decode_nimm4x2 (uint32); | |
| xtensa_encode_result encode_nimm4x2 (uint32 *); | |
| static const uint32 b4constu_table[] = { | |
| 32768, | |
| 65536, | |
| 2, | |
| 3, | |
| 4, | |
| 5, | |
| 6, | |
| 7, | |
| 8, | |
| 10, | |
| 12, | |
| 16, | |
| 32, | |
| 64, | |
| 128, | |
| 256 | |
| }; | |
| uint32 | |
| decode_b4constu (uint32 val) | |
| { | |
| val = b4constu_table[val]; | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_b4constu (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| unsigned i; | |
| for (i = 0; i < (1 << 4); i += 1) | |
| if (b4constu_table[i] == val) goto found; | |
| return xtensa_encode_result_not_in_table; | |
| found: | |
| val = i; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_simm8x256 (uint32 val) | |
| { | |
| val = (val ^ 0x80) - 0x80; | |
| val <<= 8; | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_simm8x256 (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val & ((1 << 8) - 1)) != 0) | |
| return xtensa_encode_result_align; | |
| val = (signed int) val >> 8; | |
| if (((val + (1 << 7)) >> 8) != 0) | |
| { | |
| if ((signed int) val > 0) | |
| return xtensa_encode_result_too_high; | |
| else | |
| return xtensa_encode_result_too_low; | |
| } | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_soffset (uint32 val) | |
| { | |
| val = (val ^ 0x20000) - 0x20000; | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_soffset (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if (((val + (1 << 17)) >> 18) != 0) | |
| { | |
| if ((signed int) val > 0) | |
| return xtensa_encode_result_too_high; | |
| else | |
| return xtensa_encode_result_too_low; | |
| } | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_imm4 (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_imm4 (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 4) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_op0 (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_op0 (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 4) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_op1 (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_op1 (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 4) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_imm6 (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_imm6 (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 6) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_op2 (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_op2 (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 4) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_imm7 (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_imm7 (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 7) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_simm4 (uint32 val) | |
| { | |
| val = (val ^ 0x8) - 0x8; | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_simm4 (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if (((val + (1 << 3)) >> 4) != 0) | |
| { | |
| if ((signed int) val > 0) | |
| return xtensa_encode_result_too_high; | |
| else | |
| return xtensa_encode_result_too_low; | |
| } | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| static const uint32 ai4const_table[] = { | |
| -1, | |
| 1, | |
| 2, | |
| 3, | |
| 4, | |
| 5, | |
| 6, | |
| 7, | |
| 8, | |
| 9, | |
| 10, | |
| 11, | |
| 12, | |
| 13, | |
| 14, | |
| 15 | |
| }; | |
| uint32 | |
| decode_ai4const (uint32 val) | |
| { | |
| val = ai4const_table[val]; | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_ai4const (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| unsigned i; | |
| for (i = 0; i < (1 << 4); i += 1) | |
| if (ai4const_table[i] == val) goto found; | |
| return xtensa_encode_result_not_in_table; | |
| found: | |
| val = i; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_imm8 (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_imm8 (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 8) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_sae (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_sae (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 5) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_imm7lo (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_imm7lo (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 4) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_simm7 (uint32 val) | |
| { | |
| if (val > 95) | |
| val |= -32; | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_simm7 (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((signed int) val < -32) | |
| return xtensa_encode_result_too_low; | |
| if ((signed int) val > 95) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_simm8 (uint32 val) | |
| { | |
| val = (val ^ 0x80) - 0x80; | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_simm8 (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if (((val + (1 << 7)) >> 8) != 0) | |
| { | |
| if ((signed int) val > 0) | |
| return xtensa_encode_result_too_high; | |
| else | |
| return xtensa_encode_result_too_low; | |
| } | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_uimm12x8 (uint32 val) | |
| { | |
| val <<= 3; | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_uimm12x8 (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val & ((1 << 3) - 1)) != 0) | |
| return xtensa_encode_result_align; | |
| val = (signed int) val >> 3; | |
| if ((val >> 12) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_sal (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_sal (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 5) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_uimm6 (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_uimm6 (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 6) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_sas4 (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_sas4 (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 1) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_uimm8 (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_uimm8 (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 8) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_uimm16x4 (uint32 val) | |
| { | |
| val |= -1 << 16; | |
| val <<= 2; | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_uimm16x4 (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val & ((1 << 2) - 1)) != 0) | |
| return xtensa_encode_result_align; | |
| val = (signed int) val >> 2; | |
| if ((signed int) val >> 16 != -1) | |
| { | |
| if ((signed int) val >= 0) | |
| return xtensa_encode_result_too_high; | |
| else | |
| return xtensa_encode_result_too_low; | |
| } | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_sar (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_sar (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 5) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_sa4 (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_sa4 (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 1) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_sas (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_sas (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 5) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_imm6hi (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_imm6hi (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 2) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_bbi (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_bbi (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 5) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_uimm8x2 (uint32 val) | |
| { | |
| val <<= 1; | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_uimm8x2 (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val & ((1 << 1) - 1)) != 0) | |
| return xtensa_encode_result_align; | |
| val = (signed int) val >> 1; | |
| if ((val >> 8) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_uimm8x4 (uint32 val) | |
| { | |
| val <<= 2; | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_uimm8x4 (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val & ((1 << 2) - 1)) != 0) | |
| return xtensa_encode_result_align; | |
| val = (signed int) val >> 2; | |
| if ((val >> 8) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| static const uint32 mip32const_table[] = { | |
| 32, | |
| 31, | |
| 30, | |
| 29, | |
| 28, | |
| 27, | |
| 26, | |
| 25, | |
| 24, | |
| 23, | |
| 22, | |
| 21, | |
| 20, | |
| 19, | |
| 18, | |
| 17, | |
| 16, | |
| 15, | |
| 14, | |
| 13, | |
| 12, | |
| 11, | |
| 10, | |
| 9, | |
| 8, | |
| 7, | |
| 6, | |
| 5, | |
| 4, | |
| 3, | |
| 2, | |
| 1 | |
| }; | |
| uint32 | |
| decode_msalp32 (uint32 val) | |
| { | |
| val = mip32const_table[val]; | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_msalp32 (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| unsigned i; | |
| for (i = 0; i < (1 << 5); i += 1) | |
| if (mip32const_table[i] == val) goto found; | |
| return xtensa_encode_result_not_in_table; | |
| found: | |
| val = i; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_bbi4 (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_bbi4 (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 1) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| static const uint32 i4p1const_table[] = { | |
| 1, | |
| 2, | |
| 3, | |
| 4, | |
| 5, | |
| 6, | |
| 7, | |
| 8, | |
| 9, | |
| 10, | |
| 11, | |
| 12, | |
| 13, | |
| 14, | |
| 15, | |
| 16 | |
| }; | |
| uint32 | |
| decode_op2p1 (uint32 val) | |
| { | |
| val = i4p1const_table[val]; | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_op2p1 (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| unsigned i; | |
| for (i = 0; i < (1 << 4); i += 1) | |
| if (i4p1const_table[i] == val) goto found; | |
| return xtensa_encode_result_not_in_table; | |
| found: | |
| val = i; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_soffsetx4 (uint32 val) | |
| { | |
| val = (val ^ 0x20000) - 0x20000; | |
| val <<= 2; | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_soffsetx4 (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val & ((1 << 2) - 1)) != 0) | |
| return xtensa_encode_result_align; | |
| val = (signed int) val >> 2; | |
| if (((val + (1 << 17)) >> 18) != 0) | |
| { | |
| if ((signed int) val > 0) | |
| return xtensa_encode_result_too_high; | |
| else | |
| return xtensa_encode_result_too_low; | |
| } | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_imm6lo (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_imm6lo (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 4) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_imm12 (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_imm12 (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 12) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| static const uint32 b4const_table[] = { | |
| -1, | |
| 1, | |
| 2, | |
| 3, | |
| 4, | |
| 5, | |
| 6, | |
| 7, | |
| 8, | |
| 10, | |
| 12, | |
| 16, | |
| 32, | |
| 64, | |
| 128, | |
| 256 | |
| }; | |
| uint32 | |
| decode_b4const (uint32 val) | |
| { | |
| val = b4const_table[val]; | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_b4const (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| unsigned i; | |
| for (i = 0; i < (1 << 4); i += 1) | |
| if (b4const_table[i] == val) goto found; | |
| return xtensa_encode_result_not_in_table; | |
| found: | |
| val = i; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_i (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_i (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 1) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_imm16 (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_imm16 (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 16) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_mn (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_mn (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 4) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_m (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_m (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 2) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_n (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_n (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 2) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_none (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_none (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 0) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_imm12b (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_imm12b (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 12) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_r (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_r (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 4) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_s (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_s (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 4) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_t (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_t (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 4) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_thi3 (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_thi3 (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 3) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_sae4 (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_sae4 (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 1) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_offset (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_offset (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 18) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_imm7hi (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_imm7hi (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 3) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_uimm4x16 (uint32 val) | |
| { | |
| val <<= 4; | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_uimm4x16 (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val & ((1 << 4) - 1)) != 0) | |
| return xtensa_encode_result_align; | |
| val = (signed int) val >> 4; | |
| if ((val >> 4) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_simm12b (uint32 val) | |
| { | |
| val = (val ^ 0x800) - 0x800; | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_simm12b (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if (((val + (1 << 11)) >> 12) != 0) | |
| { | |
| if ((signed int) val > 0) | |
| return xtensa_encode_result_too_high; | |
| else | |
| return xtensa_encode_result_too_low; | |
| } | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_lsi4x4 (uint32 val) | |
| { | |
| val <<= 2; | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_lsi4x4 (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val & ((1 << 2) - 1)) != 0) | |
| return xtensa_encode_result_align; | |
| val = (signed int) val >> 2; | |
| if ((val >> 4) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_z (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_z (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 1) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_simm12 (uint32 val) | |
| { | |
| val = (val ^ 0x800) - 0x800; | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_simm12 (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if (((val + (1 << 11)) >> 12) != 0) | |
| { | |
| if ((signed int) val > 0) | |
| return xtensa_encode_result_too_high; | |
| else | |
| return xtensa_encode_result_too_low; | |
| } | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_sr (uint32 val) | |
| { | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_sr (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val >> 8) != 0) | |
| return xtensa_encode_result_too_high; | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 | |
| decode_nimm4x2 (uint32 val) | |
| { | |
| val |= -1 << 4; | |
| val <<= 2; | |
| return val; | |
| } | |
| xtensa_encode_result | |
| encode_nimm4x2 (uint32 *valp) | |
| { | |
| uint32 val = *valp; | |
| if ((val & ((1 << 2) - 1)) != 0) | |
| return xtensa_encode_result_align; | |
| val = (signed int) val >> 2; | |
| if ((signed int) val >> 4 != -1) | |
| { | |
| if ((signed int) val >= 0) | |
| return xtensa_encode_result_too_high; | |
| else | |
| return xtensa_encode_result_too_low; | |
| } | |
| *valp = val; | |
| return xtensa_encode_result_ok; | |
| } | |
| uint32 do_reloc_l (uint32, uint32); | |
| uint32 undo_reloc_l (uint32, uint32); | |
| uint32 do_reloc_L (uint32, uint32); | |
| uint32 undo_reloc_L (uint32, uint32); | |
| uint32 do_reloc_r (uint32, uint32); | |
| uint32 undo_reloc_r (uint32, uint32); | |
| uint32 | |
| do_reloc_l (uint32 addr, uint32 pc) | |
| { | |
| return addr - pc - 4; | |
| } | |
| uint32 | |
| undo_reloc_l (uint32 offset, uint32 pc) | |
| { | |
| return pc + offset + 4; | |
| } | |
| uint32 | |
| do_reloc_L (uint32 addr, uint32 pc) | |
| { | |
| return addr - (pc & -4) - 4; | |
| } | |
| uint32 | |
| undo_reloc_L (uint32 offset, uint32 pc) | |
| { | |
| return (pc & -4) + offset + 4; | |
| } | |
| uint32 | |
| do_reloc_r (uint32 addr, uint32 pc) | |
| { | |
| return addr - ((pc+3) & -4); | |
| } | |
| uint32 | |
| undo_reloc_r (uint32 offset, uint32 pc) | |
| { | |
| return ((pc+3) & -4) + offset; | |
| } | |
| static xtensa_operand_internal iib4const_operand = { | |
| "i", | |
| '<', | |
| 0, | |
| get_r_field, | |
| set_r_field, | |
| encode_b4const, | |
| decode_b4const, | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal iiuimm8_operand = { | |
| "i", | |
| '<', | |
| 0, | |
| get_imm8_field, | |
| set_imm8_field, | |
| encode_uimm8, | |
| decode_uimm8, | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal lisoffsetx4_operand = { | |
| "L", | |
| '<', | |
| 1, | |
| get_offset_field, | |
| set_offset_field, | |
| encode_soffsetx4, | |
| decode_soffsetx4, | |
| do_reloc_L, | |
| undo_reloc_L, | |
| }; | |
| static xtensa_operand_internal iisimm8x256_operand = { | |
| "i", | |
| '<', | |
| 0, | |
| get_imm8_field, | |
| set_imm8_field, | |
| encode_simm8x256, | |
| decode_simm8x256, | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal lisimm12_operand = { | |
| "l", | |
| '<', | |
| 1, | |
| get_imm12_field, | |
| set_imm12_field, | |
| encode_simm12, | |
| decode_simm12, | |
| do_reloc_l, | |
| undo_reloc_l, | |
| }; | |
| static xtensa_operand_internal iiop2p1_operand = { | |
| "i", | |
| '<', | |
| 0, | |
| get_op2_field, | |
| set_op2_field, | |
| encode_op2p1, | |
| decode_op2p1, | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal iisae_operand = { | |
| "i", | |
| '<', | |
| 0, | |
| get_sae_field, | |
| set_sae_field, | |
| encode_sae, | |
| decode_sae, | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal iis_operand = { | |
| "i", | |
| '<', | |
| 0, | |
| get_s_field, | |
| set_s_field, | |
| encode_s, | |
| decode_s, | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal iit_operand = { | |
| "i", | |
| '<', | |
| 0, | |
| get_t_field, | |
| set_t_field, | |
| encode_t, | |
| decode_t, | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal iisimm12b_operand = { | |
| "i", | |
| '<', | |
| 0, | |
| get_imm12b_field, | |
| set_imm12b_field, | |
| encode_simm12b, | |
| decode_simm12b, | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal iinimm4x2_operand = { | |
| "i", | |
| '<', | |
| 0, | |
| get_imm4_field, | |
| set_imm4_field, | |
| encode_nimm4x2, | |
| decode_nimm4x2, | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal iiuimm4x16_operand = { | |
| "i", | |
| '<', | |
| 0, | |
| get_op2_field, | |
| set_op2_field, | |
| encode_uimm4x16, | |
| decode_uimm4x16, | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal abs_operand = { | |
| "a", | |
| '=', | |
| 0, | |
| get_s_field, | |
| set_s_field, | |
| encode_s, | |
| decode_s, | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal iisar_operand = { | |
| "i", | |
| '<', | |
| 0, | |
| get_sar_field, | |
| set_sar_field, | |
| encode_sar, | |
| decode_sar, | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal abt_operand = { | |
| "a", | |
| '=', | |
| 0, | |
| get_t_field, | |
| set_t_field, | |
| encode_t, | |
| decode_t, | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal iisas_operand = { | |
| "i", | |
| '<', | |
| 0, | |
| get_sas_field, | |
| set_sas_field, | |
| encode_sas, | |
| decode_sas, | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal amr_operand = { | |
| "a", | |
| '=', | |
| 0, | |
| get_r_field, | |
| set_r_field, | |
| encode_r, | |
| decode_r, | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal iib4constu_operand = { | |
| "i", | |
| '<', | |
| 0, | |
| get_r_field, | |
| set_r_field, | |
| encode_b4constu, | |
| decode_b4constu, | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal iisr_operand = { | |
| "i", | |
| '<', | |
| 0, | |
| get_sr_field, | |
| set_sr_field, | |
| encode_sr, | |
| decode_sr, | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal iibbi_operand = { | |
| "i", | |
| '<', | |
| 0, | |
| get_bbi_field, | |
| set_bbi_field, | |
| encode_bbi, | |
| decode_bbi, | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal iiai4const_operand = { | |
| "i", | |
| '<', | |
| 0, | |
| get_t_field, | |
| set_t_field, | |
| encode_ai4const, | |
| decode_ai4const, | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal iiuimm12x8_operand = { | |
| "i", | |
| '<', | |
| 0, | |
| get_imm12_field, | |
| set_imm12_field, | |
| encode_uimm12x8, | |
| decode_uimm12x8, | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal riuimm16x4_operand = { | |
| "r", | |
| '<', | |
| 1, | |
| get_imm16_field, | |
| set_imm16_field, | |
| encode_uimm16x4, | |
| decode_uimm16x4, | |
| do_reloc_r, | |
| undo_reloc_r, | |
| }; | |
| static xtensa_operand_internal lisimm8_operand = { | |
| "l", | |
| '<', | |
| 1, | |
| get_imm8_field, | |
| set_imm8_field, | |
| encode_simm8, | |
| decode_simm8, | |
| do_reloc_l, | |
| undo_reloc_l, | |
| }; | |
| static xtensa_operand_internal iilsi4x4_operand = { | |
| "i", | |
| '<', | |
| 0, | |
| get_r_field, | |
| set_r_field, | |
| encode_lsi4x4, | |
| decode_lsi4x4, | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal iiuimm8x2_operand = { | |
| "i", | |
| '<', | |
| 0, | |
| get_imm8_field, | |
| set_imm8_field, | |
| encode_uimm8x2, | |
| decode_uimm8x2, | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal iisimm4_operand = { | |
| "i", | |
| '<', | |
| 0, | |
| get_mn_field, | |
| set_mn_field, | |
| encode_simm4, | |
| decode_simm4, | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal iimsalp32_operand = { | |
| "i", | |
| '<', | |
| 0, | |
| get_sal_field, | |
| set_sal_field, | |
| encode_msalp32, | |
| decode_msalp32, | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal liuimm6_operand = { | |
| "l", | |
| '<', | |
| 1, | |
| get_imm6_field, | |
| set_imm6_field, | |
| encode_uimm6, | |
| decode_uimm6, | |
| do_reloc_l, | |
| undo_reloc_l, | |
| }; | |
| static xtensa_operand_internal iiuimm8x4_operand = { | |
| "i", | |
| '<', | |
| 0, | |
| get_imm8_field, | |
| set_imm8_field, | |
| encode_uimm8x4, | |
| decode_uimm8x4, | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal lisoffset_operand = { | |
| "l", | |
| '<', | |
| 1, | |
| get_offset_field, | |
| set_offset_field, | |
| encode_soffset, | |
| decode_soffset, | |
| do_reloc_l, | |
| undo_reloc_l, | |
| }; | |
| static xtensa_operand_internal iisimm7_operand = { | |
| "i", | |
| '<', | |
| 0, | |
| get_imm7_field, | |
| set_imm7_field, | |
| encode_simm7, | |
| decode_simm7, | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal ais_operand = { | |
| "a", | |
| '<', | |
| 0, | |
| get_s_field, | |
| set_s_field, | |
| encode_s, | |
| decode_s, | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal liuimm8_operand = { | |
| "l", | |
| '<', | |
| 1, | |
| get_imm8_field, | |
| set_imm8_field, | |
| encode_uimm8, | |
| decode_uimm8, | |
| do_reloc_l, | |
| undo_reloc_l, | |
| }; | |
| static xtensa_operand_internal ait_operand = { | |
| "a", | |
| '<', | |
| 0, | |
| get_t_field, | |
| set_t_field, | |
| encode_t, | |
| decode_t, | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal iisimm8_operand = { | |
| "i", | |
| '<', | |
| 0, | |
| get_imm8_field, | |
| set_imm8_field, | |
| encode_simm8, | |
| decode_simm8, | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal aor_operand = { | |
| "a", | |
| '>', | |
| 0, | |
| get_r_field, | |
| set_r_field, | |
| encode_r, | |
| decode_r, | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal aos_operand = { | |
| "a", | |
| '>', | |
| 0, | |
| get_s_field, | |
| set_s_field, | |
| encode_s, | |
| decode_s, | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal aot_operand = { | |
| "a", | |
| '>', | |
| 0, | |
| get_t_field, | |
| set_t_field, | |
| encode_t, | |
| decode_t, | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_iclass_internal nopn_iclass = { | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal *movi_operand_list[] = { | |
| &aot_operand, | |
| &iisimm12b_operand | |
| }; | |
| static xtensa_iclass_internal movi_iclass = { | |
| 2, | |
| &movi_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *bsi8u_operand_list[] = { | |
| &ais_operand, | |
| &iib4constu_operand, | |
| &lisimm8_operand | |
| }; | |
| static xtensa_iclass_internal bsi8u_iclass = { | |
| 3, | |
| &bsi8u_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *itlb_operand_list[] = { | |
| &ais_operand | |
| }; | |
| static xtensa_iclass_internal itlb_iclass = { | |
| 1, | |
| &itlb_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *shiftst_operand_list[] = { | |
| &aor_operand, | |
| &ais_operand, | |
| &ait_operand | |
| }; | |
| static xtensa_iclass_internal shiftst_iclass = { | |
| 3, | |
| &shiftst_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *l32r_operand_list[] = { | |
| &aot_operand, | |
| &riuimm16x4_operand | |
| }; | |
| static xtensa_iclass_internal l32r_iclass = { | |
| 2, | |
| &l32r_operand_list[0] | |
| }; | |
| static xtensa_iclass_internal rfe_iclass = { | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal *wait_operand_list[] = { | |
| &iis_operand | |
| }; | |
| static xtensa_iclass_internal wait_iclass = { | |
| 1, | |
| &wait_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *rfi_operand_list[] = { | |
| &iis_operand | |
| }; | |
| static xtensa_iclass_internal rfi_iclass = { | |
| 1, | |
| &rfi_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *movz_operand_list[] = { | |
| &amr_operand, | |
| &ais_operand, | |
| &ait_operand | |
| }; | |
| static xtensa_iclass_internal movz_iclass = { | |
| 3, | |
| &movz_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *callx_operand_list[] = { | |
| &ais_operand | |
| }; | |
| static xtensa_iclass_internal callx_iclass = { | |
| 1, | |
| &callx_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *mov_n_operand_list[] = { | |
| &aot_operand, | |
| &ais_operand | |
| }; | |
| static xtensa_iclass_internal mov_n_iclass = { | |
| 2, | |
| &mov_n_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *loadi4_operand_list[] = { | |
| &aot_operand, | |
| &ais_operand, | |
| &iilsi4x4_operand | |
| }; | |
| static xtensa_iclass_internal loadi4_iclass = { | |
| 3, | |
| &loadi4_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *exti_operand_list[] = { | |
| &aor_operand, | |
| &ait_operand, | |
| &iisae_operand, | |
| &iiop2p1_operand | |
| }; | |
| static xtensa_iclass_internal exti_iclass = { | |
| 4, | |
| &exti_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *break_operand_list[] = { | |
| &iis_operand, | |
| &iit_operand | |
| }; | |
| static xtensa_iclass_internal break_iclass = { | |
| 2, | |
| &break_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *slli_operand_list[] = { | |
| &aor_operand, | |
| &ais_operand, | |
| &iimsalp32_operand | |
| }; | |
| static xtensa_iclass_internal slli_iclass = { | |
| 3, | |
| &slli_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *s16i_operand_list[] = { | |
| &ait_operand, | |
| &ais_operand, | |
| &iiuimm8x2_operand | |
| }; | |
| static xtensa_iclass_internal s16i_iclass = { | |
| 3, | |
| &s16i_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *call_operand_list[] = { | |
| &lisoffsetx4_operand | |
| }; | |
| static xtensa_iclass_internal call_iclass = { | |
| 1, | |
| &call_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *shifts_operand_list[] = { | |
| &aor_operand, | |
| &ais_operand | |
| }; | |
| static xtensa_iclass_internal shifts_iclass = { | |
| 2, | |
| &shifts_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *shiftt_operand_list[] = { | |
| &aor_operand, | |
| &ait_operand | |
| }; | |
| static xtensa_iclass_internal shiftt_iclass = { | |
| 2, | |
| &shiftt_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *rotw_operand_list[] = { | |
| &iisimm4_operand | |
| }; | |
| static xtensa_iclass_internal rotw_iclass = { | |
| 1, | |
| &rotw_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *addsub_operand_list[] = { | |
| &aor_operand, | |
| &ais_operand, | |
| &ait_operand | |
| }; | |
| static xtensa_iclass_internal addsub_iclass = { | |
| 3, | |
| &addsub_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *l8i_operand_list[] = { | |
| &aot_operand, | |
| &ais_operand, | |
| &iiuimm8_operand | |
| }; | |
| static xtensa_iclass_internal l8i_iclass = { | |
| 3, | |
| &l8i_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *sari_operand_list[] = { | |
| &iisas_operand | |
| }; | |
| static xtensa_iclass_internal sari_iclass = { | |
| 1, | |
| &sari_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *xsr_operand_list[] = { | |
| &abt_operand, | |
| &iisr_operand | |
| }; | |
| static xtensa_iclass_internal xsr_iclass = { | |
| 2, | |
| &xsr_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *rsil_operand_list[] = { | |
| &aot_operand, | |
| &iis_operand | |
| }; | |
| static xtensa_iclass_internal rsil_iclass = { | |
| 2, | |
| &rsil_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *bst8_operand_list[] = { | |
| &ais_operand, | |
| &ait_operand, | |
| &lisimm8_operand | |
| }; | |
| static xtensa_iclass_internal bst8_iclass = { | |
| 3, | |
| &bst8_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *addi_operand_list[] = { | |
| &aot_operand, | |
| &ais_operand, | |
| &iisimm8_operand | |
| }; | |
| static xtensa_iclass_internal addi_iclass = { | |
| 3, | |
| &addi_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *callx12_operand_list[] = { | |
| &ais_operand | |
| }; | |
| static xtensa_iclass_internal callx12_iclass = { | |
| 1, | |
| &callx12_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *bsi8_operand_list[] = { | |
| &ais_operand, | |
| &iib4const_operand, | |
| &lisimm8_operand | |
| }; | |
| static xtensa_iclass_internal bsi8_iclass = { | |
| 3, | |
| &bsi8_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *jumpx_operand_list[] = { | |
| &ais_operand | |
| }; | |
| static xtensa_iclass_internal jumpx_iclass = { | |
| 1, | |
| &jumpx_operand_list[0] | |
| }; | |
| static xtensa_iclass_internal retn_iclass = { | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal *nsa_operand_list[] = { | |
| &aot_operand, | |
| &ais_operand | |
| }; | |
| static xtensa_iclass_internal nsa_iclass = { | |
| 2, | |
| &nsa_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *storei4_operand_list[] = { | |
| &ait_operand, | |
| &ais_operand, | |
| &iilsi4x4_operand | |
| }; | |
| static xtensa_iclass_internal storei4_iclass = { | |
| 3, | |
| &storei4_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *wtlb_operand_list[] = { | |
| &ait_operand, | |
| &ais_operand | |
| }; | |
| static xtensa_iclass_internal wtlb_iclass = { | |
| 2, | |
| &wtlb_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *dce_operand_list[] = { | |
| &ais_operand, | |
| &iiuimm4x16_operand | |
| }; | |
| static xtensa_iclass_internal dce_iclass = { | |
| 2, | |
| &dce_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *l16i_operand_list[] = { | |
| &aot_operand, | |
| &ais_operand, | |
| &iiuimm8x2_operand | |
| }; | |
| static xtensa_iclass_internal l16i_iclass = { | |
| 3, | |
| &l16i_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *callx4_operand_list[] = { | |
| &ais_operand | |
| }; | |
| static xtensa_iclass_internal callx4_iclass = { | |
| 1, | |
| &callx4_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *callx8_operand_list[] = { | |
| &ais_operand | |
| }; | |
| static xtensa_iclass_internal callx8_iclass = { | |
| 1, | |
| &callx8_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *movsp_operand_list[] = { | |
| &aot_operand, | |
| &ais_operand | |
| }; | |
| static xtensa_iclass_internal movsp_iclass = { | |
| 2, | |
| &movsp_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *wsr_operand_list[] = { | |
| &ait_operand, | |
| &iisr_operand | |
| }; | |
| static xtensa_iclass_internal wsr_iclass = { | |
| 2, | |
| &wsr_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *call12_operand_list[] = { | |
| &lisoffsetx4_operand | |
| }; | |
| static xtensa_iclass_internal call12_iclass = { | |
| 1, | |
| &call12_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *call4_operand_list[] = { | |
| &lisoffsetx4_operand | |
| }; | |
| static xtensa_iclass_internal call4_iclass = { | |
| 1, | |
| &call4_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *addmi_operand_list[] = { | |
| &aot_operand, | |
| &ais_operand, | |
| &iisimm8x256_operand | |
| }; | |
| static xtensa_iclass_internal addmi_iclass = { | |
| 3, | |
| &addmi_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *bit_operand_list[] = { | |
| &aor_operand, | |
| &ais_operand, | |
| &ait_operand | |
| }; | |
| static xtensa_iclass_internal bit_iclass = { | |
| 3, | |
| &bit_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *call8_operand_list[] = { | |
| &lisoffsetx4_operand | |
| }; | |
| static xtensa_iclass_internal call8_iclass = { | |
| 1, | |
| &call8_operand_list[0] | |
| }; | |
| static xtensa_iclass_internal itlba_iclass = { | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal *break_n_operand_list[] = { | |
| &iis_operand | |
| }; | |
| static xtensa_iclass_internal break_n_iclass = { | |
| 1, | |
| &break_n_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *sar_operand_list[] = { | |
| &ais_operand | |
| }; | |
| static xtensa_iclass_internal sar_iclass = { | |
| 1, | |
| &sar_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *s32e_operand_list[] = { | |
| &ait_operand, | |
| &ais_operand, | |
| &iinimm4x2_operand | |
| }; | |
| static xtensa_iclass_internal s32e_iclass = { | |
| 3, | |
| &s32e_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *bz6_operand_list[] = { | |
| &ais_operand, | |
| &liuimm6_operand | |
| }; | |
| static xtensa_iclass_internal bz6_iclass = { | |
| 2, | |
| &bz6_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *loop_operand_list[] = { | |
| &ais_operand, | |
| &liuimm8_operand | |
| }; | |
| static xtensa_iclass_internal loop_iclass = { | |
| 2, | |
| &loop_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *rsr_operand_list[] = { | |
| &aot_operand, | |
| &iisr_operand | |
| }; | |
| static xtensa_iclass_internal rsr_iclass = { | |
| 2, | |
| &rsr_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *icache_operand_list[] = { | |
| &ais_operand, | |
| &iiuimm8x4_operand | |
| }; | |
| static xtensa_iclass_internal icache_iclass = { | |
| 2, | |
| &icache_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *s8i_operand_list[] = { | |
| &ait_operand, | |
| &ais_operand, | |
| &iiuimm8_operand | |
| }; | |
| static xtensa_iclass_internal s8i_iclass = { | |
| 3, | |
| &s8i_operand_list[0] | |
| }; | |
| static xtensa_iclass_internal return_iclass = { | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal *dcache_operand_list[] = { | |
| &ais_operand, | |
| &iiuimm8x4_operand | |
| }; | |
| static xtensa_iclass_internal dcache_iclass = { | |
| 2, | |
| &dcache_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *s32i_operand_list[] = { | |
| &ait_operand, | |
| &ais_operand, | |
| &iiuimm8x4_operand | |
| }; | |
| static xtensa_iclass_internal s32i_iclass = { | |
| 3, | |
| &s32i_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *jump_operand_list[] = { | |
| &lisoffset_operand | |
| }; | |
| static xtensa_iclass_internal jump_iclass = { | |
| 1, | |
| &jump_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *addi_n_operand_list[] = { | |
| &aor_operand, | |
| &ais_operand, | |
| &iiai4const_operand | |
| }; | |
| static xtensa_iclass_internal addi_n_iclass = { | |
| 3, | |
| &addi_n_operand_list[0] | |
| }; | |
| static xtensa_iclass_internal sync_iclass = { | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal *neg_operand_list[] = { | |
| &aor_operand, | |
| &ait_operand | |
| }; | |
| static xtensa_iclass_internal neg_iclass = { | |
| 2, | |
| &neg_operand_list[0] | |
| }; | |
| static xtensa_iclass_internal syscall_iclass = { | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal *bsz12_operand_list[] = { | |
| &ais_operand, | |
| &lisimm12_operand | |
| }; | |
| static xtensa_iclass_internal bsz12_iclass = { | |
| 2, | |
| &bsz12_operand_list[0] | |
| }; | |
| static xtensa_iclass_internal excw_iclass = { | |
| 0, | |
| 0 | |
| }; | |
| static xtensa_operand_internal *movi_n_operand_list[] = { | |
| &aos_operand, | |
| &iisimm7_operand | |
| }; | |
| static xtensa_iclass_internal movi_n_iclass = { | |
| 2, | |
| &movi_n_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *rtlb_operand_list[] = { | |
| &aot_operand, | |
| &ais_operand | |
| }; | |
| static xtensa_iclass_internal rtlb_iclass = { | |
| 2, | |
| &rtlb_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *actl_operand_list[] = { | |
| &aot_operand, | |
| &ais_operand | |
| }; | |
| static xtensa_iclass_internal actl_iclass = { | |
| 2, | |
| &actl_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *srli_operand_list[] = { | |
| &aor_operand, | |
| &ait_operand, | |
| &iis_operand | |
| }; | |
| static xtensa_iclass_internal srli_iclass = { | |
| 3, | |
| &srli_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *bsi8b_operand_list[] = { | |
| &ais_operand, | |
| &iibbi_operand, | |
| &lisimm8_operand | |
| }; | |
| static xtensa_iclass_internal bsi8b_iclass = { | |
| 3, | |
| &bsi8b_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *acts_operand_list[] = { | |
| &ait_operand, | |
| &ais_operand | |
| }; | |
| static xtensa_iclass_internal acts_iclass = { | |
| 2, | |
| &acts_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *add_n_operand_list[] = { | |
| &aor_operand, | |
| &ais_operand, | |
| &ait_operand | |
| }; | |
| static xtensa_iclass_internal add_n_iclass = { | |
| 3, | |
| &add_n_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *srai_operand_list[] = { | |
| &aor_operand, | |
| &ait_operand, | |
| &iisar_operand | |
| }; | |
| static xtensa_iclass_internal srai_iclass = { | |
| 3, | |
| &srai_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *entry_operand_list[] = { | |
| &abs_operand, | |
| &iiuimm12x8_operand | |
| }; | |
| static xtensa_iclass_internal entry_iclass = { | |
| 2, | |
| &entry_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *l32e_operand_list[] = { | |
| &aot_operand, | |
| &ais_operand, | |
| &iinimm4x2_operand | |
| }; | |
| static xtensa_iclass_internal l32e_iclass = { | |
| 3, | |
| &l32e_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *dpf_operand_list[] = { | |
| &ais_operand, | |
| &iiuimm8x4_operand | |
| }; | |
| static xtensa_iclass_internal dpf_iclass = { | |
| 2, | |
| &dpf_operand_list[0] | |
| }; | |
| static xtensa_operand_internal *l32i_operand_list[] = { | |
| &aot_operand, | |
| &ais_operand, | |
| &iiuimm8x4_operand | |
| }; | |
| static xtensa_iclass_internal l32i_iclass = { | |
| 3, | |
| &l32i_operand_list[0] | |
| }; | |
| static xtensa_insnbuf abs_template (void); | |
| static xtensa_insnbuf add_template (void); | |
| static xtensa_insnbuf add_n_template (void); | |
| static xtensa_insnbuf addi_template (void); | |
| static xtensa_insnbuf addi_n_template (void); | |
| static xtensa_insnbuf addmi_template (void); | |
| static xtensa_insnbuf addx2_template (void); | |
| static xtensa_insnbuf addx4_template (void); | |
| static xtensa_insnbuf addx8_template (void); | |
| static xtensa_insnbuf and_template (void); | |
| static xtensa_insnbuf ball_template (void); | |
| static xtensa_insnbuf bany_template (void); | |
| static xtensa_insnbuf bbc_template (void); | |
| static xtensa_insnbuf bbci_template (void); | |
| static xtensa_insnbuf bbs_template (void); | |
| static xtensa_insnbuf bbsi_template (void); | |
| static xtensa_insnbuf beq_template (void); | |
| static xtensa_insnbuf beqi_template (void); | |
| static xtensa_insnbuf beqz_template (void); | |
| static xtensa_insnbuf beqz_n_template (void); | |
| static xtensa_insnbuf bge_template (void); | |
| static xtensa_insnbuf bgei_template (void); | |
| static xtensa_insnbuf bgeu_template (void); | |
| static xtensa_insnbuf bgeui_template (void); | |
| static xtensa_insnbuf bgez_template (void); | |
| static xtensa_insnbuf blt_template (void); | |
| static xtensa_insnbuf blti_template (void); | |
| static xtensa_insnbuf bltu_template (void); | |
| static xtensa_insnbuf bltui_template (void); | |
| static xtensa_insnbuf bltz_template (void); | |
| static xtensa_insnbuf bnall_template (void); | |
| static xtensa_insnbuf bne_template (void); | |
| static xtensa_insnbuf bnei_template (void); | |
| static xtensa_insnbuf bnez_template (void); | |
| static xtensa_insnbuf bnez_n_template (void); | |
| static xtensa_insnbuf bnone_template (void); | |
| static xtensa_insnbuf break_template (void); | |
| static xtensa_insnbuf break_n_template (void); | |
| static xtensa_insnbuf call0_template (void); | |
| static xtensa_insnbuf call12_template (void); | |
| static xtensa_insnbuf call4_template (void); | |
| static xtensa_insnbuf call8_template (void); | |
| static xtensa_insnbuf callx0_template (void); | |
| static xtensa_insnbuf callx12_template (void); | |
| static xtensa_insnbuf callx4_template (void); | |
| static xtensa_insnbuf callx8_template (void); | |
| static xtensa_insnbuf dhi_template (void); | |
| static xtensa_insnbuf dhwb_template (void); | |
| static xtensa_insnbuf dhwbi_template (void); | |
| static xtensa_insnbuf dii_template (void); | |
| static xtensa_insnbuf diwb_template (void); | |
| static xtensa_insnbuf diwbi_template (void); | |
| static xtensa_insnbuf dpfr_template (void); | |
| static xtensa_insnbuf dpfro_template (void); | |
| static xtensa_insnbuf dpfw_template (void); | |
| static xtensa_insnbuf dpfwo_template (void); | |
| static xtensa_insnbuf dsync_template (void); | |
| static xtensa_insnbuf entry_template (void); | |
| static xtensa_insnbuf esync_template (void); | |
| static xtensa_insnbuf excw_template (void); | |
| static xtensa_insnbuf extui_template (void); | |
| static xtensa_insnbuf idtlb_template (void); | |
| static xtensa_insnbuf idtlba_template (void); | |
| static xtensa_insnbuf ihi_template (void); | |
| static xtensa_insnbuf iii_template (void); | |
| static xtensa_insnbuf iitlb_template (void); | |
| static xtensa_insnbuf iitlba_template (void); | |
| static xtensa_insnbuf ipf_template (void); | |
| static xtensa_insnbuf isync_template (void); | |
| static xtensa_insnbuf j_template (void); | |
| static xtensa_insnbuf jx_template (void); | |
| static xtensa_insnbuf l16si_template (void); | |
| static xtensa_insnbuf l16ui_template (void); | |
| static xtensa_insnbuf l32e_template (void); | |
| static xtensa_insnbuf l32i_template (void); | |
| static xtensa_insnbuf l32i_n_template (void); | |
| static xtensa_insnbuf l32r_template (void); | |
| static xtensa_insnbuf l8ui_template (void); | |
| static xtensa_insnbuf ldct_template (void); | |
| static xtensa_insnbuf lict_template (void); | |
| static xtensa_insnbuf licw_template (void); | |
| static xtensa_insnbuf loop_template (void); | |
| static xtensa_insnbuf loopgtz_template (void); | |
| static xtensa_insnbuf loopnez_template (void); | |
| static xtensa_insnbuf memw_template (void); | |
| static xtensa_insnbuf mov_n_template (void); | |
| static xtensa_insnbuf moveqz_template (void); | |
| static xtensa_insnbuf movgez_template (void); | |
| static xtensa_insnbuf movi_template (void); | |
| static xtensa_insnbuf movi_n_template (void); | |
| static xtensa_insnbuf movltz_template (void); | |
| static xtensa_insnbuf movnez_template (void); | |
| static xtensa_insnbuf movsp_template (void); | |
| static xtensa_insnbuf neg_template (void); | |
| static xtensa_insnbuf nop_n_template (void); | |
| static xtensa_insnbuf nsa_template (void); | |
| static xtensa_insnbuf nsau_template (void); | |
| static xtensa_insnbuf or_template (void); | |
| static xtensa_insnbuf pdtlb_template (void); | |
| static xtensa_insnbuf pitlb_template (void); | |
| static xtensa_insnbuf rdtlb0_template (void); | |
| static xtensa_insnbuf rdtlb1_template (void); | |
| static xtensa_insnbuf ret_template (void); | |
| static xtensa_insnbuf ret_n_template (void); | |
| static xtensa_insnbuf retw_template (void); | |
| static xtensa_insnbuf retw_n_template (void); | |
| static xtensa_insnbuf rfde_template (void); | |
| static xtensa_insnbuf rfe_template (void); | |
| static xtensa_insnbuf rfi_template (void); | |
| static xtensa_insnbuf rfwo_template (void); | |
| static xtensa_insnbuf rfwu_template (void); | |
| static xtensa_insnbuf ritlb0_template (void); | |
| static xtensa_insnbuf ritlb1_template (void); | |
| static xtensa_insnbuf rotw_template (void); | |
| static xtensa_insnbuf rsil_template (void); | |
| static xtensa_insnbuf rsr_template (void); | |
| static xtensa_insnbuf rsync_template (void); | |
| static xtensa_insnbuf s16i_template (void); | |
| static xtensa_insnbuf s32e_template (void); | |
| static xtensa_insnbuf s32i_template (void); | |
| static xtensa_insnbuf s32i_n_template (void); | |
| static xtensa_insnbuf s8i_template (void); | |
| static xtensa_insnbuf sdct_template (void); | |
| static xtensa_insnbuf sict_template (void); | |
| static xtensa_insnbuf sicw_template (void); | |
| static xtensa_insnbuf simcall_template (void); | |
| static xtensa_insnbuf sll_template (void); | |
| static xtensa_insnbuf slli_template (void); | |
| static xtensa_insnbuf sra_template (void); | |
| static xtensa_insnbuf srai_template (void); | |
| static xtensa_insnbuf src_template (void); | |
| static xtensa_insnbuf srl_template (void); | |
| static xtensa_insnbuf srli_template (void); | |
| static xtensa_insnbuf ssa8b_template (void); | |
| static xtensa_insnbuf ssa8l_template (void); | |
| static xtensa_insnbuf ssai_template (void); | |
| static xtensa_insnbuf ssl_template (void); | |
| static xtensa_insnbuf ssr_template (void); | |
| static xtensa_insnbuf sub_template (void); | |
| static xtensa_insnbuf subx2_template (void); | |
| static xtensa_insnbuf subx4_template (void); | |
| static xtensa_insnbuf subx8_template (void); | |
| static xtensa_insnbuf syscall_template (void); | |
| static xtensa_insnbuf waiti_template (void); | |
| static xtensa_insnbuf wdtlb_template (void); | |
| static xtensa_insnbuf witlb_template (void); | |
| static xtensa_insnbuf wsr_template (void); | |
| static xtensa_insnbuf xor_template (void); | |
| static xtensa_insnbuf xsr_template (void); | |
| static xtensa_insnbuf | |
| abs_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00001006 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| add_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000008 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| add_n_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00a00000 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| addi_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00200c00 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| addi_n_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00b00000 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| addmi_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00200d00 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| addx2_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000009 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| addx4_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x0000000a }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| addx8_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x0000000b }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| and_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000001 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| ball_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00700400 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| bany_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00700800 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| bbc_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00700500 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| bbci_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00700600 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| bbs_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00700d00 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| bbsi_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00700e00 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| beq_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00700100 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| beqi_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00680000 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| beqz_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00640000 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| beqz_n_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00c80000 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| bge_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00700a00 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| bgei_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x006b0000 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| bgeu_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00700b00 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| bgeui_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x006f0000 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| bgez_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00670000 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| blt_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00700200 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| blti_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x006a0000 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| bltu_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00700300 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| bltui_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x006e0000 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| bltz_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00660000 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| bnall_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00700c00 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| bne_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00700900 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| bnei_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00690000 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| bnez_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00650000 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| bnez_n_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00cc0000 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| bnone_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00700000 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| break_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000400 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| break_n_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00d20f00 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| call0_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00500000 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| call12_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x005c0000 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| call4_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00540000 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| call8_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00580000 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| callx0_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00030000 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| callx12_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x000f0000 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| callx4_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00070000 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| callx8_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x000b0000 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| dhi_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00260700 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| dhwb_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00240700 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| dhwbi_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00250700 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| dii_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00270700 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| diwb_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00280740 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| diwbi_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00280750 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| dpfr_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00200700 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| dpfro_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00220700 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| dpfw_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00210700 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| dpfwo_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00230700 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| dsync_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00030200 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| entry_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x006c0000 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| esync_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00020200 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| excw_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00080200 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| extui_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000040 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| idtlb_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000c05 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| idtlba_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000805 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| ihi_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x002e0700 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| iii_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x002f0700 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| iitlb_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000405 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| iitlba_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000005 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| ipf_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x002c0700 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| isync_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000200 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| j_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00600000 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| jx_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x000a0000 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| l16si_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00200900 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| l16ui_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00200100 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| l32e_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000090 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| l32i_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00200200 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| l32i_n_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00800000 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| l32r_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00100000 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| l8ui_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00200000 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| ldct_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x0000081f }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| lict_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x0000001f }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| licw_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x0000021f }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| loop_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x006d0800 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| loopgtz_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x006d0a00 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| loopnez_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x006d0900 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| memw_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x000c0200 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| mov_n_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00d00000 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| moveqz_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000038 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| movgez_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x0000003b }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| movi_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00200a00 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| movi_n_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00c00000 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| movltz_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x0000003a }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| movnez_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000039 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| movsp_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000100 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| neg_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000006 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| nop_n_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00d30f00 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| nsa_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000e04 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| nsau_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000f04 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| or_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000002 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| pdtlb_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000d05 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| pitlb_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000505 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| rdtlb0_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000b05 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| rdtlb1_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000f05 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| ret_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00020000 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| ret_n_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00d00f00 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| retw_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00060000 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| retw_n_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00d10f00 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| rfde_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00002300 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| rfe_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000300 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| rfi_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00010300 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| rfwo_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00004300 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| rfwu_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00005300 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| ritlb0_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000305 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| ritlb1_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000705 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| rotw_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000804 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| rsil_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000600 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| rsr_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000030 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| rsync_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00010200 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| s16i_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00200500 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| s32e_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000094 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| s32i_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00200600 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| s32i_n_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00900000 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| s8i_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00200400 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| sdct_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x0000091f }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| sict_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x0000011f }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| sicw_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x0000031f }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| simcall_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00001500 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| sll_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x0000001a }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| slli_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000010 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| sra_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x0000001b }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| srai_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000012 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| src_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000018 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| srl_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000019 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| srli_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000014 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| ssa8b_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000304 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| ssa8l_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000204 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| ssai_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000404 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| ssl_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000104 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| ssr_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000004 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| sub_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x0000000c }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| subx2_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x0000000d }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| subx4_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x0000000e }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| subx8_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x0000000f }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| syscall_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000500 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| waiti_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000700 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| wdtlb_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000e05 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| witlb_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000605 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| wsr_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000031 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| xor_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000003 }; | |
| return &template[0]; | |
| } | |
| static xtensa_insnbuf | |
| xsr_template (void) | |
| { | |
| static xtensa_insnbuf_word template[] = { 0x00000016 }; | |
| return &template[0]; | |
| } | |
| static xtensa_opcode_internal abs_opcode = { | |
| "abs", | |
| 3, | |
| abs_template, | |
| &neg_iclass | |
| }; | |
| static xtensa_opcode_internal add_opcode = { | |
| "add", | |
| 3, | |
| add_template, | |
| &addsub_iclass | |
| }; | |
| static xtensa_opcode_internal add_n_opcode = { | |
| "add.n", | |
| 2, | |
| add_n_template, | |
| &add_n_iclass | |
| }; | |
| static xtensa_opcode_internal addi_opcode = { | |
| "addi", | |
| 3, | |
| addi_template, | |
| &addi_iclass | |
| }; | |
| static xtensa_opcode_internal addi_n_opcode = { | |
| "addi.n", | |
| 2, | |
| addi_n_template, | |
| &addi_n_iclass | |
| }; | |
| static xtensa_opcode_internal addmi_opcode = { | |
| "addmi", | |
| 3, | |
| addmi_template, | |
| &addmi_iclass | |
| }; | |
| static xtensa_opcode_internal addx2_opcode = { | |
| "addx2", | |
| 3, | |
| addx2_template, | |
| &addsub_iclass | |
| }; | |
| static xtensa_opcode_internal addx4_opcode = { | |
| "addx4", | |
| 3, | |
| addx4_template, | |
| &addsub_iclass | |
| }; | |
| static xtensa_opcode_internal addx8_opcode = { | |
| "addx8", | |
| 3, | |
| addx8_template, | |
| &addsub_iclass | |
| }; | |
| static xtensa_opcode_internal and_opcode = { | |
| "and", | |
| 3, | |
| and_template, | |
| &bit_iclass | |
| }; | |
| static xtensa_opcode_internal ball_opcode = { | |
| "ball", | |
| 3, | |
| ball_template, | |
| &bst8_iclass | |
| }; | |
| static xtensa_opcode_internal bany_opcode = { | |
| "bany", | |
| 3, | |
| bany_template, | |
| &bst8_iclass | |
| }; | |
| static xtensa_opcode_internal bbc_opcode = { | |
| "bbc", | |
| 3, | |
| bbc_template, | |
| &bst8_iclass | |
| }; | |
| static xtensa_opcode_internal bbci_opcode = { | |
| "bbci", | |
| 3, | |
| bbci_template, | |
| &bsi8b_iclass | |
| }; | |
| static xtensa_opcode_internal bbs_opcode = { | |
| "bbs", | |
| 3, | |
| bbs_template, | |
| &bst8_iclass | |
| }; | |
| static xtensa_opcode_internal bbsi_opcode = { | |
| "bbsi", | |
| 3, | |
| bbsi_template, | |
| &bsi8b_iclass | |
| }; | |
| static xtensa_opcode_internal beq_opcode = { | |
| "beq", | |
| 3, | |
| beq_template, | |
| &bst8_iclass | |
| }; | |
| static xtensa_opcode_internal beqi_opcode = { | |
| "beqi", | |
| 3, | |
| beqi_template, | |
| &bsi8_iclass | |
| }; | |
| static xtensa_opcode_internal beqz_opcode = { | |
| "beqz", | |
| 3, | |
| beqz_template, | |
| &bsz12_iclass | |
| }; | |
| static xtensa_opcode_internal beqz_n_opcode = { | |
| "beqz.n", | |
| 2, | |
| beqz_n_template, | |
| &bz6_iclass | |
| }; | |
| static xtensa_opcode_internal bge_opcode = { | |
| "bge", | |
| 3, | |
| bge_template, | |
| &bst8_iclass | |
| }; | |
| static xtensa_opcode_internal bgei_opcode = { | |
| "bgei", | |
| 3, | |
| bgei_template, | |
| &bsi8_iclass | |
| }; | |
| static xtensa_opcode_internal bgeu_opcode = { | |
| "bgeu", | |
| 3, | |
| bgeu_template, | |
| &bst8_iclass | |
| }; | |
| static xtensa_opcode_internal bgeui_opcode = { | |
| "bgeui", | |
| 3, | |
| bgeui_template, | |
| &bsi8u_iclass | |
| }; | |
| static xtensa_opcode_internal bgez_opcode = { | |
| "bgez", | |
| 3, | |
| bgez_template, | |
| &bsz12_iclass | |
| }; | |
| static xtensa_opcode_internal blt_opcode = { | |
| "blt", | |
| 3, | |
| blt_template, | |
| &bst8_iclass | |
| }; | |
| static xtensa_opcode_internal blti_opcode = { | |
| "blti", | |
| 3, | |
| blti_template, | |
| &bsi8_iclass | |
| }; | |
| static xtensa_opcode_internal bltu_opcode = { | |
| "bltu", | |
| 3, | |
| bltu_template, | |
| &bst8_iclass | |
| }; | |
| static xtensa_opcode_internal bltui_opcode = { | |
| "bltui", | |
| 3, | |
| bltui_template, | |
| &bsi8u_iclass | |
| }; | |
| static xtensa_opcode_internal bltz_opcode = { | |
| "bltz", | |
| 3, | |
| bltz_template, | |
| &bsz12_iclass | |
| }; | |
| static xtensa_opcode_internal bnall_opcode = { | |
| "bnall", | |
| 3, | |
| bnall_template, | |
| &bst8_iclass | |
| }; | |
| static xtensa_opcode_internal bne_opcode = { | |
| "bne", | |
| 3, | |
| bne_template, | |
| &bst8_iclass | |
| }; | |
| static xtensa_opcode_internal bnei_opcode = { | |
| "bnei", | |
| 3, | |
| bnei_template, | |
| &bsi8_iclass | |
| }; | |
| static xtensa_opcode_internal bnez_opcode = { | |
| "bnez", | |
| 3, | |
| bnez_template, | |
| &bsz12_iclass | |
| }; | |
| static xtensa_opcode_internal bnez_n_opcode = { | |
| "bnez.n", | |
| 2, | |
| bnez_n_template, | |
| &bz6_iclass | |
| }; | |
| static xtensa_opcode_internal bnone_opcode = { | |
| "bnone", | |
| 3, | |
| bnone_template, | |
| &bst8_iclass | |
| }; | |
| static xtensa_opcode_internal break_opcode = { | |
| "break", | |
| 3, | |
| break_template, | |
| &break_iclass | |
| }; | |
| static xtensa_opcode_internal break_n_opcode = { | |
| "break.n", | |
| 2, | |
| break_n_template, | |
| &break_n_iclass | |
| }; | |
| static xtensa_opcode_internal call0_opcode = { | |
| "call0", | |
| 3, | |
| call0_template, | |
| &call_iclass | |
| }; | |
| static xtensa_opcode_internal call12_opcode = { | |
| "call12", | |
| 3, | |
| call12_template, | |
| &call12_iclass | |
| }; | |
| static xtensa_opcode_internal call4_opcode = { | |
| "call4", | |
| 3, | |
| call4_template, | |
| &call4_iclass | |
| }; | |
| static xtensa_opcode_internal call8_opcode = { | |
| "call8", | |
| 3, | |
| call8_template, | |
| &call8_iclass | |
| }; | |
| static xtensa_opcode_internal callx0_opcode = { | |
| "callx0", | |
| 3, | |
| callx0_template, | |
| &callx_iclass | |
| }; | |
| static xtensa_opcode_internal callx12_opcode = { | |
| "callx12", | |
| 3, | |
| callx12_template, | |
| &callx12_iclass | |
| }; | |
| static xtensa_opcode_internal callx4_opcode = { | |
| "callx4", | |
| 3, | |
| callx4_template, | |
| &callx4_iclass | |
| }; | |
| static xtensa_opcode_internal callx8_opcode = { | |
| "callx8", | |
| 3, | |
| callx8_template, | |
| &callx8_iclass | |
| }; | |
| static xtensa_opcode_internal dhi_opcode = { | |
| "dhi", | |
| 3, | |
| dhi_template, | |
| &dcache_iclass | |
| }; | |
| static xtensa_opcode_internal dhwb_opcode = { | |
| "dhwb", | |
| 3, | |
| dhwb_template, | |
| &dcache_iclass | |
| }; | |
| static xtensa_opcode_internal dhwbi_opcode = { | |
| "dhwbi", | |
| 3, | |
| dhwbi_template, | |
| &dcache_iclass | |
| }; | |
| static xtensa_opcode_internal dii_opcode = { | |
| "dii", | |
| 3, | |
| dii_template, | |
| &dcache_iclass | |
| }; | |
| static xtensa_opcode_internal diwb_opcode = { | |
| "diwb", | |
| 3, | |
| diwb_template, | |
| &dce_iclass | |
| }; | |
| static xtensa_opcode_internal diwbi_opcode = { | |
| "diwbi", | |
| 3, | |
| diwbi_template, | |
| &dce_iclass | |
| }; | |
| static xtensa_opcode_internal dpfr_opcode = { | |
| "dpfr", | |
| 3, | |
| dpfr_template, | |
| &dpf_iclass | |
| }; | |
| static xtensa_opcode_internal dpfro_opcode = { | |
| "dpfro", | |
| 3, | |
| dpfro_template, | |
| &dpf_iclass | |
| }; | |
| static xtensa_opcode_internal dpfw_opcode = { | |
| "dpfw", | |
| 3, | |
| dpfw_template, | |
| &dpf_iclass | |
| }; | |
| static xtensa_opcode_internal dpfwo_opcode = { | |
| "dpfwo", | |
| 3, | |
| dpfwo_template, | |
| &dpf_iclass | |
| }; | |
| static xtensa_opcode_internal dsync_opcode = { | |
| "dsync", | |
| 3, | |
| dsync_template, | |
| &sync_iclass | |
| }; | |
| static xtensa_opcode_internal entry_opcode = { | |
| "entry", | |
| 3, | |
| entry_template, | |
| &entry_iclass | |
| }; | |
| static xtensa_opcode_internal esync_opcode = { | |
| "esync", | |
| 3, | |
| esync_template, | |
| &sync_iclass | |
| }; | |
| static xtensa_opcode_internal excw_opcode = { | |
| "excw", | |
| 3, | |
| excw_template, | |
| &excw_iclass | |
| }; | |
| static xtensa_opcode_internal extui_opcode = { | |
| "extui", | |
| 3, | |
| extui_template, | |
| &exti_iclass | |
| }; | |
| static xtensa_opcode_internal idtlb_opcode = { | |
| "idtlb", | |
| 3, | |
| idtlb_template, | |
| &itlb_iclass | |
| }; | |
| static xtensa_opcode_internal idtlba_opcode = { | |
| "idtlba", | |
| 3, | |
| idtlba_template, | |
| &itlba_iclass | |
| }; | |
| static xtensa_opcode_internal ihi_opcode = { | |
| "ihi", | |
| 3, | |
| ihi_template, | |
| &icache_iclass | |
| }; | |
| static xtensa_opcode_internal iii_opcode = { | |
| "iii", | |
| 3, | |
| iii_template, | |
| &icache_iclass | |
| }; | |
| static xtensa_opcode_internal iitlb_opcode = { | |
| "iitlb", | |
| 3, | |
| iitlb_template, | |
| &itlb_iclass | |
| }; | |
| static xtensa_opcode_internal iitlba_opcode = { | |
| "iitlba", | |
| 3, | |
| iitlba_template, | |
| &itlba_iclass | |
| }; | |
| static xtensa_opcode_internal ipf_opcode = { | |
| "ipf", | |
| 3, | |
| ipf_template, | |
| &icache_iclass | |
| }; | |
| static xtensa_opcode_internal isync_opcode = { | |
| "isync", | |
| 3, | |
| isync_template, | |
| &sync_iclass | |
| }; | |
| static xtensa_opcode_internal j_opcode = { | |
| "j", | |
| 3, | |
| j_template, | |
| &jump_iclass | |
| }; | |
| static xtensa_opcode_internal jx_opcode = { | |
| "jx", | |
| 3, | |
| jx_template, | |
| &jumpx_iclass | |
| }; | |
| static xtensa_opcode_internal l16si_opcode = { | |
| "l16si", | |
| 3, | |
| l16si_template, | |
| &l16i_iclass | |
| }; | |
| static xtensa_opcode_internal l16ui_opcode = { | |
| "l16ui", | |
| 3, | |
| l16ui_template, | |
| &l16i_iclass | |
| }; | |
| static xtensa_opcode_internal l32e_opcode = { | |
| "l32e", | |
| 3, | |
| l32e_template, | |
| &l32e_iclass | |
| }; | |
| static xtensa_opcode_internal l32i_opcode = { | |
| "l32i", | |
| 3, | |
| l32i_template, | |
| &l32i_iclass | |
| }; | |
| static xtensa_opcode_internal l32i_n_opcode = { | |
| "l32i.n", | |
| 2, | |
| l32i_n_template, | |
| &loadi4_iclass | |
| }; | |
| static xtensa_opcode_internal l32r_opcode = { | |
| "l32r", | |
| 3, | |
| l32r_template, | |
| &l32r_iclass | |
| }; | |
| static xtensa_opcode_internal l8ui_opcode = { | |
| "l8ui", | |
| 3, | |
| l8ui_template, | |
| &l8i_iclass | |
| }; | |
| static xtensa_opcode_internal ldct_opcode = { | |
| "ldct", | |
| 3, | |
| ldct_template, | |
| &actl_iclass | |
| }; | |
| static xtensa_opcode_internal lict_opcode = { | |
| "lict", | |
| 3, | |
| lict_template, | |
| &actl_iclass | |
| }; | |
| static xtensa_opcode_internal licw_opcode = { | |
| "licw", | |
| 3, | |
| licw_template, | |
| &actl_iclass | |
| }; | |
| static xtensa_opcode_internal loop_opcode = { | |
| "loop", | |
| 3, | |
| loop_template, | |
| &loop_iclass | |
| }; | |
| static xtensa_opcode_internal loopgtz_opcode = { | |
| "loopgtz", | |
| 3, | |
| loopgtz_template, | |
| &loop_iclass | |
| }; | |
| static xtensa_opcode_internal loopnez_opcode = { | |
| "loopnez", | |
| 3, | |
| loopnez_template, | |
| &loop_iclass | |
| }; | |
| static xtensa_opcode_internal memw_opcode = { | |
| "memw", | |
| 3, | |
| memw_template, | |
| &sync_iclass | |
| }; | |
| static xtensa_opcode_internal mov_n_opcode = { | |
| "mov.n", | |
| 2, | |
| mov_n_template, | |
| &mov_n_iclass | |
| }; | |
| static xtensa_opcode_internal moveqz_opcode = { | |
| "moveqz", | |
| 3, | |
| moveqz_template, | |
| &movz_iclass | |
| }; | |
| static xtensa_opcode_internal movgez_opcode = { | |
| "movgez", | |
| 3, | |
| movgez_template, | |
| &movz_iclass | |
| }; | |
| static xtensa_opcode_internal movi_opcode = { | |
| "movi", | |
| 3, | |
| movi_template, | |
| &movi_iclass | |
| }; | |
| static xtensa_opcode_internal movi_n_opcode = { | |
| "movi.n", | |
| 2, | |
| movi_n_template, | |
| &movi_n_iclass | |
| }; | |
| static xtensa_opcode_internal movltz_opcode = { | |
| "movltz", | |
| 3, | |
| movltz_template, | |
| &movz_iclass | |
| }; | |
| static xtensa_opcode_internal movnez_opcode = { | |
| "movnez", | |
| 3, | |
| movnez_template, | |
| &movz_iclass | |
| }; | |
| static xtensa_opcode_internal movsp_opcode = { | |
| "movsp", | |
| 3, | |
| movsp_template, | |
| &movsp_iclass | |
| }; | |
| static xtensa_opcode_internal neg_opcode = { | |
| "neg", | |
| 3, | |
| neg_template, | |
| &neg_iclass | |
| }; | |
| static xtensa_opcode_internal nop_n_opcode = { | |
| "nop.n", | |
| 2, | |
| nop_n_template, | |
| &nopn_iclass | |
| }; | |
| static xtensa_opcode_internal nsa_opcode = { | |
| "nsa", | |
| 3, | |
| nsa_template, | |
| &nsa_iclass | |
| }; | |
| static xtensa_opcode_internal nsau_opcode = { | |
| "nsau", | |
| 3, | |
| nsau_template, | |
| &nsa_iclass | |
| }; | |
| static xtensa_opcode_internal or_opcode = { | |
| "or", | |
| 3, | |
| or_template, | |
| &bit_iclass | |
| }; | |
| static xtensa_opcode_internal pdtlb_opcode = { | |
| "pdtlb", | |
| 3, | |
| pdtlb_template, | |
| &rtlb_iclass | |
| }; | |
| static xtensa_opcode_internal pitlb_opcode = { | |
| "pitlb", | |
| 3, | |
| pitlb_template, | |
| &rtlb_iclass | |
| }; | |
| static xtensa_opcode_internal rdtlb0_opcode = { | |
| "rdtlb0", | |
| 3, | |
| rdtlb0_template, | |
| &rtlb_iclass | |
| }; | |
| static xtensa_opcode_internal rdtlb1_opcode = { | |
| "rdtlb1", | |
| 3, | |
| rdtlb1_template, | |
| &rtlb_iclass | |
| }; | |
| static xtensa_opcode_internal ret_opcode = { | |
| "ret", | |
| 3, | |
| ret_template, | |
| &return_iclass | |
| }; | |
| static xtensa_opcode_internal ret_n_opcode = { | |
| "ret.n", | |
| 2, | |
| ret_n_template, | |
| &retn_iclass | |
| }; | |
| static xtensa_opcode_internal retw_opcode = { | |
| "retw", | |
| 3, | |
| retw_template, | |
| &return_iclass | |
| }; | |
| static xtensa_opcode_internal retw_n_opcode = { | |
| "retw.n", | |
| 2, | |
| retw_n_template, | |
| &retn_iclass | |
| }; | |
| static xtensa_opcode_internal rfde_opcode = { | |
| "rfde", | |
| 3, | |
| rfde_template, | |
| &rfe_iclass | |
| }; | |
| static xtensa_opcode_internal rfe_opcode = { | |
| "rfe", | |
| 3, | |
| rfe_template, | |
| &rfe_iclass | |
| }; | |
| static xtensa_opcode_internal rfi_opcode = { | |
| "rfi", | |
| 3, | |
| rfi_template, | |
| &rfi_iclass | |
| }; | |
| static xtensa_opcode_internal rfwo_opcode = { | |
| "rfwo", | |
| 3, | |
| rfwo_template, | |
| &rfe_iclass | |
| }; | |
| static xtensa_opcode_internal rfwu_opcode = { | |
| "rfwu", | |
| 3, | |
| rfwu_template, | |
| &rfe_iclass | |
| }; | |
| static xtensa_opcode_internal ritlb0_opcode = { | |
| "ritlb0", | |
| 3, | |
| ritlb0_template, | |
| &rtlb_iclass | |
| }; | |
| static xtensa_opcode_internal ritlb1_opcode = { | |
| "ritlb1", | |
| 3, | |
| ritlb1_template, | |
| &rtlb_iclass | |
| }; | |
| static xtensa_opcode_internal rotw_opcode = { | |
| "rotw", | |
| 3, | |
| rotw_template, | |
| &rotw_iclass | |
| }; | |
| static xtensa_opcode_internal rsil_opcode = { | |
| "rsil", | |
| 3, | |
| rsil_template, | |
| &rsil_iclass | |
| }; | |
| static xtensa_opcode_internal rsr_opcode = { | |
| "rsr", | |
| 3, | |
| rsr_template, | |
| &rsr_iclass | |
| }; | |
| static xtensa_opcode_internal rsync_opcode = { | |
| "rsync", | |
| 3, | |
| rsync_template, | |
| &sync_iclass | |
| }; | |
| static xtensa_opcode_internal s16i_opcode = { | |
| "s16i", | |
| 3, | |
| s16i_template, | |
| &s16i_iclass | |
| }; | |
| static xtensa_opcode_internal s32e_opcode = { | |
| "s32e", | |
| 3, | |
| s32e_template, | |
| &s32e_iclass | |
| }; | |
| static xtensa_opcode_internal s32i_opcode = { | |
| "s32i", | |
| 3, | |
| s32i_template, | |
| &s32i_iclass | |
| }; | |
| static xtensa_opcode_internal s32i_n_opcode = { | |
| "s32i.n", | |
| 2, | |
| s32i_n_template, | |
| &storei4_iclass | |
| }; | |
| static xtensa_opcode_internal s8i_opcode = { | |
| "s8i", | |
| 3, | |
| s8i_template, | |
| &s8i_iclass | |
| }; | |
| static xtensa_opcode_internal sdct_opcode = { | |
| "sdct", | |
| 3, | |
| sdct_template, | |
| &acts_iclass | |
| }; | |
| static xtensa_opcode_internal sict_opcode = { | |
| "sict", | |
| 3, | |
| sict_template, | |
| &acts_iclass | |
| }; | |
| static xtensa_opcode_internal sicw_opcode = { | |
| "sicw", | |
| 3, | |
| sicw_template, | |
| &acts_iclass | |
| }; | |
| static xtensa_opcode_internal simcall_opcode = { | |
| "simcall", | |
| 3, | |
| simcall_template, | |
| &syscall_iclass | |
| }; | |
| static xtensa_opcode_internal sll_opcode = { | |
| "sll", | |
| 3, | |
| sll_template, | |
| &shifts_iclass | |
| }; | |
| static xtensa_opcode_internal slli_opcode = { | |
| "slli", | |
| 3, | |
| slli_template, | |
| &slli_iclass | |
| }; | |
| static xtensa_opcode_internal sra_opcode = { | |
| "sra", | |
| 3, | |
| sra_template, | |
| &shiftt_iclass | |
| }; | |
| static xtensa_opcode_internal srai_opcode = { | |
| "srai", | |
| 3, | |
| srai_template, | |
| &srai_iclass | |
| }; | |
| static xtensa_opcode_internal src_opcode = { | |
| "src", | |
| 3, | |
| src_template, | |
| &shiftst_iclass | |
| }; | |
| static xtensa_opcode_internal srl_opcode = { | |
| "srl", | |
| 3, | |
| srl_template, | |
| &shiftt_iclass | |
| }; | |
| static xtensa_opcode_internal srli_opcode = { | |
| "srli", | |
| 3, | |
| srli_template, | |
| &srli_iclass | |
| }; | |
| static xtensa_opcode_internal ssa8b_opcode = { | |
| "ssa8b", | |
| 3, | |
| ssa8b_template, | |
| &sar_iclass | |
| }; | |
| static xtensa_opcode_internal ssa8l_opcode = { | |
| "ssa8l", | |
| 3, | |
| ssa8l_template, | |
| &sar_iclass | |
| }; | |
| static xtensa_opcode_internal ssai_opcode = { | |
| "ssai", | |
| 3, | |
| ssai_template, | |
| &sari_iclass | |
| }; | |
| static xtensa_opcode_internal ssl_opcode = { | |
| "ssl", | |
| 3, | |
| ssl_template, | |
| &sar_iclass | |
| }; | |
| static xtensa_opcode_internal ssr_opcode = { | |
| "ssr", | |
| 3, | |
| ssr_template, | |
| &sar_iclass | |
| }; | |
| static xtensa_opcode_internal sub_opcode = { | |
| "sub", | |
| 3, | |
| sub_template, | |
| &addsub_iclass | |
| }; | |
| static xtensa_opcode_internal subx2_opcode = { | |
| "subx2", | |
| 3, | |
| subx2_template, | |
| &addsub_iclass | |
| }; | |
| static xtensa_opcode_internal subx4_opcode = { | |
| "subx4", | |
| 3, | |
| subx4_template, | |
| &addsub_iclass | |
| }; | |
| static xtensa_opcode_internal subx8_opcode = { | |
| "subx8", | |
| 3, | |
| subx8_template, | |
| &addsub_iclass | |
| }; | |
| static xtensa_opcode_internal syscall_opcode = { | |
| "syscall", | |
| 3, | |
| syscall_template, | |
| &syscall_iclass | |
| }; | |
| static xtensa_opcode_internal waiti_opcode = { | |
| "waiti", | |
| 3, | |
| waiti_template, | |
| &wait_iclass | |
| }; | |
| static xtensa_opcode_internal wdtlb_opcode = { | |
| "wdtlb", | |
| 3, | |
| wdtlb_template, | |
| &wtlb_iclass | |
| }; | |
| static xtensa_opcode_internal witlb_opcode = { | |
| "witlb", | |
| 3, | |
| witlb_template, | |
| &wtlb_iclass | |
| }; | |
| static xtensa_opcode_internal wsr_opcode = { | |
| "wsr", | |
| 3, | |
| wsr_template, | |
| &wsr_iclass | |
| }; | |
| static xtensa_opcode_internal xor_opcode = { | |
| "xor", | |
| 3, | |
| xor_template, | |
| &bit_iclass | |
| }; | |
| static xtensa_opcode_internal xsr_opcode = { | |
| "xsr", | |
| 3, | |
| xsr_template, | |
| &xsr_iclass | |
| }; | |
| static xtensa_opcode_internal * opcodes[149] = { | |
| &abs_opcode, | |
| &add_opcode, | |
| &add_n_opcode, | |
| &addi_opcode, | |
| &addi_n_opcode, | |
| &addmi_opcode, | |
| &addx2_opcode, | |
| &addx4_opcode, | |
| &addx8_opcode, | |
| &and_opcode, | |
| &ball_opcode, | |
| &bany_opcode, | |
| &bbc_opcode, | |
| &bbci_opcode, | |
| &bbs_opcode, | |
| &bbsi_opcode, | |
| &beq_opcode, | |
| &beqi_opcode, | |
| &beqz_opcode, | |
| &beqz_n_opcode, | |
| &bge_opcode, | |
| &bgei_opcode, | |
| &bgeu_opcode, | |
| &bgeui_opcode, | |
| &bgez_opcode, | |
| &blt_opcode, | |
| &blti_opcode, | |
| &bltu_opcode, | |
| &bltui_opcode, | |
| &bltz_opcode, | |
| &bnall_opcode, | |
| &bne_opcode, | |
| &bnei_opcode, | |
| &bnez_opcode, | |
| &bnez_n_opcode, | |
| &bnone_opcode, | |
| &break_opcode, | |
| &break_n_opcode, | |
| &call0_opcode, | |
| &call12_opcode, | |
| &call4_opcode, | |
| &call8_opcode, | |
| &callx0_opcode, | |
| &callx12_opcode, | |
| &callx4_opcode, | |
| &callx8_opcode, | |
| &dhi_opcode, | |
| &dhwb_opcode, | |
| &dhwbi_opcode, | |
| &dii_opcode, | |
| &diwb_opcode, | |
| &diwbi_opcode, | |
| &dpfr_opcode, | |
| &dpfro_opcode, | |
| &dpfw_opcode, | |
| &dpfwo_opcode, | |
| &dsync_opcode, | |
| &entry_opcode, | |
| &esync_opcode, | |
| &excw_opcode, | |
| &extui_opcode, | |
| &idtlb_opcode, | |
| &idtlba_opcode, | |
| &ihi_opcode, | |
| &iii_opcode, | |
| &iitlb_opcode, | |
| &iitlba_opcode, | |
| &ipf_opcode, | |
| &isync_opcode, | |
| &j_opcode, | |
| &jx_opcode, | |
| &l16si_opcode, | |
| &l16ui_opcode, | |
| &l32e_opcode, | |
| &l32i_opcode, | |
| &l32i_n_opcode, | |
| &l32r_opcode, | |
| &l8ui_opcode, | |
| &ldct_opcode, | |
| &lict_opcode, | |
| &licw_opcode, | |
| &loop_opcode, | |
| &loopgtz_opcode, | |
| &loopnez_opcode, | |
| &memw_opcode, | |
| &mov_n_opcode, | |
| &moveqz_opcode, | |
| &movgez_opcode, | |
| &movi_opcode, | |
| &movi_n_opcode, | |
| &movltz_opcode, | |
| &movnez_opcode, | |
| &movsp_opcode, | |
| &neg_opcode, | |
| &nop_n_opcode, | |
| &nsa_opcode, | |
| &nsau_opcode, | |
| &or_opcode, | |
| &pdtlb_opcode, | |
| &pitlb_opcode, | |
| &rdtlb0_opcode, | |
| &rdtlb1_opcode, | |
| &ret_opcode, | |
| &ret_n_opcode, | |
| &retw_opcode, | |
| &retw_n_opcode, | |
| &rfde_opcode, | |
| &rfe_opcode, | |
| &rfi_opcode, | |
| &rfwo_opcode, | |
| &rfwu_opcode, | |
| &ritlb0_opcode, | |
| &ritlb1_opcode, | |
| &rotw_opcode, | |
| &rsil_opcode, | |
| &rsr_opcode, | |
| &rsync_opcode, | |
| &s16i_opcode, | |
| &s32e_opcode, | |
| &s32i_opcode, | |
| &s32i_n_opcode, | |
| &s8i_opcode, | |
| &sdct_opcode, | |
| &sict_opcode, | |
| &sicw_opcode, | |
| &simcall_opcode, | |
| &sll_opcode, | |
| &slli_opcode, | |
| &sra_opcode, | |
| &srai_opcode, | |
| &src_opcode, | |
| &srl_opcode, | |
| &srli_opcode, | |
| &ssa8b_opcode, | |
| &ssa8l_opcode, | |
| &ssai_opcode, | |
| &ssl_opcode, | |
| &ssr_opcode, | |
| &sub_opcode, | |
| &subx2_opcode, | |
| &subx4_opcode, | |
| &subx8_opcode, | |
| &syscall_opcode, | |
| &waiti_opcode, | |
| &wdtlb_opcode, | |
| &witlb_opcode, | |
| &wsr_opcode, | |
| &xor_opcode, | |
| &xsr_opcode | |
| }; | |
| xtensa_opcode_internal ** | |
| get_opcodes (void) | |
| { | |
| return &opcodes[0]; | |
| } | |
| int | |
| get_num_opcodes (void) | |
| { | |
| return 149; | |
| } | |
| #define xtensa_abs_op 0 | |
| #define xtensa_add_op 1 | |
| #define xtensa_add_n_op 2 | |
| #define xtensa_addi_op 3 | |
| #define xtensa_addi_n_op 4 | |
| #define xtensa_addmi_op 5 | |
| #define xtensa_addx2_op 6 | |
| #define xtensa_addx4_op 7 | |
| #define xtensa_addx8_op 8 | |
| #define xtensa_and_op 9 | |
| #define xtensa_ball_op 10 | |
| #define xtensa_bany_op 11 | |
| #define xtensa_bbc_op 12 | |
| #define xtensa_bbci_op 13 | |
| #define xtensa_bbs_op 14 | |
| #define xtensa_bbsi_op 15 | |
| #define xtensa_beq_op 16 | |
| #define xtensa_beqi_op 17 | |
| #define xtensa_beqz_op 18 | |
| #define xtensa_beqz_n_op 19 | |
| #define xtensa_bge_op 20 | |
| #define xtensa_bgei_op 21 | |
| #define xtensa_bgeu_op 22 | |
| #define xtensa_bgeui_op 23 | |
| #define xtensa_bgez_op 24 | |
| #define xtensa_blt_op 25 | |
| #define xtensa_blti_op 26 | |
| #define xtensa_bltu_op 27 | |
| #define xtensa_bltui_op 28 | |
| #define xtensa_bltz_op 29 | |
| #define xtensa_bnall_op 30 | |
| #define xtensa_bne_op 31 | |
| #define xtensa_bnei_op 32 | |
| #define xtensa_bnez_op 33 | |
| #define xtensa_bnez_n_op 34 | |
| #define xtensa_bnone_op 35 | |
| #define xtensa_break_op 36 | |
| #define xtensa_break_n_op 37 | |
| #define xtensa_call0_op 38 | |
| #define xtensa_call12_op 39 | |
| #define xtensa_call4_op 40 | |
| #define xtensa_call8_op 41 | |
| #define xtensa_callx0_op 42 | |
| #define xtensa_callx12_op 43 | |
| #define xtensa_callx4_op 44 | |
| #define xtensa_callx8_op 45 | |
| #define xtensa_dhi_op 46 | |
| #define xtensa_dhwb_op 47 | |
| #define xtensa_dhwbi_op 48 | |
| #define xtensa_dii_op 49 | |
| #define xtensa_diwb_op 50 | |
| #define xtensa_diwbi_op 51 | |
| #define xtensa_dpfr_op 52 | |
| #define xtensa_dpfro_op 53 | |
| #define xtensa_dpfw_op 54 | |
| #define xtensa_dpfwo_op 55 | |
| #define xtensa_dsync_op 56 | |
| #define xtensa_entry_op 57 | |
| #define xtensa_esync_op 58 | |
| #define xtensa_excw_op 59 | |
| #define xtensa_extui_op 60 | |
| #define xtensa_idtlb_op 61 | |
| #define xtensa_idtlba_op 62 | |
| #define xtensa_ihi_op 63 | |
| #define xtensa_iii_op 64 | |
| #define xtensa_iitlb_op 65 | |
| #define xtensa_iitlba_op 66 | |
| #define xtensa_ipf_op 67 | |
| #define xtensa_isync_op 68 | |
| #define xtensa_j_op 69 | |
| #define xtensa_jx_op 70 | |
| #define xtensa_l16si_op 71 | |
| #define xtensa_l16ui_op 72 | |
| #define xtensa_l32e_op 73 | |
| #define xtensa_l32i_op 74 | |
| #define xtensa_l32i_n_op 75 | |
| #define xtensa_l32r_op 76 | |
| #define xtensa_l8ui_op 77 | |
| #define xtensa_ldct_op 78 | |
| #define xtensa_lict_op 79 | |
| #define xtensa_licw_op 80 | |
| #define xtensa_loop_op 81 | |
| #define xtensa_loopgtz_op 82 | |
| #define xtensa_loopnez_op 83 | |
| #define xtensa_memw_op 84 | |
| #define xtensa_mov_n_op 85 | |
| #define xtensa_moveqz_op 86 | |
| #define xtensa_movgez_op 87 | |
| #define xtensa_movi_op 88 | |
| #define xtensa_movi_n_op 89 | |
| #define xtensa_movltz_op 90 | |
| #define xtensa_movnez_op 91 | |
| #define xtensa_movsp_op 92 | |
| #define xtensa_neg_op 93 | |
| #define xtensa_nop_n_op 94 | |
| #define xtensa_nsa_op 95 | |
| #define xtensa_nsau_op 96 | |
| #define xtensa_or_op 97 | |
| #define xtensa_pdtlb_op 98 | |
| #define xtensa_pitlb_op 99 | |
| #define xtensa_rdtlb0_op 100 | |
| #define xtensa_rdtlb1_op 101 | |
| #define xtensa_ret_op 102 | |
| #define xtensa_ret_n_op 103 | |
| #define xtensa_retw_op 104 | |
| #define xtensa_retw_n_op 105 | |
| #define xtensa_rfde_op 106 | |
| #define xtensa_rfe_op 107 | |
| #define xtensa_rfi_op 108 | |
| #define xtensa_rfwo_op 109 | |
| #define xtensa_rfwu_op 110 | |
| #define xtensa_ritlb0_op 111 | |
| #define xtensa_ritlb1_op 112 | |
| #define xtensa_rotw_op 113 | |
| #define xtensa_rsil_op 114 | |
| #define xtensa_rsr_op 115 | |
| #define xtensa_rsync_op 116 | |
| #define xtensa_s16i_op 117 | |
| #define xtensa_s32e_op 118 | |
| #define xtensa_s32i_op 119 | |
| #define xtensa_s32i_n_op 120 | |
| #define xtensa_s8i_op 121 | |
| #define xtensa_sdct_op 122 | |
| #define xtensa_sict_op 123 | |
| #define xtensa_sicw_op 124 | |
| #define xtensa_simcall_op 125 | |
| #define xtensa_sll_op 126 | |
| #define xtensa_slli_op 127 | |
| #define xtensa_sra_op 128 | |
| #define xtensa_srai_op 129 | |
| #define xtensa_src_op 130 | |
| #define xtensa_srl_op 131 | |
| #define xtensa_srli_op 132 | |
| #define xtensa_ssa8b_op 133 | |
| #define xtensa_ssa8l_op 134 | |
| #define xtensa_ssai_op 135 | |
| #define xtensa_ssl_op 136 | |
| #define xtensa_ssr_op 137 | |
| #define xtensa_sub_op 138 | |
| #define xtensa_subx2_op 139 | |
| #define xtensa_subx4_op 140 | |
| #define xtensa_subx8_op 141 | |
| #define xtensa_syscall_op 142 | |
| #define xtensa_waiti_op 143 | |
| #define xtensa_wdtlb_op 144 | |
| #define xtensa_witlb_op 145 | |
| #define xtensa_wsr_op 146 | |
| #define xtensa_xor_op 147 | |
| #define xtensa_xsr_op 148 | |
| int | |
| decode_insn (const xtensa_insnbuf insn) | |
| { | |
| switch (get_op0_field (insn)) { | |
| case 0: /* QRST: op0=0000 */ | |
| switch (get_op1_field (insn)) { | |
| case 3: /* RST3: op1=0011 */ | |
| switch (get_op2_field (insn)) { | |
| case 8: /* MOVEQZ: op2=1000 */ | |
| return xtensa_moveqz_op; | |
| case 9: /* MOVNEZ: op2=1001 */ | |
| return xtensa_movnez_op; | |
| case 10: /* MOVLTZ: op2=1010 */ | |
| return xtensa_movltz_op; | |
| case 11: /* MOVGEZ: op2=1011 */ | |
| return xtensa_movgez_op; | |
| case 0: /* RSR: op2=0000 */ | |
| return xtensa_rsr_op; | |
| case 1: /* WSR: op2=0001 */ | |
| return xtensa_wsr_op; | |
| } | |
| break; | |
| case 9: /* LSI4: op1=1001 */ | |
| switch (get_op2_field (insn)) { | |
| case 4: /* S32E: op2=0100 */ | |
| return xtensa_s32e_op; | |
| case 0: /* L32E: op2=0000 */ | |
| return xtensa_l32e_op; | |
| } | |
| break; | |
| case 4: /* EXTUI: op1=010x */ | |
| case 5: /* EXTUI: op1=010x */ | |
| return xtensa_extui_op; | |
| case 0: /* RST0: op1=0000 */ | |
| switch (get_op2_field (insn)) { | |
| case 15: /* SUBX8: op2=1111 */ | |
| return xtensa_subx8_op; | |
| case 0: /* ST0: op2=0000 */ | |
| switch (get_r_field (insn)) { | |
| case 0: /* SNM0: r=0000 */ | |
| switch (get_m_field (insn)) { | |
| case 2: /* JR: m=10 */ | |
| switch (get_n_field (insn)) { | |
| case 0: /* RET: n=00 */ | |
| return xtensa_ret_op; | |
| case 1: /* RETW: n=01 */ | |
| return xtensa_retw_op; | |
| case 2: /* JX: n=10 */ | |
| return xtensa_jx_op; | |
| } | |
| break; | |
| case 3: /* CALLX: m=11 */ | |
| switch (get_n_field (insn)) { | |
| case 0: /* CALLX0: n=00 */ | |
| return xtensa_callx0_op; | |
| case 1: /* CALLX4: n=01 */ | |
| return xtensa_callx4_op; | |
| case 2: /* CALLX8: n=10 */ | |
| return xtensa_callx8_op; | |
| case 3: /* CALLX12: n=11 */ | |
| return xtensa_callx12_op; | |
| } | |
| break; | |
| } | |
| break; | |
| case 1: /* MOVSP: r=0001 */ | |
| return xtensa_movsp_op; | |
| case 2: /* SYNC: r=0010 */ | |
| switch (get_s_field (insn)) { | |
| case 0: /* SYNCT: s=0000 */ | |
| switch (get_t_field (insn)) { | |
| case 2: /* ESYNC: t=0010 */ | |
| return xtensa_esync_op; | |
| case 3: /* DSYNC: t=0011 */ | |
| return xtensa_dsync_op; | |
| case 8: /* EXCW: t=1000 */ | |
| return xtensa_excw_op; | |
| case 12: /* MEMW: t=1100 */ | |
| return xtensa_memw_op; | |
| case 0: /* ISYNC: t=0000 */ | |
| return xtensa_isync_op; | |
| case 1: /* RSYNC: t=0001 */ | |
| return xtensa_rsync_op; | |
| } | |
| break; | |
| } | |
| break; | |
| case 4: /* BREAK: r=0100 */ | |
| return xtensa_break_op; | |
| case 3: /* RFEI: r=0011 */ | |
| switch (get_t_field (insn)) { | |
| case 0: /* RFET: t=0000 */ | |
| switch (get_s_field (insn)) { | |
| case 2: /* RFDE: s=0010 */ | |
| return xtensa_rfde_op; | |
| case 4: /* RFWO: s=0100 */ | |
| return xtensa_rfwo_op; | |
| case 5: /* RFWU: s=0101 */ | |
| return xtensa_rfwu_op; | |
| case 0: /* RFE: s=0000 */ | |
| return xtensa_rfe_op; | |
| } | |
| break; | |
| case 1: /* RFI: t=0001 */ | |
| return xtensa_rfi_op; | |
| } | |
| break; | |
| case 5: /* SCALL: r=0101 */ | |
| switch (get_s_field (insn)) { | |
| case 0: /* SYSCALL: s=0000 */ | |
| return xtensa_syscall_op; | |
| case 1: /* SIMCALL: s=0001 */ | |
| return xtensa_simcall_op; | |
| } | |
| break; | |
| case 6: /* RSIL: r=0110 */ | |
| return xtensa_rsil_op; | |
| case 7: /* WAITI: r=0111 */ | |
| return xtensa_waiti_op; | |
| } | |
| break; | |
| case 1: /* AND: op2=0001 */ | |
| return xtensa_and_op; | |
| case 2: /* OR: op2=0010 */ | |
| return xtensa_or_op; | |
| case 3: /* XOR: op2=0011 */ | |
| return xtensa_xor_op; | |
| case 4: /* ST1: op2=0100 */ | |
| switch (get_r_field (insn)) { | |
| case 15: /* NSAU: r=1111 */ | |
| return xtensa_nsau_op; | |
| case 0: /* SSR: r=0000 */ | |
| return xtensa_ssr_op; | |
| case 1: /* SSL: r=0001 */ | |
| return xtensa_ssl_op; | |
| case 2: /* SSA8L: r=0010 */ | |
| return xtensa_ssa8l_op; | |
| case 3: /* SSA8B: r=0011 */ | |
| return xtensa_ssa8b_op; | |
| case 4: /* SSAI: r=0100 */ | |
| return xtensa_ssai_op; | |
| case 8: /* ROTW: r=1000 */ | |
| return xtensa_rotw_op; | |
| case 14: /* NSA: r=1110 */ | |
| return xtensa_nsa_op; | |
| } | |
| break; | |
| case 8: /* ADD: op2=1000 */ | |
| return xtensa_add_op; | |
| case 5: /* ST4: op2=0101 */ | |
| switch (get_r_field (insn)) { | |
| case 15: /* RDTLB1: r=1111 */ | |
| return xtensa_rdtlb1_op; | |
| case 0: /* IITLBA: r=0000 */ | |
| return xtensa_iitlba_op; | |
| case 3: /* RITLB0: r=0011 */ | |
| return xtensa_ritlb0_op; | |
| case 4: /* IITLB: r=0100 */ | |
| return xtensa_iitlb_op; | |
| case 8: /* IDTLBA: r=1000 */ | |
| return xtensa_idtlba_op; | |
| case 5: /* PITLB: r=0101 */ | |
| return xtensa_pitlb_op; | |
| case 6: /* WITLB: r=0110 */ | |
| return xtensa_witlb_op; | |
| case 7: /* RITLB1: r=0111 */ | |
| return xtensa_ritlb1_op; | |
| case 11: /* RDTLB0: r=1011 */ | |
| return xtensa_rdtlb0_op; | |
| case 12: /* IDTLB: r=1100 */ | |
| return xtensa_idtlb_op; | |
| case 13: /* PDTLB: r=1101 */ | |
| return xtensa_pdtlb_op; | |
| case 14: /* WDTLB: r=1110 */ | |
| return xtensa_wdtlb_op; | |
| } | |
| break; | |
| case 6: /* RT0: op2=0110 */ | |
| switch (get_s_field (insn)) { | |
| case 0: /* NEG: s=0000 */ | |
| return xtensa_neg_op; | |
| case 1: /* ABS: s=0001 */ | |
| return xtensa_abs_op; | |
| } | |
| break; | |
| case 9: /* ADDX2: op2=1001 */ | |
| return xtensa_addx2_op; | |
| case 10: /* ADDX4: op2=1010 */ | |
| return xtensa_addx4_op; | |
| case 11: /* ADDX8: op2=1011 */ | |
| return xtensa_addx8_op; | |
| case 12: /* SUB: op2=1100 */ | |
| return xtensa_sub_op; | |
| case 13: /* SUBX2: op2=1101 */ | |
| return xtensa_subx2_op; | |
| case 14: /* SUBX4: op2=1110 */ | |
| return xtensa_subx4_op; | |
| } | |
| break; | |
| case 1: /* RST1: op1=0001 */ | |
| switch (get_op2_field (insn)) { | |
| case 15: /* IMP: op2=1111 */ | |
| switch (get_r_field (insn)) { | |
| case 0: /* LICT: r=0000 */ | |
| return xtensa_lict_op; | |
| case 1: /* SICT: r=0001 */ | |
| return xtensa_sict_op; | |
| case 2: /* LICW: r=0010 */ | |
| return xtensa_licw_op; | |
| case 3: /* SICW: r=0011 */ | |
| return xtensa_sicw_op; | |
| case 8: /* LDCT: r=1000 */ | |
| return xtensa_ldct_op; | |
| case 9: /* SDCT: r=1001 */ | |
| return xtensa_sdct_op; | |
| } | |
| break; | |
| case 0: /* SLLI: op2=000x */ | |
| case 1: /* SLLI: op2=000x */ | |
| return xtensa_slli_op; | |
| case 2: /* SRAI: op2=001x */ | |
| case 3: /* SRAI: op2=001x */ | |
| return xtensa_srai_op; | |
| case 4: /* SRLI: op2=0100 */ | |
| return xtensa_srli_op; | |
| case 8: /* SRC: op2=1000 */ | |
| return xtensa_src_op; | |
| case 9: /* SRL: op2=1001 */ | |
| return xtensa_srl_op; | |
| case 6: /* XSR: op2=0110 */ | |
| return xtensa_xsr_op; | |
| case 10: /* SLL: op2=1010 */ | |
| return xtensa_sll_op; | |
| case 11: /* SRA: op2=1011 */ | |
| return xtensa_sra_op; | |
| } | |
| break; | |
| } | |
| break; | |
| case 1: /* L32R: op0=0001 */ | |
| return xtensa_l32r_op; | |
| case 2: /* LSAI: op0=0010 */ | |
| switch (get_r_field (insn)) { | |
| case 0: /* L8UI: r=0000 */ | |
| return xtensa_l8ui_op; | |
| case 1: /* L16UI: r=0001 */ | |
| return xtensa_l16ui_op; | |
| case 2: /* L32I: r=0010 */ | |
| return xtensa_l32i_op; | |
| case 4: /* S8I: r=0100 */ | |
| return xtensa_s8i_op; | |
| case 5: /* S16I: r=0101 */ | |
| return xtensa_s16i_op; | |
| case 9: /* L16SI: r=1001 */ | |
| return xtensa_l16si_op; | |
| case 6: /* S32I: r=0110 */ | |
| return xtensa_s32i_op; | |
| case 7: /* CACHE: r=0111 */ | |
| switch (get_t_field (insn)) { | |
| case 15: /* III: t=1111 */ | |
| return xtensa_iii_op; | |
| case 0: /* DPFR: t=0000 */ | |
| return xtensa_dpfr_op; | |
| case 1: /* DPFW: t=0001 */ | |
| return xtensa_dpfw_op; | |
| case 2: /* DPFRO: t=0010 */ | |
| return xtensa_dpfro_op; | |
| case 4: /* DHWB: t=0100 */ | |
| return xtensa_dhwb_op; | |
| case 3: /* DPFWO: t=0011 */ | |
| return xtensa_dpfwo_op; | |
| case 8: /* DCE: t=1000 */ | |
| switch (get_op1_field (insn)) { | |
| case 4: /* DIWB: op1=0100 */ | |
| return xtensa_diwb_op; | |
| case 5: /* DIWBI: op1=0101 */ | |
| return xtensa_diwbi_op; | |
| } | |
| break; | |
| case 5: /* DHWBI: t=0101 */ | |
| return xtensa_dhwbi_op; | |
| case 6: /* DHI: t=0110 */ | |
| return xtensa_dhi_op; | |
| case 7: /* DII: t=0111 */ | |
| return xtensa_dii_op; | |
| case 12: /* IPF: t=1100 */ | |
| return xtensa_ipf_op; | |
| case 14: /* IHI: t=1110 */ | |
| return xtensa_ihi_op; | |
| } | |
| break; | |
| case 10: /* MOVI: r=1010 */ | |
| return xtensa_movi_op; | |
| case 12: /* ADDI: r=1100 */ | |
| return xtensa_addi_op; | |
| case 13: /* ADDMI: r=1101 */ | |
| return xtensa_addmi_op; | |
| } | |
| break; | |
| case 8: /* L32I.N: op0=1000 */ | |
| return xtensa_l32i_n_op; | |
| case 5: /* CALL: op0=0101 */ | |
| switch (get_n_field (insn)) { | |
| case 0: /* CALL0: n=00 */ | |
| return xtensa_call0_op; | |
| case 1: /* CALL4: n=01 */ | |
| return xtensa_call4_op; | |
| case 2: /* CALL8: n=10 */ | |
| return xtensa_call8_op; | |
| case 3: /* CALL12: n=11 */ | |
| return xtensa_call12_op; | |
| } | |
| break; | |
| case 6: /* SI: op0=0110 */ | |
| switch (get_n_field (insn)) { | |
| case 0: /* J: n=00 */ | |
| return xtensa_j_op; | |
| case 1: /* BZ: n=01 */ | |
| switch (get_m_field (insn)) { | |
| case 0: /* BEQZ: m=00 */ | |
| return xtensa_beqz_op; | |
| case 1: /* BNEZ: m=01 */ | |
| return xtensa_bnez_op; | |
| case 2: /* BLTZ: m=10 */ | |
| return xtensa_bltz_op; | |
| case 3: /* BGEZ: m=11 */ | |
| return xtensa_bgez_op; | |
| } | |
| break; | |
| case 2: /* BI0: n=10 */ | |
| switch (get_m_field (insn)) { | |
| case 0: /* BEQI: m=00 */ | |
| return xtensa_beqi_op; | |
| case 1: /* BNEI: m=01 */ | |
| return xtensa_bnei_op; | |
| case 2: /* BLTI: m=10 */ | |
| return xtensa_blti_op; | |
| case 3: /* BGEI: m=11 */ | |
| return xtensa_bgei_op; | |
| } | |
| break; | |
| case 3: /* BI1: n=11 */ | |
| switch (get_m_field (insn)) { | |
| case 0: /* ENTRY: m=00 */ | |
| return xtensa_entry_op; | |
| case 1: /* B1: m=01 */ | |
| switch (get_r_field (insn)) { | |
| case 8: /* LOOP: r=1000 */ | |
| return xtensa_loop_op; | |
| case 9: /* LOOPNEZ: r=1001 */ | |
| return xtensa_loopnez_op; | |
| case 10: /* LOOPGTZ: r=1010 */ | |
| return xtensa_loopgtz_op; | |
| } | |
| break; | |
| case 2: /* BLTUI: m=10 */ | |
| return xtensa_bltui_op; | |
| case 3: /* BGEUI: m=11 */ | |
| return xtensa_bgeui_op; | |
| } | |
| break; | |
| } | |
| break; | |
| case 9: /* S32I.N: op0=1001 */ | |
| return xtensa_s32i_n_op; | |
| case 10: /* ADD.N: op0=1010 */ | |
| return xtensa_add_n_op; | |
| case 7: /* B: op0=0111 */ | |
| switch (get_r_field (insn)) { | |
| case 6: /* BBCI: r=011x */ | |
| case 7: /* BBCI: r=011x */ | |
| return xtensa_bbci_op; | |
| case 0: /* BNONE: r=0000 */ | |
| return xtensa_bnone_op; | |
| case 1: /* BEQ: r=0001 */ | |
| return xtensa_beq_op; | |
| case 2: /* BLT: r=0010 */ | |
| return xtensa_blt_op; | |
| case 4: /* BALL: r=0100 */ | |
| return xtensa_ball_op; | |
| case 14: /* BBSI: r=111x */ | |
| case 15: /* BBSI: r=111x */ | |
| return xtensa_bbsi_op; | |
| case 3: /* BLTU: r=0011 */ | |
| return xtensa_bltu_op; | |
| case 5: /* BBC: r=0101 */ | |
| return xtensa_bbc_op; | |
| case 8: /* BANY: r=1000 */ | |
| return xtensa_bany_op; | |
| case 9: /* BNE: r=1001 */ | |
| return xtensa_bne_op; | |
| case 10: /* BGE: r=1010 */ | |
| return xtensa_bge_op; | |
| case 11: /* BGEU: r=1011 */ | |
| return xtensa_bgeu_op; | |
| case 12: /* BNALL: r=1100 */ | |
| return xtensa_bnall_op; | |
| case 13: /* BBS: r=1101 */ | |
| return xtensa_bbs_op; | |
| } | |
| break; | |
| case 11: /* ADDI.N: op0=1011 */ | |
| return xtensa_addi_n_op; | |
| case 12: /* ST2: op0=1100 */ | |
| switch (get_i_field (insn)) { | |
| case 0: /* MOVI.N: i=0 */ | |
| return xtensa_movi_n_op; | |
| case 1: /* BZ6: i=1 */ | |
| switch (get_z_field (insn)) { | |
| case 0: /* BEQZ.N: z=0 */ | |
| return xtensa_beqz_n_op; | |
| case 1: /* BNEZ.N: z=1 */ | |
| return xtensa_bnez_n_op; | |
| } | |
| break; | |
| } | |
| break; | |
| case 13: /* ST3: op0=1101 */ | |
| switch (get_r_field (insn)) { | |
| case 15: /* S3: r=1111 */ | |
| switch (get_t_field (insn)) { | |
| case 0: /* RET.N: t=0000 */ | |
| return xtensa_ret_n_op; | |
| case 1: /* RETW.N: t=0001 */ | |
| return xtensa_retw_n_op; | |
| case 2: /* BREAK.N: t=0010 */ | |
| return xtensa_break_n_op; | |
| case 3: /* NOP.N: t=0011 */ | |
| return xtensa_nop_n_op; | |
| } | |
| break; | |
| case 0: /* MOV.N: r=0000 */ | |
| return xtensa_mov_n_op; | |
| } | |
| break; | |
| } | |
| return XTENSA_UNDEFINED; | |
| } | |
| int | |
| interface_version (void) | |
| { | |
| return 3; | |
| } | |
| static struct config_struct config_table[] = { | |
| {"IsaMemoryOrder", "BigEndian"}, | |
| {"PIFReadDataBits", "128"}, | |
| {"PIFWriteDataBits", "128"}, | |
| {"IsaCoprocessorCount", "0"}, | |
| {"IsaUseBooleans", "0"}, | |
| {"IsaUseDensityInstruction", "1"}, | |
| {0, 0} | |
| }; | |
| struct config_struct * get_config_table (void); | |
| struct config_struct * | |
| get_config_table (void) | |
| { | |
| return config_table; | |
| } | |
| xtensa_isa_module xtensa_isa_modules[] = { | |
| { get_num_opcodes, get_opcodes, decode_insn, get_config_table }, | |
| { 0, 0, 0, 0 } | |
| }; |