blob: 129c023514167e51ff667f30c3806d270de91f73 [file] [log] [blame]
/* Xtensa configuration-specific ISA information.
Copyright (c) 2003-2020 Tensilica Inc.
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
#include "xtensa-isa.h"
#include "xtensa-isa-internal.h"
/* Sysregs. */
static xtensa_sysreg_internal sysregs[] = {
{ "LBEG", 0, 0 },
{ "LEND", 1, 0 },
{ "LCOUNT", 2, 0 },
{ "BR", 4, 0 },
{ "ACCLO", 16, 0 },
{ "ACCHI", 17, 0 },
{ "M0", 32, 0 },
{ "M1", 33, 0 },
{ "M2", 34, 0 },
{ "M3", 35, 0 },
{ "PTEVADDR", 83, 0 },
{ "MMID", 89, 0 },
{ "DDR", 104, 0 },
{ "CONFIGID0", 176, 0 },
{ "CONFIGID1", 208, 0 },
{ "INTERRUPT", 226, 0 },
{ "INTCLEAR", 227, 0 },
{ "CCOUNT", 234, 0 },
{ "PRID", 235, 0 },
{ "ICOUNT", 236, 0 },
{ "CCOMPARE0", 240, 0 },
{ "CCOMPARE1", 241, 0 },
{ "CCOMPARE2", 242, 0 },
{ "VECBASE", 231, 0 },
{ "EPC1", 177, 0 },
{ "EPC2", 178, 0 },
{ "EPC3", 179, 0 },
{ "EPC4", 180, 0 },
{ "EPC5", 181, 0 },
{ "EPC6", 182, 0 },
{ "EPC7", 183, 0 },
{ "EXCSAVE1", 209, 0 },
{ "EXCSAVE2", 210, 0 },
{ "EXCSAVE3", 211, 0 },
{ "EXCSAVE4", 212, 0 },
{ "EXCSAVE5", 213, 0 },
{ "EXCSAVE6", 214, 0 },
{ "EXCSAVE7", 215, 0 },
{ "EPS2", 194, 0 },
{ "EPS3", 195, 0 },
{ "EPS4", 196, 0 },
{ "EPS5", 197, 0 },
{ "EPS6", 198, 0 },
{ "EPS7", 199, 0 },
{ "EXCCAUSE", 232, 0 },
{ "DEPC", 192, 0 },
{ "EXCVADDR", 238, 0 },
{ "WINDOWBASE", 72, 0 },
{ "WINDOWSTART", 73, 0 },
{ "SAR", 3, 0 },
{ "PS", 230, 0 },
{ "MISC0", 244, 0 },
{ "MISC1", 245, 0 },
{ "INTENABLE", 228, 0 },
{ "DBREAKA0", 144, 0 },
{ "DBREAKC0", 160, 0 },
{ "DBREAKA1", 145, 0 },
{ "DBREAKC1", 161, 0 },
{ "IBREAKA0", 128, 0 },
{ "IBREAKA1", 129, 0 },
{ "IBREAKENABLE", 96, 0 },
{ "ICOUNTLEVEL", 237, 0 },
{ "DEBUGCAUSE", 233, 0 },
{ "RASID", 90, 0 },
{ "ITLBCFG", 91, 0 },
{ "DTLBCFG", 92, 0 },
{ "CPENABLE", 224, 0 },
{ "SCOMPARE1", 12, 0 },
{ "ATOMCTL", 99, 0 },
{ "ERACCESS", 95, 0 },
{ "THREADPTR", 231, 1 },
{ "FCR", 232, 1 },
{ "FSR", 233, 1 },
{ "EXPSTATE", 230, 1 }
};
#define NUM_SYSREGS 74
#define MAX_SPECIAL_REG 245
#define MAX_USER_REG 233
/* Processor states. */
static xtensa_state_internal states[] = {
{ "LCOUNT", 32, 0 },
{ "PC", 32, 0 },
{ "ICOUNT", 32, 0 },
{ "DDR", 32, 0 },
{ "INTERRUPT", 22, 0 },
{ "CCOUNT", 32, 0 },
{ "XTSYNC", 1, 0 },
{ "VECBASE", 22, 0 },
{ "EPC1", 32, 0 },
{ "EPC2", 32, 0 },
{ "EPC3", 32, 0 },
{ "EPC4", 32, 0 },
{ "EPC5", 32, 0 },
{ "EPC6", 32, 0 },
{ "EPC7", 32, 0 },
{ "EXCSAVE1", 32, 0 },
{ "EXCSAVE2", 32, 0 },
{ "EXCSAVE3", 32, 0 },
{ "EXCSAVE4", 32, 0 },
{ "EXCSAVE5", 32, 0 },
{ "EXCSAVE6", 32, 0 },
{ "EXCSAVE7", 32, 0 },
{ "EPS2", 15, 0 },
{ "EPS3", 15, 0 },
{ "EPS4", 15, 0 },
{ "EPS5", 15, 0 },
{ "EPS6", 15, 0 },
{ "EPS7", 15, 0 },
{ "EXCCAUSE", 6, 0 },
{ "PSINTLEVEL", 4, 0 },
{ "PSUM", 1, 0 },
{ "PSWOE", 1, 0 },
{ "PSRING", 2, 0 },
{ "PSEXCM", 1, 0 },
{ "DEPC", 32, 0 },
{ "EXCVADDR", 32, 0 },
{ "WindowBase", 3, 0 },
{ "WindowStart", 8, 0 },
{ "PSCALLINC", 2, 0 },
{ "PSOWB", 4, 0 },
{ "LBEG", 32, 0 },
{ "LEND", 32, 0 },
{ "SAR", 6, 0 },
{ "THREADPTR", 32, 0 },
{ "MISC0", 32, 0 },
{ "MISC1", 32, 0 },
{ "ACC", 40, 0 },
{ "InOCDMode", 1, 0 },
{ "INTENABLE", 22, 0 },
{ "DBREAKA0", 32, 0 },
{ "DBREAKC0", 8, 0 },
{ "DBREAKA1", 32, 0 },
{ "DBREAKC1", 8, 0 },
{ "IBREAKA0", 32, 0 },
{ "IBREAKA1", 32, 0 },
{ "IBREAKENABLE", 2, 0 },
{ "ICOUNTLEVEL", 4, 0 },
{ "DEBUGCAUSE", 6, 0 },
{ "DBNUM", 4, 0 },
{ "CCOMPARE0", 32, 0 },
{ "CCOMPARE1", 32, 0 },
{ "CCOMPARE2", 32, 0 },
{ "ASID3", 8, 0 },
{ "ASID2", 8, 0 },
{ "ASID1", 8, 0 },
{ "INSTPGSZID6", 1, 0 },
{ "INSTPGSZID5", 1, 0 },
{ "INSTPGSZID4", 2, 0 },
{ "DATAPGSZID6", 1, 0 },
{ "DATAPGSZID5", 1, 0 },
{ "DATAPGSZID4", 2, 0 },
{ "PTBASE", 10, 0 },
{ "CPENABLE", 8, 0 },
{ "SCOMPARE1", 32, 0 },
{ "ATOMCTL", 6, 0 },
{ "ERACCESS", 16, 0 },
{ "RoundMode", 2, 0 },
{ "InvalidEnable", 1, 0 },
{ "DivZeroEnable", 1, 0 },
{ "OverflowEnable", 1, 0 },
{ "UnderflowEnable", 1, 0 },
{ "InexactEnable", 1, 0 },
{ "InvalidFlag", 1, XTENSA_STATE_IS_SHARED_OR },
{ "DivZeroFlag", 1, XTENSA_STATE_IS_SHARED_OR },
{ "OverflowFlag", 1, XTENSA_STATE_IS_SHARED_OR },
{ "UnderflowFlag", 1, XTENSA_STATE_IS_SHARED_OR },
{ "InexactFlag", 1, XTENSA_STATE_IS_SHARED_OR },
{ "FPreserved20", 20, 0 },
{ "FPreserved20a", 20, 0 },
{ "FPreserved5", 5, 0 },
{ "FPreserved7", 7, 0 },
{ "EXPSTATE", 32, XTENSA_STATE_IS_EXPORTED }
};
#define NUM_STATES 92
enum xtensa_state_id {
STATE_LCOUNT,
STATE_PC,
STATE_ICOUNT,
STATE_DDR,
STATE_INTERRUPT,
STATE_CCOUNT,
STATE_XTSYNC,
STATE_VECBASE,
STATE_EPC1,
STATE_EPC2,
STATE_EPC3,
STATE_EPC4,
STATE_EPC5,
STATE_EPC6,
STATE_EPC7,
STATE_EXCSAVE1,
STATE_EXCSAVE2,
STATE_EXCSAVE3,
STATE_EXCSAVE4,
STATE_EXCSAVE5,
STATE_EXCSAVE6,
STATE_EXCSAVE7,
STATE_EPS2,
STATE_EPS3,
STATE_EPS4,
STATE_EPS5,
STATE_EPS6,
STATE_EPS7,
STATE_EXCCAUSE,
STATE_PSINTLEVEL,
STATE_PSUM,
STATE_PSWOE,
STATE_PSRING,
STATE_PSEXCM,
STATE_DEPC,
STATE_EXCVADDR,
STATE_WindowBase,
STATE_WindowStart,
STATE_PSCALLINC,
STATE_PSOWB,
STATE_LBEG,
STATE_LEND,
STATE_SAR,
STATE_THREADPTR,
STATE_MISC0,
STATE_MISC1,
STATE_ACC,
STATE_InOCDMode,
STATE_INTENABLE,
STATE_DBREAKA0,
STATE_DBREAKC0,
STATE_DBREAKA1,
STATE_DBREAKC1,
STATE_IBREAKA0,
STATE_IBREAKA1,
STATE_IBREAKENABLE,
STATE_ICOUNTLEVEL,
STATE_DEBUGCAUSE,
STATE_DBNUM,
STATE_CCOMPARE0,
STATE_CCOMPARE1,
STATE_CCOMPARE2,
STATE_ASID3,
STATE_ASID2,
STATE_ASID1,
STATE_INSTPGSZID6,
STATE_INSTPGSZID5,
STATE_INSTPGSZID4,
STATE_DATAPGSZID6,
STATE_DATAPGSZID5,
STATE_DATAPGSZID4,
STATE_PTBASE,
STATE_CPENABLE,
STATE_SCOMPARE1,
STATE_ATOMCTL,
STATE_ERACCESS,
STATE_RoundMode,
STATE_InvalidEnable,
STATE_DivZeroEnable,
STATE_OverflowEnable,
STATE_UnderflowEnable,
STATE_InexactEnable,
STATE_InvalidFlag,
STATE_DivZeroFlag,
STATE_OverflowFlag,
STATE_UnderflowFlag,
STATE_InexactFlag,
STATE_FPreserved20,
STATE_FPreserved20a,
STATE_FPreserved5,
STATE_FPreserved7,
STATE_EXPSTATE
};
/* Field definitions. */
static unsigned
Field_t_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28);
return tie_t;
}
static void
Field_t_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 28) >> 28;
insn[0] = (insn[0] & ~0xf0) | (tie_t << 4);
}
static unsigned
Field_s_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28);
return tie_t;
}
static void
Field_s_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 28) >> 28;
insn[0] = (insn[0] & ~0xf00) | (tie_t << 8);
}
static unsigned
Field_r_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28);
return tie_t;
}
static void
Field_r_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 28) >> 28;
insn[0] = (insn[0] & ~0xf000) | (tie_t << 12);
}
static unsigned
Field_op2_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 4) | ((insn[0] << 8) >> 28);
return tie_t;
}
static void
Field_op2_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 28) >> 28;
insn[0] = (insn[0] & ~0xf00000) | (tie_t << 20);
}
static unsigned
Field_op1_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 4) | ((insn[0] << 12) >> 28);
return tie_t;
}
static void
Field_op1_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 28) >> 28;
insn[0] = (insn[0] & ~0xf0000) | (tie_t << 16);
}
static unsigned
Field_op0_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28);
return tie_t;
}
static void
Field_op0_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 28) >> 28;
insn[0] = (insn[0] & ~0xf) | (tie_t << 0);
}
static unsigned
Field_n_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 2) | ((insn[0] << 26) >> 30);
return tie_t;
}
static void
Field_n_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 30) >> 30;
insn[0] = (insn[0] & ~0x30) | (tie_t << 4);
}
static unsigned
Field_m_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 2) | ((insn[0] << 24) >> 30);
return tie_t;
}
static void
Field_m_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 30) >> 30;
insn[0] = (insn[0] & ~0xc0) | (tie_t << 6);
}
static unsigned
Field_sr_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28);
tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28);
return tie_t;
}
static void
Field_sr_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 28) >> 28;
insn[0] = (insn[0] & ~0xf00) | (tie_t << 8);
tie_t = (val << 24) >> 28;
insn[0] = (insn[0] & ~0xf000) | (tie_t << 12);
}
static unsigned
Field_st_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28);
tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28);
return tie_t;
}
static void
Field_st_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 28) >> 28;
insn[0] = (insn[0] & ~0xf0) | (tie_t << 4);
tie_t = (val << 24) >> 28;
insn[0] = (insn[0] & ~0xf00) | (tie_t << 8);
}
static unsigned
Field_thi3_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 3) | ((insn[0] << 24) >> 29);
return tie_t;
}
static void
Field_thi3_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 29) >> 29;
insn[0] = (insn[0] & ~0xe0) | (tie_t << 5);
}
static unsigned
Field_t3_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 1) | ((insn[0] << 24) >> 31);
return tie_t;
}
static void
Field_t3_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 31) >> 31;
insn[0] = (insn[0] & ~0x80) | (tie_t << 7);
}
static unsigned
Field_tlo_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 2) | ((insn[0] << 26) >> 30);
return tie_t;
}
static void
Field_tlo_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 30) >> 30;
insn[0] = (insn[0] & ~0x30) | (tie_t << 4);
}
static unsigned
Field_w_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 2) | ((insn[0] << 18) >> 30);
return tie_t;
}
static void
Field_w_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 30) >> 30;
insn[0] = (insn[0] & ~0x3000) | (tie_t << 12);
}
static unsigned
Field_r3_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 1) | ((insn[0] << 16) >> 31);
return tie_t;
}
static void
Field_r3_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 31) >> 31;
insn[0] = (insn[0] & ~0x8000) | (tie_t << 15);
}
static unsigned
Field_rhi_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 2) | ((insn[0] << 16) >> 30);
return tie_t;
}
static void
Field_rhi_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 30) >> 30;
insn[0] = (insn[0] & ~0xc000) | (tie_t << 14);
}
static unsigned
Field_s3to1_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 3) | ((insn[0] << 20) >> 29);
return tie_t;
}
static void
Field_s3to1_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 29) >> 29;
insn[0] = (insn[0] & ~0xe00) | (tie_t << 9);
}
static unsigned
Field_op0_Slot_inst16a_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28);
return tie_t;
}
static void
Field_op0_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 28) >> 28;
insn[0] = (insn[0] & ~0xf) | (tie_t << 0);
}
static unsigned
Field_t_Slot_inst16b_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28);
return tie_t;
}
static void
Field_t_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 28) >> 28;
insn[0] = (insn[0] & ~0xf0) | (tie_t << 4);
}
static unsigned
Field_r_Slot_inst16b_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28);
return tie_t;
}
static void
Field_r_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 28) >> 28;
insn[0] = (insn[0] & ~0xf000) | (tie_t << 12);
}
static unsigned
Field_op0_Slot_inst16b_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 4) | ((insn[0] << 28) >> 28);
return tie_t;
}
static void
Field_op0_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 28) >> 28;
insn[0] = (insn[0] & ~0xf) | (tie_t << 0);
}
static unsigned
Field_z_Slot_inst16b_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 1) | ((insn[0] << 25) >> 31);
return tie_t;
}
static void
Field_z_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 31) >> 31;
insn[0] = (insn[0] & ~0x40) | (tie_t << 6);
}
static unsigned
Field_i_Slot_inst16b_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 1) | ((insn[0] << 24) >> 31);
return tie_t;
}
static void
Field_i_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 31) >> 31;
insn[0] = (insn[0] & ~0x80) | (tie_t << 7);
}
static unsigned
Field_s_Slot_inst16b_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28);
return tie_t;
}
static void
Field_s_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 28) >> 28;
insn[0] = (insn[0] & ~0xf00) | (tie_t << 8);
}
static unsigned
Field_t_Slot_inst16a_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28);
return tie_t;
}
static void
Field_t_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 28) >> 28;
insn[0] = (insn[0] & ~0xf0) | (tie_t << 4);
}
static unsigned
Field_bbi4_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 1) | ((insn[0] << 19) >> 31);
return tie_t;
}
static void
Field_bbi4_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 31) >> 31;
insn[0] = (insn[0] & ~0x1000) | (tie_t << 12);
}
static unsigned
Field_bbi_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 1) | ((insn[0] << 19) >> 31);
tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28);
return tie_t;
}
static void
Field_bbi_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 28) >> 28;
insn[0] = (insn[0] & ~0xf0) | (tie_t << 4);
tie_t = (val << 27) >> 31;
insn[0] = (insn[0] & ~0x1000) | (tie_t << 12);
}
static unsigned
Field_imm12_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 12) | ((insn[0] << 8) >> 20);
return tie_t;
}
static void
Field_imm12_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 20) >> 20;
insn[0] = (insn[0] & ~0xfff000) | (tie_t << 12);
}
static unsigned
Field_imm8_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 8) | ((insn[0] << 8) >> 24);
return tie_t;
}
static void
Field_imm8_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 24) >> 24;
insn[0] = (insn[0] & ~0xff0000) | (tie_t << 16);
}
static unsigned
Field_s_Slot_inst16a_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28);
return tie_t;
}
static void
Field_s_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 28) >> 28;
insn[0] = (insn[0] & ~0xf00) | (tie_t << 8);
}
static unsigned
Field_s8_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 1) | ((insn[0] << 20) >> 31);
return tie_t;
}
static void
Field_s8_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 31) >> 31;
insn[0] = (insn[0] & ~0x800) | (tie_t << 11);
}
static unsigned
Field_imms8_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 3) | ((insn[0] << 21) >> 29);
return tie_t;
}
static void
Field_imms8_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 29) >> 29;
insn[0] = (insn[0] & ~0x700) | (tie_t << 8);
}
static unsigned
Field_imm12b_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28);
tie_t = (tie_t << 8) | ((insn[0] << 8) >> 24);
return tie_t;
}
static void
Field_imm12b_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 24) >> 24;
insn[0] = (insn[0] & ~0xff0000) | (tie_t << 16);
tie_t = (val << 20) >> 28;
insn[0] = (insn[0] & ~0xf00) | (tie_t << 8);
}
static unsigned
Field_imm16_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 16) | ((insn[0] << 8) >> 16);
return tie_t;
}
static void
Field_imm16_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 16) >> 16;
insn[0] = (insn[0] & ~0xffff00) | (tie_t << 8);
}
static unsigned
Field_offset_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 18) | ((insn[0] << 8) >> 14);
return tie_t;
}
static void
Field_offset_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 14) >> 14;
insn[0] = (insn[0] & ~0xffffc0) | (tie_t << 6);
}
static unsigned
Field_r_Slot_inst16a_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28);
return tie_t;
}
static void
Field_r_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 28) >> 28;
insn[0] = (insn[0] & ~0xf000) | (tie_t << 12);
}
static unsigned
Field_r_disp_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 3) | ((insn[0] << 17) >> 29);
return tie_t;
}
static void
Field_r_disp_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 29) >> 29;
insn[0] = (insn[0] & ~0x7000) | (tie_t << 12);
}
static unsigned
Field_r_3_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 1) | ((insn[0] << 16) >> 31);
return tie_t;
}
static void
Field_r_3_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 31) >> 31;
insn[0] = (insn[0] & ~0x8000) | (tie_t << 15);
}
static unsigned
Field_sa4_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 1) | ((insn[0] << 11) >> 31);
return tie_t;
}
static void
Field_sa4_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 31) >> 31;
insn[0] = (insn[0] & ~0x100000) | (tie_t << 20);
}
static unsigned
Field_sae4_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 1) | ((insn[0] << 15) >> 31);
return tie_t;
}
static void
Field_sae4_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 31) >> 31;
insn[0] = (insn[0] & ~0x10000) | (tie_t << 16);
}
static unsigned
Field_sae_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 1) | ((insn[0] << 15) >> 31);
tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28);
return tie_t;
}
static void
Field_sae_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 28) >> 28;
insn[0] = (insn[0] & ~0xf00) | (tie_t << 8);
tie_t = (val << 27) >> 31;
insn[0] = (insn[0] & ~0x10000) | (tie_t << 16);
}
static unsigned
Field_sal_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 1) | ((insn[0] << 11) >> 31);
tie_t = (tie_t << 4) | ((insn[0] << 24) >> 28);
return tie_t;
}
static void
Field_sal_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 28) >> 28;
insn[0] = (insn[0] & ~0xf0) | (tie_t << 4);
tie_t = (val << 27) >> 31;
insn[0] = (insn[0] & ~0x100000) | (tie_t << 20);
}
static unsigned
Field_sargt_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 1) | ((insn[0] << 11) >> 31);
tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28);
return tie_t;
}
static void
Field_sargt_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 28) >> 28;
insn[0] = (insn[0] & ~0xf00) | (tie_t << 8);
tie_t = (val << 27) >> 31;
insn[0] = (insn[0] & ~0x100000) | (tie_t << 20);
}
static unsigned
Field_sas4_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 1) | ((insn[0] << 27) >> 31);
return tie_t;
}
static void
Field_sas4_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 31) >> 31;
insn[0] = (insn[0] & ~0x10) | (tie_t << 4);
}
static unsigned
Field_sas_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 1) | ((insn[0] << 27) >> 31);
tie_t = (tie_t << 4) | ((insn[0] << 20) >> 28);
return tie_t;
}
static void
Field_sas_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 28) >> 28;
insn[0] = (insn[0] & ~0xf00) | (tie_t << 8);
tie_t = (val << 27) >> 31;
insn[0] = (insn[0] & ~0x10) | (tie_t << 4);
}
static unsigned
Field_imm4_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28);
return tie_t;
}
static void
Field_imm4_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 28) >> 28;
insn[0] = (insn[0] & ~0xf000) | (tie_t << 12);
}
static unsigned
Field_mn_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 2) | ((insn[0] << 24) >> 30);
tie_t = (tie_t << 2) | ((insn[0] << 26) >> 30);
return tie_t;
}
static void
Field_mn_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 30) >> 30;
insn[0] = (insn[0] & ~0x30) | (tie_t << 4);
tie_t = (val << 28) >> 30;
insn[0] = (insn[0] & ~0xc0) | (tie_t << 6);
}
static unsigned
Field_i_Slot_inst16a_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 1) | ((insn[0] << 24) >> 31);
return tie_t;
}
static void
Field_i_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 31) >> 31;
insn[0] = (insn[0] & ~0x80) | (tie_t << 7);
}
static unsigned
Field_imm6lo_Slot_inst16a_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28);
return tie_t;
}
static void
Field_imm6lo_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 28) >> 28;
insn[0] = (insn[0] & ~0xf000) | (tie_t << 12);
}
static unsigned
Field_imm6lo_Slot_inst16b_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28);
return tie_t;
}
static void
Field_imm6lo_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 28) >> 28;
insn[0] = (insn[0] & ~0xf000) | (tie_t << 12);
}
static unsigned
Field_imm6hi_Slot_inst16a_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 2) | ((insn[0] << 26) >> 30);
return tie_t;
}
static void
Field_imm6hi_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 30) >> 30;
insn[0] = (insn[0] & ~0x30) | (tie_t << 4);
}
static unsigned
Field_imm6hi_Slot_inst16b_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 2) | ((insn[0] << 26) >> 30);
return tie_t;
}
static void
Field_imm6hi_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 30) >> 30;
insn[0] = (insn[0] & ~0x30) | (tie_t << 4);
}
static unsigned
Field_imm7lo_Slot_inst16a_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28);
return tie_t;
}
static void
Field_imm7lo_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 28) >> 28;
insn[0] = (insn[0] & ~0xf000) | (tie_t << 12);
}
static unsigned
Field_imm7lo_Slot_inst16b_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28);
return tie_t;
}
static void
Field_imm7lo_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 28) >> 28;
insn[0] = (insn[0] & ~0xf000) | (tie_t << 12);
}
static unsigned
Field_imm7hi_Slot_inst16a_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 3) | ((insn[0] << 25) >> 29);
return tie_t;
}
static void
Field_imm7hi_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 29) >> 29;
insn[0] = (insn[0] & ~0x70) | (tie_t << 4);
}
static unsigned
Field_imm7hi_Slot_inst16b_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 3) | ((insn[0] << 25) >> 29);
return tie_t;
}
static void
Field_imm7hi_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 29) >> 29;
insn[0] = (insn[0] & ~0x70) | (tie_t << 4);
}
static unsigned
Field_z_Slot_inst16a_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 1) | ((insn[0] << 25) >> 31);
return tie_t;
}
static void
Field_z_Slot_inst16a_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 31) >> 31;
insn[0] = (insn[0] & ~0x40) | (tie_t << 6);
}
static unsigned
Field_imm6_Slot_inst16b_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 2) | ((insn[0] << 26) >> 30);
tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28);
return tie_t;
}
static void
Field_imm6_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 28) >> 28;
insn[0] = (insn[0] & ~0xf000) | (tie_t << 12);
tie_t = (val << 26) >> 30;
insn[0] = (insn[0] & ~0x30) | (tie_t << 4);
}
static unsigned
Field_imm7_Slot_inst16b_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 3) | ((insn[0] << 25) >> 29);
tie_t = (tie_t << 4) | ((insn[0] << 16) >> 28);
return tie_t;
}
static void
Field_imm7_Slot_inst16b_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 28) >> 28;
insn[0] = (insn[0] & ~0xf000) | (tie_t << 12);
tie_t = (val << 25) >> 29;
insn[0] = (insn[0] & ~0x70) | (tie_t << 4);
}
static unsigned
Field_rbit2_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 1) | ((insn[0] << 17) >> 31);
return tie_t;
}
static void
Field_rbit2_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 31) >> 31;
insn[0] = (insn[0] & ~0x4000) | (tie_t << 14);
}
static unsigned
Field_tbit2_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 1) | ((insn[0] << 25) >> 31);
return tie_t;
}
static void
Field_tbit2_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 31) >> 31;
insn[0] = (insn[0] & ~0x40) | (tie_t << 6);
}
static unsigned
Field_y_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 1) | ((insn[0] << 25) >> 31);
return tie_t;
}
static void
Field_y_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 31) >> 31;
insn[0] = (insn[0] & ~0x40) | (tie_t << 6);
}
static unsigned
Field_x_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 1) | ((insn[0] << 17) >> 31);
return tie_t;
}
static void
Field_x_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 31) >> 31;
insn[0] = (insn[0] & ~0x4000) | (tie_t << 14);
}
static unsigned
Field_t2_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 3) | ((insn[0] << 24) >> 29);
return tie_t;
}
static void
Field_t2_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 29) >> 29;
insn[0] = (insn[0] & ~0xe0) | (tie_t << 5);
}
static unsigned
Field_s2_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 3) | ((insn[0] << 20) >> 29);
return tie_t;
}
static void
Field_s2_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 29) >> 29;
insn[0] = (insn[0] & ~0xe00) | (tie_t << 9);
}
static unsigned
Field_r2_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 3) | ((insn[0] << 16) >> 29);
return tie_t;
}
static void
Field_r2_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 29) >> 29;
insn[0] = (insn[0] & ~0xe000) | (tie_t << 13);
}
static unsigned
Field_t4_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 2) | ((insn[0] << 24) >> 30);
return tie_t;
}
static void
Field_t4_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 30) >> 30;
insn[0] = (insn[0] & ~0xc0) | (tie_t << 6);
}
static unsigned
Field_s4_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 2) | ((insn[0] << 20) >> 30);
return tie_t;
}
static void
Field_s4_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 30) >> 30;
insn[0] = (insn[0] & ~0xc00) | (tie_t << 10);
}
static unsigned
Field_r4_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 2) | ((insn[0] << 16) >> 30);
return tie_t;
}
static void
Field_r4_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 30) >> 30;
insn[0] = (insn[0] & ~0xc000) | (tie_t << 14);
}
static unsigned
Field_t8_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 1) | ((insn[0] << 24) >> 31);
return tie_t;
}
static void
Field_t8_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 31) >> 31;
insn[0] = (insn[0] & ~0x80) | (tie_t << 7);
}
static unsigned
Field_r8_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 1) | ((insn[0] << 16) >> 31);
return tie_t;
}
static void
Field_r8_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 31) >> 31;
insn[0] = (insn[0] & ~0x8000) | (tie_t << 15);
}
static unsigned
Field_xt_wbr15_imm_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 15) | ((insn[0] << 8) >> 17);
return tie_t;
}
static void
Field_xt_wbr15_imm_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 17) >> 17;
insn[0] = (insn[0] & ~0xfffe00) | (tie_t << 9);
}
static unsigned
Field_xt_wbr18_imm_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 18) | ((insn[0] << 8) >> 14);
return tie_t;
}
static void
Field_xt_wbr18_imm_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 14) >> 14;
insn[0] = (insn[0] & ~0xffffc0) | (tie_t << 6);
}
static unsigned
Field_bitindex_Slot_inst_get (const xtensa_insnbuf insn)
{
unsigned tie_t = 0;
tie_t = (tie_t << 5) | ((insn[0] << 23) >> 27);
return tie_t;
}
static void
Field_bitindex_Slot_inst_set (xtensa_insnbuf insn, uint32 val)
{
uint32 tie_t;
tie_t = (val << 27) >> 27;
insn[0] = (insn[0] & ~0x1f0) | (tie_t << 4);
}
static void
Implicit_Field_set (xtensa_insnbuf insn ATTRIBUTE_UNUSED,
uint32 val ATTRIBUTE_UNUSED)
{
/* Do nothing. */
}
static unsigned
Implicit_Field_ar0_get (const xtensa_insnbuf insn ATTRIBUTE_UNUSED)
{
return 0;
}
static unsigned
Implicit_Field_ar4_get (const xtensa_insnbuf insn ATTRIBUTE_UNUSED)
{
return 4;
}
static unsigned
Implicit_Field_ar8_get (const xtensa_insnbuf insn ATTRIBUTE_UNUSED)
{
return 8;
}
static unsigned
Implicit_Field_ar12_get (const xtensa_insnbuf insn ATTRIBUTE_UNUSED)
{
return 12;
}
static unsigned
Implicit_Field_mr0_get (const xtensa_insnbuf insn ATTRIBUTE_UNUSED)
{
return 0;
}
static unsigned
Implicit_Field_mr1_get (const xtensa_insnbuf insn ATTRIBUTE_UNUSED)
{
return 1;
}
static unsigned
Implicit_Field_mr2_get (const xtensa_insnbuf insn ATTRIBUTE_UNUSED)
{
return 2;
}
static unsigned
Implicit_Field_mr3_get (const xtensa_insnbuf insn ATTRIBUTE_UNUSED)
{
return 3;
}
static unsigned
Implicit_Field_bt16_get (const xtensa_insnbuf insn ATTRIBUTE_UNUSED)
{
return 0;
}
static unsigned
Implicit_Field_bs16_get (const xtensa_insnbuf insn ATTRIBUTE_UNUSED)
{
return 0;
}
static unsigned
Implicit_Field_br16_get (const xtensa_insnbuf insn ATTRIBUTE_UNUSED)
{
return 0;
}
static unsigned
Implicit_Field_brall_get (const xtensa_insnbuf insn ATTRIBUTE_UNUSED)
{
return 0;
}
enum xtensa_field_id {
FIELD_t,
FIELD_bbi4,
FIELD_bbi,
FIELD_imm12,
FIELD_imm8,
FIELD_s,
FIELD_s8,
FIELD_imms8,
FIELD_imm12b,
FIELD_imm16,
FIELD_m,
FIELD_n,
FIELD_offset,
FIELD_op0,
FIELD_op1,
FIELD_op2,
FIELD_r,
FIELD_r_disp,
FIELD_r_3,
FIELD_sa4,
FIELD_sae4,
FIELD_sae,
FIELD_sal,
FIELD_sargt,
FIELD_sas4,
FIELD_sas,
FIELD_sr,
FIELD_st,
FIELD_thi3,
FIELD_imm4,
FIELD_mn,
FIELD_i,
FIELD_imm6lo,
FIELD_imm6hi,
FIELD_imm7lo,
FIELD_imm7hi,
FIELD_z,
FIELD_imm6,
FIELD_imm7,
FIELD_r3,
FIELD_rbit2,
FIELD_rhi,
FIELD_t3,
FIELD_tbit2,
FIELD_tlo,
FIELD_w,
FIELD_y,
FIELD_x,
FIELD_t2,
FIELD_s2,
FIELD_r2,
FIELD_t4,
FIELD_s4,
FIELD_r4,
FIELD_t8,
FIELD_r8,
FIELD_xt_wbr15_imm,
FIELD_xt_wbr18_imm,
FIELD_bitindex,
FIELD_s3to1,
FIELD__ar0,
FIELD__ar4,
FIELD__ar8,
FIELD__ar12,
FIELD__mr0,
FIELD__mr1,
FIELD__mr2,
FIELD__mr3,
FIELD__bt16,
FIELD__bs16,
FIELD__br16,
FIELD__brall
};
/* Functional units. */
static xtensa_funcUnit_internal funcUnits[] = {
{"XT_LOADSTORE_UNIT", 1}
};
enum xtensa_funcUnit_id {
FUNCUNIT_XT_LOADSTORE_UNIT
};
/* Register files. */
enum xtensa_regfile_id {
REGFILE_AR,
REGFILE_MR,
REGFILE_BR,
REGFILE_FR,
REGFILE_BR2,
REGFILE_BR4,
REGFILE_BR8,
REGFILE_BR16
};
static xtensa_regfile_internal regfiles[] = {
{ "AR", "a", REGFILE_AR, 32, 32 },
{ "MR", "m", REGFILE_MR, 32, 4 },
{ "BR", "b", REGFILE_BR, 1, 16 },
{ "FR", "f", REGFILE_FR, 64, 16 },
{ "BR2", "b", REGFILE_BR, 2, 8 },
{ "BR4", "b", REGFILE_BR, 4, 4 },
{ "BR8", "b", REGFILE_BR, 8, 2 },
{ "BR16", "b", REGFILE_BR, 16, 1 }
};
/* Interfaces. */
static xtensa_interface_internal interfaces[] = {
{ "IMPWIRE", 32, 0, 0, 'i' }
};
enum xtensa_interface_id {
INTERFACE_IMPWIRE
};
/* Constant tables. */
/* constant table ai4c */
static const unsigned CONST_TBL_ai4c_0[] = {
0xffffffff,
0x1,
0x2,
0x3,
0x4,
0x5,
0x6,
0x7,
0x8,
0x9,
0xa,
0xb,
0xc,
0xd,
0xe,
0xf,
0
};
/* constant table b4c */
static const unsigned CONST_TBL_b4c_0[] = {
0xffffffff,
0x1,
0x2,
0x3,
0x4,
0x5,
0x6,
0x7,
0x8,
0xa,
0xc,
0x10,
0x20,
0x40,
0x80,
0x100,
0
};
/* constant table b4cu */
static const unsigned CONST_TBL_b4cu_0[] = {
0x8000,
0x10000,
0x2,
0x3,
0x4,
0x5,
0x6,
0x7,
0x8,
0xa,
0xc,
0x10,
0x20,
0x40,
0x80,
0x100,
0
};
/* constant table RECIP_Data8 */
static const unsigned CONST_TBL_RECIP_Data8_0[] = {
0xff & 0xff,
0xfd & 0xff,
0xfb & 0xff,
0xf9 & 0xff,
0xf7 & 0xff,
0xf5 & 0xff,
0xf4 & 0xff,
0xf2 & 0xff,
0xf0 & 0xff,
0xee & 0xff,
0xed & 0xff,
0xeb & 0xff,
0xe9 & 0xff,
0xe8 & 0xff,
0xe6 & 0xff,
0xe4 & 0xff,
0xe3 & 0xff,
0xe1 & 0xff,
0xe0 & 0xff,
0xde & 0xff,
0xdd & 0xff,
0xdb & 0xff,
0xda & 0xff,
0xd8 & 0xff,
0xd7 & 0xff,
0xd5 & 0xff,
0xd4 & 0xff,
0xd3 & 0xff,
0xd1 & 0xff,
0xd0 & 0xff,
0xcf & 0xff,
0xcd & 0xff,
0xcc & 0xff,
0xcb & 0xff,
0xca & 0xff,
0xc8 & 0xff,
0xc7 & 0xff,
0xc6 & 0xff,
0xc5 & 0xff,
0xc4 & 0xff,
0xc2 & 0xff,
0xc1 & 0xff,
0xc0 & 0xff,
0xbf & 0xff,
0xbe & 0xff,
0xbd & 0xff,
0xbc & 0xff,
0xbb & 0xff,
0xba & 0xff,
0xb9 & 0xff,
0xb8 & 0xff,
0xb7 & 0xff,
0xb6 & 0xff,
0xb5 & 0xff,
0xb4 & 0xff,
0xb3 & 0xff,
0xb2 & 0xff,
0xb1 & 0xff,
0xb0 & 0xff,
0xaf & 0xff,
0xae & 0xff,
0xad & 0xff,
0xac & 0xff,
0xab & 0xff,
0xaa & 0xff,
0xa9 & 0xff,
0xa8 & 0xff,
0xa8 & 0xff,
0xa7 & 0xff,
0xa6 & 0xff,
0xa5 & 0xff,
0xa4 & 0xff,
0xa3 & 0xff,
0xa3 & 0xff,
0xa2 & 0xff,
0xa1 & 0xff,
0xa0 & 0xff,
0x9f & 0xff,
0x9f & 0xff,
0x9e & 0xff,
0x9d & 0xff,
0x9c & 0xff,
0x9c & 0xff,
0x9b & 0xff,
0x9a & 0xff,
0x99 & 0xff,
0x99 & 0xff,
0x98 & 0xff,
0x97 & 0xff,
0x97 & 0xff,
0x96 & 0xff,
0x95 & 0xff,
0x95 & 0xff,
0x94 & 0xff,
0x93 & 0xff,
0x93 & 0xff,
0x92 & 0xff,
0x91 & 0xff,
0x91 & 0xff,
0x90 & 0xff,
0x8f & 0xff,
0x8f & 0xff,
0x8e & 0xff,
0x8e & 0xff,
0x8d & 0xff,
0x8c & 0xff,
0x8c & 0xff,
0x8b & 0xff,
0x8b & 0xff,
0x8a & 0xff,
0x89 & 0xff,
0x89 & 0xff,
0x88 & 0xff,
0x88 & 0xff,
0x87 & 0xff,
0x87 & 0xff,
0x86 & 0xff,
0x85 & 0xff,
0x85 & 0xff,
0x84 & 0xff,
0x84 & 0xff,
0x83 & 0xff,
0x83 & 0xff,
0x82 & 0xff,
0x82 & 0xff,
0x81 & 0xff,
0x81 & 0xff,
0x81 & 0xff,
0
};
/* constant table RSQRT_Data8 */
static const unsigned CONST_TBL_RSQRT_Data8_0[] = {
0xb4 & 0xff,
0xb3 & 0xff,
0xb2 & 0xff,
0xb0 & 0xff,
0xaf & 0xff,
0xae & 0xff,
0xac & 0xff,
0xab & 0xff,
0xaa & 0xff,
0xa9 & 0xff,
0xa8 & 0xff,
0xa7 & 0xff,
0xa6 & 0xff,
0xa5 & 0xff,
0xa3 & 0xff,
0xa2 & 0xff,
0xa1 & 0xff,
0xa0 & 0xff,
0x9f & 0xff,
0x9e & 0xff,
0x9e & 0xff,
0x9d & 0xff,
0x9c & 0xff,
0x9b & 0xff,
0x9a & 0xff,
0x99 & 0xff,
0x98 & 0xff,
0x97 & 0xff,
0x97 & 0xff,
0x96 & 0xff,
0x95 & 0xff,
0x94 & 0xff,
0x93 & 0xff,
0x93 & 0xff,
0x92 & 0xff,
0x91 & 0xff,
0x90 & 0xff,
0x90 & 0xff,
0x8f & 0xff,
0x8e & 0xff,
0x8e & 0xff,
0x8d & 0xff,
0x8c & 0xff,
0x8c & 0xff,
0x8b & 0xff,
0x8a & 0xff,
0x8a & 0xff,
0x89 & 0xff,
0x89 & 0xff,
0x88 & 0xff,
0x87 & 0xff,
0x87 & 0xff,
0x86 & 0xff,
0x86 & 0xff,
0x85 & 0xff,
0x84 & 0xff,
0x84 & 0xff,
0x83 & 0xff,
0x83 & 0xff,
0x82 & 0xff,
0x82 & 0xff,
0x81 & 0xff,
0x81 & 0xff,
0x80 & 0xff,
0xff & 0xff,
0xfd & 0xff,
0xfb & 0xff,
0xf9 & 0xff,
0xf7 & 0xff,
0xf6 & 0xff,
0xf4 & 0xff,
0xf2 & 0xff,
0xf1 & 0xff,
0xef & 0xff,
0xed & 0xff,
0xec & 0xff,
0xea & 0xff,
0xe9 & 0xff,
0xe7 & 0xff,
0xe6 & 0xff,
0xe4 & 0xff,
0xe3 & 0xff,
0xe1 & 0xff,
0xe0 & 0xff,
0xdf & 0xff,
0xdd & 0xff,
0xdc & 0xff,
0xdb & 0xff,
0xda & 0xff,
0xd8 & 0xff,
0xd7 & 0xff,
0xd6 & 0xff,
0xd5 & 0xff,
0xd4 & 0xff,
0xd3 & 0xff,
0xd2 & 0xff,
0xd0 & 0xff,
0xcf & 0xff,
0xce & 0xff,
0xcd & 0xff,
0xcc & 0xff,
0xcb & 0xff,
0xca & 0xff,
0xc9 & 0xff,
0xc8 & 0xff,
0xc7 & 0xff,
0xc6 & 0xff,
0xc6 & 0xff,
0xc5 & 0xff,
0xc4 & 0xff,
0xc3 & 0xff,
0xc2 & 0xff,
0xc1 & 0xff,
0xc0 & 0xff,
0xbf & 0xff,
0xbf & 0xff,
0xbe & 0xff,
0xbd & 0xff,
0xbc & 0xff,
0xbb & 0xff,
0xbb & 0xff,
0xba & 0xff,
0xb9 & 0xff,
0xb8 & 0xff,
0xb8 & 0xff,
0xb7 & 0xff,
0xb6 & 0xff,
0xb5 & 0xff,
0
};
/* constant table RECIP_Data10_2 */
static const unsigned CONST_TBL_RECIP_Data10_2_0[] = {
0x3fc & 0x3ff,
0x3f4 & 0x3ff,
0x3ec & 0x3ff,
0x3e5 & 0x3ff,
0x3dd & 0x3ff,
0x3d6 & 0x3ff,
0x3cf & 0x3ff,
0x3c7 & 0x3ff,
0x3c0 & 0x3ff,
0x3b9 & 0x3ff,
0x3b2 & 0x3ff,
0x3ac & 0x3ff,
0x3a5 & 0x3ff,
0x39e & 0x3ff,
0x398 & 0x3ff,
0x391 & 0x3ff,
0x38b & 0x3ff,
0x385 & 0x3ff,
0x37f & 0x3ff,
0x378 & 0x3ff,
0x373 & 0x3ff,
0x36c & 0x3ff,
0x367 & 0x3ff,
0x361 & 0x3ff,
0x35c & 0x3ff,
0x356 & 0x3ff,
0x350 & 0x3ff,
0x34b & 0x3ff,
0x345 & 0x3ff,
0x340 & 0x3ff,
0x33b & 0x3ff,
0x335 & 0x3ff,
0x330 & 0x3ff,
0x32c & 0x3ff,
0x327 & 0x3ff,
0x322 & 0x3ff,
0x31c & 0x3ff,
0x318 & 0x3ff,
0x314 & 0x3ff,
0x30e & 0x3ff,
0x30a & 0x3ff,
0x306 & 0x3ff,
0x300 & 0x3ff,
0x2fc & 0x3ff,
0x2f8 & 0x3ff,
0x2f4 & 0x3ff,
0x2f0 & 0x3ff,
0x2ea & 0x3ff,
0x2e6 & 0x3ff,
0x2e2 & 0x3ff,
0x2de & 0x3ff,
0x2da & 0x3ff,
0x2d6 & 0x3ff,
0x2d2 & 0x3ff,
0x2ce & 0x3ff,
0x2ca & 0x3ff,
0x2c6 & 0x3ff,
0x2c2 & 0x3ff,
0x2be & 0x3ff,
0x2ba & 0x3ff,
0x2b8 & 0x3ff,
0x2b4 & 0x3ff,
0x2b0 & 0x3ff,
0x2ac & 0x3ff,
0x2a8 & 0x3ff,
0x2a6 & 0x3ff,
0x2a2 & 0x3ff,
0x29e & 0x3ff,
0x29c & 0x3ff,
0x298 & 0x3ff,
0x294 & 0x3ff,
0x290 & 0x3ff,
0x28e & 0x3ff,
0x28a & 0x3ff,
0x288 & 0x3ff,
0x284 & 0x3ff,
0x280 & 0x3ff,
0x27e & 0x3ff,
0x27a & 0x3ff,
0x278 & 0x3ff,
0x274 & 0x3ff,
0x272 & 0x3ff,
0x26e & 0x3ff,
0x26c & 0x3ff,
0x268 & 0x3ff,
0x266 & 0x3ff,
0x264 & 0x3ff,
0x260 & 0x3ff,
0x25e & 0x3ff,
0x25a & 0x3ff,
0x258 & 0x3ff,
0x254 & 0x3ff,
0x252 & 0x3ff,
0x250 & 0x3ff,
0x24c & 0x3ff,
0x24a & 0x3ff,
0x248 & 0x3ff,
0x246 & 0x3ff,
0x242 & 0x3ff,
0x240 & 0x3ff,
0x23e & 0x3ff,
0x23c & 0x3ff,
0x238 & 0x3ff,
0x236 & 0x3ff,
0x234 & 0x3ff,
0x232 & 0x3ff,
0x230 & 0x3ff,
0x22c & 0x3ff,
0x22a & 0x3ff,
0x228 & 0x3ff,
0x226 & 0x3ff,
0x224 & 0x3ff,
0x220 & 0x3ff,
0x21e & 0x3ff,
0x21c & 0x3ff,
0x21a & 0x3ff,
0x218 & 0x3ff,
0x216 & 0x3ff,
0x214 & 0x3ff,
0x212 & 0x3ff,
0x210 & 0x3ff,
0x20e & 0x3ff,
0x20c & 0x3ff,
0x208 & 0x3ff,
0x208 & 0x3ff,
0x204 & 0x3ff,
0x204 & 0x3ff,
0x201 & 0x3ff,
0
};
/* constant table RSQRT_10b_256 */
static const unsigned CONST_TBL_RSQRT_10b_256_0[] = {
0x1a5 & 0x3ff,
0x1a0 & 0x3ff,
0x19a & 0x3ff,
0x195 & 0x3ff,
0x18f & 0x3ff,
0x18a & 0x3ff,
0x185 & 0x3ff,
0x180 & 0x3ff,
0x17a & 0x3ff,
0x175 & 0x3ff,
0x170 & 0x3ff,
0x16b & 0x3ff,
0x166 & 0x3ff,
0x161 & 0x3ff,
0x15d & 0x3ff,
0x158 & 0x3ff,
0x153 & 0x3ff,
0x14e & 0x3ff,
0x14a & 0x3ff,
0x145 & 0x3ff,
0x140 & 0x3ff,
0x13c & 0x3ff,
0x138 & 0x3ff,
0x133 & 0x3ff,
0x12f & 0x3ff,
0x12a & 0x3ff,
0x126 & 0x3ff,
0x122 & 0x3ff,
0x11e & 0x3ff,
0x11a & 0x3ff,
0x115 & 0x3ff,
0x111 & 0x3ff,
0x10d & 0x3ff,
0x109 & 0x3ff,
0x105 & 0x3ff,
0x101 & 0x3ff,
0xfd & 0x3ff,
0xfa & 0x3ff,
0xf6 & 0x3ff,
0xf2 & 0x3ff,
0xee & 0x3ff,
0xea & 0x3ff,
0xe7 & 0x3ff,
0xe3 & 0x3ff,
0xdf & 0x3ff,
0xdc & 0x3ff,
0xd8 & 0x3ff,
0xd5 & 0x3ff,
0xd1 & 0x3ff,
0xce & 0x3ff,
0xca & 0x3ff,
0xc7 & 0x3ff,
0xc3 & 0x3ff,
0xc0 & 0x3ff,
0xbd & 0x3ff,
0xb9 & 0x3ff,
0xb6 & 0x3ff,
0xb3 & 0x3ff,
0xb0 & 0x3ff,
0xad & 0x3ff,
0xa9 & 0x3ff,
0xa6 & 0x3ff,
0xa3 & 0x3ff,
0xa0 & 0x3ff,
0x9d & 0x3ff,
0x9a & 0x3ff,
0x97 & 0x3ff,
0x94 & 0x3ff,
0x91 & 0x3ff,
0x8e & 0x3ff,
0x8b & 0x3ff,
0x88 & 0x3ff,
0x85 & 0x3ff,
0x82 & 0x3ff,
0x7f & 0x3ff,
0x7d & 0x3ff,
0x7a & 0x3ff,
0x77 & 0x3ff,
0x74 & 0x3ff,
0x71 & 0x3ff,
0x6f & 0x3ff,
0x6c & 0x3ff,
0x69 & 0x3ff,
0x67 & 0x3ff,
0x64 & 0x3ff,
0x61 & 0x3ff,
0x5f & 0x3ff,
0x5c & 0x3ff,
0x5a & 0x3ff,
0x57 & 0x3ff,
0x54 & 0x3ff,
0x52 & 0x3ff,
0x4f & 0x3ff,
0x4d & 0x3ff,
0x4a & 0x3ff,
0x48 & 0x3ff,
0x45 & 0x3ff,
0x43 & 0x3ff,
0x41 & 0x3ff,
0x3e & 0x3ff,
0x3c & 0x3ff,
0x3a & 0x3ff,
0x37 & 0x3ff,
0x35 & 0x3ff,
0x33 & 0x3ff,
0x30 & 0x3ff,
0x2e & 0x3ff,
0x2c & 0x3ff,
0x29 & 0x3ff,
0x27 & 0x3ff,
0x25 & 0x3ff,
0x23 & 0x3ff,
0x20 & 0x3ff,
0x1e & 0x3ff,
0x1c & 0x3ff,
0x1a & 0x3ff,
0x18 & 0x3ff,
0x16 & 0x3ff,
0x14 & 0x3ff,
0x11 & 0x3ff,
0xf & 0x3ff,
0xd & 0x3ff,
0xb & 0x3ff,
0x9 & 0x3ff,
0x7 & 0x3ff,
0x5 & 0x3ff,
0x3 & 0x3ff,
0x1 & 0x3ff,
0x3fc & 0x3ff,
0x3f4 & 0x3ff,
0x3ec & 0x3ff,
0x3e5 & 0x3ff,
0x3dd & 0x3ff,
0x3d5 & 0x3ff,
0x3ce & 0x3ff,
0x3c7 & 0x3ff,
0x3bf & 0x3ff,
0x3b8 & 0x3ff,
0x3b1 & 0x3ff,
0x3aa & 0x3ff,
0x3a3 & 0x3ff,
0x39c & 0x3ff,
0x395 & 0x3ff,
0x38e & 0x3ff,
0x388 & 0x3ff,
0x381 & 0x3ff,
0x37a & 0x3ff,
0x374 & 0x3ff,
0x36d & 0x3ff,
0x367 & 0x3ff,
0x361 & 0x3ff,
0x35a & 0x3ff,
0x354 & 0x3ff,
0x34e & 0x3ff,
0x348 & 0x3ff,
0x342 & 0x3ff,
0x33c & 0x3ff,
0x336 & 0x3ff,
0x330 & 0x3ff,
0x32b & 0x3ff,
0x325 & 0x3ff,
0x31f & 0x3ff,
0x31a & 0x3ff,
0x314 & 0x3ff,
0x30f & 0x3ff,
0x309 & 0x3ff,
0x304 & 0x3ff,
0x2fe & 0x3ff,
0x2f9 & 0x3ff,
0x2f4 & 0x3ff,
0x2ee & 0x3ff,
0x2e9 & 0x3ff,
0x2e4 & 0x3ff,
0x2df & 0x3ff,
0x2da & 0x3ff,
0x2d5 & 0x3ff,
0x2d0 & 0x3ff,
0x2cb & 0x3ff,
0x2c6 & 0x3ff,
0x2c1 & 0x3ff,
0x2bd & 0x3ff,
0x2b8 & 0x3ff,
0x2b3 & 0x3ff,
0x2ae & 0x3ff,
0x2aa & 0x3ff,
0x2a5 & 0x3ff,
0x2a1 & 0x3ff,
0x29c & 0x3ff,
0x298 & 0x3ff,
0x293 & 0x3ff,
0x28f & 0x3ff,
0x28a & 0x3ff,
0x286 & 0x3ff,
0x282 & 0x3ff,
0x27d & 0x3ff,
0x279 & 0x3ff,
0x275 & 0x3ff,
0x271 & 0x3ff,
0x26d & 0x3ff,
0x268 & 0x3ff,
0x264 & 0x3ff,
0x260 & 0x3ff,
0x25c & 0x3ff,
0x258 & 0x3ff,
0x254 & 0x3ff,
0x250 & 0x3ff,
0x24c & 0x3ff,
0x249 & 0x3ff,
0x245 & 0x3ff,
0x241 & 0x3ff,
0x23d & 0x3ff,
0x239 & 0x3ff,
0x235 & 0x3ff,
0x232 & 0x3ff,
0x22e & 0x3ff,
0x22a & 0x3ff,
0x227 & 0x3ff,
0x223 & 0x3ff,
0x220 & 0x3ff,
0x21c & 0x3ff,
0x218 & 0x3ff,
0x215 & 0x3ff,
0x211 & 0x3ff,
0x20e & 0x3ff,
0x20a & 0x3ff,
0x207 & 0x3ff,
0x204 & 0x3ff,
0x200 & 0x3ff,
0x1fd & 0x3ff,
0x1f9 & 0x3ff,
0x1f6 & 0x3ff,
0x1f3 & 0x3ff,
0x1f0 & 0x3ff,
0x1ec & 0x3ff,
0x1e9 & 0x3ff,
0x1e6 & 0x3ff,
0x1e3 & 0x3ff,
0x1df & 0x3ff,
0x1dc & 0x3ff,
0x1d9 & 0x3ff,
0x1d6 & 0x3ff,
0x1d3 & 0x3ff,
0x1d0 & 0x3ff,
0x1cd & 0x3ff,
0x1ca & 0x3ff,
0x1c7 & 0x3ff,
0x1c4 & 0x3ff,
0x1c1 & 0x3ff,
0x1be & 0x3ff,
0x1bb & 0x3ff,
0x1b8 & 0x3ff,
0x1b5 & 0x3ff,
0x1b2 & 0x3ff,
0x1af & 0x3ff,
0x1ac & 0x3ff,
0x1aa & 0x3ff,
0
};
/* constant table RECIP_10b_256 */
static const unsigned CONST_TBL_RECIP_10b_256_0[] = {
0x3fc & 0x3ff,
0x3f4 & 0x3ff,
0x3ec & 0x3ff,
0x3e4 & 0x3ff,
0x3dd & 0x3ff,
0x3d5 & 0x3ff,
0x3cd & 0x3ff,
0x3c6 & 0x3ff,
0x3be & 0x3ff,
0x3b7 & 0x3ff,
0x3af & 0x3ff,
0x3a8 & 0x3ff,
0x3a1 & 0x3ff,
0x399 & 0x3ff,
0x392 & 0x3ff,
0x38b & 0x3ff,
0x384 & 0x3ff,
0x37d & 0x3ff,
0x376 & 0x3ff,
0x36f & 0x3ff,
0x368 & 0x3ff,
0x361 & 0x3ff,
0x35b & 0x3ff,
0x354 & 0x3ff,
0x34d & 0x3ff,
0x346 & 0x3ff,
0x340 & 0x3ff,
0x339 & 0x3ff,
0x333 & 0x3ff,
0x32c & 0x3ff,
0x326 & 0x3ff,
0x320 & 0x3ff,
0x319 & 0x3ff,
0x313 & 0x3ff,
0x30d & 0x3ff,
0x307 & 0x3ff,
0x300 & 0x3ff,
0x2fa & 0x3ff,
0x2f4 & 0x3ff,
0x2ee & 0x3ff,
0x2e8 & 0x3ff,
0x2e2 & 0x3ff,
0x2dc & 0x3ff,
0x2d7 & 0x3ff,
0x2d1 & 0x3ff,
0x2cb & 0x3ff,
0x2c5 & 0x3ff,
0x2bf & 0x3ff,
0x2ba & 0x3ff,
0x2b4 & 0x3ff,
0x2af & 0x3ff,
0x2a9 & 0x3ff,
0x2a3 & 0x3ff,
0x29e & 0x3ff,
0x299 & 0x3ff,
0x293 & 0x3ff,
0x28e & 0x3ff,
0x288 & 0x3ff,
0x283 & 0x3ff,
0x27e & 0x3ff,
0x279 & 0x3ff,
0x273 & 0x3ff,
0x26e & 0x3ff,
0x269 & 0x3ff,
0x264 & 0x3ff,
0x25f & 0x3ff,
0x25a & 0x3ff,
0x255 & 0x3ff,
0x250 & 0x3ff,
0x24b & 0x3ff,
0x246 & 0x3ff,
0x241 & 0x3ff,
0x23c & 0x3ff,
0x237 & 0x3ff,
0x232 & 0x3ff,
0x22e & 0x3ff,
0x229 & 0x3ff,
0x224 & 0x3ff,
0x21f & 0x3ff,
0x21b & 0x3ff,
0x216 & 0x3ff,
0x211 & 0x3ff,
0x20d & 0x3ff,
0x208 & 0x3ff,
0x204 & 0x3ff,
0x1ff & 0x3ff,
0x1fb & 0x3ff,
0x1f6 & 0x3ff,
0x1f2 & 0x3ff,
0x1ed & 0x3ff,
0x1e9 & 0x3ff,
0x1e5 & 0x3ff,
0x1e0 & 0x3ff,
0x1dc & 0x3ff,
0x1d8 & 0x3ff,
0x1d4 & 0x3ff,
0x1cf & 0x3ff,
0x1cb & 0x3ff,
0x1c7 & 0x3ff,
0x1c3 & 0x3ff,
0x1bf & 0x3ff,
0x1bb & 0x3ff,
0x1b6 & 0x3ff,
0x1b2 & 0x3ff,
0x1ae & 0x3ff,
0x1aa & 0x3ff,
0x1a6 & 0x3ff,
0x1a2 & 0x3ff,
0x19e & 0x3ff,
0x19a & 0x3ff,
0x197 & 0x3ff,
0x193 & 0x3ff,
0x18f & 0x3ff,
0x18b & 0x3ff,
0x187 & 0x3ff,
0x183 & 0x3ff,
0x17f & 0x3ff,
0x17c & 0x3ff,
0x178 & 0x3ff,
0x174 & 0x3ff,
0x171 & 0x3ff,
0x16d & 0x3ff,
0x169 & 0x3ff,
0x166 & 0x3ff,
0x162 & 0x3ff,
0x15e & 0x3ff,
0x15b & 0x3ff,
0x157 & 0x3ff,
0x154 & 0x3ff,
0x150 & 0x3ff,
0x14d & 0x3ff,
0x149 & 0x3ff,
0x146 & 0x3ff,
0x142 & 0x3ff,
0x13f & 0x3ff,
0x13b & 0x3ff,
0x138 & 0x3ff,
0x134 & 0x3ff,
0x131 & 0x3ff,
0x12e & 0x3ff,
0x12a & 0x3ff,
0x127 & 0x3ff,
0x124 & 0x3ff,
0x120 & 0x3ff,
0x11d & 0x3ff,
0x11a & 0x3ff,
0x117 & 0x3ff,
0x113 & 0x3ff,
0x110 & 0x3ff,
0x10d & 0x3ff,
0x10a & 0x3ff,
0x107 & 0x3ff,
0x103 & 0x3ff,
0x100 & 0x3ff,
0xfd & 0x3ff,
0xfa & 0x3ff,
0xf7 & 0x3ff,
0xf4 & 0x3ff,
0xf1 & 0x3ff,
0xee & 0x3ff,
0xeb & 0x3ff,
0xe8 & 0x3ff,
0xe5 & 0x3ff,
0xe2 & 0x3ff,
0xdf & 0x3ff,
0xdc & 0x3ff,
0xd9 & 0x3ff,
0xd6 & 0x3ff,
0xd3 & 0x3ff,
0xd0 & 0x3ff,
0xcd & 0x3ff,
0xca & 0x3ff,
0xc8 & 0x3ff,
0xc5 & 0x3ff,
0xc2 & 0x3ff,
0xbf & 0x3ff,
0xbc & 0x3ff,
0xb9 & 0x3ff,
0xb7 & 0x3ff,
0xb4 & 0x3ff,
0xb1 & 0x3ff,
0xae & 0x3ff,
0xac & 0x3ff,
0xa9 & 0x3ff,
0xa6 & 0x3ff,
0xa4 & 0x3ff,
0xa1 & 0x3ff,
0x9e & 0x3ff,
0x9c & 0x3ff,
0x99 & 0x3ff,
0x96 & 0x3ff,
0x94 & 0x3ff,
0x91 & 0x3ff,
0x8e & 0x3ff,
0x8c & 0x3ff,
0x89 & 0x3ff,
0x87 & 0x3ff,
0x84 & 0x3ff,
0x82 & 0x3ff,
0x7f & 0x3ff,
0x7c & 0x3ff,
0x7a & 0x3ff,
0x77 & 0x3ff,
0x75 & 0x3ff,
0x73 & 0x3ff,
0x70 & 0x3ff,
0x6e & 0x3ff,
0x6b & 0x3ff,
0x69 & 0x3ff,
0x66 & 0x3ff,
0x64 & 0x3ff,
0x61 & 0x3ff,
0x5f & 0x3ff,
0x5d & 0x3ff,
0x5a & 0x3ff,
0x58 & 0x3ff,
0x56 & 0x3ff,
0x53 & 0x3ff,
0x51 & 0x3ff,
0x4f & 0x3ff,
0x4c & 0x3ff,
0x4a & 0x3ff,
0x48 & 0x3ff,
0x45 & 0x3ff,
0x43 & 0x3ff,
0x41 & 0x3ff,
0x3f & 0x3ff,
0x3c & 0x3ff,
0x3a & 0x3ff,
0x38 & 0x3ff,
0x36 & 0x3ff,
0x33 & 0x3ff,
0x31 & 0x3ff,
0x2f & 0x3ff,
0x2d & 0x3ff,
0x2b & 0x3ff,
0x29 & 0x3ff,
0x26 & 0x3ff,
0x24 & 0x3ff,
0x22 & 0x3ff,
0x20 & 0x3ff,
0x1e & 0x3ff,
0x1c & 0x3ff,
0x1a & 0x3ff,
0x18 & 0x3ff,
0x15 & 0x3ff,
0x13 & 0x3ff,
0x11 & 0x3ff,
0xf & 0x3ff,
0xd & 0x3ff,
0xb & 0x3ff,
0x9 & 0x3ff,
0x7 & 0x3ff,
0x5 & 0x3ff,
0x3 & 0x3ff,
0x1 & 0x3ff,
0
};
/* Instruction operands. */
static int
OperandSem_opnd_sem_MR_0_decode (uint32 *valp)
{
*valp += 2;
return 0;
}
static int
OperandSem_opnd_sem_MR_0_encode (uint32 *valp)
{
int error;
error = ((*valp & ~0x3) != 0) || ((*valp & 0x2) == 0);
*valp = *valp & 1;
return error;
}
static int
OperandSem_opnd_sem_soffsetx4_decode (uint32 *valp)
{
unsigned soffsetx4_out_0;
unsigned soffsetx4_in_0;
soffsetx4_in_0 = *valp & 0x3ffff;
soffsetx4_out_0 = 0x4 + ((((int) soffsetx4_in_0 << 14) >> 14) << 2);
*valp = soffsetx4_out_0;
return 0;
}
static int
OperandSem_opnd_sem_soffsetx4_encode (uint32 *valp)
{
unsigned soffsetx4_in_0;
unsigned soffsetx4_out_0;
soffsetx4_out_0 = *valp;
soffsetx4_in_0 = ((soffsetx4_out_0 - 0x4) >> 2) & 0x3ffff;