refactor: Refactor TriCore instruction decoding and register definition.

- Update TriCore processor register definitions with auto-generated file `TriCoreGenCSRegEnum.inc`
- Add several new TriCore processor instructions with auto-generated file `TriCoreGenCSInsnEnum.inc`
- Update TriCore_OP_GROUP enumeration with auto-generated file `TriCoreGenCSOpGroup.inc`
- Rename and restructure TriCore processor register classes
- Remove unused register class definitions and related code
This commit is contained in:
billow 2023-04-04 00:37:20 +08:00
parent 117c9ebfad
commit 29ced4e735
No known key found for this signature in database
GPG Key ID: CA735DC44D699DE6
17 changed files with 14223 additions and 6140 deletions

View File

@ -169,60 +169,6 @@ static DecodeStatus DecodeBRNInstruction(MCInst *Inst, unsigned Insn, uint64_t A
#include "TriCoreGenRegisterInfo.inc"
static DecodeStatus DecodeDataRegsRegisterClass(MCInst *Inst, unsigned RegNo,
uint64_t Address, void *Decoder) {
unsigned Reg;
if (RegNo > 15)
return MCDisassembler_Fail;
Reg = getReg(Decoder, TriCore_DataRegsRegClassID, RegNo);
MCOperand_CreateReg0(Inst, Reg);
return MCDisassembler_Success;
}
static DecodeStatus DecodeAddrRegsRegisterClass(MCInst *Inst, unsigned RegNo,
uint64_t Address, void *Decoder) {
unsigned Reg;
if (RegNo > 15)
return MCDisassembler_Fail;
Reg = getReg(Decoder, TriCore_AddrRegsRegClassID, RegNo);
MCOperand_CreateReg0(Inst, Reg);
return MCDisassembler_Success;
}
static DecodeStatus DecodeExtRegsRegisterClass(MCInst *Inst, unsigned RegNo,
uint64_t Address, void *Decoder) {
unsigned Reg;
unsigned RegHalfNo = RegNo / 2;
if (RegHalfNo > 15)
return MCDisassembler_Fail;
Reg = getReg(Decoder, TriCore_ExtRegsRegClassID, RegHalfNo);
MCOperand_CreateReg0(Inst, Reg);
return MCDisassembler_Success;
}
static DecodeStatus DecodePairAddrRegsRegisterClass(MCInst *Inst, unsigned RegNo,
uint64_t Address, void *Decoder) {
unsigned Reg;
unsigned RegHalfNo = RegNo / 2;
if (RegHalfNo > 15)
return MCDisassembler_Fail;
Reg = getReg(Decoder, TriCore_PairAddrRegsRegClassID, RegHalfNo);
MCOperand_CreateReg0(Inst, Reg);
return MCDisassembler_Success;
}
static DecodeStatus
DecodeRegisterClass(MCInst *Inst, unsigned RegNo, const MCOperandInfo *MCOI, void *Decoder) {
unsigned Reg;
@ -311,9 +257,10 @@ static DecodeStatus DecodeSRInstruction(MCInst *Inst, unsigned Insn,
const MCInstrDesc *desc = &TriCoreInsts[MCInst_getOpcode(Inst)];
status = DecodeRegisterClass(Inst, s1_d, &desc->OpInfo[0], Decoder);
if (status == MCDisassembler_Success)
status = DecodeDataRegsRegisterClass(Inst, s1_d, Address, Decoder);
if (status != MCDisassembler_Success)
return status;
status = DecodeRegisterClass(Inst, s1_d, &desc->OpInfo[1], Decoder);
if (status != MCDisassembler_Success)
return status;
@ -1335,7 +1282,8 @@ static DecodeStatus DecodeABSBInstruction(MCInst *Inst, unsigned Insn, uint64_t
return MCDisassembler_Fail;
// Decode s1_d.
status = DecodeDataRegsRegisterClass(Inst, s1_d, Address, Decoder);
const MCInstrDesc *desc = &TriCoreInsts[MCInst_getOpcode(Inst)];
status = DecodeRegisterClass(Inst, s1_d, &desc->OpInfo[0], Decoder);
if (status != MCDisassembler_Success)
return status;
@ -1362,9 +1310,11 @@ static DecodeStatus DecodeRCRWInstruction(MCInst *Inst, unsigned Insn, uint64_t
if (status != MCDisassembler_Success)
return status;
unsigned opIdx = 0;
if (desc->NumOperands > 4) {
opIdx++;
// Decode s1.
status = DecodeDataRegsRegisterClass(Inst, s1, Address, Decoder);
status = DecodeRegisterClass(Inst, s1, &desc->OpInfo[1], Decoder);
if (status != MCDisassembler_Success)
return status;
}
@ -1373,7 +1323,7 @@ static DecodeStatus DecodeRCRWInstruction(MCInst *Inst, unsigned Insn, uint64_t
MCOperand_CreateImm0(Inst, const4);
// Decode s3.
status = DecodeDataRegsRegisterClass(Inst, s3, Address, Decoder);
status = DecodeRegisterClass(Inst, s1, &desc->OpInfo[opIdx+2], Decoder);
if (status != MCDisassembler_Success)
return status;
@ -1397,8 +1347,8 @@ static DecodeStatus DecodeBRNInstruction(MCInst *Inst, unsigned Insn, uint64_t A
if (!is32Bit) // This instruction is 32-bit
return MCDisassembler_Fail;
// Decode s1.
status = DecodeDataRegsRegisterClass(Inst, s1, Address, Decoder);
const MCInstrDesc *desc = &TriCoreInsts[MCInst_getOpcode(Inst)];
status = DecodeRegisterClass(Inst, s1, &desc->OpInfo[0], Decoder);
if (status != MCDisassembler_Success)
return status;

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
/* Capstone Disassembly Engine, https://www.capstone-engine.org */
/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2019 */
/* By Rot127 <unisono@quyllur.org>, 2023 */
/* Auto generated file. Do not edit. */
/* Code generator: https://github.com/capstone-engine/capstone/tree/next/suite/auto-sync */

View File

@ -0,0 +1,364 @@
/* Capstone Disassembly Engine, https://www.capstone-engine.org */
/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2019 */
/* By Rot127 <unisono@quyllur.org>, 2023 */
/* Auto generated file. Do not edit. */
/* Code generator: https://github.com/capstone-engine/capstone/tree/next/suite/auto-sync */
"xor_t", // TriCore_INS_XOR_T
"absdifs_b", // TriCore_INS_ABSDIFS_B
"absdifs_h", // TriCore_INS_ABSDIFS_H
"absdifs", // TriCore_INS_ABSDIFS
"absdif_b", // TriCore_INS_ABSDIF_B
"absdif_h", // TriCore_INS_ABSDIF_H
"absdif", // TriCore_INS_ABSDIF
"abss_b", // TriCore_INS_ABSS_B
"abss_h", // TriCore_INS_ABSS_H
"abss", // TriCore_INS_ABSS
"abs_b", // TriCore_INS_ABS_B
"abs_h", // TriCore_INS_ABS_H
"abs", // TriCore_INS_ABS
"addc", // TriCore_INS_ADDC
"addih_a", // TriCore_INS_ADDIH_A
"addih", // TriCore_INS_ADDIH
"addi", // TriCore_INS_ADDI
"addsc_at", // TriCore_INS_ADDSC_AT
"addsc_a", // TriCore_INS_ADDSC_A
"adds_bu", // TriCore_INS_ADDS_BU
"adds_b", // TriCore_INS_ADDS_B
"adds_h", // TriCore_INS_ADDS_H
"adds_hu", // TriCore_INS_ADDS_HU
"adds_u", // TriCore_INS_ADDS_U
"adds", // TriCore_INS_ADDS
"addx", // TriCore_INS_ADDX
"add_a", // TriCore_INS_ADD_A
"add_b", // TriCore_INS_ADD_B
"add_f", // TriCore_INS_ADD_F
"add_h", // TriCore_INS_ADD_H
"add", // TriCore_INS_ADD
"andn_t", // TriCore_INS_ANDN_T
"andn", // TriCore_INS_ANDN
"and_andn_t", // TriCore_INS_AND_ANDN_T
"and_and_t", // TriCore_INS_AND_AND_T
"and_eq", // TriCore_INS_AND_EQ
"and_ge_u", // TriCore_INS_AND_GE_U
"and_ge", // TriCore_INS_AND_GE
"and_lt_u", // TriCore_INS_AND_LT_U
"and_lt", // TriCore_INS_AND_LT
"and_ne", // TriCore_INS_AND_NE
"and_nor_t", // TriCore_INS_AND_NOR_T
"and_or_t", // TriCore_INS_AND_OR_T
"and_t", // TriCore_INS_AND_T
"and", // TriCore_INS_AND
"bisr", // TriCore_INS_BISR
"bmerge", // TriCore_INS_BMERGE
"bsplit", // TriCore_INS_BSPLIT
"cachea_i", // TriCore_INS_CACHEA_I
"cachea_wi", // TriCore_INS_CACHEA_WI
"cachea_w", // TriCore_INS_CACHEA_W
"cachei_i", // TriCore_INS_CACHEI_I
"cachei_wi", // TriCore_INS_CACHEI_WI
"cachei_w", // TriCore_INS_CACHEI_W
"caddn_a", // TriCore_INS_CADDN_A
"caddn", // TriCore_INS_CADDN
"cadd_a", // TriCore_INS_CADD_A
"cadd", // TriCore_INS_CADD
"calla", // TriCore_INS_CALLA
"calli", // TriCore_INS_CALLI
"call", // TriCore_INS_CALL
"clo_b", // TriCore_INS_CLO_B
"clo_h", // TriCore_INS_CLO_H
"clo", // TriCore_INS_CLO
"cls_b", // TriCore_INS_CLS_B
"cls_h", // TriCore_INS_CLS_H
"cls", // TriCore_INS_CLS
"clz_b", // TriCore_INS_CLZ_B
"clz_h", // TriCore_INS_CLZ_H
"clz", // TriCore_INS_CLZ
"cmovn", // TriCore_INS_CMOVN
"cmov", // TriCore_INS_CMOV
"CMPSWAP_W", // TriCore_INS_CMPSWAP_W
"cmp_f", // TriCore_INS_CMP_F
"crc32b_w", // TriCore_INS_CRC32B_W
"crc32l_w", // TriCore_INS_CRC32L_W
"crc32_b", // TriCore_INS_CRC32_B
"crcn", // TriCore_INS_CRCN
"csubn_a", // TriCore_INS_CSUBN_A
"csub", // TriCore_INS_CSUB
"csub_a", // TriCore_INS_CSUB_A
"debug", // TriCore_INS_DEBUG
"dextr", // TriCore_INS_DEXTR
"difsc_a", // TriCore_INS_DIFSC_A
"disable", // TriCore_INS_DISABLE
"div_f", // TriCore_INS_DIV_F
"div_u", // TriCore_INS_DIV_U
"div", // TriCore_INS_DIV
"dsync", // TriCore_INS_DSYNC
"dvadj", // TriCore_INS_DVADJ
"dvinit_bu", // TriCore_INS_DVINIT_BU
"dvinit_b", // TriCore_INS_DVINIT_B
"dvinit_hu", // TriCore_INS_DVINIT_HU
"dvinit_h", // TriCore_INS_DVINIT_H
"dvinit_u", // TriCore_INS_DVINIT_U
"dvinit", // TriCore_INS_DVINIT
"dvstep_u", // TriCore_INS_DVSTEP_U
"dvstep", // TriCore_INS_DVSTEP
"enable", // TriCore_INS_ENABLE
"eqany_b", // TriCore_INS_EQANY_B
"eqany_h", // TriCore_INS_EQANY_H
"eqz_a", // TriCore_INS_EQZ_A
"eq_a", // TriCore_INS_EQ_A
"eq_b", // TriCore_INS_EQ_B
"eq_h", // TriCore_INS_EQ_H
"eq_w", // TriCore_INS_EQ_W
"eq", // TriCore_INS_EQ
"extr_u", // TriCore_INS_EXTR_U
"extr", // TriCore_INS_EXTR
"fcalla", // TriCore_INS_FCALLA
"fcalli", // TriCore_INS_FCALLI
"fcall", // TriCore_INS_FCALL
"fret", // TriCore_INS_FRET
"ftohp", // TriCore_INS_FTOHP
"ftoiz", // TriCore_INS_FTOIZ
"ftoi", // TriCore_INS_FTOI
"ftoq31z", // TriCore_INS_FTOQ31Z
"ftoq31", // TriCore_INS_FTOQ31
"ftouz", // TriCore_INS_FTOUZ
"ftou", // TriCore_INS_FTOU
"ge_a", // TriCore_INS_GE_A
"ge_u", // TriCore_INS_GE_U
"ge", // TriCore_INS_GE
"hptof", // TriCore_INS_HPTOF
"imask", // TriCore_INS_IMASK
"insert", // TriCore_INS_INSERT
"insn_t", // TriCore_INS_INSN_T
"ins_t", // TriCore_INS_INS_T
"isync", // TriCore_INS_ISYNC
"itof", // TriCore_INS_ITOF
"ixmax_u", // TriCore_INS_IXMAX_U
"ixmax", // TriCore_INS_IXMAX
"ixmin_u", // TriCore_INS_IXMIN_U
"ixmin", // TriCore_INS_IXMIN
"ja", // TriCore_INS_JA
"jeq_a", // TriCore_INS_JEQ_A
"jeq", // TriCore_INS_JEQ
"jgez", // TriCore_INS_JGEZ
"jge_u", // TriCore_INS_JGE_U
"jge", // TriCore_INS_JGE
"jgtz", // TriCore_INS_JGTZ
"ji", // TriCore_INS_JI
"jla", // TriCore_INS_JLA
"jlez", // TriCore_INS_JLEZ
"jli", // TriCore_INS_JLI
"jltz", // TriCore_INS_JLTZ
"jlt_u", // TriCore_INS_JLT_U
"jlt", // TriCore_INS_JLT
"jl", // TriCore_INS_JL
"jned", // TriCore_INS_JNED
"jnei", // TriCore_INS_JNEI
"jne_a", // TriCore_INS_JNE_A
"jne", // TriCore_INS_JNE
"jnz_a", // TriCore_INS_JNZ_A
"jnz_t", // TriCore_INS_JNZ_T
"jnz", // TriCore_INS_JNZ
"jz_a", // TriCore_INS_JZ_A
"jz_t", // TriCore_INS_JZ_T
"jz", // TriCore_INS_JZ
"j", // TriCore_INS_J
"ldlcx", // TriCore_INS_LDLCX
"ldmst", // TriCore_INS_LDMST
"lducx", // TriCore_INS_LDUCX
"ld_a", // TriCore_INS_LD_A
"ld_bu", // TriCore_INS_LD_BU
"ld_b", // TriCore_INS_LD_B
"ld_da", // TriCore_INS_LD_DA
"ld_d", // TriCore_INS_LD_D
"ld_hu", // TriCore_INS_LD_HU
"ld_h", // TriCore_INS_LD_H
"ld_q", // TriCore_INS_LD_Q
"ld_w", // TriCore_INS_LD_W
"lea", // TriCore_INS_LEA
"lha", // TriCore_INS_LHA
"loopu", // TriCore_INS_LOOPU
"loop", // TriCore_INS_LOOP
"lt_a", // TriCore_INS_LT_A
"lt_b", // TriCore_INS_LT_B
"lt_bu", // TriCore_INS_LT_BU
"lt_h", // TriCore_INS_LT_H
"lt_hu", // TriCore_INS_LT_HU
"lt_u", // TriCore_INS_LT_U
"lt_w", // TriCore_INS_LT_W
"lt_wu", // TriCore_INS_LT_WU
"lt", // TriCore_INS_LT
"maddms_h", // TriCore_INS_MADDMS_H
"maddm_h", // TriCore_INS_MADDM_H
"maddrs_h", // TriCore_INS_MADDRS_H
"maddrs_q", // TriCore_INS_MADDRS_Q
"maddr_h", // TriCore_INS_MADDR_H
"maddr_q", // TriCore_INS_MADDR_Q
"maddsums_h", // TriCore_INS_MADDSUMS_H
"maddsum_h", // TriCore_INS_MADDSUM_H
"maddsurs_h", // TriCore_INS_MADDSURS_H
"maddsur_h", // TriCore_INS_MADDSUR_H
"maddsus_h", // TriCore_INS_MADDSUS_H
"maddsu_h", // TriCore_INS_MADDSU_H
"madds_h", // TriCore_INS_MADDS_H
"madds_q", // TriCore_INS_MADDS_Q
"madds_u", // TriCore_INS_MADDS_U
"madds", // TriCore_INS_MADDS
"madd_f", // TriCore_INS_MADD_F
"madd_h", // TriCore_INS_MADD_H
"madd_q", // TriCore_INS_MADD_Q
"madd_u", // TriCore_INS_MADD_U
"madd", // TriCore_INS_MADD
"max_b", // TriCore_INS_MAX_B
"max_bu", // TriCore_INS_MAX_BU
"max_h", // TriCore_INS_MAX_H
"max_hu", // TriCore_INS_MAX_HU
"max_u", // TriCore_INS_MAX_U
"max", // TriCore_INS_MAX
"mfcr", // TriCore_INS_MFCR
"min_b", // TriCore_INS_MIN_B
"min_bu", // TriCore_INS_MIN_BU
"min_h", // TriCore_INS_MIN_H
"min_hu", // TriCore_INS_MIN_HU
"min_u", // TriCore_INS_MIN_U
"min", // TriCore_INS_MIN
"movh_a", // TriCore_INS_MOVH_A
"movh", // TriCore_INS_MOVH
"mov_aa", // TriCore_INS_MOV_AA
"mov_a", // TriCore_INS_MOV_A
"mov_d", // TriCore_INS_MOV_D
"mov_u", // TriCore_INS_MOV_U
"mov", // TriCore_INS_MOV
"msubadms_h", // TriCore_INS_MSUBADMS_H
"msubadm_h", // TriCore_INS_MSUBADM_H
"msubadrs_h", // TriCore_INS_MSUBADRS_H
"msubadr_h", // TriCore_INS_MSUBADR_H
"msubads_h", // TriCore_INS_MSUBADS_H
"msubad_h", // TriCore_INS_MSUBAD_H
"msubms_h", // TriCore_INS_MSUBMS_H
"msubm_h", // TriCore_INS_MSUBM_H
"msubrs_h", // TriCore_INS_MSUBRS_H
"msubrs_q", // TriCore_INS_MSUBRS_Q
"msubr_h", // TriCore_INS_MSUBR_H
"msubr_q", // TriCore_INS_MSUBR_Q
"msubs_h", // TriCore_INS_MSUBS_H
"msubs_q", // TriCore_INS_MSUBS_Q
"msubs", // TriCore_INS_MSUBS
"msub_f", // TriCore_INS_MSUB_F
"msub_h", // TriCore_INS_MSUB_H
"msub_q", // TriCore_INS_MSUB_Q
"msub", // TriCore_INS_MSUB
"mtcr", // TriCore_INS_MTCR
"mulm_h", // TriCore_INS_MULM_H
"mulr_h", // TriCore_INS_MULR_H
"mulr_q", // TriCore_INS_MULR_Q
"muls_u", // TriCore_INS_MULS_U
"muls", // TriCore_INS_MULS
"mul_f", // TriCore_INS_MUL_F
"mul_h", // TriCore_INS_MUL_H
"mul_q", // TriCore_INS_MUL_Q
"mul_u", // TriCore_INS_MUL_U
"mul", // TriCore_INS_MUL
"nand_t", // TriCore_INS_NAND_T
"nand", // TriCore_INS_NAND
"nez_a", // TriCore_INS_NEZ_A
"ne_a", // TriCore_INS_NE_A
"ne", // TriCore_INS_NE
"nop", // TriCore_INS_NOP
"nor_t", // TriCore_INS_NOR_T
"nor", // TriCore_INS_NOR
"not", // TriCore_INS_NOT
"orn_t", // TriCore_INS_ORN_T
"orn", // TriCore_INS_ORN
"or_andn_t", // TriCore_INS_OR_ANDN_T
"or_and_t", // TriCore_INS_OR_AND_T
"or_eq", // TriCore_INS_OR_EQ
"or_ge_u", // TriCore_INS_OR_GE_U
"or_ge", // TriCore_INS_OR_GE
"or_lt_u", // TriCore_INS_OR_LT_U
"or_lt", // TriCore_INS_OR_LT
"or_ne", // TriCore_INS_OR_NE
"or_nor_t", // TriCore_INS_OR_NOR_T
"or_or_t", // TriCore_INS_OR_OR_T
"or_t", // TriCore_INS_OR_T
"or", // TriCore_INS_OR
"pack", // TriCore_INS_PACK
"parity", // TriCore_INS_PARITY
"popcnt_w", // TriCore_INS_POPCNT_W
"q31tof", // TriCore_INS_Q31TOF
"qseed_f", // TriCore_INS_QSEED_F
"restore", // TriCore_INS_RESTORE
"ret", // TriCore_INS_RET
"rfe", // TriCore_INS_RFE
"rfm", // TriCore_INS_RFM
"relck", // TriCore_INS_RELCK
"rsubs_u", // TriCore_INS_RSUBS_U
"rsubs", // TriCore_INS_RSUBS
"rsub", // TriCore_INS_RSUB
"sat_bu", // TriCore_INS_SAT_BU
"sat_b", // TriCore_INS_SAT_B
"sat_hu", // TriCore_INS_SAT_HU
"sat_h", // TriCore_INS_SAT_H
"seln", // TriCore_INS_SELN
"sel", // TriCore_INS_SEL
"shas", // TriCore_INS_SHAS
"sha_h", // TriCore_INS_SHA_H
"sha", // TriCore_INS_SHA
"shuffle", // TriCore_INS_SHUFFLE
"sh_andn_t", // TriCore_INS_SH_ANDN_T
"sh_and_t", // TriCore_INS_SH_AND_T
"sh_eq", // TriCore_INS_SH_EQ
"sh_ge_u", // TriCore_INS_SH_GE_U
"sh_ge", // TriCore_INS_SH_GE
"sh_h", // TriCore_INS_SH_H
"sh_lt_u", // TriCore_INS_SH_LT_U
"sh_lt", // TriCore_INS_SH_LT
"sh_nand_t", // TriCore_INS_SH_NAND_T
"sh_nor_t", // TriCore_INS_SH_NOR_T
"sh_orn_t", // TriCore_INS_SH_ORN_T
"sh_or_t", // TriCore_INS_SH_OR_T
"sh_xnor_t", // TriCore_INS_SH_XNOR_T
"sh_xor_t", // TriCore_INS_SH_XOR_T
"sh", // TriCore_INS_SH
"stlcx", // TriCore_INS_STLCX
"stucx", // TriCore_INS_STUCX
"st_a", // TriCore_INS_ST_A
"st_b", // TriCore_INS_ST_B
"st_da", // TriCore_INS_ST_DA
"st_d", // TriCore_INS_ST_D
"st_h", // TriCore_INS_ST_H
"st_q", // TriCore_INS_ST_Q
"st_t", // TriCore_INS_ST_T
"st_w", // TriCore_INS_ST_W
"subc", // TriCore_INS_SUBC
"subs_hu", // TriCore_INS_SUBS_HU
"subs_h", // TriCore_INS_SUBS_H
"subs_u", // TriCore_INS_SUBS_U
"subs", // TriCore_INS_SUBS
"subx", // TriCore_INS_SUBX
"sub_a", // TriCore_INS_SUB_A
"sub_b", // TriCore_INS_SUB_B
"sub_f", // TriCore_INS_SUB_F
"sub_h", // TriCore_INS_SUB_H
"sub", // TriCore_INS_SUB
"svlcx", // TriCore_INS_SVLCX
"swapmsk_w", // TriCore_INS_SWAPMSK_W
"swap_w", // TriCore_INS_SWAP_W
"syscall", // TriCore_INS_SYSCALL
"trapsv", // TriCore_INS_TRAPSV
"trapv", // TriCore_INS_TRAPV
"unpack", // TriCore_INS_UNPACK
"updfl", // TriCore_INS_UPDFL
"utof", // TriCore_INS_UTOF
"wait", // TriCore_INS_WAIT
"xnor_t", // TriCore_INS_XNOR_T
"xnor", // TriCore_INS_XNOR
"xor_eq", // TriCore_INS_XOR_EQ
"xor_ge_u", // TriCore_INS_XOR_GE_U
"xor_ge", // TriCore_INS_XOR_GE
"xor_lt_u", // TriCore_INS_XOR_LT_U
"xor_lt", // TriCore_INS_XOR_LT
"xor_ne", // TriCore_INS_XOR_NE
"xor", // TriCore_INS_XOR

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,18 @@
/* Capstone Disassembly Engine, https://www.capstone-engine.org */
/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2019 */
/* By Rot127 <unisono@quyllur.org>, 2023 */
/* Auto generated file. Do not edit. */
/* Code generator: https://github.com/capstone-engine/capstone/tree/next/suite/auto-sync */
TriCore_OP_GROUP_RegImmShift = 0,
TriCore_OP_GROUP_LdStmModeOperand = 1,
TriCore_OP_GROUP_MandatoryInvertedPredicateOperand = 2,
TriCore_OP_GROUP_Operand = 3,
TriCore_OP_GROUP_SExtImm__ = 4,
TriCore_OP_GROUP_ZExtImm__ = 5,
TriCore_OP_GROUP_Disp24Imm = 6,
TriCore_OP_GROUP_Disp8Imm = 7,
TriCore_OP_GROUP_Disp15Imm = 8,
TriCore_OP_GROUP_Disp4Imm = 9,
TriCore_OP_GROUP_Off18Imm = 10,

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -75,12 +75,12 @@ enum {
// Register classes
enum {
TriCore_AddrRegsRegClassID = 0,
TriCore_DataRegsRegClassID = 1,
TriCore_RARegClassID = 0,
TriCore_RDRegClassID = 1,
TriCore_PSRegsRegClassID = 2,
TriCore_AddrExtRegsRegClassID = 3,
TriCore_ExtRegsRegClassID = 4,
TriCore_PairAddrRegsRegClassID = 5,
TriCore_PairAddrRegsRegClassID = 3,
TriCore_RERegClassID = 4,
TriCore_RPRegClassID = 5,
};
@ -213,23 +213,23 @@ static const MCRegisterDesc TriCoreRegDesc[] = { // Descriptors
{ 126, 30, 2, 0, 2, 2 },
};
// AddrRegs Register Class...
static const MCPhysReg AddrRegs[] = {
// RA Register Class...
static const MCPhysReg RA[] = {
TriCore_A0, TriCore_A1, TriCore_A2, TriCore_A3, TriCore_A4, TriCore_A5, TriCore_A6, TriCore_A7, TriCore_A8, TriCore_A9, TriCore_A10, TriCore_A11, TriCore_A12, TriCore_A13, TriCore_A14, TriCore_A15,
};
// AddrRegs Bit set.
static const uint8_t AddrRegsBits[] = {
// RA Bit set.
static const uint8_t RABits[] = {
0xe0, 0xff, 0x1f,
};
// DataRegs Register Class...
static const MCPhysReg DataRegs[] = {
// RD Register Class...
static const MCPhysReg RD[] = {
TriCore_D0, TriCore_D1, TriCore_D2, TriCore_D3, TriCore_D4, TriCore_D5, TriCore_D6, TriCore_D7, TriCore_D8, TriCore_D9, TriCore_D10, TriCore_D11, TriCore_D12, TriCore_D13, TriCore_D14, TriCore_D15,
};
// DataRegs Bit set.
static const uint8_t DataRegsBits[] = {
// RD Bit set.
static const uint8_t RDBits[] = {
0x00, 0x00, 0xe0, 0xff, 0x1f,
};
@ -243,26 +243,6 @@ static const MCRegisterDesc TriCoreRegDesc[] = { // Descriptors
0x1e,
};
// AddrExtRegs Register Class...
static const MCPhysReg AddrExtRegs[] = {
TriCore_P0, TriCore_P2, TriCore_P4, TriCore_P6, TriCore_P8, TriCore_P10, TriCore_P12, TriCore_P14,
};
// AddrExtRegs Bit set.
static const uint8_t AddrExtRegsBits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f,
};
// ExtRegs Register Class...
static const MCPhysReg ExtRegs[] = {
TriCore_E0, TriCore_E2, TriCore_E4, TriCore_E6, TriCore_E8, TriCore_E10, TriCore_E12, TriCore_E14,
};
// ExtRegs Bit set.
static const uint8_t ExtRegsBits[] = {
0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f,
};
// PairAddrRegs Register Class...
static const MCPhysReg PairAddrRegs[] = {
TriCore_A0_A1, TriCore_A2_A3, TriCore_A4_A5, TriCore_A6_A7, TriCore_A8_A9, TriCore_A10_A11, TriCore_A12_A13, TriCore_A14_A15,
@ -273,13 +253,33 @@ static const MCRegisterDesc TriCoreRegDesc[] = { // Descriptors
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f,
};
// RE Register Class...
static const MCPhysReg RE[] = {
TriCore_E0, TriCore_E2, TriCore_E4, TriCore_E6, TriCore_E8, TriCore_E10, TriCore_E12, TriCore_E14,
};
// RE Bit set.
static const uint8_t REBits[] = {
0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f,
};
// RP Register Class...
static const MCPhysReg RP[] = {
TriCore_P0, TriCore_P2, TriCore_P4, TriCore_P6, TriCore_P8, TriCore_P10, TriCore_P12, TriCore_P14,
};
// RP Bit set.
static const uint8_t RPBits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1f,
};
static const MCRegisterClass TriCoreMCRegisterClasses[] = {
{ AddrRegs, AddrRegsBits, sizeof(AddrRegsBits) },
{ DataRegs, DataRegsBits, sizeof(DataRegsBits) },
{ RA, RABits, sizeof(RABits) },
{ RD, RDBits, sizeof(RDBits) },
{ PSRegs, PSRegsBits, sizeof(PSRegsBits) },
{ AddrExtRegs, AddrExtRegsBits, sizeof(AddrExtRegsBits) },
{ ExtRegs, ExtRegsBits, sizeof(ExtRegsBits) },
{ PairAddrRegs, PairAddrRegsBits, sizeof(PairAddrRegsBits) },
{ RE, REBits, sizeof(REBits) },
{ RP, RPBits, sizeof(RPBits) },
};
#endif // GET_REGINFO_MC_DESC

View File

@ -230,36 +230,44 @@ class ISC_C<bits<8> op1, string asmstr>
: SC<op1, (outs), (ins u8imm:$const8),
asmstr # " $const8", []>;
class ISRC<bits<8> op1, string asmstr>
class ISRC_DdC<bits<8> op1, string asmstr>
: SRC<op1, (outs RD:$d), (ins s4imm:$const4),
asmstr # " $d, $const4",
[]>;
class ISRC_Aa<bits<8> op1, string asmstr>
class ISRC_AdS<bits<8> op1, string asmstr>
: SRC<op1, (outs RA:$d), (ins s4imm:$const4),
asmstr # " $d, $const4",
[]>;
class ISRC_AaZ<bits<8> op1, string asmstr>
class ISRC_AdU<bits<8> op1, string asmstr>
: SRC<op1, (outs RA:$d), (ins u4imm:$const4),
asmstr # " $d, $const4",
[]>;
class ISRC_a15<bits<8> op1, string asmstr>
class ISRC_AdD15S<bits<8> op1, string asmstr>
: SRC<op1, (outs RD:$d), (ins s4imm:$const4),
asmstr # " $d, %d15, $const4",
[]>;
class ISRC_15a<bits<8> op1, string asmstr>
class ISRC_D15DdS<bits<8> op1, string asmstr>
: SRC<op1, (outs RD:$d), (ins s4imm:$const4),
asmstr # " %d15, $d, $const4",
[]>;
multiclass mISRR_SRC<bits<8> op_srr, bits<8> op_src, string asmstr,
RegisterClass RCd=RD, RegisterClass RC2=RD, Operand Oc=u4imm, string posfix="">{
def _srr#posfix: SRR<op_srr, (outs RCd:$d), (ins RC2:$s2),
asmstr # " %d15, $d, $s2", []>;
def _src#posfix: SRC<op_src, (outs RCd:$d), (ins Oc:$const4),
asmstr # " %d15, $d, $const4", []>;
}
multiclass mISRC_a15a<bits<8> op1, bits<8> op2, bits<8> op3,
string asmstr> {
def _src : ISRC<op1, asmstr>;
def _src_a15 : ISRC_a15<op2, asmstr>;
def _src_15a : ISRC_15a<op3, asmstr>;
def _src : ISRC_DdC<op1, asmstr>;
def _src_a15 : ISRC_AdD15S<op2, asmstr>;
def _src_15a : ISRC_D15DdS<op3, asmstr>;
}
class ISRRS_AcAbD15N<bits<6> op1, string asmstr>
@ -492,7 +500,7 @@ defm ADD : mIRR_RC<0x0B, 0x00, 0x8B, 0x00, "add">,
multiclass mIRR_SRC_SRR__A<bits<8> rr1, bits<8> rr2, bits<8> src1, bits<8> srr1,
string asmstr> {
def _rr : IRR_2<rr1, rr2, asmstr, RA, RA, RA>;
def _src : ISRC_Aa<src1, asmstr>;
def _src : ISRC_AdS<src1, asmstr>;
def _srr : ISRR_AaAb<srr1, asmstr>;
}
@ -715,7 +723,7 @@ def CADD_srr_v110 : ISRR_DdD15Db<0x0A, "cadd">, NsRequires<[HasV110]>;
def CADD_rcr : IRCR_DcDdDa<0xAB, 0x00, "cadd">;
def CADD_rrr : IRRR_DcDdDaDb<0x2B, 0x00, "cadd">;
def CADD_src : ISRC_a15<0x8A, "cadd">;
def CADD_src : ISRC_AdD15S<0x8A, "cadd">;
def CADD_A_rrr_v110 : RRR<0x21, 0x00, (outs RA:$d), (ins RD:$s1, RA:$s2, RA:$s3), "cadd.a $d $s3, $s1, $s2", []>
, NsRequires<[HasV110]>;
@ -726,7 +734,7 @@ def CADDN_srr_v110 : ISRR_DdD15Db<0x4A, "caddn">
def CADDN_rcr : IRCR_DcDdDa<0xAB, 0x01, "caddn">;
def CADDN_rrr : IRRR_DcDdDaDb<0x2B, 0x01, "caddn">;
def CADDN_src : ISRC_a15<0xCA, "caddn">;
def CADDN_src : ISRC_AdD15S<0xCA, "caddn">;
def CADDN_A_rrr_v110 : RRR<0x21, 0x01, (outs RA:$d), (ins RD:$s1, RA:$s2, RA:$s3), "caddn.a $d $s3, $s1, $s2", []>
, NsRequires<[HasV110]>;
@ -776,9 +784,9 @@ defm CLZ : mI_H<0x0F, 0x1B, 0x0F, 0x7C, "clz">;
def CLZ_B_rr_v110 : RR<0x0F, 0x3C, (outs RD:$d), (ins RD:$s1), "clz.b $d, $s1", []>
, NsRequires<[HasV110]>;
def CMOV_src : ISRC_a15<0xAA, "cmov">;
def CMOV_src : ISRC_AdD15S<0xAA, "cmov">;
def CMOV_srr : ISRR_DdD15Db<0x2A, "cmov">;
def CMOVN_src : ISRC_a15<0xEA, "cmovn">;
def CMOVN_src : ISRC_AdD15S<0xEA, "cmovn">;
def CMOVN_srr : ISRR_DdD15Db<0x6A, "cmovn">;
// A[b], off10, E[a] (BO)(Base + Short Offset Addressing Mode)
@ -997,7 +1005,7 @@ multiclass mIB_H_W<bits<8> brr1, bits<8> brr2,
defm EQ : mIRR_RC<0x0B, 0x10, 0x8B, 0x10, "eq">
, mIB_H_W<0x0B, 0x50, 0x0B, 0x70, 0x0B, 0x90, "eq">;
def EQ_src : ISRC_15a<0xBA, "eq">;
def EQ_src : ISRC_D15DdS<0xBA, "eq">;
def EQ_srr : ISRR_D15DdDb<0x3A, "eq">;
def EQ_A_rr: IRR_DcAaAb<0x01, 0x40, "eq.a">;
@ -1319,19 +1327,17 @@ def LEA_abs : IABS_RO<0xC5, 0x00, "lea", RA>;
def LEA_bo_bso : IBO_RAbso<0x49, 0x28, "lea", RA>;
def LEA_bol : IBOL_RAaO<0xD9, "lea", RA>;
def LHA_abs : IABS_RO<0xC5, 0x01, "lha", RA>;
def LHA_abs : IABS_RO<0xC5, 0x01, "lha", RA>, Requires<[HasV162_UP]>;
def LOOP_brr : IBRR_Ab<0xFD, 0x00, "loop">;
def LOOP_sbr : ISBR_Ab<0xFC, "loop">;
def LOOPU_brr : IBRR_0<0xFD, 0x01, "loopu">;
def LOOPU_brr : IBRR_0<0xFD, 0x01, "loopu">, Requires<[HasV120_UP]>;
defm LT : mIRR_RC<0x0B, 0x12, 0x8B, 0x12, "lt">;
def LT_src : ISRC_15a<0xFA, "lt">;
def LT_srr : ISRR_D15DdDb<0x7A, "lt">;
defm LT : mISRR_SRC<0x7A, 0xFA, "lt", RD, RD, s4imm>;
defm LT_U : mIRR_RC<0x0B, 0x13, 0x8B, 0x13, "lt.u">;
def LT_U_srr_v110;
def LT_U_src_v110;
defm LT_U : mISRR_SRC<0x06, 0x86, "lt.u", RD, RD, u4imm, "v110">, NsRequires<[HasV110]>;
def LT_A_rr : IRR_DcAaAb<0x01, 0x42, "lt.a">;
multiclass mIU__RR_ab<bits<8> op1, bits<8> op2,
@ -1464,14 +1470,14 @@ def MOV_rrDcDb : IRR_DcDb<0x0B, 0x1F, "mov">;
def MOV_rrEcDb : IRR_b<0x0B, 0x80, "mov", RE, RD>;
def MOV_rrEcDaDb : IRR_EcDaDb<0x0B, 0x81, "mov">;
def MOV_sc : ISC_D15C<0xDA, "mov">;
def MOV_srcDa : ISRC<0x82, "mov">;
def MOV_srcDa : ISRC_DdC<0x82, "mov">;
def MOV_srcEa : ISRC_1<0xD2, "mov", RE>;
def MOV_srr : ISRR_DaDb<0x02, "mov">;
multiclass mIRR_SRCz_SRR__A<bits<8> rr1, bits<8> rr2, bits<8> src1, bits<8> srr1,
string asmstr> {
def _rr : IRR_2<rr1, rr2, asmstr, RA, RA, RA>;
def _src : ISRC_AaZ<src1, asmstr>;
def _src : ISRC_AdU<src1, asmstr>;
def _srr : ISRR_AaDb<srr1, asmstr>;
}

View File

@ -90,7 +90,7 @@ static insn_map insns[] = {
0
#endif
},
#include "./gen/TriCoreGenCSMappingInsn.inc"
#include "TriCoreGenCSMappingInsn.inc"
};
// given internal insn id, return public instruction info
@ -131,7 +131,7 @@ void TriCore_get_insn_id(cs_struct *h, cs_insn *insn, unsigned int id)
static const char *insn_names[] = {
NULL,
#include "./gen/TriCoreGenCSMappingInsnName.inc"
#include "TriCoreGenCSMappingInsnName.inc"
};
// special alias insn

View File

@ -1,356 +0,0 @@
/* Capstone Disassembly Engine, https://www.capstone-engine.org */
/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2019 */
/* By Rot127 <unisono@quyllur.org>, 2023 */
/* Auto generated file. Do not edit. */
/* Code generator: https://github.com/capstone-engine/capstone/tree/next/suite/auto-sync */
"xor.t", // TriCore_INS_XOR.T
"absdifs.b", // TriCore_INS_ABSDIFS.B
"absdifs.h", // TriCore_INS_ABSDIFS.H
"absdifs", // TriCore_INS_ABSDIFS
"absdif.b", // TriCore_INS_ABSDIF.B
"absdif.h", // TriCore_INS_ABSDIF.H
"absdif", // TriCore_INS_ABSDIF
"abss.b", // TriCore_INS_ABSS.B
"abss.h", // TriCore_INS_ABSS.H
"abss", // TriCore_INS_ABSS
"abs.b", // TriCore_INS_ABS.B
"abs.h", // TriCore_INS_ABS.H
"abs", // TriCore_INS_ABS
"addc", // TriCore_INS_ADDC
"addih.a", // TriCore_INS_ADDIH.A
"addih", // TriCore_INS_ADDIH
"addi", // TriCore_INS_ADDI
"addsc.at", // TriCore_INS_ADDSC.AT
"addsc.a", // TriCore_INS_ADDSC.A
"adds.bu", // TriCore_INS_ADDS.BU
"adds.b", // TriCore_INS_ADDS.B
"adds.h", // TriCore_INS_ADDS.H
"adds.hu", // TriCore_INS_ADDS.HU
"adds.u", // TriCore_INS_ADDS.U
"adds", // TriCore_INS_ADDS
"addx", // TriCore_INS_ADDX
"add.a", // TriCore_INS_ADD.A
"add.b", // TriCore_INS_ADD.B
"add.f", // TriCore_INS_ADD.F
"add.h", // TriCore_INS_ADD.H
"add", // TriCore_INS_ADD
"andn.t", // TriCore_INS_ANDN.T
"andn", // TriCore_INS_ANDN
"and.andn.t", // TriCore_INS_AND.ANDN.T
"and.and.t", // TriCore_INS_AND.AND.T
"and.eq", // TriCore_INS_AND.EQ
"and.ge.u", // TriCore_INS_AND.GE.U
"and.ge", // TriCore_INS_AND.GE
"and.lt.u", // TriCore_INS_AND.LT.U
"and.lt", // TriCore_INS_AND.LT
"and.ne", // TriCore_INS_AND.NE
"and.nor.t", // TriCore_INS_AND.NOR.T
"and.or.t", // TriCore_INS_AND.OR.T
"and.t", // TriCore_INS_AND.T
"and", // TriCore_INS_AND
"bisr", // TriCore_INS_BISR
"bmerge", // TriCore_INS_BMERGE
"bsplit", // TriCore_INS_BSPLIT
"cachei.i", // TriCore_INS_CACHEI.I
"cachei.wi", // TriCore_INS_CACHEI.WI
"cachei.w", // TriCore_INS_CACHEI.W
"cache.i", // TriCore_INS_CACHE.I
"cache.wi", // TriCore_INS_CACHE.WI
"cache.w", // TriCore_INS_CACHE.W
"caddn", // TriCore_INS_CADDN
"cadd", // TriCore_INS_CADD
"calla", // TriCore_INS_CALLA
"calli", // TriCore_INS_CALLI
"call", // TriCore_INS_CALL
"clo.h", // TriCore_INS_CLO.H
"clo", // TriCore_INS_CLO
"cls.h", // TriCore_INS_CLS.H
"cls", // TriCore_INS_CLS
"clz.h", // TriCore_INS_CLZ.H
"clz", // TriCore_INS_CLZ
"cmovn", // TriCore_INS_CMOVN
"cmov", // TriCore_INS_CMOV
"CMPSWAP.W", // TriCore_INS_CMPSWAP.W
"cmp.f", // TriCore_INS_CMP.F
"crc32b.w", // TriCore_INS_CRC32B.W
"crc32l.w", // TriCore_INS_CRC32L.W
"crc32.b", // TriCore_INS_CRC32.B
"crcn", // TriCore_INS_CRCN
"csub", // TriCore_INS_CSUB
"debug", // TriCore_INS_DEBUG
"dextr", // TriCore_INS_DEXTR
"disable", // TriCore_INS_DISABLE
"div.f", // TriCore_INS_DIV.F
"div.u", // TriCore_INS_DIV.U
"div", // TriCore_INS_DIV
"dsync", // TriCore_INS_DSYNC
"dvadj", // TriCore_INS_DVADJ
"dvinit.bu", // TriCore_INS_DVINIT.BU
"dvinit.b", // TriCore_INS_DVINIT.B
"dvinit.hu", // TriCore_INS_DVINIT.HU
"dvinit.h", // TriCore_INS_DVINIT.H
"dvinit.u", // TriCore_INS_DVINIT.U
"dvinit", // TriCore_INS_DVINIT
"dvstep.u", // TriCore_INS_DVSTEP.U
"dvstep", // TriCore_INS_DVSTEP
"enable", // TriCore_INS_ENABLE
"eqany.b", // TriCore_INS_EQANY.B
"eqany.h", // TriCore_INS_EQANY.H
"eqz.a", // TriCore_INS_EQZ.A
"eq.a", // TriCore_INS_EQ.A
"eq.b", // TriCore_INS_EQ.B
"eq.h", // TriCore_INS_EQ.H
"eq.w", // TriCore_INS_EQ.W
"eq", // TriCore_INS_EQ
"extr.u", // TriCore_INS_EXTR.U
"extr", // TriCore_INS_EXTR
"fcalla", // TriCore_INS_FCALLA
"fcalli", // TriCore_INS_FCALLI
"fcall", // TriCore_INS_FCALL
"fret", // TriCore_INS_FRET
"ftohp", // TriCore_INS_FTOHP
"ftoiz", // TriCore_INS_FTOIZ
"ftoi", // TriCore_INS_FTOI
"ftoq31z", // TriCore_INS_FTOQ31Z
"ftoq31", // TriCore_INS_FTOQ31
"ftouz", // TriCore_INS_FTOUZ
"ftou", // TriCore_INS_FTOU
"ge.a", // TriCore_INS_GE.A
"ge.u", // TriCore_INS_GE.U
"ge", // TriCore_INS_GE
"hptof", // TriCore_INS_HPTOF
"imask", // TriCore_INS_IMASK
"insert", // TriCore_INS_INSERT
"insn.t", // TriCore_INS_INSN.T
"ins.t", // TriCore_INS_INS.T
"isync", // TriCore_INS_ISYNC
"itof", // TriCore_INS_ITOF
"ixmax.u", // TriCore_INS_IXMAX.U
"ixmax", // TriCore_INS_IXMAX
"ixmin.u", // TriCore_INS_IXMIN.U
"ixmin", // TriCore_INS_IXMIN
"ja", // TriCore_INS_JA
"jeq.a", // TriCore_INS_JEQ.A
"jeq", // TriCore_INS_JEQ
"jgez", // TriCore_INS_JGEZ
"jge.u", // TriCore_INS_JGE.U
"jge", // TriCore_INS_JGE
"jgtz", // TriCore_INS_JGTZ
"ji", // TriCore_INS_JI
"jla", // TriCore_INS_JLA
"jlez", // TriCore_INS_JLEZ
"jli", // TriCore_INS_JLI
"jltz", // TriCore_INS_JLTZ
"jlt.u", // TriCore_INS_JLT.U
"jlt", // TriCore_INS_JLT
"jl", // TriCore_INS_JL
"jned", // TriCore_INS_JNED
"jnei", // TriCore_INS_JNEI
"jne.a", // TriCore_INS_JNE.A
"jne", // TriCore_INS_JNE
"jnz.a", // TriCore_INS_JNZ.A
"jnz.t", // TriCore_INS_JNZ.T
"jnz", // TriCore_INS_JNZ
"jz.a", // TriCore_INS_JZ.A
"jz.t", // TriCore_INS_JZ.T
"jz", // TriCore_INS_JZ
"j", // TriCore_INS_J
"ldlcx", // TriCore_INS_LDLCX
"ldmst", // TriCore_INS_LDMST
"lducx", // TriCore_INS_LDUCX
"ld.a", // TriCore_INS_LD.A
"ld.bu", // TriCore_INS_LD.BU
"ld.b", // TriCore_INS_LD.B
"ld.da", // TriCore_INS_LD.DA
"ld.d", // TriCore_INS_LD.D
"ld.hu", // TriCore_INS_LD.HU
"ld.h", // TriCore_INS_LD.H
"ld.q", // TriCore_INS_LD.Q
"ld.w", // TriCore_INS_LD.W
"lea", // TriCore_INS_LEA
"lha", // TriCore_INS_LHA
"loopu", // TriCore_INS_LOOPU
"loop", // TriCore_INS_LOOP
"lt.a", // TriCore_INS_LT.A
"lt.b", // TriCore_INS_LT.B
"lt.bu", // TriCore_INS_LT.BU
"lt.h", // TriCore_INS_LT.H
"lt.hu", // TriCore_INS_LT.HU
"lt.u", // TriCore_INS_LT.U
"lt.w", // TriCore_INS_LT.W
"lt.wu", // TriCore_INS_LT.WU
"lt", // TriCore_INS_LT
"maddms.h", // TriCore_INS_MADDMS.H
"maddm.h", // TriCore_INS_MADDM.H
"maddrs.h", // TriCore_INS_MADDRS.H
"maddrs.q", // TriCore_INS_MADDRS.Q
"maddr.h", // TriCore_INS_MADDR.H
"maddr.q", // TriCore_INS_MADDR.Q
"maddsums.h", // TriCore_INS_MADDSUMS.H
"maddsum.h", // TriCore_INS_MADDSUM.H
"maddsurs.h", // TriCore_INS_MADDSURS.H
"maddsur.h", // TriCore_INS_MADDSUR.H
"maddsus.h", // TriCore_INS_MADDSUS.H
"maddsu.h", // TriCore_INS_MADDSU.H
"madds.h", // TriCore_INS_MADDS.H
"madds.q", // TriCore_INS_MADDS.Q
"madds.u", // TriCore_INS_MADDS.U
"madds", // TriCore_INS_MADDS
"madd.f", // TriCore_INS_MADD.F
"madd.h", // TriCore_INS_MADD.H
"madd.q", // TriCore_INS_MADD.Q
"madd.u", // TriCore_INS_MADD.U
"madd", // TriCore_INS_MADD
"max.b", // TriCore_INS_MAX.B
"max.bu", // TriCore_INS_MAX.BU
"max.h", // TriCore_INS_MAX.H
"max.hu", // TriCore_INS_MAX.HU
"max.u", // TriCore_INS_MAX.U
"max", // TriCore_INS_MAX
"mfcr", // TriCore_INS_MFCR
"min.b", // TriCore_INS_MIN.B
"min.bu", // TriCore_INS_MIN.BU
"min.h", // TriCore_INS_MIN.H
"min.hu", // TriCore_INS_MIN.HU
"min.u", // TriCore_INS_MIN.U
"min", // TriCore_INS_MIN
"movh.a", // TriCore_INS_MOVH.A
"movh", // TriCore_INS_MOVH
"mov.aa", // TriCore_INS_MOV.AA
"mov.a", // TriCore_INS_MOV.A
"mov.d", // TriCore_INS_MOV.D
"mov.u", // TriCore_INS_MOV.U
"mov", // TriCore_INS_MOV
"msubadms.h", // TriCore_INS_MSUBADMS.H
"msubadm.h", // TriCore_INS_MSUBADM.H
"msubadrs.h", // TriCore_INS_MSUBADRS.H
"msubadr.h", // TriCore_INS_MSUBADR.H
"msubads.h", // TriCore_INS_MSUBADS.H
"msubad.h", // TriCore_INS_MSUBAD.H
"msubms.h", // TriCore_INS_MSUBMS.H
"msubm.h", // TriCore_INS_MSUBM.H
"msubrs.h", // TriCore_INS_MSUBRS.H
"msubrs.q", // TriCore_INS_MSUBRS.Q
"msubr.h", // TriCore_INS_MSUBR.H
"msubr.q", // TriCore_INS_MSUBR.Q
"msubs.h", // TriCore_INS_MSUBS.H
"msubs.q", // TriCore_INS_MSUBS.Q
"msubs", // TriCore_INS_MSUBS
"msub.f", // TriCore_INS_MSUB.F
"msub.h", // TriCore_INS_MSUB.H
"msub.q", // TriCore_INS_MSUB.Q
"msub", // TriCore_INS_MSUB
"mtcr", // TriCore_INS_MTCR
"mulm.h", // TriCore_INS_MULM.H
"mulr.h", // TriCore_INS_MULR.H
"mulr.q", // TriCore_INS_MULR.Q
"muls.u", // TriCore_INS_MULS.U
"muls", // TriCore_INS_MULS
"mul.f", // TriCore_INS_MUL.F
"mul.h", // TriCore_INS_MUL.H
"mul.q", // TriCore_INS_MUL.Q
"mul.u", // TriCore_INS_MUL.U
"mul", // TriCore_INS_MUL
"nand.t", // TriCore_INS_NAND.T
"nand", // TriCore_INS_NAND
"nez.a", // TriCore_INS_NEZ.A
"ne.a", // TriCore_INS_NE.A
"ne", // TriCore_INS_NE
"nop", // TriCore_INS_NOP
"nor.t", // TriCore_INS_NOR.T
"nor", // TriCore_INS_NOR
"not", // TriCore_INS_NOT
"orn.t", // TriCore_INS_ORN.T
"orn", // TriCore_INS_ORN
"or.andn.t", // TriCore_INS_OR.ANDN.T
"or.and.t", // TriCore_INS_OR.AND.T
"or.eq", // TriCore_INS_OR.EQ
"or.ge.u", // TriCore_INS_OR.GE.U
"or.ge", // TriCore_INS_OR.GE
"or.lt.u", // TriCore_INS_OR.LT.U
"or.lt", // TriCore_INS_OR.LT
"or.ne", // TriCore_INS_OR.NE
"or.nor.t", // TriCore_INS_OR.NOR.T
"or.or.t", // TriCore_INS_OR.OR.T
"or.t", // TriCore_INS_OR.T
"or", // TriCore_INS_OR
"pack", // TriCore_INS_PACK
"parity", // TriCore_INS_PARITY
"popcnt.w", // TriCore_INS_POPCNT.W
"q31tof", // TriCore_INS_Q31TOF
"qseed.f", // TriCore_INS_QSEED.F
"restore", // TriCore_INS_RESTORE
"ret", // TriCore_INS_RET
"rfe", // TriCore_INS_RFE
"rfm", // TriCore_INS_RFM
"relck", // TriCore_INS_RELCK
"rsubs.u", // TriCore_INS_RSUBS.U
"rsubs", // TriCore_INS_RSUBS
"rsub", // TriCore_INS_RSUB
"sat.bu", // TriCore_INS_SAT.BU
"sat.b", // TriCore_INS_SAT.B
"sat.hu", // TriCore_INS_SAT.HU
"sat.h", // TriCore_INS_SAT.H
"seln", // TriCore_INS_SELN
"sel", // TriCore_INS_SEL
"shas", // TriCore_INS_SHAS
"sha.h", // TriCore_INS_SHA.H
"sha", // TriCore_INS_SHA
"shuffle", // TriCore_INS_SHUFFLE
"sh.andn.t", // TriCore_INS_SH.ANDN.T
"sh.and.t", // TriCore_INS_SH.AND.T
"sh.eq", // TriCore_INS_SH.EQ
"sh.ge.u", // TriCore_INS_SH.GE.U
"sh.ge", // TriCore_INS_SH.GE
"sh.h", // TriCore_INS_SH.H
"sh.lt.u", // TriCore_INS_SH.LT.U
"sh.lt", // TriCore_INS_SH.LT
"sh.nand.t", // TriCore_INS_SH.NAND.T
"sh.nor.t", // TriCore_INS_SH.NOR.T
"sh.orn.t", // TriCore_INS_SH.ORN.T
"sh.or.t", // TriCore_INS_SH.OR.T
"sh.xnor.t", // TriCore_INS_SH.XNOR.T
"sh.xor.t", // TriCore_INS_SH.XOR.T
"sh", // TriCore_INS_SH
"stlcx", // TriCore_INS_STLCX
"stucx", // TriCore_INS_STUCX
"st.a", // TriCore_INS_ST.A
"st.b", // TriCore_INS_ST.B
"st.da", // TriCore_INS_ST.DA
"st.d", // TriCore_INS_ST.D
"st.h", // TriCore_INS_ST.H
"st.q", // TriCore_INS_ST.Q
"st.t", // TriCore_INS_ST.T
"st.w", // TriCore_INS_ST.W
"subc", // TriCore_INS_SUBC
"subs.hu", // TriCore_INS_SUBS.HU
"subs.h", // TriCore_INS_SUBS.H
"subs.u", // TriCore_INS_SUBS.U
"subs", // TriCore_INS_SUBS
"subx", // TriCore_INS_SUBX
"sub.a", // TriCore_INS_SUB.A
"sub.b", // TriCore_INS_SUB.B
"sub.f", // TriCore_INS_SUB.F
"sub.h", // TriCore_INS_SUB.H
"sub", // TriCore_INS_SUB
"svlcx", // TriCore_INS_SVLCX
"swapmsk.w", // TriCore_INS_SWAPMSK.W
"swap.w", // TriCore_INS_SWAP.W
"syscall", // TriCore_INS_SYSCALL
"trapsv", // TriCore_INS_TRAPSV
"trapv", // TriCore_INS_TRAPV
"unpack", // TriCore_INS_UNPACK
"updfl", // TriCore_INS_UPDFL
"utof", // TriCore_INS_UTOF
"wait", // TriCore_INS_WAIT
"xnor.t", // TriCore_INS_XNOR.T
"xnor", // TriCore_INS_XNOR
"xor.eq", // TriCore_INS_XOR.EQ
"xor.ge.u", // TriCore_INS_XOR.GE.U
"xor.ge", // TriCore_INS_XOR.GE
"xor.lt.u", // TriCore_INS_XOR.LT.U
"xor.lt", // TriCore_INS_XOR.LT
"xor.ne", // TriCore_INS_XOR.NE
"xor", // TriCore_INS_XOR

View File

@ -0,0 +1,7 @@
/* Capstone Disassembly Engine, https://www.capstone-engine.org */
/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2019 */
/* By Rot127 <unisono@quyllur.org>, 2023 */
/* Auto generated file. Do not edit. */
/* Code generator: https://github.com/capstone-engine/capstone/tree/next/suite/auto-sync */

View File

@ -1,9 +1,9 @@
/* Capstone Disassembly Engine, https://www_capstone-engine_org */
/* By Nguyen Anh Quynh <aquynh@gmail_com>, 2013-2019 */
/* By Rot127 <unisono@quyllur_org>, 2023 */
/* Capstone Disassembly Engine, https://www.capstone-engine.org */
/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2019 */
/* By Rot127 <unisono@quyllur.org>, 2023 */
/* Auto generated file_ Do not edit_ */
/* Code generator: https://github_com/capstone-engine/capstone/tree/next/suite/auto-sync */
/* Auto generated file. Do not edit. */
/* Code generator: https://github.com/capstone-engine/capstone/tree/next/suite/auto-sync */
TriCore_INS_XOR_T,
TriCore_INS_ABSDIFS_B,
@ -53,21 +53,26 @@
TriCore_INS_BISR,
TriCore_INS_BMERGE,
TriCore_INS_BSPLIT,
TriCore_INS_CACHEA_I,
TriCore_INS_CACHEA_WI,
TriCore_INS_CACHEA_W,
TriCore_INS_CACHEI_I,
TriCore_INS_CACHEI_WI,
TriCore_INS_CACHEI_W,
TriCore_INS_CACHE_I,
TriCore_INS_CACHE_WI,
TriCore_INS_CACHE_W,
TriCore_INS_CADDN_A,
TriCore_INS_CADDN,
TriCore_INS_CADD_A,
TriCore_INS_CADD,
TriCore_INS_CALLA,
TriCore_INS_CALLI,
TriCore_INS_CALL,
TriCore_INS_CLO_B,
TriCore_INS_CLO_H,
TriCore_INS_CLO,
TriCore_INS_CLS_B,
TriCore_INS_CLS_H,
TriCore_INS_CLS,
TriCore_INS_CLZ_B,
TriCore_INS_CLZ_H,
TriCore_INS_CLZ,
TriCore_INS_CMOVN,
@ -78,9 +83,12 @@
TriCore_INS_CRC32L_W,
TriCore_INS_CRC32_B,
TriCore_INS_CRCN,
TriCore_INS_CSUBN_A,
TriCore_INS_CSUB,
TriCore_INS_CSUB_A,
TriCore_INS_DEBUG,
TriCore_INS_DEXTR,
TriCore_INS_DIFSC_A,
TriCore_INS_DISABLE,
TriCore_INS_DIV_F,
TriCore_INS_DIV_U,

View File

@ -0,0 +1,69 @@
/* Capstone Disassembly Engine, https://www.capstone-engine.org */
/* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2019 */
/* By Rot127 <unisono@quyllur.org>, 2023 */
/* Auto generated file. Do not edit. */
/* Code generator: https://github.com/capstone-engine/capstone/tree/next/suite/auto-sync */
TriCore_REG_INVALID = 0,
TriCore_REG_FCX = 1,
TriCore_REG_PC = 2,
TriCore_REG_PCXI = 3,
TriCore_REG_PSW = 4,
TriCore_REG_A0 = 5,
TriCore_REG_A1 = 6,
TriCore_REG_A2 = 7,
TriCore_REG_A3 = 8,
TriCore_REG_A4 = 9,
TriCore_REG_A5 = 10,
TriCore_REG_A6 = 11,
TriCore_REG_A7 = 12,
TriCore_REG_A8 = 13,
TriCore_REG_A9 = 14,
TriCore_REG_A10 = 15,
TriCore_REG_A11 = 16,
TriCore_REG_A12 = 17,
TriCore_REG_A13 = 18,
TriCore_REG_A14 = 19,
TriCore_REG_A15 = 20,
TriCore_REG_D0 = 21,
TriCore_REG_D1 = 22,
TriCore_REG_D2 = 23,
TriCore_REG_D3 = 24,
TriCore_REG_D4 = 25,
TriCore_REG_D5 = 26,
TriCore_REG_D6 = 27,
TriCore_REG_D7 = 28,
TriCore_REG_D8 = 29,
TriCore_REG_D9 = 30,
TriCore_REG_D10 = 31,
TriCore_REG_D11 = 32,
TriCore_REG_D12 = 33,
TriCore_REG_D13 = 34,
TriCore_REG_D14 = 35,
TriCore_REG_D15 = 36,
TriCore_REG_E0 = 37,
TriCore_REG_E2 = 38,
TriCore_REG_E4 = 39,
TriCore_REG_E6 = 40,
TriCore_REG_E8 = 41,
TriCore_REG_E10 = 42,
TriCore_REG_E12 = 43,
TriCore_REG_E14 = 44,
TriCore_REG_P0 = 45,
TriCore_REG_P2 = 46,
TriCore_REG_P4 = 47,
TriCore_REG_P6 = 48,
TriCore_REG_P8 = 49,
TriCore_REG_P10 = 50,
TriCore_REG_P12 = 51,
TriCore_REG_P14 = 52,
TriCore_REG_A0_A1 = 53,
TriCore_REG_A2_A3 = 54,
TriCore_REG_A4_A5 = 55,
TriCore_REG_A6_A7 = 56,
TriCore_REG_A8_A9 = 57,
TriCore_REG_A10_A11 = 58,
TriCore_REG_A12_A13 = 59,
TriCore_REG_A14_A15 = 60,
TriCore_REG_ENDING, // 61

View File

@ -53,94 +53,23 @@ typedef struct cs_tricore {
//> TriCore registers
typedef enum tricore_reg {
TriCore_REG_INVALID = 0,
TriCore_REG_FCX = 1,
TriCore_REG_PC = 2,
TriCore_REG_PCXI = 3,
TriCore_REG_PSW = 4,
TriCore_REG_A0 = 5,
TriCore_REG_A1 = 6,
TriCore_REG_A2 = 7,
TriCore_REG_A3 = 8,
TriCore_REG_A4 = 9,
TriCore_REG_A5 = 10,
TriCore_REG_A6 = 11,
TriCore_REG_A7 = 12,
TriCore_REG_A8 = 13,
TriCore_REG_A9 = 14,
TriCore_REG_A10 = 15,
TriCore_REG_A11 = 16,
TriCore_REG_A12 = 17,
TriCore_REG_A13 = 18,
TriCore_REG_A14 = 19,
TriCore_REG_A15 = 20,
TriCore_REG_D0 = 21,
TriCore_REG_D1 = 22,
TriCore_REG_D2 = 23,
TriCore_REG_D3 = 24,
TriCore_REG_D4 = 25,
TriCore_REG_D5 = 26,
TriCore_REG_D6 = 27,
TriCore_REG_D7 = 28,
TriCore_REG_D8 = 29,
TriCore_REG_D9 = 30,
TriCore_REG_D10 = 31,
TriCore_REG_D11 = 32,
TriCore_REG_D12 = 33,
TriCore_REG_D13 = 34,
TriCore_REG_D14 = 35,
TriCore_REG_D15 = 36,
TriCore_REG_E0 = 37,
TriCore_REG_E2 = 38,
TriCore_REG_E4 = 39,
TriCore_REG_E6 = 40,
TriCore_REG_E8 = 41,
TriCore_REG_E10 = 42,
TriCore_REG_E12 = 43,
TriCore_REG_E14 = 44,
TriCore_REG_P0 = 45,
TriCore_REG_P2 = 46,
TriCore_REG_P4 = 47,
TriCore_REG_P6 = 48,
TriCore_REG_P8 = 49,
TriCore_REG_P10 = 50,
TriCore_REG_P12 = 51,
TriCore_REG_P14 = 52,
TriCore_REG_A0_A1 = 53,
TriCore_REG_A2_A3 = 54,
TriCore_REG_A4_A5 = 55,
TriCore_REG_A6_A7 = 56,
TriCore_REG_A8_A9 = 57,
TriCore_REG_A10_A11 = 58,
TriCore_REG_A12_A13 = 59,
TriCore_REG_A14_A15 = 60,
TriCore_REG_ENDING, // <-- mark the end of the list of registers
#include "./inc/TriCoreGenCSRegEnum.inc"
} tricore_reg;
//> TriCore instruction
typedef enum tricore_insn {
TriCore_INS_INVALID = 0,
#include "./inc/TriCoreGenCSInsnEnum.inc"
TriCore_INS_ENDING, // <-- mark the end of the list of instructions
TriCore_GRP_CALL, ///< = CS_GRP_CALL
TriCore_GRP_JUMP, ///< = CS_GRP_JUMP
TriCore_GRP_INVALID, ///< = CS_GRP_INVALID
TriCore_GRP_ENDING, ///< = CS_GRP_ENDING
} tricore_insn;
//> Group of TriCore instructions
typedef enum tricore_insn_group {
TRICORE_GRP_INVALID = 0, // = CS_GRP_INVALID
TriCore_GRP_INVALID, ///< = CS_GRP_INVALID
//> Generic groups
// all jump instructions (conditional+direct+indirect jumps)
TRICORE_GRP_JUMP, // = CS_GRP_JUMP
TRICORE_GRP_ENDING, // <-- mark the end of the list of groups
TriCore_GRP_CALL, ///< = CS_GRP_CALL
TriCore_GRP_JUMP, ///< = CS_GRP_JUMP
TriCore_GRP_ENDING, ///< = mark the end of the list of groups
} tricore_insn_group;
#ifdef __cplusplus