Add Hexagon register profile (#2490)

Although the reg profile was not really used yet it will be relevant for the RZIL uplifting.
Introduces:
* Double/quadruple registers now properly overlap with their counterparts.
* Registers have correct types assigned (vec, ctr, sys etc. Before, all regs were of type gbr)
* Consistent register names (asm name style: c3:2, r31 etc, alias style: lc1:sa1, lr etc.)
* Adds _tmp registers in the profile. Later used by uplifted instructions (think of .new registers).
This commit is contained in:
Rot127 2022-04-03 16:26:17 +00:00 committed by GitHub
parent 348ed19ad6
commit 10bedc2b00
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 5415 additions and 4740 deletions

File diff suppressed because it is too large Load diff

View file

@ -3,7 +3,7 @@
// LLVM commit: 96e220e6886868d6663d966ecc396befffc355e7
// LLVM commit date: 2022-01-05 11:01:52 +0000 (ISO 8601 format)
// Date of code generation: 2022-01-24 07:53:55-05:00
// Date of code generation: 2022-04-02 10:52:25-04:00
//========================================
// The following code is generated.
// Do not edit. Repository of code generator:
@ -21,159 +21,154 @@
#include "hexagon_insn.h"
#include "hexagon_arch.h"
char *hex_get_ctr_regs(int opcode_reg) {
char *hex_get_ctr_regs(int opcode_reg, bool get_alias) {
switch (opcode_reg) {
default:
return "<err>";
case HEX_REG_CTR_REGS_LC0:
return "LC0";
case HEX_REG_CTR_REGS_SA0:
return "SA0";
case HEX_REG_CTR_REGS_LC1:
return "LC1";
case HEX_REG_CTR_REGS_SA1:
return "SA1";
case HEX_REG_CTR_REGS_P3_0:
return "P3:0";
default: return "<err>";
case HEX_REG_CTR_REGS_C1:
return get_alias ? "LC0" : "C1";
case HEX_REG_CTR_REGS_C0:
return get_alias ? "SA0" : "C0";
case HEX_REG_CTR_REGS_C3:
return get_alias ? "LC1" : "C3";
case HEX_REG_CTR_REGS_C2:
return get_alias ? "SA1" : "C2";
case HEX_REG_CTR_REGS_C4:
return get_alias ? "P3:0" : "C4";
case HEX_REG_CTR_REGS_C5:
return "C5";
case HEX_REG_CTR_REGS_PC:
return "PC";
case HEX_REG_CTR_REGS_UGP:
return "UGP";
case HEX_REG_CTR_REGS_GP:
return "GP";
case HEX_REG_CTR_REGS_CS0:
return "CS0";
case HEX_REG_CTR_REGS_CS1:
return "CS1";
case HEX_REG_CTR_REGS_UPCYCLELO:
return "UPCYCLELO";
case HEX_REG_CTR_REGS_UPCYCLEHI:
return "UPCYCLEHI";
case HEX_REG_CTR_REGS_FRAMELIMIT:
return "FRAMELIMIT";
case HEX_REG_CTR_REGS_FRAMEKEY:
return "FRAMEKEY";
case HEX_REG_CTR_REGS_PKTCOUNTLO:
return "PKTCOUNTLO";
case HEX_REG_CTR_REGS_PKTCOUNTHI:
return "PKTCOUNTHI";
case HEX_REG_CTR_REGS_UTIMERLO:
return "UTIMERLO";
case HEX_REG_CTR_REGS_UTIMERHI:
return "UTIMERHI";
case HEX_REG_CTR_REGS_M0:
return "M0";
case HEX_REG_CTR_REGS_M1:
return "M1";
case HEX_REG_CTR_REGS_USR:
return "USR";
return get_alias ? "C5" : "C5";
case HEX_REG_CTR_REGS_C9:
return get_alias ? "PC" : "C9";
case HEX_REG_CTR_REGS_C10:
return get_alias ? "UGP" : "C10";
case HEX_REG_CTR_REGS_C11:
return get_alias ? "GP" : "C11";
case HEX_REG_CTR_REGS_C12:
return get_alias ? "CS0" : "C12";
case HEX_REG_CTR_REGS_C13:
return get_alias ? "CS1" : "C13";
case HEX_REG_CTR_REGS_C14:
return get_alias ? "UPCYCLELO" : "C14";
case HEX_REG_CTR_REGS_C15:
return get_alias ? "UPCYCLEHI" : "C15";
case HEX_REG_CTR_REGS_C16:
return get_alias ? "FRAMELIMIT" : "C16";
case HEX_REG_CTR_REGS_C17:
return get_alias ? "FRAMEKEY" : "C17";
case HEX_REG_CTR_REGS_C18:
return get_alias ? "PKTCOUNTLO" : "C18";
case HEX_REG_CTR_REGS_C19:
return get_alias ? "PKTCOUNTHI" : "C19";
case HEX_REG_CTR_REGS_C30:
return get_alias ? "UTIMERLO" : "C30";
case HEX_REG_CTR_REGS_C31:
return get_alias ? "UTIMERHI" : "C31";
case HEX_REG_CTR_REGS_C6:
return get_alias ? "M0" : "C6";
case HEX_REG_CTR_REGS_C7:
return get_alias ? "M1" : "C7";
case HEX_REG_CTR_REGS_C8:
return get_alias ? "USR" : "C8";
}
}
char *hex_get_ctr_regs64(int opcode_reg) {
char *hex_get_ctr_regs64(int opcode_reg, bool get_alias) {
switch (opcode_reg) {
default:
return "<err>";
default: return "<err>";
case HEX_REG_CTR_REGS64_C1_0:
return "C1:0";
return get_alias ? "LC0:SA0" : "C1:0";
case HEX_REG_CTR_REGS64_C3_2:
return "C3:2";
return get_alias ? "LC1:SA1" : "C3:2";
case HEX_REG_CTR_REGS64_C5_4:
return "C5:4";
case HEX_REG_CTR_REGS64_C7_6:
return "C7:6";
return get_alias ? "M1:0" : "C7:6";
case HEX_REG_CTR_REGS64_C9_8:
return "C9:8";
case HEX_REG_CTR_REGS64_C11_10:
return "C11:10";
case HEX_REG_CTR_REGS64_CS:
return "C13:12";
case HEX_REG_CTR_REGS64_UPCYCLE:
return "C15:14";
case HEX_REG_CTR_REGS64_C13_12:
return get_alias ? "CS1:0" : "C13:12";
case HEX_REG_CTR_REGS64_C15_14:
return get_alias ? "UPCYCLE" : "C15:14";
case HEX_REG_CTR_REGS64_C17_16:
return "C17:16";
case HEX_REG_CTR_REGS64_PKTCOUNT:
return "C19:18";
case HEX_REG_CTR_REGS64_UTIMER:
return "C31:30";
case HEX_REG_CTR_REGS64_C19_18:
return get_alias ? "PKTCOUNT" : "C19:18";
case HEX_REG_CTR_REGS64_C31_30:
return get_alias ? "UTIMER" : "C31:30";
}
}
char *hex_get_double_regs(int opcode_reg) {
char *hex_get_double_regs(int opcode_reg, bool get_alias) {
switch (opcode_reg) {
default:
return "<err>";
case HEX_REG_DOUBLE_REGS_D0:
default: return "<err>";
case HEX_REG_DOUBLE_REGS_R1_0:
return "R1:0";
case HEX_REG_DOUBLE_REGS_D1:
case HEX_REG_DOUBLE_REGS_R3_2:
return "R3:2";
case HEX_REG_DOUBLE_REGS_D2:
case HEX_REG_DOUBLE_REGS_R5_4:
return "R5:4";
case HEX_REG_DOUBLE_REGS_D3:
case HEX_REG_DOUBLE_REGS_R7_6:
return "R7:6";
case HEX_REG_DOUBLE_REGS_D4:
case HEX_REG_DOUBLE_REGS_R9_8:
return "R9:8";
case HEX_REG_DOUBLE_REGS_D6:
case HEX_REG_DOUBLE_REGS_R13_12:
return "R13:12";
case HEX_REG_DOUBLE_REGS_D7:
case HEX_REG_DOUBLE_REGS_R15_14:
return "R15:14";
case HEX_REG_DOUBLE_REGS_D8:
case HEX_REG_DOUBLE_REGS_R17_16:
return "R17:16";
case HEX_REG_DOUBLE_REGS_D9:
case HEX_REG_DOUBLE_REGS_R19_18:
return "R19:18";
case HEX_REG_DOUBLE_REGS_D10:
case HEX_REG_DOUBLE_REGS_R21_20:
return "R21:20";
case HEX_REG_DOUBLE_REGS_D11:
case HEX_REG_DOUBLE_REGS_R23_22:
return "R23:22";
case HEX_REG_DOUBLE_REGS_D12:
case HEX_REG_DOUBLE_REGS_R25_24:
return "R25:24";
case HEX_REG_DOUBLE_REGS_D13:
case HEX_REG_DOUBLE_REGS_R27_26:
return "R27:26";
case HEX_REG_DOUBLE_REGS_D5:
case HEX_REG_DOUBLE_REGS_R11_10:
return "R11:10";
case HEX_REG_DOUBLE_REGS_D14:
case HEX_REG_DOUBLE_REGS_R29_28:
return "R29:28";
case HEX_REG_DOUBLE_REGS_D15:
return "R31:30";
case HEX_REG_DOUBLE_REGS_R31_30:
return get_alias ? "LR:FP" : "R31:30";
}
}
char *hex_get_general_double_low8_regs(int opcode_reg) {
char *hex_get_general_double_low8_regs(int opcode_reg, bool get_alias) {
opcode_reg = opcode_reg << 1;
if (opcode_reg > 6) { // HEX_REG_D3 == 6
opcode_reg = (opcode_reg & 0x7) | 0x10;
}
switch (opcode_reg) {
default:
return "<err>";
case HEX_REG_GENERAL_DOUBLE_LOW8_REGS_D11:
default: return "<err>";
case HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R23_22:
return "R23:22";
case HEX_REG_GENERAL_DOUBLE_LOW8_REGS_D10:
case HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R21_20:
return "R21:20";
case HEX_REG_GENERAL_DOUBLE_LOW8_REGS_D9:
case HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R19_18:
return "R19:18";
case HEX_REG_GENERAL_DOUBLE_LOW8_REGS_D8:
case HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R17_16:
return "R17:16";
case HEX_REG_GENERAL_DOUBLE_LOW8_REGS_D3:
case HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R7_6:
return "R7:6";
case HEX_REG_GENERAL_DOUBLE_LOW8_REGS_D2:
case HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R5_4:
return "R5:4";
case HEX_REG_GENERAL_DOUBLE_LOW8_REGS_D1:
case HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R3_2:
return "R3:2";
case HEX_REG_GENERAL_DOUBLE_LOW8_REGS_D0:
case HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R1_0:
return "R1:0";
}
}
char *hex_get_general_sub_regs(int opcode_reg) {
char *hex_get_general_sub_regs(int opcode_reg, bool get_alias) {
if (opcode_reg > 7) { // HEX_REG_R7 == 7
opcode_reg = (opcode_reg & 0x7) | 0x10;
}
switch (opcode_reg) {
default:
return "<err>";
default: return "<err>";
case HEX_REG_GENERAL_SUB_REGS_R23:
return "R23";
case HEX_REG_GENERAL_SUB_REGS_R22:
@ -209,18 +204,17 @@ char *hex_get_general_sub_regs(int opcode_reg) {
}
}
char *hex_get_guest_regs(int opcode_reg) {
char *hex_get_guest_regs(int opcode_reg, bool get_alias) {
switch (opcode_reg) {
default:
return "<err>";
case HEX_REG_GUEST_REGS_GELR:
return "GELR";
case HEX_REG_GUEST_REGS_GSR:
return "GSR";
case HEX_REG_GUEST_REGS_GOSP:
return "GOSP";
default: return "<err>";
case HEX_REG_GUEST_REGS_G0:
return get_alias ? "GELR" : "G0";
case HEX_REG_GUEST_REGS_G1:
return get_alias ? "GSR" : "G1";
case HEX_REG_GUEST_REGS_G2:
return get_alias ? "GOSP" : "G2";
case HEX_REG_GUEST_REGS_G3:
return "GBADVA";
return get_alias ? "GBADVA" : "G3";
case HEX_REG_GUEST_REGS_G4:
return "G4";
case HEX_REG_GUEST_REGS_G5:
@ -245,14 +239,14 @@ char *hex_get_guest_regs(int opcode_reg) {
return "G14";
case HEX_REG_GUEST_REGS_G15:
return "G15";
case HEX_REG_GUEST_REGS_GPMUCNT4:
return "GPMUCNT4";
case HEX_REG_GUEST_REGS_GPMUCNT5:
return "GPMUCNT5";
case HEX_REG_GUEST_REGS_GPMUCNT6:
return "GPMUCNT6";
case HEX_REG_GUEST_REGS_GPMUCNT7:
return "GPMUCNT7";
case HEX_REG_GUEST_REGS_G16:
return get_alias ? "GPMUCNT4" : "G16";
case HEX_REG_GUEST_REGS_G17:
return get_alias ? "GPMUCNT5" : "G17";
case HEX_REG_GUEST_REGS_G18:
return get_alias ? "GPMUCNT6" : "G18";
case HEX_REG_GUEST_REGS_G19:
return get_alias ? "GPMUCNT7" : "G19";
case HEX_REG_GUEST_REGS_G20:
return "G20";
case HEX_REG_GUEST_REGS_G21:
@ -261,18 +255,18 @@ char *hex_get_guest_regs(int opcode_reg) {
return "G22";
case HEX_REG_GUEST_REGS_G23:
return "G23";
case HEX_REG_GUEST_REGS_GPCYCLELO:
return "GPCYCLELO";
case HEX_REG_GUEST_REGS_GPCYCLEHI:
return "GPCYCLEHI";
case HEX_REG_GUEST_REGS_GPMUCNT0:
return "GPMUCNT0";
case HEX_REG_GUEST_REGS_GPMUCNT1:
return "GPMUCNT1";
case HEX_REG_GUEST_REGS_GPMUCNT2:
return "GPMUCNT2";
case HEX_REG_GUEST_REGS_GPMUCNT3:
return "GPMUCNT3";
case HEX_REG_GUEST_REGS_G24:
return get_alias ? "GPCYCLELO" : "G24";
case HEX_REG_GUEST_REGS_G25:
return get_alias ? "GPCYCLEHI" : "G25";
case HEX_REG_GUEST_REGS_G26:
return get_alias ? "GPMUCNT0" : "G26";
case HEX_REG_GUEST_REGS_G27:
return get_alias ? "GPMUCNT1" : "G27";
case HEX_REG_GUEST_REGS_G28:
return get_alias ? "GPMUCNT2" : "G28";
case HEX_REG_GUEST_REGS_G29:
return get_alias ? "GPMUCNT3" : "G29";
case HEX_REG_GUEST_REGS_G30:
return "G30";
case HEX_REG_GUEST_REGS_G31:
@ -280,10 +274,9 @@ char *hex_get_guest_regs(int opcode_reg) {
}
}
char *hex_get_guest_regs64(int opcode_reg) {
char *hex_get_guest_regs64(int opcode_reg, bool get_alias) {
switch (opcode_reg) {
default:
return "<err>";
default: return "<err>";
case HEX_REG_GUEST_REGS64_G1_0:
return "G1:0";
case HEX_REG_GUEST_REGS64_G3_2:
@ -319,10 +312,9 @@ char *hex_get_guest_regs64(int opcode_reg) {
}
}
char *hex_get_hvx_qr(int opcode_reg) {
char *hex_get_hvx_qr(int opcode_reg, bool get_alias) {
switch (opcode_reg) {
default:
return "<err>";
default: return "<err>";
case HEX_REG_HVX_QR_Q0:
return "Q0";
case HEX_REG_HVX_QR_Q1:
@ -334,33 +326,31 @@ char *hex_get_hvx_qr(int opcode_reg) {
}
}
char *hex_get_hvx_vqr(int opcode_reg) {
char *hex_get_hvx_vqr(int opcode_reg, bool get_alias) {
switch (opcode_reg) {
default:
return "<err>";
case HEX_REG_HVX_VQR_VQ0:
default: return "<err>";
case HEX_REG_HVX_VQR_V3_0:
return "V3:0";
case HEX_REG_HVX_VQR_VQ1:
case HEX_REG_HVX_VQR_V7_4:
return "V7:4";
case HEX_REG_HVX_VQR_VQ2:
case HEX_REG_HVX_VQR_V11_8:
return "V11:8";
case HEX_REG_HVX_VQR_VQ3:
case HEX_REG_HVX_VQR_V15_12:
return "V15:12";
case HEX_REG_HVX_VQR_VQ4:
case HEX_REG_HVX_VQR_V19_16:
return "V19:16";
case HEX_REG_HVX_VQR_VQ5:
case HEX_REG_HVX_VQR_V23_20:
return "V23:20";
case HEX_REG_HVX_VQR_VQ6:
case HEX_REG_HVX_VQR_V27_24:
return "V27:24";
case HEX_REG_HVX_VQR_VQ7:
case HEX_REG_HVX_VQR_V31_28:
return "V31:28";
}
}
char *hex_get_hvx_vr(int opcode_reg) {
char *hex_get_hvx_vr(int opcode_reg, bool get_alias) {
switch (opcode_reg) {
default:
return "<err>";
default: return "<err>";
case HEX_REG_HVX_VR_V0:
return "V0";
case HEX_REG_HVX_VR_V1:
@ -428,49 +418,47 @@ char *hex_get_hvx_vr(int opcode_reg) {
}
}
char *hex_get_hvx_wr(int opcode_reg) {
char *hex_get_hvx_wr(int opcode_reg, bool get_alias) {
switch (opcode_reg) {
default:
return "<err>";
case HEX_REG_HVX_WR_W0:
default: return "<err>";
case HEX_REG_HVX_WR_V1_0:
return "V1:0";
case HEX_REG_HVX_WR_W1:
case HEX_REG_HVX_WR_V3_2:
return "V3:2";
case HEX_REG_HVX_WR_W2:
case HEX_REG_HVX_WR_V5_4:
return "V5:4";
case HEX_REG_HVX_WR_W3:
case HEX_REG_HVX_WR_V7_6:
return "V7:6";
case HEX_REG_HVX_WR_W4:
case HEX_REG_HVX_WR_V9_8:
return "V9:8";
case HEX_REG_HVX_WR_W5:
case HEX_REG_HVX_WR_V11_10:
return "V11:10";
case HEX_REG_HVX_WR_W6:
case HEX_REG_HVX_WR_V13_12:
return "V13:12";
case HEX_REG_HVX_WR_W7:
case HEX_REG_HVX_WR_V15_14:
return "V15:14";
case HEX_REG_HVX_WR_W8:
case HEX_REG_HVX_WR_V17_16:
return "V17:16";
case HEX_REG_HVX_WR_W9:
case HEX_REG_HVX_WR_V19_18:
return "V19:18";
case HEX_REG_HVX_WR_W10:
case HEX_REG_HVX_WR_V21_20:
return "V21:20";
case HEX_REG_HVX_WR_W11:
case HEX_REG_HVX_WR_V23_22:
return "V23:22";
case HEX_REG_HVX_WR_W12:
case HEX_REG_HVX_WR_V25_24:
return "V25:24";
case HEX_REG_HVX_WR_W13:
case HEX_REG_HVX_WR_V27_26:
return "V27:26";
case HEX_REG_HVX_WR_W14:
case HEX_REG_HVX_WR_V29_28:
return "V29:28";
case HEX_REG_HVX_WR_W15:
case HEX_REG_HVX_WR_V31_30:
return "V31:30";
}
}
char *hex_get_int_regs(int opcode_reg) {
char *hex_get_int_regs(int opcode_reg, bool get_alias) {
switch (opcode_reg) {
default:
return "<err>";
default: return "<err>";
case HEX_REG_INT_REGS_R0:
return "R0";
case HEX_REG_INT_REGS_R1:
@ -530,18 +518,17 @@ char *hex_get_int_regs(int opcode_reg) {
case HEX_REG_INT_REGS_R11:
return "R11";
case HEX_REG_INT_REGS_R29:
return "R29";
return get_alias ? "SP" : "R29";
case HEX_REG_INT_REGS_R30:
return "R30";
return get_alias ? "FP" : "R30";
case HEX_REG_INT_REGS_R31:
return "R31";
return get_alias ? "LR" : "R31";
}
}
char *hex_get_int_regs_low8(int opcode_reg) {
char *hex_get_int_regs_low8(int opcode_reg, bool get_alias) {
switch (opcode_reg) {
default:
return "<err>";
default: return "<err>";
case HEX_REG_INT_REGS_LOW8_R7:
return "R7";
case HEX_REG_INT_REGS_LOW8_R6:
@ -561,23 +548,20 @@ char *hex_get_int_regs_low8(int opcode_reg) {
}
}
char *hex_get_mod_regs(int opcode_reg) {
char *hex_get_mod_regs(int opcode_reg, bool get_alias) {
opcode_reg |= 6;
switch (opcode_reg) {
default:
return "<err>";
case HEX_REG_MOD_REGS_M0:
return "M0";
case HEX_REG_MOD_REGS_M1:
return "M1";
default: return "<err>";
case HEX_REG_MOD_REGS_C6:
return get_alias ? "M0" : "C6";
case HEX_REG_MOD_REGS_C7:
return get_alias ? "M1" : "C7";
}
}
char *hex_get_pred_regs(int opcode_reg) {
char *hex_get_pred_regs(int opcode_reg, bool get_alias) {
switch (opcode_reg) {
default:
return "<err>";
default: return "<err>";
case HEX_REG_PRED_REGS_P0:
return "P0";
case HEX_REG_PRED_REGS_P1:
@ -589,32 +573,31 @@ char *hex_get_pred_regs(int opcode_reg) {
}
}
char *hex_get_sys_regs(int opcode_reg) {
char *hex_get_sys_regs(int opcode_reg, bool get_alias) {
switch (opcode_reg) {
default:
return "<err>";
case HEX_REG_SYS_REGS_SGP0:
return "SGP0";
case HEX_REG_SYS_REGS_SGP1:
return "SGP1";
case HEX_REG_SYS_REGS_STID:
return "STID";
case HEX_REG_SYS_REGS_ELR:
return "ELR";
case HEX_REG_SYS_REGS_BADVA0:
return "BADVA0";
case HEX_REG_SYS_REGS_BADVA1:
return "BADVA1";
case HEX_REG_SYS_REGS_SSR:
return "SSR";
case HEX_REG_SYS_REGS_CCR:
return "CCR";
case HEX_REG_SYS_REGS_HTID:
return "HTID";
case HEX_REG_SYS_REGS_BADVA:
return "BADVA";
case HEX_REG_SYS_REGS_IMASK:
return "IMASK";
default: return "<err>";
case HEX_REG_SYS_REGS_S0:
return get_alias ? "SGP0" : "S0";
case HEX_REG_SYS_REGS_S1:
return get_alias ? "SGP1" : "S1";
case HEX_REG_SYS_REGS_S2:
return get_alias ? "STID" : "S2";
case HEX_REG_SYS_REGS_S3:
return get_alias ? "ELR" : "S3";
case HEX_REG_SYS_REGS_S4:
return get_alias ? "BADVA0" : "S4";
case HEX_REG_SYS_REGS_S5:
return get_alias ? "BADVA1" : "S5";
case HEX_REG_SYS_REGS_S6:
return get_alias ? "SSR" : "S6";
case HEX_REG_SYS_REGS_S7:
return get_alias ? "CCR" : "S7";
case HEX_REG_SYS_REGS_S8:
return get_alias ? "HTID" : "S8";
case HEX_REG_SYS_REGS_S9:
return get_alias ? "BADVA" : "S9";
case HEX_REG_SYS_REGS_S10:
return get_alias ? "IMASK" : "S10";
case HEX_REG_SYS_REGS_S11:
return "S11";
case HEX_REG_SYS_REGS_S12:
@ -626,61 +609,61 @@ char *hex_get_sys_regs(int opcode_reg) {
case HEX_REG_SYS_REGS_S15:
return "S15";
case HEX_REG_SYS_REGS_S19:
return "S19";
return get_alias ? "S19" : "S19";
case HEX_REG_SYS_REGS_S23:
return "S23";
case HEX_REG_SYS_REGS_S25:
return "S25";
case HEX_REG_SYS_REGS_EVB:
return "EVB";
case HEX_REG_SYS_REGS_MODECTL:
return "MODECTL";
case HEX_REG_SYS_REGS_SYSCFG:
return "SYSCFG";
case HEX_REG_SYS_REGS_S16:
return get_alias ? "EVB" : "S16";
case HEX_REG_SYS_REGS_S17:
return get_alias ? "MODECTL" : "S17";
case HEX_REG_SYS_REGS_S18:
return get_alias ? "SYSCFG" : "S18";
case HEX_REG_SYS_REGS_S20:
return "S20";
case HEX_REG_SYS_REGS_VID:
return "VID";
return get_alias ? "S20" : "S20";
case HEX_REG_SYS_REGS_S21:
return get_alias ? "VID" : "S21";
case HEX_REG_SYS_REGS_S22:
return "S22";
return get_alias ? "S22" : "S22";
case HEX_REG_SYS_REGS_S24:
return "S24";
case HEX_REG_SYS_REGS_S26:
return "S26";
case HEX_REG_SYS_REGS_CFGBASE:
return "CFGBASE";
case HEX_REG_SYS_REGS_DIAG:
return "DIAG";
case HEX_REG_SYS_REGS_REV:
return "REV";
case HEX_REG_SYS_REGS_PCYCLEHI:
return "PCYCLEHI";
case HEX_REG_SYS_REGS_PCYCLELO:
return "PCYCLELO";
case HEX_REG_SYS_REGS_ISDBST:
return "ISDBST";
case HEX_REG_SYS_REGS_ISDBCFG0:
return "ISDBCFG0";
case HEX_REG_SYS_REGS_ISDBCFG1:
return "ISDBCFG1";
case HEX_REG_SYS_REGS_S27:
return get_alias ? "CFGBASE" : "S27";
case HEX_REG_SYS_REGS_S28:
return get_alias ? "DIAG" : "S28";
case HEX_REG_SYS_REGS_S29:
return get_alias ? "REV" : "S29";
case HEX_REG_SYS_REGS_S31:
return get_alias ? "PCYCLEHI" : "S31";
case HEX_REG_SYS_REGS_S30:
return get_alias ? "PCYCLELO" : "S30";
case HEX_REG_SYS_REGS_S32:
return get_alias ? "ISDBST" : "S32";
case HEX_REG_SYS_REGS_S33:
return get_alias ? "ISDBCFG0" : "S33";
case HEX_REG_SYS_REGS_S34:
return get_alias ? "ISDBCFG1" : "S34";
case HEX_REG_SYS_REGS_S35:
return "S35";
case HEX_REG_SYS_REGS_BRKPTPC0:
return "BRKPTPC0";
case HEX_REG_SYS_REGS_BRKPTCFG0:
return "BRKPTCFG0";
case HEX_REG_SYS_REGS_BRKPTPC1:
return "BRKPTPC1";
case HEX_REG_SYS_REGS_BRKPTCFG1:
return "BRKPTCFG1";
case HEX_REG_SYS_REGS_ISDBMBXIN:
return "ISDBMBXIN";
case HEX_REG_SYS_REGS_ISDBMBXOUT:
return "ISDBMBXOUT";
case HEX_REG_SYS_REGS_ISDBEN:
return "ISDBEN";
case HEX_REG_SYS_REGS_ISDBGPR:
return "ISDBGPR";
case HEX_REG_SYS_REGS_S36:
return get_alias ? "BRKPTPC0" : "S36";
case HEX_REG_SYS_REGS_S37:
return get_alias ? "BRKPTCFG0" : "S37";
case HEX_REG_SYS_REGS_S38:
return get_alias ? "BRKPTPC1" : "S38";
case HEX_REG_SYS_REGS_S39:
return get_alias ? "BRKPTCFG1" : "S39";
case HEX_REG_SYS_REGS_S40:
return get_alias ? "ISDBMBXIN" : "S40";
case HEX_REG_SYS_REGS_S41:
return get_alias ? "ISDBMBXOUT" : "S41";
case HEX_REG_SYS_REGS_S42:
return get_alias ? "ISDBEN" : "S42";
case HEX_REG_SYS_REGS_S43:
return get_alias ? "ISDBGPR" : "S43";
case HEX_REG_SYS_REGS_S44:
return "S44";
case HEX_REG_SYS_REGS_S45:
@ -689,18 +672,18 @@ char *hex_get_sys_regs(int opcode_reg) {
return "S46";
case HEX_REG_SYS_REGS_S47:
return "S47";
case HEX_REG_SYS_REGS_PMUCNT0:
return "PMUCNT0";
case HEX_REG_SYS_REGS_PMUCNT1:
return "PMUCNT1";
case HEX_REG_SYS_REGS_PMUCNT2:
return "PMUCNT2";
case HEX_REG_SYS_REGS_PMUCNT3:
return "PMUCNT3";
case HEX_REG_SYS_REGS_PMUEVTCFG:
return "PMUEVTCFG";
case HEX_REG_SYS_REGS_PMUCFG:
return "PMUCFG";
case HEX_REG_SYS_REGS_S48:
return get_alias ? "PMUCNT0" : "S48";
case HEX_REG_SYS_REGS_S49:
return get_alias ? "PMUCNT1" : "S49";
case HEX_REG_SYS_REGS_S50:
return get_alias ? "PMUCNT2" : "S50";
case HEX_REG_SYS_REGS_S51:
return get_alias ? "PMUCNT3" : "S51";
case HEX_REG_SYS_REGS_S52:
return get_alias ? "PMUEVTCFG" : "S52";
case HEX_REG_SYS_REGS_S53:
return get_alias ? "PMUCFG" : "S53";
case HEX_REG_SYS_REGS_S54:
return "S54";
case HEX_REG_SYS_REGS_S55:
@ -758,18 +741,17 @@ char *hex_get_sys_regs(int opcode_reg) {
}
}
char *hex_get_sys_regs64(int opcode_reg) {
char *hex_get_sys_regs64(int opcode_reg, bool get_alias) {
switch (opcode_reg) {
default:
return "<err>";
case HEX_REG_SYS_REGS64_SGP1_0:
return "S1:0";
default: return "<err>";
case HEX_REG_SYS_REGS64_S1_0:
return get_alias ? "SGP1:0" : "S1:0";
case HEX_REG_SYS_REGS64_S3_2:
return "S3:2";
case HEX_REG_SYS_REGS64_S5_4:
return "S5:4";
return get_alias ? "BADVA1:0" : "S5:4";
case HEX_REG_SYS_REGS64_S7_6:
return "S7:6";
return get_alias ? "CCR:SSR" : "S7:6";
case HEX_REG_SYS_REGS64_S9_8:
return "S9:8";
case HEX_REG_SYS_REGS64_S11_10:
@ -793,7 +775,7 @@ char *hex_get_sys_regs64(int opcode_reg) {
case HEX_REG_SYS_REGS64_S29_28:
return "S29:28";
case HEX_REG_SYS_REGS64_S31_30:
return "S31:30";
return get_alias ? "PCYCLE" : "S31:30";
case HEX_REG_SYS_REGS64_S33_32:
return "S33:32";
case HEX_REG_SYS_REGS64_S35_34:

View file

@ -3,7 +3,7 @@
// LLVM commit: 96e220e6886868d6663d966ecc396befffc355e7
// LLVM commit date: 2022-01-05 11:01:52 +0000 (ISO 8601 format)
// Date of code generation: 2022-04-02 06:42:08-04:00
// Date of code generation: 2022-04-02 10:48:34-04:00
//========================================
// The following code is generated.
// Do not edit. Repository of code generator:
@ -134,28 +134,28 @@ typedef struct {
RzConfig *cfg;
} HexState;
typedef enum {
HEX_REG_CTR_REGS_SA0 = 0, // c0
HEX_REG_CTR_REGS_LC0 = 1, // c1
HEX_REG_CTR_REGS_SA1 = 2, // c2
HEX_REG_CTR_REGS_LC1 = 3, // c3
HEX_REG_CTR_REGS_P3_0 = 4, // c4
HEX_REG_CTR_REGS_C0 = 0, // sa0
HEX_REG_CTR_REGS_C1 = 1, // lc0
HEX_REG_CTR_REGS_C2 = 2, // sa1
HEX_REG_CTR_REGS_C3 = 3, // lc1
HEX_REG_CTR_REGS_C4 = 4, // p3:0
HEX_REG_CTR_REGS_C5 = 5, // c5
HEX_REG_CTR_REGS_M0 = 6, // c6
HEX_REG_CTR_REGS_M1 = 7, // c7
HEX_REG_CTR_REGS_USR = 8, // c8
HEX_REG_CTR_REGS_PC = 9, // c9
HEX_REG_CTR_REGS_UGP = 10, // c10
HEX_REG_CTR_REGS_GP = 11, // c11
HEX_REG_CTR_REGS_CS0 = 12, // c12
HEX_REG_CTR_REGS_CS1 = 13, // c13
HEX_REG_CTR_REGS_UPCYCLELO = 14, // c14
HEX_REG_CTR_REGS_UPCYCLEHI = 15, // c15
HEX_REG_CTR_REGS_FRAMELIMIT = 16, // c16
HEX_REG_CTR_REGS_FRAMEKEY = 17, // c17
HEX_REG_CTR_REGS_PKTCOUNTLO = 18, // c18
HEX_REG_CTR_REGS_PKTCOUNTHI = 19, // c19
HEX_REG_CTR_REGS_UTIMERLO = 30, // c30
HEX_REG_CTR_REGS_UTIMERHI = 31, // c31
HEX_REG_CTR_REGS_C6 = 6, // m0
HEX_REG_CTR_REGS_C7 = 7, // m1
HEX_REG_CTR_REGS_C8 = 8, // usr
HEX_REG_CTR_REGS_C9 = 9, // pc
HEX_REG_CTR_REGS_C10 = 10, // ugp
HEX_REG_CTR_REGS_C11 = 11, // gp
HEX_REG_CTR_REGS_C12 = 12, // cs0
HEX_REG_CTR_REGS_C13 = 13, // cs1
HEX_REG_CTR_REGS_C14 = 14, // upcyclelo
HEX_REG_CTR_REGS_C15 = 15, // upcyclehi
HEX_REG_CTR_REGS_C16 = 16, // framelimit
HEX_REG_CTR_REGS_C17 = 17, // framekey
HEX_REG_CTR_REGS_C18 = 18, // pktcountlo
HEX_REG_CTR_REGS_C19 = 19, // pktcounthi
HEX_REG_CTR_REGS_C30 = 30, // utimerlo
HEX_REG_CTR_REGS_C31 = 31, // utimerhi
} HEX_CTR_REGS; // CtrRegs
typedef enum {
@ -165,41 +165,41 @@ typedef enum {
HEX_REG_CTR_REGS64_C7_6 = 6, // m1:0
HEX_REG_CTR_REGS64_C9_8 = 8,
HEX_REG_CTR_REGS64_C11_10 = 10,
HEX_REG_CTR_REGS64_CS = 12, // cs1:0
HEX_REG_CTR_REGS64_UPCYCLE = 14, // upcycle
HEX_REG_CTR_REGS64_C13_12 = 12, // cs1:0
HEX_REG_CTR_REGS64_C15_14 = 14, // upcycle
HEX_REG_CTR_REGS64_C17_16 = 16,
HEX_REG_CTR_REGS64_PKTCOUNT = 18, // pktcount
HEX_REG_CTR_REGS64_UTIMER = 30, // utimer
HEX_REG_CTR_REGS64_C19_18 = 18, // pktcount
HEX_REG_CTR_REGS64_C31_30 = 30, // utimer
} HEX_CTR_REGS64; // CtrRegs64
typedef enum {
HEX_REG_DOUBLE_REGS_D0 = 0,
HEX_REG_DOUBLE_REGS_D1 = 2,
HEX_REG_DOUBLE_REGS_D2 = 4,
HEX_REG_DOUBLE_REGS_D3 = 6,
HEX_REG_DOUBLE_REGS_D4 = 8,
HEX_REG_DOUBLE_REGS_D5 = 10,
HEX_REG_DOUBLE_REGS_D6 = 12,
HEX_REG_DOUBLE_REGS_D7 = 14,
HEX_REG_DOUBLE_REGS_D8 = 16,
HEX_REG_DOUBLE_REGS_D9 = 18,
HEX_REG_DOUBLE_REGS_D10 = 20,
HEX_REG_DOUBLE_REGS_D11 = 22,
HEX_REG_DOUBLE_REGS_D12 = 24,
HEX_REG_DOUBLE_REGS_D13 = 26,
HEX_REG_DOUBLE_REGS_D14 = 28,
HEX_REG_DOUBLE_REGS_D15 = 30, // lr:fp
HEX_REG_DOUBLE_REGS_R1_0 = 0,
HEX_REG_DOUBLE_REGS_R3_2 = 2,
HEX_REG_DOUBLE_REGS_R5_4 = 4,
HEX_REG_DOUBLE_REGS_R7_6 = 6,
HEX_REG_DOUBLE_REGS_R9_8 = 8,
HEX_REG_DOUBLE_REGS_R11_10 = 10,
HEX_REG_DOUBLE_REGS_R13_12 = 12,
HEX_REG_DOUBLE_REGS_R15_14 = 14,
HEX_REG_DOUBLE_REGS_R17_16 = 16,
HEX_REG_DOUBLE_REGS_R19_18 = 18,
HEX_REG_DOUBLE_REGS_R21_20 = 20,
HEX_REG_DOUBLE_REGS_R23_22 = 22,
HEX_REG_DOUBLE_REGS_R25_24 = 24,
HEX_REG_DOUBLE_REGS_R27_26 = 26,
HEX_REG_DOUBLE_REGS_R29_28 = 28,
HEX_REG_DOUBLE_REGS_R31_30 = 30, // lr:fp
} HEX_DOUBLE_REGS; // DoubleRegs
typedef enum {
HEX_REG_GENERAL_DOUBLE_LOW8_REGS_D0 = 0,
HEX_REG_GENERAL_DOUBLE_LOW8_REGS_D1 = 2,
HEX_REG_GENERAL_DOUBLE_LOW8_REGS_D2 = 4,
HEX_REG_GENERAL_DOUBLE_LOW8_REGS_D3 = 6,
HEX_REG_GENERAL_DOUBLE_LOW8_REGS_D8 = 16,
HEX_REG_GENERAL_DOUBLE_LOW8_REGS_D9 = 18,
HEX_REG_GENERAL_DOUBLE_LOW8_REGS_D10 = 20,
HEX_REG_GENERAL_DOUBLE_LOW8_REGS_D11 = 22,
HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R1_0 = 0,
HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R3_2 = 2,
HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R5_4 = 4,
HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R7_6 = 6,
HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R17_16 = 16,
HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R19_18 = 18,
HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R21_20 = 20,
HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R23_22 = 22,
} HEX_GENERAL_DOUBLE_LOW8_REGS; // GeneralDoubleLow8Regs
typedef enum {
@ -222,10 +222,10 @@ typedef enum {
} HEX_GENERAL_SUB_REGS; // GeneralSubRegs
typedef enum {
HEX_REG_GUEST_REGS_GELR = 0, // g0
HEX_REG_GUEST_REGS_GSR = 1, // g1
HEX_REG_GUEST_REGS_GOSP = 2, // g2
HEX_REG_GUEST_REGS_G3 = 3, // g3
HEX_REG_GUEST_REGS_G0 = 0, // gelr
HEX_REG_GUEST_REGS_G1 = 1, // gsr
HEX_REG_GUEST_REGS_G2 = 2, // gosp
HEX_REG_GUEST_REGS_G3 = 3, // gbadva
HEX_REG_GUEST_REGS_G4 = 4,
HEX_REG_GUEST_REGS_G5 = 5,
HEX_REG_GUEST_REGS_G6 = 6,
@ -238,20 +238,20 @@ typedef enum {
HEX_REG_GUEST_REGS_G13 = 13,
HEX_REG_GUEST_REGS_G14 = 14,
HEX_REG_GUEST_REGS_G15 = 15,
HEX_REG_GUEST_REGS_GPMUCNT4 = 16, // g16
HEX_REG_GUEST_REGS_GPMUCNT5 = 17, // g17
HEX_REG_GUEST_REGS_GPMUCNT6 = 18, // g18
HEX_REG_GUEST_REGS_GPMUCNT7 = 19, // g19
HEX_REG_GUEST_REGS_G16 = 16, // gpmucnt4
HEX_REG_GUEST_REGS_G17 = 17, // gpmucnt5
HEX_REG_GUEST_REGS_G18 = 18, // gpmucnt6
HEX_REG_GUEST_REGS_G19 = 19, // gpmucnt7
HEX_REG_GUEST_REGS_G20 = 20,
HEX_REG_GUEST_REGS_G21 = 21,
HEX_REG_GUEST_REGS_G22 = 22,
HEX_REG_GUEST_REGS_G23 = 23,
HEX_REG_GUEST_REGS_GPCYCLELO = 24, // g24
HEX_REG_GUEST_REGS_GPCYCLEHI = 25, // g25
HEX_REG_GUEST_REGS_GPMUCNT0 = 26, // g26
HEX_REG_GUEST_REGS_GPMUCNT1 = 27, // g27
HEX_REG_GUEST_REGS_GPMUCNT2 = 28, // g28
HEX_REG_GUEST_REGS_GPMUCNT3 = 29, // g29
HEX_REG_GUEST_REGS_G24 = 24, // gpcyclelo
HEX_REG_GUEST_REGS_G25 = 25, // gpcyclehi
HEX_REG_GUEST_REGS_G26 = 26, // gpmucnt0
HEX_REG_GUEST_REGS_G27 = 27, // gpmucnt1
HEX_REG_GUEST_REGS_G28 = 28, // gpmucnt2
HEX_REG_GUEST_REGS_G29 = 29, // gpmucnt3
HEX_REG_GUEST_REGS_G30 = 30,
HEX_REG_GUEST_REGS_G31 = 31,
} HEX_GUEST_REGS; // GuestRegs
@ -283,14 +283,14 @@ typedef enum {
} HEX_HVX_QR; // HvxQR
typedef enum {
HEX_REG_HVX_VQR_VQ0 = 0,
HEX_REG_HVX_VQR_VQ1 = 4,
HEX_REG_HVX_VQR_VQ2 = 8,
HEX_REG_HVX_VQR_VQ3 = 12,
HEX_REG_HVX_VQR_VQ4 = 16,
HEX_REG_HVX_VQR_VQ5 = 20,
HEX_REG_HVX_VQR_VQ6 = 24,
HEX_REG_HVX_VQR_VQ7 = 28,
HEX_REG_HVX_VQR_V3_0 = 0,
HEX_REG_HVX_VQR_V7_4 = 4,
HEX_REG_HVX_VQR_V11_8 = 8,
HEX_REG_HVX_VQR_V15_12 = 12,
HEX_REG_HVX_VQR_V19_16 = 16,
HEX_REG_HVX_VQR_V23_20 = 20,
HEX_REG_HVX_VQR_V27_24 = 24,
HEX_REG_HVX_VQR_V31_28 = 28,
} HEX_HVX_VQR; // HvxVQR
typedef enum {
@ -329,22 +329,22 @@ typedef enum {
} HEX_HVX_VR; // HvxVR
typedef enum {
HEX_REG_HVX_WR_W0 = 0,
HEX_REG_HVX_WR_W1 = 2,
HEX_REG_HVX_WR_W2 = 4,
HEX_REG_HVX_WR_W3 = 6,
HEX_REG_HVX_WR_W4 = 8,
HEX_REG_HVX_WR_W5 = 10,
HEX_REG_HVX_WR_W6 = 12,
HEX_REG_HVX_WR_W7 = 14,
HEX_REG_HVX_WR_W8 = 16,
HEX_REG_HVX_WR_W9 = 18,
HEX_REG_HVX_WR_W10 = 20,
HEX_REG_HVX_WR_W11 = 22,
HEX_REG_HVX_WR_W12 = 24,
HEX_REG_HVX_WR_W13 = 26,
HEX_REG_HVX_WR_W14 = 28,
HEX_REG_HVX_WR_W15 = 30,
HEX_REG_HVX_WR_V1_0 = 0,
HEX_REG_HVX_WR_V3_2 = 2,
HEX_REG_HVX_WR_V5_4 = 4,
HEX_REG_HVX_WR_V7_6 = 6,
HEX_REG_HVX_WR_V9_8 = 8,
HEX_REG_HVX_WR_V11_10 = 10,
HEX_REG_HVX_WR_V13_12 = 12,
HEX_REG_HVX_WR_V15_14 = 14,
HEX_REG_HVX_WR_V17_16 = 16,
HEX_REG_HVX_WR_V19_18 = 18,
HEX_REG_HVX_WR_V21_20 = 20,
HEX_REG_HVX_WR_V23_22 = 22,
HEX_REG_HVX_WR_V25_24 = 24,
HEX_REG_HVX_WR_V27_26 = 26,
HEX_REG_HVX_WR_V29_28 = 28,
HEX_REG_HVX_WR_V31_30 = 30,
} HEX_HVX_WR; // HvxWR
typedef enum {
@ -394,8 +394,8 @@ typedef enum {
} HEX_INT_REGS_LOW8; // IntRegsLow8
typedef enum {
HEX_REG_MOD_REGS_M0 = 6, // c6
HEX_REG_MOD_REGS_M1 = 7, // c7
HEX_REG_MOD_REGS_C6 = 6, // m0
HEX_REG_MOD_REGS_C7 = 7, // m1
} HEX_MOD_REGS; // ModRegs
typedef enum {
@ -406,60 +406,60 @@ typedef enum {
} HEX_PRED_REGS; // PredRegs
typedef enum {
HEX_REG_SYS_REGS_SGP0 = 0, // s0
HEX_REG_SYS_REGS_SGP1 = 1, // s1
HEX_REG_SYS_REGS_STID = 2, // s2
HEX_REG_SYS_REGS_ELR = 3, // s3
HEX_REG_SYS_REGS_BADVA0 = 4, // s4
HEX_REG_SYS_REGS_BADVA1 = 5, // s5
HEX_REG_SYS_REGS_SSR = 6, // s6
HEX_REG_SYS_REGS_CCR = 7, // s7
HEX_REG_SYS_REGS_HTID = 8, // s8
HEX_REG_SYS_REGS_BADVA = 9, // s9
HEX_REG_SYS_REGS_IMASK = 10, // s10
HEX_REG_SYS_REGS_S0 = 0, // sgp0
HEX_REG_SYS_REGS_S1 = 1, // sgp1
HEX_REG_SYS_REGS_S2 = 2, // stid
HEX_REG_SYS_REGS_S3 = 3, // elr
HEX_REG_SYS_REGS_S4 = 4, // badva0
HEX_REG_SYS_REGS_S5 = 5, // badva1
HEX_REG_SYS_REGS_S6 = 6, // ssr
HEX_REG_SYS_REGS_S7 = 7, // ccr
HEX_REG_SYS_REGS_S8 = 8, // htid
HEX_REG_SYS_REGS_S9 = 9, // badva
HEX_REG_SYS_REGS_S10 = 10, // imask
HEX_REG_SYS_REGS_S11 = 11,
HEX_REG_SYS_REGS_S12 = 12,
HEX_REG_SYS_REGS_S13 = 13,
HEX_REG_SYS_REGS_S14 = 14,
HEX_REG_SYS_REGS_S15 = 15,
HEX_REG_SYS_REGS_EVB = 16, // s16
HEX_REG_SYS_REGS_MODECTL = 17, // s17
HEX_REG_SYS_REGS_SYSCFG = 18, // s18
HEX_REG_SYS_REGS_S16 = 16, // evb
HEX_REG_SYS_REGS_S17 = 17, // modectl
HEX_REG_SYS_REGS_S18 = 18, // syscfg
HEX_REG_SYS_REGS_S19 = 19, // s19
HEX_REG_SYS_REGS_S20 = 20, // s20
HEX_REG_SYS_REGS_VID = 21, // s21
HEX_REG_SYS_REGS_S21 = 21, // vid
HEX_REG_SYS_REGS_S22 = 22, // s22
HEX_REG_SYS_REGS_S23 = 23,
HEX_REG_SYS_REGS_S24 = 24,
HEX_REG_SYS_REGS_S25 = 25,
HEX_REG_SYS_REGS_S26 = 26,
HEX_REG_SYS_REGS_CFGBASE = 27, // s27
HEX_REG_SYS_REGS_DIAG = 28, // s28
HEX_REG_SYS_REGS_REV = 29, // s29
HEX_REG_SYS_REGS_PCYCLELO = 30, // s30
HEX_REG_SYS_REGS_PCYCLEHI = 31, // s31
HEX_REG_SYS_REGS_ISDBST = 32, // s32
HEX_REG_SYS_REGS_ISDBCFG0 = 33, // s33
HEX_REG_SYS_REGS_ISDBCFG1 = 34, // s34
HEX_REG_SYS_REGS_S27 = 27, // cfgbase
HEX_REG_SYS_REGS_S28 = 28, // diag
HEX_REG_SYS_REGS_S29 = 29, // rev
HEX_REG_SYS_REGS_S30 = 30, // pcyclelo
HEX_REG_SYS_REGS_S31 = 31, // pcyclehi
HEX_REG_SYS_REGS_S32 = 32, // isdbst
HEX_REG_SYS_REGS_S33 = 33, // isdbcfg0
HEX_REG_SYS_REGS_S34 = 34, // isdbcfg1
HEX_REG_SYS_REGS_S35 = 35,
HEX_REG_SYS_REGS_BRKPTPC0 = 36, // s36
HEX_REG_SYS_REGS_BRKPTCFG0 = 37, // s37
HEX_REG_SYS_REGS_BRKPTPC1 = 38, // s38
HEX_REG_SYS_REGS_BRKPTCFG1 = 39, // s39
HEX_REG_SYS_REGS_ISDBMBXIN = 40, // s40
HEX_REG_SYS_REGS_ISDBMBXOUT = 41, // s41
HEX_REG_SYS_REGS_ISDBEN = 42, // s42
HEX_REG_SYS_REGS_ISDBGPR = 43, // s43
HEX_REG_SYS_REGS_S36 = 36, // brkptpc0
HEX_REG_SYS_REGS_S37 = 37, // brkptcfg0
HEX_REG_SYS_REGS_S38 = 38, // brkptpc1
HEX_REG_SYS_REGS_S39 = 39, // brkptcfg1
HEX_REG_SYS_REGS_S40 = 40, // isdbmbxin
HEX_REG_SYS_REGS_S41 = 41, // isdbmbxout
HEX_REG_SYS_REGS_S42 = 42, // isdben
HEX_REG_SYS_REGS_S43 = 43, // isdbgpr
HEX_REG_SYS_REGS_S44 = 44,
HEX_REG_SYS_REGS_S45 = 45,
HEX_REG_SYS_REGS_S46 = 46,
HEX_REG_SYS_REGS_S47 = 47,
HEX_REG_SYS_REGS_PMUCNT0 = 48, // s48
HEX_REG_SYS_REGS_PMUCNT1 = 49, // s49
HEX_REG_SYS_REGS_PMUCNT2 = 50, // s50
HEX_REG_SYS_REGS_PMUCNT3 = 51, // s51
HEX_REG_SYS_REGS_PMUEVTCFG = 52, // s52
HEX_REG_SYS_REGS_PMUCFG = 53, // s53
HEX_REG_SYS_REGS_S48 = 48, // pmucnt0
HEX_REG_SYS_REGS_S49 = 49, // pmucnt1
HEX_REG_SYS_REGS_S50 = 50, // pmucnt2
HEX_REG_SYS_REGS_S51 = 51, // pmucnt3
HEX_REG_SYS_REGS_S52 = 52, // pmuevtcfg
HEX_REG_SYS_REGS_S53 = 53, // pmucfg
HEX_REG_SYS_REGS_S54 = 54,
HEX_REG_SYS_REGS_S55 = 55,
HEX_REG_SYS_REGS_S56 = 56,
@ -490,7 +490,7 @@ typedef enum {
} HEX_SYS_REGS; // SysRegs
typedef enum {
HEX_REG_SYS_REGS64_SGP1_0 = 0, // sgp1:0
HEX_REG_SYS_REGS64_S1_0 = 0, // sgp1:0
HEX_REG_SYS_REGS64_S3_2 = 2,
HEX_REG_SYS_REGS64_S5_4 = 4, // badva1:0
HEX_REG_SYS_REGS64_S7_6 = 6, // ccr:ssr
@ -538,23 +538,23 @@ typedef enum {
#define BF_GET(y, start, len) (((y) >> (start)) & BIT_MASK(len))
#define BF_GETB(y, start, end) (BF_GET((y), (start), (end) - (start) + 1)
char *hex_get_ctr_regs(int opcode_reg);
char *hex_get_ctr_regs64(int opcode_reg);
char *hex_get_double_regs(int opcode_reg);
char *hex_get_general_double_low8_regs(int opcode_reg);
char *hex_get_general_sub_regs(int opcode_reg);
char *hex_get_guest_regs(int opcode_reg);
char *hex_get_guest_regs64(int opcode_reg);
char *hex_get_hvx_qr(int opcode_reg);
char *hex_get_hvx_vqr(int opcode_reg);
char *hex_get_hvx_vr(int opcode_reg);
char *hex_get_hvx_wr(int opcode_reg);
char *hex_get_int_regs(int opcode_reg);
char *hex_get_int_regs_low8(int opcode_reg);
char *hex_get_mod_regs(int opcode_reg);
char *hex_get_pred_regs(int opcode_reg);
char *hex_get_sys_regs(int opcode_reg);
char *hex_get_sys_regs64(int opcode_reg);
char *hex_get_ctr_regs(int opcode_reg, bool get_alias);
char *hex_get_ctr_regs64(int opcode_reg, bool get_alias);
char *hex_get_double_regs(int opcode_reg, bool get_alias);
char *hex_get_general_double_low8_regs(int opcode_reg, bool get_alias);
char *hex_get_general_sub_regs(int opcode_reg, bool get_alias);
char *hex_get_guest_regs(int opcode_reg, bool get_alias);
char *hex_get_guest_regs64(int opcode_reg, bool get_alias);
char *hex_get_hvx_qr(int opcode_reg, bool get_alias);
char *hex_get_hvx_vqr(int opcode_reg, bool get_alias);
char *hex_get_hvx_vr(int opcode_reg, bool get_alias);
char *hex_get_hvx_wr(int opcode_reg, bool get_alias);
char *hex_get_int_regs(int opcode_reg, bool get_alias);
char *hex_get_int_regs_low8(int opcode_reg, bool get_alias);
char *hex_get_mod_regs(int opcode_reg, bool get_alias);
char *hex_get_pred_regs(int opcode_reg, bool get_alias);
char *hex_get_sys_regs(int opcode_reg, bool get_alias);
char *hex_get_sys_regs64(int opcode_reg, bool get_alias);
RZ_API RZ_BORROW RzConfig *hexagon_get_config();
RZ_API void hex_extend_op(HexState *state, RZ_INOUT HexOp *op, const bool set_new_extender, const ut32 addr);

File diff suppressed because it is too large Load diff

View file

@ -3,7 +3,7 @@
// LLVM commit: 96e220e6886868d6663d966ecc396befffc355e7
// LLVM commit date: 2022-01-05 11:01:52 +0000 (ISO 8601 format)
// Date of code generation: 2022-04-02 05:15:46-04:00
// Date of code generation: 2022-04-02 09:49:53-04:00
//========================================
// The following code is generated.
// Do not edit. Repository of code generator:
@ -78,6 +78,7 @@ static bool hexagon_init(void **user) {
SETCB("plugins.hexagon.imm.hash", "true", &hex_cfg_set, "Display ## before 32bit immediates and # before immidiates with other width.");
SETCB("plugins.hexagon.imm.sign", "true", &hex_cfg_set, "True: Print them with sign. False: Print signed immediates in unsigned representation.");
SETCB("plugins.hexagon.sdk", "false", &hex_cfg_set, "Print packet syntax in objdump style.");
SETCB("plugins.hexagon.reg.alias", "true", &hex_cfg_set, "Print the alias of registers (Alias from C0 = SA0).");
return true;
}

View file

@ -590,7 +590,7 @@ static bool deserialize_checkpoints_cb(void *user, const char *cnum, const char
baby = rz_json_get(child, "arena");
CHECK_TYPE(baby, RZ_JSON_INTEGER);
int arena = baby->num.s_value;
if (arena < RZ_REG_TYPE_GPR || arena > RZ_REG_TYPE_SEG) {
if (arena < RZ_REG_TYPE_GPR || arena >= RZ_REG_TYPE_LAST) {
continue;
}
baby = rz_json_get(child, "size");

View file

@ -18,16 +18,19 @@ RZ_LIB_VERSION_HEADER(rz_reg);
* this enum aims to cover them all.
*/
typedef enum {
RZ_REG_TYPE_GPR,
RZ_REG_TYPE_GPR, //< General purpose
RZ_REG_TYPE_DRX,
RZ_REG_TYPE_FPU,
RZ_REG_TYPE_FPU, //< Floating point
RZ_REG_TYPE_MMX,
RZ_REG_TYPE_XMM,
RZ_REG_TYPE_YMM,
RZ_REG_TYPE_FLG,
RZ_REG_TYPE_SEG,
RZ_REG_TYPE_SYS,
RZ_REG_TYPE_SYS, //< System
RZ_REG_TYPE_SEC,
RZ_REG_TYPE_VC, //< Vector
RZ_REG_TYPE_VCC, //< Vector control
RZ_REG_TYPE_CTR, //< Control
RZ_REG_TYPE_LAST,
RZ_REG_TYPE_ANY = -1
} RzRegisterType;

View file

@ -7,7 +7,7 @@
RZ_LIB_VERSION(rz_reg);
static const char *types[RZ_REG_TYPE_LAST + 1] = {
"gpr", "drx", "fpu", "mmx", "xmm", "ymm", "flg", "seg", "sys", "sec", NULL
"gpr", "drx", "fpu", "mmx", "xmm", "ymm", "flg", "seg", "sys", "sec", "vc", "vcc", "ctr", NULL
};
// Take the 32bits name of a register, and return the 64 bit name of it.

File diff suppressed because it is too large Load diff

View file

@ -13,6 +13,9 @@ flg
seg
sys
sec
vc
vcc
ctr
EOF
RUN

View file

@ -3,11 +3,11 @@ d "? immext(##0x40)" 01400000 0x0
d "? immext(##0xffffffc0)" ff7fff0f 0x0
d "? R0 = ##0x101" 20e00078 0x0
d "? R5 = add(clb(R31),#-0x1)" 05ff3f8c 0x0
d "? R5 = add(clb(LR),#-0x1)" 05ff3f8c 0x0
d "? R4 = add(R19,##0x33)" 64c613b0 0x0
d "? nop" 00c0007f 0x10000000
d "? R31 = add(R0,##0x2)" 5f4000b0 0x0
d "? LR = add(R0,##0x2)" 5f4000b0 0x0
d "? P0 = tstbit(R6,#0); if (!P0.new) jump:t 0x14" 04e3c611 0xc
d "? P0 = tstbit(R6,#0); if (!P0.new) jump:t 0x8" fce3f611 0x10
@ -19,13 +19,13 @@ d "? R23:22 = combine(#0,#0x2) ; R17:16 = memd(R29+#0x40)" 443e475c 0x0
d "? if (!P0.new) R23 = #0 ; jumpr R31" c03f5f5a 0x0
d "? G9:8 = R9:8" 08c00863 0x0
d "? GELR = R31" 00c01f62 0x0
d "? GELR = LR" 00c01f62 0x0
d "? R11:10 = memb_fifo(R12++M0:brev)" 0a408c9e 0x0
d "? R15:14 = memb_fifo(R7=##0x3)" 6ed0879a 0x0
dB "? C21:20 = R19:18" 14c03263 0x0
d "? C17:16 = R19:18" 10c03263 0x0
d "? C19:18 = R31:30" 12c03e63 0x0
d "? PKTCOUNT = LR:FP" 12c03e63 0x0
d "? V31.h = vsat(V0.w,V13.w)" 7fc06d1f 0x0
@ -38,18 +38,18 @@ d "? R1 = ##0x3 ; R23 = -1" 0f3a3128 0x0
d "? R23 = -1 ; R0 = -1" 003a0f3a 0x0
d "? R6 = ##0x4 ; R4 = #0x0" 04284628 0x0
d "? CSwi(R0)" 20400064 0x0
d "? SGP0 = R29" 00401d67 0x0
d "? SGP0 = SP" 00401d67 0x0
d "? EVB = R0" 10400067 0x0
d "? S60 = R0" 3c400067 0x0
d "? R31 = S80" 1f40d06e 0x0
d "? LR = S80" 1f40d06e 0x0
d "? S35 = R0" 23400067 0x0
d "? ISDBEN = R2" 2a400267 0x0
d "? S61:60 = R1:0" 3c40006d 0x0
d "? S79:78 = R1:0" 4e40006d 0x0
d "? S1:0 = R1:0" 004c006d 0x0
d "? R1:0 = S1:0" 0040006f 0x0
d "? SGP1:0 = R1:0" 004c006d 0x0
d "? R1:0 = SGP1:0" 0040006f 0x0
d "? R1:0 = S79:78" 00404e6f 0x0
d "? R1:0 = combine(##0x1b,#0x3)" 6063017c 0x0
d "? if (!P0) R5:4 = memd(R0+R2<<#0x0)" 04c2c031 0x0
d "? if (!P0.new) R2 = add(R2,##0x8)" 02618274 0x0
d "? if (!P0.new) R2 = add(R2,##0x8)" 02618274 0x0

View file

@ -334,6 +334,9 @@ flg
seg
sys
sec
vc
vcc
ctr
EOF
RUN

View file

@ -45,8 +45,8 @@ ara+
ara~?
EOF
EXPECT=<<EOF
20
30
26
39
EOF
RUN
@ -66,11 +66,11 @@ ara-
ara~?
EOF
EXPECT=<<EOF
20
30
20
10
10
26
39
26
13
13
EOF
RUN

View file

@ -30,7 +30,10 @@ Sdb *ref_db() {
"{\"arena\":6,\"bytes\":\"BgYGBgYGBgYGBgYGBgYGBg==\",\"size\":16},"
"{\"arena\":7,\"bytes\":\"BwcHBwcHBwcHBwcHBwcHBw==\",\"size\":16},"
"{\"arena\":8,\"bytes\":\"CAgICAgICAgICAgICAgICA==\",\"size\":16},"
"{\"arena\":9,\"bytes\":\"CQkJCQkJCQkJCQkJCQkJCQ==\",\"size\":16}"
"{\"arena\":9,\"bytes\":\"CQkJCQkJCQkJCQkJCQkJCQ==\",\"size\":16},"
"{\"arena\":10,\"bytes\":\"CgoKCgoKCgoKCgoKCgoKCg==\",\"size\":16},"
"{\"arena\":11,\"bytes\":\"CwsLCwsLCwsLCwsLCwsLCw==\",\"size\":16},"
"{\"arena\":12,\"bytes\":\"DAwMDAwMDAwMDAwMDAwMDA==\",\"size\":16}"
"],"
"\"snaps\":["
"{\"name\":\"[stack]\",\"addr\":8796092882944,\"addr_end\":8796092883200,\"size\":256,\"data\":\"8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8A==\",\"perm\":7,\"user\":0,\"shared\":true}"