Rizin
unix-like reverse engineering framework and cli tools
hexagon.h File Reference
#include <rz_asm.h>
#include <rz_config.h>
#include <rz_list.h>
#include <rz_types.h>
#include <rz_util/rz_print.h>

Go to the source code of this file.

Classes

struct  HexPktInfo
 
struct  HexOp
 
struct  HexInsn
 
struct  HexPkt
 
struct  HexConstExt
 
struct  HexState
 Buffer packets for reversed instructions. More...
 

Macros

#define HEX_MAX_OPERANDS   6
 
#define HEX_PARSE_BITS_MASK   0xc000
 
#define MAX_CONST_EXT   512
 
#define HEXAGON_STATE_PKTS   8
 
#define BIT_MASK(len)   (BIT(len) - 1)
 
#define BF_MASK(start, len)   (BIT_MASK(len) << (start))
 
#define BF_PREP(x, start, len)   (((x)&BIT_MASK(len)) << (start))
 
#define BF_GET(y, start, len)   (((y) >> (start)) & BIT_MASK(len))
 
#define BF_GETB(y, start, end)   (BF_GET((y), (start), (end) - (start) + 1)
 

Enumerations

enum  HexPred { HEX_NOPRED , HEX_PRED_TRUE , HEX_PRED_FALSE , HEX_PRED_NEW }
 
enum  HexPf {
  HEX_PF_RND = 1 , HEX_PF_CRND = 1 << 1 , HEX_PF_RAW = 1 << 2 , HEX_PF_CHOP = 1 << 3 ,
  HEX_PF_SAT = 1 << 4 , HEX_PF_HI = 1 << 5 , HEX_PF_LO = 1 << 6 , HEX_PF_LSH1 = 1 << 7 ,
  HEX_PF_LSH16 = 1 << 8 , HEX_PF_RSH1 = 1 << 9 , HEX_PF_NEG = 1 << 10 , HEX_PF_POS = 1 << 11 ,
  HEX_PF_SCALE = 1 << 12 , HEX_PF_DEPRECATED = 1 << 15
}
 
enum  HexOpType { HEX_OP_TYPE_IMM , HEX_OP_TYPE_REG }
 
enum  HexOpAttr {
  HEX_OP_CONST_EXT = 1 << 0 , HEX_OP_REG_HI = 1 << 1 , HEX_OP_REG_LO = 1 << 2 , HEX_OP_REG_PAIR = 1 << 3 ,
  HEX_OP_REG_QUADRUPLE = 1 << 4 , HEX_OP_REG_OUT = 1 << 5 , HEX_OP_IMM_SCALED = 1 << 6
}
 
enum  HexLoopAttr { HEX_NO_LOOP = 0 , HEX_LOOP_0 = 1 , HEX_LOOP_1 = 1 << 1 , HEX_LOOP_01 = 1 << 2 }
 
enum  HexRegClass {
  HEX_REG_CLASS_CTR_REGS , HEX_REG_CLASS_CTR_REGS64 , HEX_REG_CLASS_DOUBLE_REGS , HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS ,
  HEX_REG_CLASS_GENERAL_SUB_REGS , HEX_REG_CLASS_GUEST_REGS , HEX_REG_CLASS_GUEST_REGS64 , HEX_REG_CLASS_HVX_QR ,
  HEX_REG_CLASS_HVX_VQR , HEX_REG_CLASS_HVX_VR , HEX_REG_CLASS_HVX_WR , HEX_REG_CLASS_INT_REGS ,
  HEX_REG_CLASS_INT_REGS_LOW8 , HEX_REG_CLASS_MOD_REGS , HEX_REG_CLASS_PRED_REGS , HEX_REG_CLASS_SYS_REGS ,
  HEX_REG_CLASS_SYS_REGS64
}
 
enum  HEX_CTR_REGS {
  HEX_REG_CTR_REGS_C0 = 0 , HEX_REG_CTR_REGS_C1 = 1 , HEX_REG_CTR_REGS_C2 = 2 , HEX_REG_CTR_REGS_C3 = 3 ,
  HEX_REG_CTR_REGS_C4 = 4 , HEX_REG_CTR_REGS_C5 = 5 , HEX_REG_CTR_REGS_C6 = 6 , HEX_REG_CTR_REGS_C7 = 7 ,
  HEX_REG_CTR_REGS_C8 = 8 , HEX_REG_CTR_REGS_C9 = 9 , HEX_REG_CTR_REGS_C10 = 10 , HEX_REG_CTR_REGS_C11 = 11 ,
  HEX_REG_CTR_REGS_C12 = 12 , HEX_REG_CTR_REGS_C13 = 13 , HEX_REG_CTR_REGS_C14 = 14 , HEX_REG_CTR_REGS_C15 = 15 ,
  HEX_REG_CTR_REGS_C16 = 16 , HEX_REG_CTR_REGS_C17 = 17 , HEX_REG_CTR_REGS_C18 = 18 , HEX_REG_CTR_REGS_C19 = 19 ,
  HEX_REG_CTR_REGS_C30 = 30 , HEX_REG_CTR_REGS_C31 = 31
}
 
enum  HEX_CTR_REGS64 {
  HEX_REG_CTR_REGS64_C1_0 = 0 , HEX_REG_CTR_REGS64_C3_2 = 2 , HEX_REG_CTR_REGS64_C5_4 = 4 , HEX_REG_CTR_REGS64_C7_6 = 6 ,
  HEX_REG_CTR_REGS64_C9_8 = 8 , HEX_REG_CTR_REGS64_C11_10 = 10 , HEX_REG_CTR_REGS64_C13_12 = 12 , HEX_REG_CTR_REGS64_C15_14 = 14 ,
  HEX_REG_CTR_REGS64_C17_16 = 16 , HEX_REG_CTR_REGS64_C19_18 = 18 , HEX_REG_CTR_REGS64_C31_30 = 30
}
 
enum  HEX_DOUBLE_REGS {
  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
}
 
enum  HEX_GENERAL_DOUBLE_LOW8_REGS {
  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
}
 
enum  HEX_GENERAL_SUB_REGS {
  HEX_REG_GENERAL_SUB_REGS_R0 = 0 , HEX_REG_GENERAL_SUB_REGS_R1 = 1 , HEX_REG_GENERAL_SUB_REGS_R2 = 2 , HEX_REG_GENERAL_SUB_REGS_R3 = 3 ,
  HEX_REG_GENERAL_SUB_REGS_R4 = 4 , HEX_REG_GENERAL_SUB_REGS_R5 = 5 , HEX_REG_GENERAL_SUB_REGS_R6 = 6 , HEX_REG_GENERAL_SUB_REGS_R7 = 7 ,
  HEX_REG_GENERAL_SUB_REGS_R16 = 16 , HEX_REG_GENERAL_SUB_REGS_R17 = 17 , HEX_REG_GENERAL_SUB_REGS_R18 = 18 , HEX_REG_GENERAL_SUB_REGS_R19 = 19 ,
  HEX_REG_GENERAL_SUB_REGS_R20 = 20 , HEX_REG_GENERAL_SUB_REGS_R21 = 21 , HEX_REG_GENERAL_SUB_REGS_R22 = 22 , HEX_REG_GENERAL_SUB_REGS_R23 = 23
}
 
enum  HEX_GUEST_REGS {
  HEX_REG_GUEST_REGS_G0 = 0 , HEX_REG_GUEST_REGS_G1 = 1 , HEX_REG_GUEST_REGS_G2 = 2 , HEX_REG_GUEST_REGS_G3 = 3 ,
  HEX_REG_GUEST_REGS_G4 = 4 , HEX_REG_GUEST_REGS_G5 = 5 , HEX_REG_GUEST_REGS_G6 = 6 , HEX_REG_GUEST_REGS_G7 = 7 ,
  HEX_REG_GUEST_REGS_G8 = 8 , HEX_REG_GUEST_REGS_G9 = 9 , HEX_REG_GUEST_REGS_G10 = 10 , HEX_REG_GUEST_REGS_G11 = 11 ,
  HEX_REG_GUEST_REGS_G12 = 12 , HEX_REG_GUEST_REGS_G13 = 13 , HEX_REG_GUEST_REGS_G14 = 14 , HEX_REG_GUEST_REGS_G15 = 15 ,
  HEX_REG_GUEST_REGS_G16 = 16 , HEX_REG_GUEST_REGS_G17 = 17 , HEX_REG_GUEST_REGS_G18 = 18 , HEX_REG_GUEST_REGS_G19 = 19 ,
  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_G24 = 24 , HEX_REG_GUEST_REGS_G25 = 25 , HEX_REG_GUEST_REGS_G26 = 26 , HEX_REG_GUEST_REGS_G27 = 27 ,
  HEX_REG_GUEST_REGS_G28 = 28 , HEX_REG_GUEST_REGS_G29 = 29 , HEX_REG_GUEST_REGS_G30 = 30 , HEX_REG_GUEST_REGS_G31 = 31
}
 
enum  HEX_GUEST_REGS64 {
  HEX_REG_GUEST_REGS64_G1_0 = 0 , HEX_REG_GUEST_REGS64_G3_2 = 2 , HEX_REG_GUEST_REGS64_G5_4 = 4 , HEX_REG_GUEST_REGS64_G7_6 = 6 ,
  HEX_REG_GUEST_REGS64_G9_8 = 8 , HEX_REG_GUEST_REGS64_G11_10 = 10 , HEX_REG_GUEST_REGS64_G13_12 = 12 , HEX_REG_GUEST_REGS64_G15_14 = 14 ,
  HEX_REG_GUEST_REGS64_G17_16 = 16 , HEX_REG_GUEST_REGS64_G19_18 = 18 , HEX_REG_GUEST_REGS64_G21_20 = 20 , HEX_REG_GUEST_REGS64_G23_22 = 22 ,
  HEX_REG_GUEST_REGS64_G25_24 = 24 , HEX_REG_GUEST_REGS64_G27_26 = 26 , HEX_REG_GUEST_REGS64_G29_28 = 28 , HEX_REG_GUEST_REGS64_G31_30 = 30
}
 
enum  HEX_HVX_QR { HEX_REG_HVX_QR_Q0 = 0 , HEX_REG_HVX_QR_Q1 = 1 , HEX_REG_HVX_QR_Q2 = 2 , HEX_REG_HVX_QR_Q3 = 3 }
 
enum  HEX_HVX_VQR {
  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
}
 
enum  HEX_HVX_VR {
  HEX_REG_HVX_VR_V0 = 0 , HEX_REG_HVX_VR_V1 = 1 , HEX_REG_HVX_VR_V2 = 2 , HEX_REG_HVX_VR_V3 = 3 ,
  HEX_REG_HVX_VR_V4 = 4 , HEX_REG_HVX_VR_V5 = 5 , HEX_REG_HVX_VR_V6 = 6 , HEX_REG_HVX_VR_V7 = 7 ,
  HEX_REG_HVX_VR_V8 = 8 , HEX_REG_HVX_VR_V9 = 9 , HEX_REG_HVX_VR_V10 = 10 , HEX_REG_HVX_VR_V11 = 11 ,
  HEX_REG_HVX_VR_V12 = 12 , HEX_REG_HVX_VR_V13 = 13 , HEX_REG_HVX_VR_V14 = 14 , HEX_REG_HVX_VR_V15 = 15 ,
  HEX_REG_HVX_VR_V16 = 16 , HEX_REG_HVX_VR_V17 = 17 , HEX_REG_HVX_VR_V18 = 18 , HEX_REG_HVX_VR_V19 = 19 ,
  HEX_REG_HVX_VR_V20 = 20 , HEX_REG_HVX_VR_V21 = 21 , HEX_REG_HVX_VR_V22 = 22 , HEX_REG_HVX_VR_V23 = 23 ,
  HEX_REG_HVX_VR_V24 = 24 , HEX_REG_HVX_VR_V25 = 25 , HEX_REG_HVX_VR_V26 = 26 , HEX_REG_HVX_VR_V27 = 27 ,
  HEX_REG_HVX_VR_V28 = 28 , HEX_REG_HVX_VR_V29 = 29 , HEX_REG_HVX_VR_V30 = 30 , HEX_REG_HVX_VR_V31 = 31
}
 
enum  HEX_HVX_WR {
  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
}
 
enum  HEX_INT_REGS {
  HEX_REG_INT_REGS_R0 = 0 , HEX_REG_INT_REGS_R1 = 1 , HEX_REG_INT_REGS_R2 = 2 , HEX_REG_INT_REGS_R3 = 3 ,
  HEX_REG_INT_REGS_R4 = 4 , HEX_REG_INT_REGS_R5 = 5 , HEX_REG_INT_REGS_R6 = 6 , HEX_REG_INT_REGS_R7 = 7 ,
  HEX_REG_INT_REGS_R8 = 8 , HEX_REG_INT_REGS_R9 = 9 , HEX_REG_INT_REGS_R10 = 10 , HEX_REG_INT_REGS_R11 = 11 ,
  HEX_REG_INT_REGS_R12 = 12 , HEX_REG_INT_REGS_R13 = 13 , HEX_REG_INT_REGS_R14 = 14 , HEX_REG_INT_REGS_R15 = 15 ,
  HEX_REG_INT_REGS_R16 = 16 , HEX_REG_INT_REGS_R17 = 17 , HEX_REG_INT_REGS_R18 = 18 , HEX_REG_INT_REGS_R19 = 19 ,
  HEX_REG_INT_REGS_R20 = 20 , HEX_REG_INT_REGS_R21 = 21 , HEX_REG_INT_REGS_R22 = 22 , HEX_REG_INT_REGS_R23 = 23 ,
  HEX_REG_INT_REGS_R24 = 24 , HEX_REG_INT_REGS_R25 = 25 , HEX_REG_INT_REGS_R26 = 26 , HEX_REG_INT_REGS_R27 = 27 ,
  HEX_REG_INT_REGS_R28 = 28 , HEX_REG_INT_REGS_R29 = 29 , HEX_REG_INT_REGS_R30 = 30 , HEX_REG_INT_REGS_R31 = 31
}
 
enum  HEX_INT_REGS_LOW8 {
  HEX_REG_INT_REGS_LOW8_R0 = 0 , HEX_REG_INT_REGS_LOW8_R1 = 1 , HEX_REG_INT_REGS_LOW8_R2 = 2 , HEX_REG_INT_REGS_LOW8_R3 = 3 ,
  HEX_REG_INT_REGS_LOW8_R4 = 4 , HEX_REG_INT_REGS_LOW8_R5 = 5 , HEX_REG_INT_REGS_LOW8_R6 = 6 , HEX_REG_INT_REGS_LOW8_R7 = 7
}
 
enum  HEX_MOD_REGS { HEX_REG_MOD_REGS_C6 = 6 , HEX_REG_MOD_REGS_C7 = 7 }
 
enum  HEX_PRED_REGS { HEX_REG_PRED_REGS_P0 = 0 , HEX_REG_PRED_REGS_P1 = 1 , HEX_REG_PRED_REGS_P2 = 2 , HEX_REG_PRED_REGS_P3 = 3 }
 
enum  HEX_SYS_REGS {
  HEX_REG_SYS_REGS_S0 = 0 , HEX_REG_SYS_REGS_S1 = 1 , HEX_REG_SYS_REGS_S2 = 2 , HEX_REG_SYS_REGS_S3 = 3 ,
  HEX_REG_SYS_REGS_S4 = 4 , HEX_REG_SYS_REGS_S5 = 5 , HEX_REG_SYS_REGS_S6 = 6 , HEX_REG_SYS_REGS_S7 = 7 ,
  HEX_REG_SYS_REGS_S8 = 8 , HEX_REG_SYS_REGS_S9 = 9 , HEX_REG_SYS_REGS_S10 = 10 , 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_S16 = 16 , HEX_REG_SYS_REGS_S17 = 17 , HEX_REG_SYS_REGS_S18 = 18 , HEX_REG_SYS_REGS_S19 = 19 ,
  HEX_REG_SYS_REGS_S20 = 20 , HEX_REG_SYS_REGS_S21 = 21 , HEX_REG_SYS_REGS_S22 = 22 , 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_S27 = 27 ,
  HEX_REG_SYS_REGS_S28 = 28 , HEX_REG_SYS_REGS_S29 = 29 , HEX_REG_SYS_REGS_S30 = 30 , HEX_REG_SYS_REGS_S31 = 31 ,
  HEX_REG_SYS_REGS_S32 = 32 , HEX_REG_SYS_REGS_S33 = 33 , HEX_REG_SYS_REGS_S34 = 34 , HEX_REG_SYS_REGS_S35 = 35 ,
  HEX_REG_SYS_REGS_S36 = 36 , HEX_REG_SYS_REGS_S37 = 37 , HEX_REG_SYS_REGS_S38 = 38 , HEX_REG_SYS_REGS_S39 = 39 ,
  HEX_REG_SYS_REGS_S40 = 40 , HEX_REG_SYS_REGS_S41 = 41 , HEX_REG_SYS_REGS_S42 = 42 , HEX_REG_SYS_REGS_S43 = 43 ,
  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_S48 = 48 , HEX_REG_SYS_REGS_S49 = 49 , HEX_REG_SYS_REGS_S50 = 50 , HEX_REG_SYS_REGS_S51 = 51 ,
  HEX_REG_SYS_REGS_S52 = 52 , HEX_REG_SYS_REGS_S53 = 53 , HEX_REG_SYS_REGS_S54 = 54 , HEX_REG_SYS_REGS_S55 = 55 ,
  HEX_REG_SYS_REGS_S56 = 56 , HEX_REG_SYS_REGS_S57 = 57 , HEX_REG_SYS_REGS_S58 = 58 , HEX_REG_SYS_REGS_S59 = 59 ,
  HEX_REG_SYS_REGS_S60 = 60 , HEX_REG_SYS_REGS_S61 = 61 , HEX_REG_SYS_REGS_S62 = 62 , HEX_REG_SYS_REGS_S63 = 63 ,
  HEX_REG_SYS_REGS_S64 = 64 , HEX_REG_SYS_REGS_S65 = 65 , HEX_REG_SYS_REGS_S66 = 66 , HEX_REG_SYS_REGS_S67 = 67 ,
  HEX_REG_SYS_REGS_S68 = 68 , HEX_REG_SYS_REGS_S69 = 69 , HEX_REG_SYS_REGS_S70 = 70 , HEX_REG_SYS_REGS_S71 = 71 ,
  HEX_REG_SYS_REGS_S72 = 72 , HEX_REG_SYS_REGS_S73 = 73 , HEX_REG_SYS_REGS_S74 = 74 , HEX_REG_SYS_REGS_S75 = 75 ,
  HEX_REG_SYS_REGS_S76 = 76 , HEX_REG_SYS_REGS_S77 = 77 , HEX_REG_SYS_REGS_S78 = 78 , HEX_REG_SYS_REGS_S79 = 79 ,
  HEX_REG_SYS_REGS_S80 = 80
}
 
enum  HEX_SYS_REGS64 {
  HEX_REG_SYS_REGS64_S1_0 = 0 , HEX_REG_SYS_REGS64_S3_2 = 2 , HEX_REG_SYS_REGS64_S5_4 = 4 , HEX_REG_SYS_REGS64_S7_6 = 6 ,
  HEX_REG_SYS_REGS64_S9_8 = 8 , HEX_REG_SYS_REGS64_S11_10 = 10 , HEX_REG_SYS_REGS64_S13_12 = 12 , HEX_REG_SYS_REGS64_S15_14 = 14 ,
  HEX_REG_SYS_REGS64_S17_16 = 16 , HEX_REG_SYS_REGS64_S19_18 = 18 , HEX_REG_SYS_REGS64_S21_20 = 20 , HEX_REG_SYS_REGS64_S23_22 = 22 ,
  HEX_REG_SYS_REGS64_S25_24 = 24 , HEX_REG_SYS_REGS64_S27_26 = 26 , HEX_REG_SYS_REGS64_S29_28 = 28 , HEX_REG_SYS_REGS64_S31_30 = 30 ,
  HEX_REG_SYS_REGS64_S33_32 = 32 , HEX_REG_SYS_REGS64_S35_34 = 34 , HEX_REG_SYS_REGS64_S37_36 = 36 , HEX_REG_SYS_REGS64_S39_38 = 38 ,
  HEX_REG_SYS_REGS64_S41_40 = 40 , HEX_REG_SYS_REGS64_S43_42 = 42 , HEX_REG_SYS_REGS64_S45_44 = 44 , HEX_REG_SYS_REGS64_S47_46 = 46 ,
  HEX_REG_SYS_REGS64_S49_48 = 48 , HEX_REG_SYS_REGS64_S51_50 = 50 , HEX_REG_SYS_REGS64_S53_52 = 52 , HEX_REG_SYS_REGS64_S55_54 = 54 ,
  HEX_REG_SYS_REGS64_S57_56 = 56 , HEX_REG_SYS_REGS64_S59_58 = 58 , HEX_REG_SYS_REGS64_S61_60 = 60 , HEX_REG_SYS_REGS64_S63_62 = 62 ,
  HEX_REG_SYS_REGS64_S65_64 = 64 , HEX_REG_SYS_REGS64_S67_66 = 66 , HEX_REG_SYS_REGS64_S69_68 = 68 , HEX_REG_SYS_REGS64_S71_70 = 70 ,
  HEX_REG_SYS_REGS64_S73_72 = 72 , HEX_REG_SYS_REGS64_S75_74 = 74 , HEX_REG_SYS_REGS64_S77_76 = 76 , HEX_REG_SYS_REGS64_S79_78 = 78
}
 

Functions

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)
 
char * hex_get_reg_in_class (HexRegClass cls, int opcode_reg, bool get_alias)
 
RZ_API RZ_BORROW RzConfighexagon_get_config ()
 
RZ_API void hex_extend_op (HexState *state, RZ_INOUT HexOp *op, const bool set_new_extender, const ut32 addr)
 Applies the constant extender to the immediate value in op. More...
 
int resolve_n_register (const int reg_num, const ut32 addr, const HexPkt *p)
 Resolves the 3 bit value of an Nt.new reg to the general register of the producer. More...
 
int hexagon_disasm_instruction (HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, HexPkt *pkt)
 
void hexagon_disasm_0x0 (HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
 
void hexagon_disasm_0x1 (HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
 
void hexagon_disasm_0x2 (HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
 
void hexagon_disasm_0x3 (HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
 
void hexagon_disasm_0x4 (HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
 
void hexagon_disasm_0x5 (HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
 
void hexagon_disasm_0x6 (HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
 
void hexagon_disasm_0x7 (HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
 
void hexagon_disasm_0x8 (HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
 
void hexagon_disasm_0x9 (HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
 
void hexagon_disasm_0xa (HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
 
void hexagon_disasm_0xb (HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
 
void hexagon_disasm_0xc (HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
 
void hexagon_disasm_0xd (HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
 
void hexagon_disasm_0xe (HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
 
void hexagon_disasm_duplex_0x0 (HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
 
void hexagon_disasm_duplex_0x1 (HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
 
void hexagon_disasm_duplex_0x2 (HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
 
void hexagon_disasm_duplex_0x3 (HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
 
void hexagon_disasm_duplex_0x4 (HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
 
void hexagon_disasm_duplex_0x5 (HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
 
void hexagon_disasm_duplex_0x6 (HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
 
void hexagon_disasm_duplex_0x7 (HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
 
void hexagon_disasm_duplex_0x8 (HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
 
void hexagon_disasm_duplex_0x9 (HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
 
void hexagon_disasm_duplex_0xa (HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
 
void hexagon_disasm_duplex_0xb (HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
 
void hexagon_disasm_duplex_0xc (HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
 
void hexagon_disasm_duplex_0xd (HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
 
void hexagon_disasm_duplex_0xe (HexState *state, const ut32 hi_u32, RZ_INOUT HexInsn *hi, const ut32 addr, HexPkt *pkt)
 

Macro Definition Documentation

◆ BF_GET

#define BF_GET (   y,
  start,
  len 
)    (((y) >> (start)) & BIT_MASK(len))

Definition at line 564 of file hexagon.h.

◆ BF_GETB

#define BF_GETB (   y,
  start,
  end 
)    (BF_GET((y), (start), (end) - (start) + 1)

Definition at line 565 of file hexagon.h.

◆ BF_MASK

#define BF_MASK (   start,
  len 
)    (BIT_MASK(len) << (start))

Definition at line 562 of file hexagon.h.

◆ BF_PREP

#define BF_PREP (   x,
  start,
  len 
)    (((x)&BIT_MASK(len)) << (start))

Definition at line 563 of file hexagon.h.

◆ BIT_MASK

#define BIT_MASK (   len)    (BIT(len) - 1)

Definition at line 561 of file hexagon.h.

◆ HEX_MAX_OPERANDS

#define HEX_MAX_OPERANDS   6

Definition at line 21 of file hexagon.h.

◆ HEX_PARSE_BITS_MASK

#define HEX_PARSE_BITS_MASK   0xc000

Definition at line 22 of file hexagon.h.

◆ HEXAGON_STATE_PKTS

#define HEXAGON_STATE_PKTS   8

Definition at line 25 of file hexagon.h.

◆ MAX_CONST_EXT

#define MAX_CONST_EXT   512

Definition at line 24 of file hexagon.h.

Enumeration Type Documentation

◆ HEX_CTR_REGS

Enumerator
HEX_REG_CTR_REGS_C0 
HEX_REG_CTR_REGS_C1 
HEX_REG_CTR_REGS_C2 
HEX_REG_CTR_REGS_C3 
HEX_REG_CTR_REGS_C4 
HEX_REG_CTR_REGS_C5 
HEX_REG_CTR_REGS_C6 
HEX_REG_CTR_REGS_C7 
HEX_REG_CTR_REGS_C8 
HEX_REG_CTR_REGS_C9 
HEX_REG_CTR_REGS_C10 
HEX_REG_CTR_REGS_C11 
HEX_REG_CTR_REGS_C12 
HEX_REG_CTR_REGS_C13 
HEX_REG_CTR_REGS_C14 
HEX_REG_CTR_REGS_C15 
HEX_REG_CTR_REGS_C16 
HEX_REG_CTR_REGS_C17 
HEX_REG_CTR_REGS_C18 
HEX_REG_CTR_REGS_C19 
HEX_REG_CTR_REGS_C30 
HEX_REG_CTR_REGS_C31 

Definition at line 162 of file hexagon.h.

162  {
163  HEX_REG_CTR_REGS_C0 = 0, // sa0
164  HEX_REG_CTR_REGS_C1 = 1, // lc0
165  HEX_REG_CTR_REGS_C2 = 2, // sa1
166  HEX_REG_CTR_REGS_C3 = 3, // lc1
167  HEX_REG_CTR_REGS_C4 = 4, // p3:0
168  HEX_REG_CTR_REGS_C5 = 5, // c5
169  HEX_REG_CTR_REGS_C6 = 6, // m0
170  HEX_REG_CTR_REGS_C7 = 7, // m1
171  HEX_REG_CTR_REGS_C8 = 8, // usr
172  HEX_REG_CTR_REGS_C9 = 9, // pc
173  HEX_REG_CTR_REGS_C10 = 10, // ugp
174  HEX_REG_CTR_REGS_C11 = 11, // gp
175  HEX_REG_CTR_REGS_C12 = 12, // cs0
176  HEX_REG_CTR_REGS_C13 = 13, // cs1
177  HEX_REG_CTR_REGS_C14 = 14, // upcyclelo
178  HEX_REG_CTR_REGS_C15 = 15, // upcyclehi
179  HEX_REG_CTR_REGS_C16 = 16, // framelimit
180  HEX_REG_CTR_REGS_C17 = 17, // framekey
181  HEX_REG_CTR_REGS_C18 = 18, // pktcountlo
182  HEX_REG_CTR_REGS_C19 = 19, // pktcounthi
183  HEX_REG_CTR_REGS_C30 = 30, // utimerlo
184  HEX_REG_CTR_REGS_C31 = 31, // utimerhi
185 } HEX_CTR_REGS; // CtrRegs
HEX_CTR_REGS
Definition: hexagon.h:162
@ HEX_REG_CTR_REGS_C19
Definition: hexagon.h:182
@ HEX_REG_CTR_REGS_C15
Definition: hexagon.h:178
@ HEX_REG_CTR_REGS_C14
Definition: hexagon.h:177
@ HEX_REG_CTR_REGS_C17
Definition: hexagon.h:180
@ HEX_REG_CTR_REGS_C9
Definition: hexagon.h:172
@ HEX_REG_CTR_REGS_C13
Definition: hexagon.h:176
@ HEX_REG_CTR_REGS_C7
Definition: hexagon.h:170
@ HEX_REG_CTR_REGS_C31
Definition: hexagon.h:184
@ HEX_REG_CTR_REGS_C10
Definition: hexagon.h:173
@ HEX_REG_CTR_REGS_C3
Definition: hexagon.h:166
@ HEX_REG_CTR_REGS_C2
Definition: hexagon.h:165
@ HEX_REG_CTR_REGS_C8
Definition: hexagon.h:171
@ HEX_REG_CTR_REGS_C6
Definition: hexagon.h:169
@ HEX_REG_CTR_REGS_C4
Definition: hexagon.h:167
@ HEX_REG_CTR_REGS_C30
Definition: hexagon.h:183
@ HEX_REG_CTR_REGS_C5
Definition: hexagon.h:168
@ HEX_REG_CTR_REGS_C1
Definition: hexagon.h:164
@ HEX_REG_CTR_REGS_C12
Definition: hexagon.h:175
@ HEX_REG_CTR_REGS_C0
Definition: hexagon.h:163
@ HEX_REG_CTR_REGS_C16
Definition: hexagon.h:179
@ HEX_REG_CTR_REGS_C18
Definition: hexagon.h:181
@ HEX_REG_CTR_REGS_C11
Definition: hexagon.h:174

◆ HEX_CTR_REGS64

Enumerator
HEX_REG_CTR_REGS64_C1_0 
HEX_REG_CTR_REGS64_C3_2 
HEX_REG_CTR_REGS64_C5_4 
HEX_REG_CTR_REGS64_C7_6 
HEX_REG_CTR_REGS64_C9_8 
HEX_REG_CTR_REGS64_C11_10 
HEX_REG_CTR_REGS64_C13_12 
HEX_REG_CTR_REGS64_C15_14 
HEX_REG_CTR_REGS64_C17_16 
HEX_REG_CTR_REGS64_C19_18 
HEX_REG_CTR_REGS64_C31_30 

Definition at line 187 of file hexagon.h.

187  {
188  HEX_REG_CTR_REGS64_C1_0 = 0, // lc0:sa0
189  HEX_REG_CTR_REGS64_C3_2 = 2, // lc1:sa1
191  HEX_REG_CTR_REGS64_C7_6 = 6, // m1:0
194  HEX_REG_CTR_REGS64_C13_12 = 12, // cs1:0
195  HEX_REG_CTR_REGS64_C15_14 = 14, // upcycle
197  HEX_REG_CTR_REGS64_C19_18 = 18, // pktcount
198  HEX_REG_CTR_REGS64_C31_30 = 30, // utimer
199 } HEX_CTR_REGS64; // CtrRegs64
HEX_CTR_REGS64
Definition: hexagon.h:187
@ HEX_REG_CTR_REGS64_C19_18
Definition: hexagon.h:197
@ HEX_REG_CTR_REGS64_C7_6
Definition: hexagon.h:191
@ HEX_REG_CTR_REGS64_C9_8
Definition: hexagon.h:192
@ HEX_REG_CTR_REGS64_C15_14
Definition: hexagon.h:195
@ HEX_REG_CTR_REGS64_C31_30
Definition: hexagon.h:198
@ HEX_REG_CTR_REGS64_C1_0
Definition: hexagon.h:188
@ HEX_REG_CTR_REGS64_C5_4
Definition: hexagon.h:190
@ HEX_REG_CTR_REGS64_C3_2
Definition: hexagon.h:189
@ HEX_REG_CTR_REGS64_C11_10
Definition: hexagon.h:193
@ HEX_REG_CTR_REGS64_C13_12
Definition: hexagon.h:194
@ HEX_REG_CTR_REGS64_C17_16
Definition: hexagon.h:196

◆ HEX_DOUBLE_REGS

Enumerator
HEX_REG_DOUBLE_REGS_R1_0 
HEX_REG_DOUBLE_REGS_R3_2 
HEX_REG_DOUBLE_REGS_R5_4 
HEX_REG_DOUBLE_REGS_R7_6 
HEX_REG_DOUBLE_REGS_R9_8 
HEX_REG_DOUBLE_REGS_R11_10 
HEX_REG_DOUBLE_REGS_R13_12 
HEX_REG_DOUBLE_REGS_R15_14 
HEX_REG_DOUBLE_REGS_R17_16 
HEX_REG_DOUBLE_REGS_R19_18 
HEX_REG_DOUBLE_REGS_R21_20 
HEX_REG_DOUBLE_REGS_R23_22 
HEX_REG_DOUBLE_REGS_R25_24 
HEX_REG_DOUBLE_REGS_R27_26 
HEX_REG_DOUBLE_REGS_R29_28 
HEX_REG_DOUBLE_REGS_R31_30 

Definition at line 201 of file hexagon.h.

201  {
217  HEX_REG_DOUBLE_REGS_R31_30 = 30, // lr:fp
218 } HEX_DOUBLE_REGS; // DoubleRegs
HEX_DOUBLE_REGS
Definition: hexagon.h:201
@ HEX_REG_DOUBLE_REGS_R13_12
Definition: hexagon.h:208
@ HEX_REG_DOUBLE_REGS_R11_10
Definition: hexagon.h:207
@ HEX_REG_DOUBLE_REGS_R27_26
Definition: hexagon.h:215
@ HEX_REG_DOUBLE_REGS_R15_14
Definition: hexagon.h:209
@ HEX_REG_DOUBLE_REGS_R7_6
Definition: hexagon.h:205
@ HEX_REG_DOUBLE_REGS_R31_30
Definition: hexagon.h:217
@ HEX_REG_DOUBLE_REGS_R29_28
Definition: hexagon.h:216
@ HEX_REG_DOUBLE_REGS_R25_24
Definition: hexagon.h:214
@ HEX_REG_DOUBLE_REGS_R3_2
Definition: hexagon.h:203
@ HEX_REG_DOUBLE_REGS_R21_20
Definition: hexagon.h:212
@ HEX_REG_DOUBLE_REGS_R19_18
Definition: hexagon.h:211
@ HEX_REG_DOUBLE_REGS_R17_16
Definition: hexagon.h:210
@ HEX_REG_DOUBLE_REGS_R23_22
Definition: hexagon.h:213
@ HEX_REG_DOUBLE_REGS_R9_8
Definition: hexagon.h:206
@ HEX_REG_DOUBLE_REGS_R5_4
Definition: hexagon.h:204
@ HEX_REG_DOUBLE_REGS_R1_0
Definition: hexagon.h:202

◆ HEX_GENERAL_DOUBLE_LOW8_REGS

Enumerator
HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R1_0 
HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R3_2 
HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R5_4 
HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R7_6 
HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R17_16 
HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R19_18 
HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R21_20 
HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R23_22 

Definition at line 220 of file hexagon.h.

220  {
229 } HEX_GENERAL_DOUBLE_LOW8_REGS; // GeneralDoubleLow8Regs
HEX_GENERAL_DOUBLE_LOW8_REGS
Definition: hexagon.h:220
@ HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R1_0
Definition: hexagon.h:221
@ HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R7_6
Definition: hexagon.h:224
@ HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R17_16
Definition: hexagon.h:225
@ HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R19_18
Definition: hexagon.h:226
@ HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R23_22
Definition: hexagon.h:228
@ HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R5_4
Definition: hexagon.h:223
@ HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R21_20
Definition: hexagon.h:227
@ HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R3_2
Definition: hexagon.h:222

◆ HEX_GENERAL_SUB_REGS

Enumerator
HEX_REG_GENERAL_SUB_REGS_R0 
HEX_REG_GENERAL_SUB_REGS_R1 
HEX_REG_GENERAL_SUB_REGS_R2 
HEX_REG_GENERAL_SUB_REGS_R3 
HEX_REG_GENERAL_SUB_REGS_R4 
HEX_REG_GENERAL_SUB_REGS_R5 
HEX_REG_GENERAL_SUB_REGS_R6 
HEX_REG_GENERAL_SUB_REGS_R7 
HEX_REG_GENERAL_SUB_REGS_R16 
HEX_REG_GENERAL_SUB_REGS_R17 
HEX_REG_GENERAL_SUB_REGS_R18 
HEX_REG_GENERAL_SUB_REGS_R19 
HEX_REG_GENERAL_SUB_REGS_R20 
HEX_REG_GENERAL_SUB_REGS_R21 
HEX_REG_GENERAL_SUB_REGS_R22 
HEX_REG_GENERAL_SUB_REGS_R23 

Definition at line 231 of file hexagon.h.

231  {
248 } HEX_GENERAL_SUB_REGS; // GeneralSubRegs
HEX_GENERAL_SUB_REGS
Definition: hexagon.h:231
@ HEX_REG_GENERAL_SUB_REGS_R22
Definition: hexagon.h:246
@ HEX_REG_GENERAL_SUB_REGS_R1
Definition: hexagon.h:233
@ HEX_REG_GENERAL_SUB_REGS_R7
Definition: hexagon.h:239
@ HEX_REG_GENERAL_SUB_REGS_R0
Definition: hexagon.h:232
@ HEX_REG_GENERAL_SUB_REGS_R16
Definition: hexagon.h:240
@ HEX_REG_GENERAL_SUB_REGS_R20
Definition: hexagon.h:244
@ HEX_REG_GENERAL_SUB_REGS_R6
Definition: hexagon.h:238
@ HEX_REG_GENERAL_SUB_REGS_R23
Definition: hexagon.h:247
@ HEX_REG_GENERAL_SUB_REGS_R5
Definition: hexagon.h:237
@ HEX_REG_GENERAL_SUB_REGS_R18
Definition: hexagon.h:242
@ HEX_REG_GENERAL_SUB_REGS_R4
Definition: hexagon.h:236
@ HEX_REG_GENERAL_SUB_REGS_R21
Definition: hexagon.h:245
@ HEX_REG_GENERAL_SUB_REGS_R19
Definition: hexagon.h:243
@ HEX_REG_GENERAL_SUB_REGS_R2
Definition: hexagon.h:234
@ HEX_REG_GENERAL_SUB_REGS_R3
Definition: hexagon.h:235
@ HEX_REG_GENERAL_SUB_REGS_R17
Definition: hexagon.h:241

◆ HEX_GUEST_REGS

Enumerator
HEX_REG_GUEST_REGS_G0 
HEX_REG_GUEST_REGS_G1 
HEX_REG_GUEST_REGS_G2 
HEX_REG_GUEST_REGS_G3 
HEX_REG_GUEST_REGS_G4 
HEX_REG_GUEST_REGS_G5 
HEX_REG_GUEST_REGS_G6 
HEX_REG_GUEST_REGS_G7 
HEX_REG_GUEST_REGS_G8 
HEX_REG_GUEST_REGS_G9 
HEX_REG_GUEST_REGS_G10 
HEX_REG_GUEST_REGS_G11 
HEX_REG_GUEST_REGS_G12 
HEX_REG_GUEST_REGS_G13 
HEX_REG_GUEST_REGS_G14 
HEX_REG_GUEST_REGS_G15 
HEX_REG_GUEST_REGS_G16 
HEX_REG_GUEST_REGS_G17 
HEX_REG_GUEST_REGS_G18 
HEX_REG_GUEST_REGS_G19 
HEX_REG_GUEST_REGS_G20 
HEX_REG_GUEST_REGS_G21 
HEX_REG_GUEST_REGS_G22 
HEX_REG_GUEST_REGS_G23 
HEX_REG_GUEST_REGS_G24 
HEX_REG_GUEST_REGS_G25 
HEX_REG_GUEST_REGS_G26 
HEX_REG_GUEST_REGS_G27 
HEX_REG_GUEST_REGS_G28 
HEX_REG_GUEST_REGS_G29 
HEX_REG_GUEST_REGS_G30 
HEX_REG_GUEST_REGS_G31 

Definition at line 250 of file hexagon.h.

250  {
251  HEX_REG_GUEST_REGS_G0 = 0, // gelr
252  HEX_REG_GUEST_REGS_G1 = 1, // gsr
253  HEX_REG_GUEST_REGS_G2 = 2, // gosp
254  HEX_REG_GUEST_REGS_G3 = 3, // gbadva
267  HEX_REG_GUEST_REGS_G16 = 16, // gpmucnt4
268  HEX_REG_GUEST_REGS_G17 = 17, // gpmucnt5
269  HEX_REG_GUEST_REGS_G18 = 18, // gpmucnt6
270  HEX_REG_GUEST_REGS_G19 = 19, // gpmucnt7
275  HEX_REG_GUEST_REGS_G24 = 24, // gpcyclelo
276  HEX_REG_GUEST_REGS_G25 = 25, // gpcyclehi
277  HEX_REG_GUEST_REGS_G26 = 26, // gpmucnt0
278  HEX_REG_GUEST_REGS_G27 = 27, // gpmucnt1
279  HEX_REG_GUEST_REGS_G28 = 28, // gpmucnt2
280  HEX_REG_GUEST_REGS_G29 = 29, // gpmucnt3
283 } HEX_GUEST_REGS; // GuestRegs
HEX_GUEST_REGS
Definition: hexagon.h:250
@ HEX_REG_GUEST_REGS_G10
Definition: hexagon.h:261
@ HEX_REG_GUEST_REGS_G18
Definition: hexagon.h:269
@ HEX_REG_GUEST_REGS_G4
Definition: hexagon.h:255
@ HEX_REG_GUEST_REGS_G17
Definition: hexagon.h:268
@ HEX_REG_GUEST_REGS_G25
Definition: hexagon.h:276
@ HEX_REG_GUEST_REGS_G5
Definition: hexagon.h:256
@ HEX_REG_GUEST_REGS_G3
Definition: hexagon.h:254
@ HEX_REG_GUEST_REGS_G1
Definition: hexagon.h:252
@ HEX_REG_GUEST_REGS_G0
Definition: hexagon.h:251
@ HEX_REG_GUEST_REGS_G6
Definition: hexagon.h:257
@ HEX_REG_GUEST_REGS_G23
Definition: hexagon.h:274
@ HEX_REG_GUEST_REGS_G27
Definition: hexagon.h:278
@ HEX_REG_GUEST_REGS_G7
Definition: hexagon.h:258
@ HEX_REG_GUEST_REGS_G19
Definition: hexagon.h:270
@ HEX_REG_GUEST_REGS_G12
Definition: hexagon.h:263
@ HEX_REG_GUEST_REGS_G29
Definition: hexagon.h:280
@ HEX_REG_GUEST_REGS_G16
Definition: hexagon.h:267
@ HEX_REG_GUEST_REGS_G20
Definition: hexagon.h:271
@ HEX_REG_GUEST_REGS_G31
Definition: hexagon.h:282
@ HEX_REG_GUEST_REGS_G13
Definition: hexagon.h:264
@ HEX_REG_GUEST_REGS_G15
Definition: hexagon.h:266
@ HEX_REG_GUEST_REGS_G22
Definition: hexagon.h:273
@ HEX_REG_GUEST_REGS_G8
Definition: hexagon.h:259
@ HEX_REG_GUEST_REGS_G30
Definition: hexagon.h:281
@ HEX_REG_GUEST_REGS_G2
Definition: hexagon.h:253
@ HEX_REG_GUEST_REGS_G14
Definition: hexagon.h:265
@ HEX_REG_GUEST_REGS_G11
Definition: hexagon.h:262
@ HEX_REG_GUEST_REGS_G26
Definition: hexagon.h:277
@ HEX_REG_GUEST_REGS_G24
Definition: hexagon.h:275
@ HEX_REG_GUEST_REGS_G28
Definition: hexagon.h:279
@ HEX_REG_GUEST_REGS_G21
Definition: hexagon.h:272
@ HEX_REG_GUEST_REGS_G9
Definition: hexagon.h:260

◆ HEX_GUEST_REGS64

Enumerator
HEX_REG_GUEST_REGS64_G1_0 
HEX_REG_GUEST_REGS64_G3_2 
HEX_REG_GUEST_REGS64_G5_4 
HEX_REG_GUEST_REGS64_G7_6 
HEX_REG_GUEST_REGS64_G9_8 
HEX_REG_GUEST_REGS64_G11_10 
HEX_REG_GUEST_REGS64_G13_12 
HEX_REG_GUEST_REGS64_G15_14 
HEX_REG_GUEST_REGS64_G17_16 
HEX_REG_GUEST_REGS64_G19_18 
HEX_REG_GUEST_REGS64_G21_20 
HEX_REG_GUEST_REGS64_G23_22 
HEX_REG_GUEST_REGS64_G25_24 
HEX_REG_GUEST_REGS64_G27_26 
HEX_REG_GUEST_REGS64_G29_28 
HEX_REG_GUEST_REGS64_G31_30 

Definition at line 285 of file hexagon.h.

285  {
302 } HEX_GUEST_REGS64; // GuestRegs64
HEX_GUEST_REGS64
Definition: hexagon.h:285
@ HEX_REG_GUEST_REGS64_G27_26
Definition: hexagon.h:299
@ HEX_REG_GUEST_REGS64_G1_0
Definition: hexagon.h:286
@ HEX_REG_GUEST_REGS64_G3_2
Definition: hexagon.h:287
@ HEX_REG_GUEST_REGS64_G23_22
Definition: hexagon.h:297
@ HEX_REG_GUEST_REGS64_G31_30
Definition: hexagon.h:301
@ HEX_REG_GUEST_REGS64_G13_12
Definition: hexagon.h:292
@ HEX_REG_GUEST_REGS64_G25_24
Definition: hexagon.h:298
@ HEX_REG_GUEST_REGS64_G29_28
Definition: hexagon.h:300
@ HEX_REG_GUEST_REGS64_G21_20
Definition: hexagon.h:296
@ HEX_REG_GUEST_REGS64_G15_14
Definition: hexagon.h:293
@ HEX_REG_GUEST_REGS64_G7_6
Definition: hexagon.h:289
@ HEX_REG_GUEST_REGS64_G19_18
Definition: hexagon.h:295
@ HEX_REG_GUEST_REGS64_G17_16
Definition: hexagon.h:294
@ HEX_REG_GUEST_REGS64_G9_8
Definition: hexagon.h:290
@ HEX_REG_GUEST_REGS64_G5_4
Definition: hexagon.h:288
@ HEX_REG_GUEST_REGS64_G11_10
Definition: hexagon.h:291

◆ HEX_HVX_QR

enum HEX_HVX_QR
Enumerator
HEX_REG_HVX_QR_Q0 
HEX_REG_HVX_QR_Q1 
HEX_REG_HVX_QR_Q2 
HEX_REG_HVX_QR_Q3 

Definition at line 304 of file hexagon.h.

304  {
305  HEX_REG_HVX_QR_Q0 = 0,
306  HEX_REG_HVX_QR_Q1 = 1,
307  HEX_REG_HVX_QR_Q2 = 2,
308  HEX_REG_HVX_QR_Q3 = 3,
309 } HEX_HVX_QR; // HvxQR
HEX_HVX_QR
Definition: hexagon.h:304
@ HEX_REG_HVX_QR_Q3
Definition: hexagon.h:308
@ HEX_REG_HVX_QR_Q2
Definition: hexagon.h:307
@ HEX_REG_HVX_QR_Q0
Definition: hexagon.h:305
@ HEX_REG_HVX_QR_Q1
Definition: hexagon.h:306

◆ HEX_HVX_VQR

Enumerator
HEX_REG_HVX_VQR_V3_0 
HEX_REG_HVX_VQR_V7_4 
HEX_REG_HVX_VQR_V11_8 
HEX_REG_HVX_VQR_V15_12 
HEX_REG_HVX_VQR_V19_16 
HEX_REG_HVX_VQR_V23_20 
HEX_REG_HVX_VQR_V27_24 
HEX_REG_HVX_VQR_V31_28 

Definition at line 311 of file hexagon.h.

311  {
320 } HEX_HVX_VQR; // HvxVQR
HEX_HVX_VQR
Definition: hexagon.h:311
@ HEX_REG_HVX_VQR_V7_4
Definition: hexagon.h:313
@ HEX_REG_HVX_VQR_V19_16
Definition: hexagon.h:316
@ HEX_REG_HVX_VQR_V15_12
Definition: hexagon.h:315
@ HEX_REG_HVX_VQR_V11_8
Definition: hexagon.h:314
@ HEX_REG_HVX_VQR_V3_0
Definition: hexagon.h:312
@ HEX_REG_HVX_VQR_V31_28
Definition: hexagon.h:319
@ HEX_REG_HVX_VQR_V27_24
Definition: hexagon.h:318
@ HEX_REG_HVX_VQR_V23_20
Definition: hexagon.h:317

◆ HEX_HVX_VR

enum HEX_HVX_VR
Enumerator
HEX_REG_HVX_VR_V0 
HEX_REG_HVX_VR_V1 
HEX_REG_HVX_VR_V2 
HEX_REG_HVX_VR_V3 
HEX_REG_HVX_VR_V4 
HEX_REG_HVX_VR_V5 
HEX_REG_HVX_VR_V6 
HEX_REG_HVX_VR_V7 
HEX_REG_HVX_VR_V8 
HEX_REG_HVX_VR_V9 
HEX_REG_HVX_VR_V10 
HEX_REG_HVX_VR_V11 
HEX_REG_HVX_VR_V12 
HEX_REG_HVX_VR_V13 
HEX_REG_HVX_VR_V14 
HEX_REG_HVX_VR_V15 
HEX_REG_HVX_VR_V16 
HEX_REG_HVX_VR_V17 
HEX_REG_HVX_VR_V18 
HEX_REG_HVX_VR_V19 
HEX_REG_HVX_VR_V20 
HEX_REG_HVX_VR_V21 
HEX_REG_HVX_VR_V22 
HEX_REG_HVX_VR_V23 
HEX_REG_HVX_VR_V24 
HEX_REG_HVX_VR_V25 
HEX_REG_HVX_VR_V26 
HEX_REG_HVX_VR_V27 
HEX_REG_HVX_VR_V28 
HEX_REG_HVX_VR_V29 
HEX_REG_HVX_VR_V30 
HEX_REG_HVX_VR_V31 

Definition at line 322 of file hexagon.h.

322  {
323  HEX_REG_HVX_VR_V0 = 0,
324  HEX_REG_HVX_VR_V1 = 1,
325  HEX_REG_HVX_VR_V2 = 2,
326  HEX_REG_HVX_VR_V3 = 3,
327  HEX_REG_HVX_VR_V4 = 4,
328  HEX_REG_HVX_VR_V5 = 5,
329  HEX_REG_HVX_VR_V6 = 6,
330  HEX_REG_HVX_VR_V7 = 7,
331  HEX_REG_HVX_VR_V8 = 8,
332  HEX_REG_HVX_VR_V9 = 9,
333  HEX_REG_HVX_VR_V10 = 10,
334  HEX_REG_HVX_VR_V11 = 11,
335  HEX_REG_HVX_VR_V12 = 12,
336  HEX_REG_HVX_VR_V13 = 13,
337  HEX_REG_HVX_VR_V14 = 14,
338  HEX_REG_HVX_VR_V15 = 15,
339  HEX_REG_HVX_VR_V16 = 16,
340  HEX_REG_HVX_VR_V17 = 17,
341  HEX_REG_HVX_VR_V18 = 18,
342  HEX_REG_HVX_VR_V19 = 19,
343  HEX_REG_HVX_VR_V20 = 20,
344  HEX_REG_HVX_VR_V21 = 21,
345  HEX_REG_HVX_VR_V22 = 22,
346  HEX_REG_HVX_VR_V23 = 23,
347  HEX_REG_HVX_VR_V24 = 24,
348  HEX_REG_HVX_VR_V25 = 25,
349  HEX_REG_HVX_VR_V26 = 26,
350  HEX_REG_HVX_VR_V27 = 27,
351  HEX_REG_HVX_VR_V28 = 28,
352  HEX_REG_HVX_VR_V29 = 29,
353  HEX_REG_HVX_VR_V30 = 30,
354  HEX_REG_HVX_VR_V31 = 31,
355 } HEX_HVX_VR; // HvxVR
HEX_HVX_VR
Definition: hexagon.h:322
@ HEX_REG_HVX_VR_V14
Definition: hexagon.h:337
@ HEX_REG_HVX_VR_V12
Definition: hexagon.h:335
@ HEX_REG_HVX_VR_V23
Definition: hexagon.h:346
@ HEX_REG_HVX_VR_V22
Definition: hexagon.h:345
@ HEX_REG_HVX_VR_V24
Definition: hexagon.h:347
@ HEX_REG_HVX_VR_V18
Definition: hexagon.h:341
@ HEX_REG_HVX_VR_V10
Definition: hexagon.h:333
@ HEX_REG_HVX_VR_V0
Definition: hexagon.h:323
@ HEX_REG_HVX_VR_V4
Definition: hexagon.h:327
@ HEX_REG_HVX_VR_V7
Definition: hexagon.h:330
@ HEX_REG_HVX_VR_V5
Definition: hexagon.h:328
@ HEX_REG_HVX_VR_V19
Definition: hexagon.h:342
@ HEX_REG_HVX_VR_V31
Definition: hexagon.h:354
@ HEX_REG_HVX_VR_V8
Definition: hexagon.h:331
@ HEX_REG_HVX_VR_V26
Definition: hexagon.h:349
@ HEX_REG_HVX_VR_V17
Definition: hexagon.h:340
@ HEX_REG_HVX_VR_V3
Definition: hexagon.h:326
@ HEX_REG_HVX_VR_V21
Definition: hexagon.h:344
@ HEX_REG_HVX_VR_V16
Definition: hexagon.h:339
@ HEX_REG_HVX_VR_V15
Definition: hexagon.h:338
@ HEX_REG_HVX_VR_V25
Definition: hexagon.h:348
@ HEX_REG_HVX_VR_V13
Definition: hexagon.h:336
@ HEX_REG_HVX_VR_V28
Definition: hexagon.h:351
@ HEX_REG_HVX_VR_V27
Definition: hexagon.h:350
@ HEX_REG_HVX_VR_V11
Definition: hexagon.h:334
@ HEX_REG_HVX_VR_V20
Definition: hexagon.h:343
@ HEX_REG_HVX_VR_V2
Definition: hexagon.h:325
@ HEX_REG_HVX_VR_V30
Definition: hexagon.h:353
@ HEX_REG_HVX_VR_V9
Definition: hexagon.h:332
@ HEX_REG_HVX_VR_V1
Definition: hexagon.h:324
@ HEX_REG_HVX_VR_V6
Definition: hexagon.h:329
@ HEX_REG_HVX_VR_V29
Definition: hexagon.h:352

◆ HEX_HVX_WR

enum HEX_HVX_WR
Enumerator
HEX_REG_HVX_WR_V1_0 
HEX_REG_HVX_WR_V3_2 
HEX_REG_HVX_WR_V5_4 
HEX_REG_HVX_WR_V7_6 
HEX_REG_HVX_WR_V9_8 
HEX_REG_HVX_WR_V11_10 
HEX_REG_HVX_WR_V13_12 
HEX_REG_HVX_WR_V15_14 
HEX_REG_HVX_WR_V17_16 
HEX_REG_HVX_WR_V19_18 
HEX_REG_HVX_WR_V21_20 
HEX_REG_HVX_WR_V23_22 
HEX_REG_HVX_WR_V25_24 
HEX_REG_HVX_WR_V27_26 
HEX_REG_HVX_WR_V29_28 
HEX_REG_HVX_WR_V31_30 

Definition at line 357 of file hexagon.h.

357  {
374 } HEX_HVX_WR; // HvxWR
HEX_HVX_WR
Definition: hexagon.h:357
@ HEX_REG_HVX_WR_V19_18
Definition: hexagon.h:367
@ HEX_REG_HVX_WR_V17_16
Definition: hexagon.h:366
@ HEX_REG_HVX_WR_V1_0
Definition: hexagon.h:358
@ HEX_REG_HVX_WR_V23_22
Definition: hexagon.h:369
@ HEX_REG_HVX_WR_V7_6
Definition: hexagon.h:361
@ HEX_REG_HVX_WR_V29_28
Definition: hexagon.h:372
@ HEX_REG_HVX_WR_V9_8
Definition: hexagon.h:362
@ HEX_REG_HVX_WR_V15_14
Definition: hexagon.h:365
@ HEX_REG_HVX_WR_V5_4
Definition: hexagon.h:360
@ HEX_REG_HVX_WR_V25_24
Definition: hexagon.h:370
@ HEX_REG_HVX_WR_V13_12
Definition: hexagon.h:364
@ HEX_REG_HVX_WR_V27_26
Definition: hexagon.h:371
@ HEX_REG_HVX_WR_V11_10
Definition: hexagon.h:363
@ HEX_REG_HVX_WR_V21_20
Definition: hexagon.h:368
@ HEX_REG_HVX_WR_V3_2
Definition: hexagon.h:359
@ HEX_REG_HVX_WR_V31_30
Definition: hexagon.h:373

◆ HEX_INT_REGS

Enumerator
HEX_REG_INT_REGS_R0 
HEX_REG_INT_REGS_R1 
HEX_REG_INT_REGS_R2 
HEX_REG_INT_REGS_R3 
HEX_REG_INT_REGS_R4 
HEX_REG_INT_REGS_R5 
HEX_REG_INT_REGS_R6 
HEX_REG_INT_REGS_R7 
HEX_REG_INT_REGS_R8 
HEX_REG_INT_REGS_R9 
HEX_REG_INT_REGS_R10 
HEX_REG_INT_REGS_R11 
HEX_REG_INT_REGS_R12 
HEX_REG_INT_REGS_R13 
HEX_REG_INT_REGS_R14 
HEX_REG_INT_REGS_R15 
HEX_REG_INT_REGS_R16 
HEX_REG_INT_REGS_R17 
HEX_REG_INT_REGS_R18 
HEX_REG_INT_REGS_R19 
HEX_REG_INT_REGS_R20 
HEX_REG_INT_REGS_R21 
HEX_REG_INT_REGS_R22 
HEX_REG_INT_REGS_R23 
HEX_REG_INT_REGS_R24 
HEX_REG_INT_REGS_R25 
HEX_REG_INT_REGS_R26 
HEX_REG_INT_REGS_R27 
HEX_REG_INT_REGS_R28 
HEX_REG_INT_REGS_R29 
HEX_REG_INT_REGS_R30 
HEX_REG_INT_REGS_R31 

Definition at line 376 of file hexagon.h.

376  {
406  HEX_REG_INT_REGS_R29 = 29, // sp
407  HEX_REG_INT_REGS_R30 = 30, // fp
408  HEX_REG_INT_REGS_R31 = 31, // lr
409 } HEX_INT_REGS; // IntRegs
HEX_INT_REGS
Definition: hexagon.h:376
@ HEX_REG_INT_REGS_R26
Definition: hexagon.h:403
@ HEX_REG_INT_REGS_R16
Definition: hexagon.h:393
@ HEX_REG_INT_REGS_R29
Definition: hexagon.h:406
@ HEX_REG_INT_REGS_R24
Definition: hexagon.h:401
@ HEX_REG_INT_REGS_R20
Definition: hexagon.h:397
@ HEX_REG_INT_REGS_R15
Definition: hexagon.h:392
@ HEX_REG_INT_REGS_R31
Definition: hexagon.h:408
@ HEX_REG_INT_REGS_R13
Definition: hexagon.h:390
@ HEX_REG_INT_REGS_R30
Definition: hexagon.h:407
@ HEX_REG_INT_REGS_R8
Definition: hexagon.h:385
@ HEX_REG_INT_REGS_R10
Definition: hexagon.h:387
@ HEX_REG_INT_REGS_R19
Definition: hexagon.h:396
@ HEX_REG_INT_REGS_R22
Definition: hexagon.h:399
@ HEX_REG_INT_REGS_R14
Definition: hexagon.h:391
@ HEX_REG_INT_REGS_R27
Definition: hexagon.h:404
@ HEX_REG_INT_REGS_R21
Definition: hexagon.h:398
@ HEX_REG_INT_REGS_R0
Definition: hexagon.h:377
@ HEX_REG_INT_REGS_R23
Definition: hexagon.h:400
@ HEX_REG_INT_REGS_R25
Definition: hexagon.h:402
@ HEX_REG_INT_REGS_R3
Definition: hexagon.h:380
@ HEX_REG_INT_REGS_R6
Definition: hexagon.h:383
@ HEX_REG_INT_REGS_R1
Definition: hexagon.h:378
@ HEX_REG_INT_REGS_R28
Definition: hexagon.h:405
@ HEX_REG_INT_REGS_R5
Definition: hexagon.h:382
@ HEX_REG_INT_REGS_R9
Definition: hexagon.h:386
@ HEX_REG_INT_REGS_R4
Definition: hexagon.h:381
@ HEX_REG_INT_REGS_R18
Definition: hexagon.h:395
@ HEX_REG_INT_REGS_R2
Definition: hexagon.h:379
@ HEX_REG_INT_REGS_R11
Definition: hexagon.h:388
@ HEX_REG_INT_REGS_R7
Definition: hexagon.h:384
@ HEX_REG_INT_REGS_R12
Definition: hexagon.h:389
@ HEX_REG_INT_REGS_R17
Definition: hexagon.h:394

◆ HEX_INT_REGS_LOW8

Enumerator
HEX_REG_INT_REGS_LOW8_R0 
HEX_REG_INT_REGS_LOW8_R1 
HEX_REG_INT_REGS_LOW8_R2 
HEX_REG_INT_REGS_LOW8_R3 
HEX_REG_INT_REGS_LOW8_R4 
HEX_REG_INT_REGS_LOW8_R5 
HEX_REG_INT_REGS_LOW8_R6 
HEX_REG_INT_REGS_LOW8_R7 

Definition at line 411 of file hexagon.h.

411  {
420 } HEX_INT_REGS_LOW8; // IntRegsLow8
HEX_INT_REGS_LOW8
Definition: hexagon.h:411
@ HEX_REG_INT_REGS_LOW8_R7
Definition: hexagon.h:419
@ HEX_REG_INT_REGS_LOW8_R3
Definition: hexagon.h:415
@ HEX_REG_INT_REGS_LOW8_R0
Definition: hexagon.h:412
@ HEX_REG_INT_REGS_LOW8_R5
Definition: hexagon.h:417
@ HEX_REG_INT_REGS_LOW8_R2
Definition: hexagon.h:414
@ HEX_REG_INT_REGS_LOW8_R1
Definition: hexagon.h:413
@ HEX_REG_INT_REGS_LOW8_R4
Definition: hexagon.h:416
@ HEX_REG_INT_REGS_LOW8_R6
Definition: hexagon.h:418

◆ HEX_MOD_REGS

Enumerator
HEX_REG_MOD_REGS_C6 
HEX_REG_MOD_REGS_C7 

Definition at line 422 of file hexagon.h.

422  {
423  HEX_REG_MOD_REGS_C6 = 6, // m0
424  HEX_REG_MOD_REGS_C7 = 7, // m1
425 } HEX_MOD_REGS; // ModRegs
HEX_MOD_REGS
Definition: hexagon.h:422
@ HEX_REG_MOD_REGS_C7
Definition: hexagon.h:424
@ HEX_REG_MOD_REGS_C6
Definition: hexagon.h:423

◆ HEX_PRED_REGS

Enumerator
HEX_REG_PRED_REGS_P0 
HEX_REG_PRED_REGS_P1 
HEX_REG_PRED_REGS_P2 
HEX_REG_PRED_REGS_P3 

Definition at line 427 of file hexagon.h.

427  {
432 } HEX_PRED_REGS; // PredRegs
HEX_PRED_REGS
Definition: hexagon.h:427
@ HEX_REG_PRED_REGS_P1
Definition: hexagon.h:429
@ HEX_REG_PRED_REGS_P2
Definition: hexagon.h:430
@ HEX_REG_PRED_REGS_P0
Definition: hexagon.h:428
@ HEX_REG_PRED_REGS_P3
Definition: hexagon.h:431

◆ HEX_SYS_REGS

Enumerator
HEX_REG_SYS_REGS_S0 
HEX_REG_SYS_REGS_S1 
HEX_REG_SYS_REGS_S2 
HEX_REG_SYS_REGS_S3 
HEX_REG_SYS_REGS_S4 
HEX_REG_SYS_REGS_S5 
HEX_REG_SYS_REGS_S6 
HEX_REG_SYS_REGS_S7 
HEX_REG_SYS_REGS_S8 
HEX_REG_SYS_REGS_S9 
HEX_REG_SYS_REGS_S10 
HEX_REG_SYS_REGS_S11 
HEX_REG_SYS_REGS_S12 
HEX_REG_SYS_REGS_S13 
HEX_REG_SYS_REGS_S14 
HEX_REG_SYS_REGS_S15 
HEX_REG_SYS_REGS_S16 
HEX_REG_SYS_REGS_S17 
HEX_REG_SYS_REGS_S18 
HEX_REG_SYS_REGS_S19 
HEX_REG_SYS_REGS_S20 
HEX_REG_SYS_REGS_S21 
HEX_REG_SYS_REGS_S22 
HEX_REG_SYS_REGS_S23 
HEX_REG_SYS_REGS_S24 
HEX_REG_SYS_REGS_S25 
HEX_REG_SYS_REGS_S26 
HEX_REG_SYS_REGS_S27 
HEX_REG_SYS_REGS_S28 
HEX_REG_SYS_REGS_S29 
HEX_REG_SYS_REGS_S30 
HEX_REG_SYS_REGS_S31 
HEX_REG_SYS_REGS_S32 
HEX_REG_SYS_REGS_S33 
HEX_REG_SYS_REGS_S34 
HEX_REG_SYS_REGS_S35 
HEX_REG_SYS_REGS_S36 
HEX_REG_SYS_REGS_S37 
HEX_REG_SYS_REGS_S38 
HEX_REG_SYS_REGS_S39 
HEX_REG_SYS_REGS_S40 
HEX_REG_SYS_REGS_S41 
HEX_REG_SYS_REGS_S42 
HEX_REG_SYS_REGS_S43 
HEX_REG_SYS_REGS_S44 
HEX_REG_SYS_REGS_S45 
HEX_REG_SYS_REGS_S46 
HEX_REG_SYS_REGS_S47 
HEX_REG_SYS_REGS_S48 
HEX_REG_SYS_REGS_S49 
HEX_REG_SYS_REGS_S50 
HEX_REG_SYS_REGS_S51 
HEX_REG_SYS_REGS_S52 
HEX_REG_SYS_REGS_S53 
HEX_REG_SYS_REGS_S54 
HEX_REG_SYS_REGS_S55 
HEX_REG_SYS_REGS_S56 
HEX_REG_SYS_REGS_S57 
HEX_REG_SYS_REGS_S58 
HEX_REG_SYS_REGS_S59 
HEX_REG_SYS_REGS_S60 
HEX_REG_SYS_REGS_S61 
HEX_REG_SYS_REGS_S62 
HEX_REG_SYS_REGS_S63 
HEX_REG_SYS_REGS_S64 
HEX_REG_SYS_REGS_S65 
HEX_REG_SYS_REGS_S66 
HEX_REG_SYS_REGS_S67 
HEX_REG_SYS_REGS_S68 
HEX_REG_SYS_REGS_S69 
HEX_REG_SYS_REGS_S70 
HEX_REG_SYS_REGS_S71 
HEX_REG_SYS_REGS_S72 
HEX_REG_SYS_REGS_S73 
HEX_REG_SYS_REGS_S74 
HEX_REG_SYS_REGS_S75 
HEX_REG_SYS_REGS_S76 
HEX_REG_SYS_REGS_S77 
HEX_REG_SYS_REGS_S78 
HEX_REG_SYS_REGS_S79 
HEX_REG_SYS_REGS_S80 

Definition at line 434 of file hexagon.h.

434  {
435  HEX_REG_SYS_REGS_S0 = 0, // sgp0
436  HEX_REG_SYS_REGS_S1 = 1, // sgp1
437  HEX_REG_SYS_REGS_S2 = 2, // stid
438  HEX_REG_SYS_REGS_S3 = 3, // elr
439  HEX_REG_SYS_REGS_S4 = 4, // badva0
440  HEX_REG_SYS_REGS_S5 = 5, // badva1
441  HEX_REG_SYS_REGS_S6 = 6, // ssr
442  HEX_REG_SYS_REGS_S7 = 7, // ccr
443  HEX_REG_SYS_REGS_S8 = 8, // htid
444  HEX_REG_SYS_REGS_S9 = 9, // badva
445  HEX_REG_SYS_REGS_S10 = 10, // imask
451  HEX_REG_SYS_REGS_S16 = 16, // evb
452  HEX_REG_SYS_REGS_S17 = 17, // modectl
453  HEX_REG_SYS_REGS_S18 = 18, // syscfg
454  HEX_REG_SYS_REGS_S19 = 19, // s19
455  HEX_REG_SYS_REGS_S20 = 20, // s20
456  HEX_REG_SYS_REGS_S21 = 21, // vid
457  HEX_REG_SYS_REGS_S22 = 22, // s22
462  HEX_REG_SYS_REGS_S27 = 27, // cfgbase
463  HEX_REG_SYS_REGS_S28 = 28, // diag
464  HEX_REG_SYS_REGS_S29 = 29, // rev
465  HEX_REG_SYS_REGS_S30 = 30, // pcyclelo
466  HEX_REG_SYS_REGS_S31 = 31, // pcyclehi
467  HEX_REG_SYS_REGS_S32 = 32, // isdbst
468  HEX_REG_SYS_REGS_S33 = 33, // isdbcfg0
469  HEX_REG_SYS_REGS_S34 = 34, // isdbcfg1
471  HEX_REG_SYS_REGS_S36 = 36, // brkptpc0
472  HEX_REG_SYS_REGS_S37 = 37, // brkptcfg0
473  HEX_REG_SYS_REGS_S38 = 38, // brkptpc1
474  HEX_REG_SYS_REGS_S39 = 39, // brkptcfg1
475  HEX_REG_SYS_REGS_S40 = 40, // isdbmbxin
476  HEX_REG_SYS_REGS_S41 = 41, // isdbmbxout
477  HEX_REG_SYS_REGS_S42 = 42, // isdben
478  HEX_REG_SYS_REGS_S43 = 43, // isdbgpr
483  HEX_REG_SYS_REGS_S48 = 48, // pmucnt0
484  HEX_REG_SYS_REGS_S49 = 49, // pmucnt1
485  HEX_REG_SYS_REGS_S50 = 50, // pmucnt2
486  HEX_REG_SYS_REGS_S51 = 51, // pmucnt3
487  HEX_REG_SYS_REGS_S52 = 52, // pmuevtcfg
488  HEX_REG_SYS_REGS_S53 = 53, // pmucfg
516 } HEX_SYS_REGS; // SysRegs
HEX_SYS_REGS
Definition: hexagon.h:434
@ HEX_REG_SYS_REGS_S3
Definition: hexagon.h:438
@ HEX_REG_SYS_REGS_S32
Definition: hexagon.h:467
@ HEX_REG_SYS_REGS_S5
Definition: hexagon.h:440
@ HEX_REG_SYS_REGS_S63
Definition: hexagon.h:498
@ HEX_REG_SYS_REGS_S62
Definition: hexagon.h:497
@ HEX_REG_SYS_REGS_S26
Definition: hexagon.h:461
@ HEX_REG_SYS_REGS_S13
Definition: hexagon.h:448
@ HEX_REG_SYS_REGS_S48
Definition: hexagon.h:483
@ HEX_REG_SYS_REGS_S67
Definition: hexagon.h:502
@ HEX_REG_SYS_REGS_S44
Definition: hexagon.h:479
@ HEX_REG_SYS_REGS_S79
Definition: hexagon.h:514
@ HEX_REG_SYS_REGS_S47
Definition: hexagon.h:482
@ HEX_REG_SYS_REGS_S66
Definition: hexagon.h:501
@ HEX_REG_SYS_REGS_S20
Definition: hexagon.h:455
@ HEX_REG_SYS_REGS_S34
Definition: hexagon.h:469
@ HEX_REG_SYS_REGS_S9
Definition: hexagon.h:444
@ HEX_REG_SYS_REGS_S69
Definition: hexagon.h:504
@ HEX_REG_SYS_REGS_S75
Definition: hexagon.h:510
@ HEX_REG_SYS_REGS_S71
Definition: hexagon.h:506
@ HEX_REG_SYS_REGS_S68
Definition: hexagon.h:503
@ HEX_REG_SYS_REGS_S2
Definition: hexagon.h:437
@ HEX_REG_SYS_REGS_S36
Definition: hexagon.h:471
@ HEX_REG_SYS_REGS_S35
Definition: hexagon.h:470
@ HEX_REG_SYS_REGS_S78
Definition: hexagon.h:513
@ HEX_REG_SYS_REGS_S11
Definition: hexagon.h:446
@ HEX_REG_SYS_REGS_S49
Definition: hexagon.h:484
@ HEX_REG_SYS_REGS_S77
Definition: hexagon.h:512
@ HEX_REG_SYS_REGS_S58
Definition: hexagon.h:493
@ HEX_REG_SYS_REGS_S28
Definition: hexagon.h:463
@ HEX_REG_SYS_REGS_S76
Definition: hexagon.h:511
@ HEX_REG_SYS_REGS_S54
Definition: hexagon.h:489
@ HEX_REG_SYS_REGS_S37
Definition: hexagon.h:472
@ HEX_REG_SYS_REGS_S14
Definition: hexagon.h:449
@ HEX_REG_SYS_REGS_S59
Definition: hexagon.h:494
@ HEX_REG_SYS_REGS_S21
Definition: hexagon.h:456
@ HEX_REG_SYS_REGS_S18
Definition: hexagon.h:453
@ HEX_REG_SYS_REGS_S0
Definition: hexagon.h:435
@ HEX_REG_SYS_REGS_S46
Definition: hexagon.h:481
@ HEX_REG_SYS_REGS_S4
Definition: hexagon.h:439
@ HEX_REG_SYS_REGS_S1
Definition: hexagon.h:436
@ HEX_REG_SYS_REGS_S40
Definition: hexagon.h:475
@ HEX_REG_SYS_REGS_S17
Definition: hexagon.h:452
@ HEX_REG_SYS_REGS_S64
Definition: hexagon.h:499
@ HEX_REG_SYS_REGS_S65
Definition: hexagon.h:500
@ HEX_REG_SYS_REGS_S8
Definition: hexagon.h:443
@ HEX_REG_SYS_REGS_S22
Definition: hexagon.h:457
@ HEX_REG_SYS_REGS_S6
Definition: hexagon.h:441
@ HEX_REG_SYS_REGS_S45
Definition: hexagon.h:480
@ HEX_REG_SYS_REGS_S15
Definition: hexagon.h:450
@ HEX_REG_SYS_REGS_S60
Definition: hexagon.h:495
@ HEX_REG_SYS_REGS_S29
Definition: hexagon.h:464
@ HEX_REG_SYS_REGS_S43
Definition: hexagon.h:478
@ HEX_REG_SYS_REGS_S33
Definition: hexagon.h:468
@ HEX_REG_SYS_REGS_S24
Definition: hexagon.h:459
@ HEX_REG_SYS_REGS_S56
Definition: hexagon.h:491
@ HEX_REG_SYS_REGS_S42
Definition: hexagon.h:477
@ HEX_REG_SYS_REGS_S51
Definition: hexagon.h:486
@ HEX_REG_SYS_REGS_S74
Definition: hexagon.h:509
@ HEX_REG_SYS_REGS_S27
Definition: hexagon.h:462
@ HEX_REG_SYS_REGS_S30
Definition: hexagon.h:465
@ HEX_REG_SYS_REGS_S70
Definition: hexagon.h:505
@ HEX_REG_SYS_REGS_S12
Definition: hexagon.h:447
@ HEX_REG_SYS_REGS_S53
Definition: hexagon.h:488
@ HEX_REG_SYS_REGS_S31
Definition: hexagon.h:466
@ HEX_REG_SYS_REGS_S72
Definition: hexagon.h:507
@ HEX_REG_SYS_REGS_S55
Definition: hexagon.h:490
@ HEX_REG_SYS_REGS_S25
Definition: hexagon.h:460
@ HEX_REG_SYS_REGS_S52
Definition: hexagon.h:487
@ HEX_REG_SYS_REGS_S61
Definition: hexagon.h:496
@ HEX_REG_SYS_REGS_S57
Definition: hexagon.h:492
@ HEX_REG_SYS_REGS_S50
Definition: hexagon.h:485
@ HEX_REG_SYS_REGS_S41
Definition: hexagon.h:476
@ HEX_REG_SYS_REGS_S38
Definition: hexagon.h:473
@ HEX_REG_SYS_REGS_S80
Definition: hexagon.h:515
@ HEX_REG_SYS_REGS_S19
Definition: hexagon.h:454
@ HEX_REG_SYS_REGS_S7
Definition: hexagon.h:442
@ HEX_REG_SYS_REGS_S39
Definition: hexagon.h:474
@ HEX_REG_SYS_REGS_S73
Definition: hexagon.h:508
@ HEX_REG_SYS_REGS_S23
Definition: hexagon.h:458
@ HEX_REG_SYS_REGS_S16
Definition: hexagon.h:451
@ HEX_REG_SYS_REGS_S10
Definition: hexagon.h:445

◆ HEX_SYS_REGS64

Enumerator
HEX_REG_SYS_REGS64_S1_0 
HEX_REG_SYS_REGS64_S3_2 
HEX_REG_SYS_REGS64_S5_4 
HEX_REG_SYS_REGS64_S7_6 
HEX_REG_SYS_REGS64_S9_8 
HEX_REG_SYS_REGS64_S11_10 
HEX_REG_SYS_REGS64_S13_12 
HEX_REG_SYS_REGS64_S15_14 
HEX_REG_SYS_REGS64_S17_16 
HEX_REG_SYS_REGS64_S19_18 
HEX_REG_SYS_REGS64_S21_20 
HEX_REG_SYS_REGS64_S23_22 
HEX_REG_SYS_REGS64_S25_24 
HEX_REG_SYS_REGS64_S27_26 
HEX_REG_SYS_REGS64_S29_28 
HEX_REG_SYS_REGS64_S31_30 
HEX_REG_SYS_REGS64_S33_32 
HEX_REG_SYS_REGS64_S35_34 
HEX_REG_SYS_REGS64_S37_36 
HEX_REG_SYS_REGS64_S39_38 
HEX_REG_SYS_REGS64_S41_40 
HEX_REG_SYS_REGS64_S43_42 
HEX_REG_SYS_REGS64_S45_44 
HEX_REG_SYS_REGS64_S47_46 
HEX_REG_SYS_REGS64_S49_48 
HEX_REG_SYS_REGS64_S51_50 
HEX_REG_SYS_REGS64_S53_52 
HEX_REG_SYS_REGS64_S55_54 
HEX_REG_SYS_REGS64_S57_56 
HEX_REG_SYS_REGS64_S59_58 
HEX_REG_SYS_REGS64_S61_60 
HEX_REG_SYS_REGS64_S63_62 
HEX_REG_SYS_REGS64_S65_64 
HEX_REG_SYS_REGS64_S67_66 
HEX_REG_SYS_REGS64_S69_68 
HEX_REG_SYS_REGS64_S71_70 
HEX_REG_SYS_REGS64_S73_72 
HEX_REG_SYS_REGS64_S75_74 
HEX_REG_SYS_REGS64_S77_76 
HEX_REG_SYS_REGS64_S79_78 

Definition at line 518 of file hexagon.h.

518  {
519  HEX_REG_SYS_REGS64_S1_0 = 0, // sgp1:0
521  HEX_REG_SYS_REGS64_S5_4 = 4, // badva1:0
522  HEX_REG_SYS_REGS64_S7_6 = 6, // ccr:ssr
534  HEX_REG_SYS_REGS64_S31_30 = 30, // pcycle
559 } HEX_SYS_REGS64; // SysRegs64
HEX_SYS_REGS64
Definition: hexagon.h:518
@ HEX_REG_SYS_REGS64_S1_0
Definition: hexagon.h:519
@ HEX_REG_SYS_REGS64_S73_72
Definition: hexagon.h:555
@ HEX_REG_SYS_REGS64_S21_20
Definition: hexagon.h:529
@ HEX_REG_SYS_REGS64_S37_36
Definition: hexagon.h:537
@ HEX_REG_SYS_REGS64_S47_46
Definition: hexagon.h:542
@ HEX_REG_SYS_REGS64_S45_44
Definition: hexagon.h:541
@ HEX_REG_SYS_REGS64_S63_62
Definition: hexagon.h:550
@ HEX_REG_SYS_REGS64_S59_58
Definition: hexagon.h:548
@ HEX_REG_SYS_REGS64_S57_56
Definition: hexagon.h:547
@ HEX_REG_SYS_REGS64_S61_60
Definition: hexagon.h:549
@ HEX_REG_SYS_REGS64_S71_70
Definition: hexagon.h:554
@ HEX_REG_SYS_REGS64_S29_28
Definition: hexagon.h:533
@ HEX_REG_SYS_REGS64_S15_14
Definition: hexagon.h:526
@ HEX_REG_SYS_REGS64_S3_2
Definition: hexagon.h:520
@ HEX_REG_SYS_REGS64_S17_16
Definition: hexagon.h:527
@ HEX_REG_SYS_REGS64_S39_38
Definition: hexagon.h:538
@ HEX_REG_SYS_REGS64_S35_34
Definition: hexagon.h:536
@ HEX_REG_SYS_REGS64_S67_66
Definition: hexagon.h:552
@ HEX_REG_SYS_REGS64_S77_76
Definition: hexagon.h:557
@ HEX_REG_SYS_REGS64_S11_10
Definition: hexagon.h:524
@ HEX_REG_SYS_REGS64_S27_26
Definition: hexagon.h:532
@ HEX_REG_SYS_REGS64_S19_18
Definition: hexagon.h:528
@ HEX_REG_SYS_REGS64_S79_78
Definition: hexagon.h:558
@ HEX_REG_SYS_REGS64_S43_42
Definition: hexagon.h:540
@ HEX_REG_SYS_REGS64_S75_74
Definition: hexagon.h:556
@ HEX_REG_SYS_REGS64_S33_32
Definition: hexagon.h:535
@ HEX_REG_SYS_REGS64_S23_22
Definition: hexagon.h:530
@ HEX_REG_SYS_REGS64_S53_52
Definition: hexagon.h:545
@ HEX_REG_SYS_REGS64_S41_40
Definition: hexagon.h:539
@ HEX_REG_SYS_REGS64_S31_30
Definition: hexagon.h:534
@ HEX_REG_SYS_REGS64_S49_48
Definition: hexagon.h:543
@ HEX_REG_SYS_REGS64_S69_68
Definition: hexagon.h:553
@ HEX_REG_SYS_REGS64_S5_4
Definition: hexagon.h:521
@ HEX_REG_SYS_REGS64_S51_50
Definition: hexagon.h:544
@ HEX_REG_SYS_REGS64_S13_12
Definition: hexagon.h:525
@ HEX_REG_SYS_REGS64_S25_24
Definition: hexagon.h:531
@ HEX_REG_SYS_REGS64_S7_6
Definition: hexagon.h:522
@ HEX_REG_SYS_REGS64_S9_8
Definition: hexagon.h:523
@ HEX_REG_SYS_REGS64_S55_54
Definition: hexagon.h:546
@ HEX_REG_SYS_REGS64_S65_64
Definition: hexagon.h:551

◆ HexLoopAttr

Enumerator
HEX_NO_LOOP 
HEX_LOOP_0 
HEX_LOOP_1 
HEX_LOOP_01 

Definition at line 71 of file hexagon.h.

71  {
72  HEX_NO_LOOP = 0,
73  HEX_LOOP_0 = 1, // Is packet of loop0
74  HEX_LOOP_1 = 1 << 1, // Is packet of loop1
75  HEX_LOOP_01 = 1 << 2 // Belongs to loop 0 and 1
76 } HexLoopAttr;
HexLoopAttr
Definition: hexagon.h:71
@ HEX_NO_LOOP
Definition: hexagon.h:72
@ HEX_LOOP_0
Definition: hexagon.h:73
@ HEX_LOOP_1
Definition: hexagon.h:74
@ HEX_LOOP_01
Definition: hexagon.h:75

◆ HexOpAttr

enum HexOpAttr
Enumerator
HEX_OP_CONST_EXT 
HEX_OP_REG_HI 
HEX_OP_REG_LO 
HEX_OP_REG_PAIR 
HEX_OP_REG_QUADRUPLE 
HEX_OP_REG_OUT 
HEX_OP_IMM_SCALED 

Definition at line 61 of file hexagon.h.

61  {
62  HEX_OP_CONST_EXT = 1 << 0, // Constant extender marker for Immediate
63  HEX_OP_REG_HI = 1 << 1, // Rn.H marker
64  HEX_OP_REG_LO = 1 << 2, // Rn.L marker
65  HEX_OP_REG_PAIR = 1 << 3, // Is this a register pair?
66  HEX_OP_REG_QUADRUPLE = 1 << 4, // Is it a register with 4 sub registers?
67  HEX_OP_REG_OUT = 1 << 5, // Is the register the destination register?
68  HEX_OP_IMM_SCALED = 1 << 6 // Is the immediate shifted?
69 } HexOpAttr;
HexOpAttr
Definition: hexagon.h:61
@ HEX_OP_REG_QUADRUPLE
Definition: hexagon.h:66
@ HEX_OP_REG_LO
Definition: hexagon.h:64
@ HEX_OP_REG_HI
Definition: hexagon.h:63
@ HEX_OP_CONST_EXT
Definition: hexagon.h:62
@ HEX_OP_IMM_SCALED
Definition: hexagon.h:68
@ HEX_OP_REG_OUT
Definition: hexagon.h:67
@ HEX_OP_REG_PAIR
Definition: hexagon.h:65

◆ HexOpType

enum HexOpType
Enumerator
HEX_OP_TYPE_IMM 
HEX_OP_TYPE_REG 

Definition at line 54 of file hexagon.h.

54  {
57  // TODO It might be useful to differ between control, HVX, guest regs etc. Also see HexOp
58 } HexOpType;
HexOpType
Definition: hexagon.h:54
@ HEX_OP_TYPE_REG
Definition: hexagon.h:56
@ HEX_OP_TYPE_IMM
Definition: hexagon.h:55

◆ HexPf

enum HexPf
Enumerator
HEX_PF_RND 
HEX_PF_CRND 
HEX_PF_RAW 
HEX_PF_CHOP 
HEX_PF_SAT 
HEX_PF_HI 
HEX_PF_LO 
HEX_PF_LSH1 
HEX_PF_LSH16 
HEX_PF_RSH1 
HEX_PF_NEG 
HEX_PF_POS 
HEX_PF_SCALE 
HEX_PF_DEPRECATED 

Definition at line 37 of file hexagon.h.

37  {
38  HEX_PF_RND = 1, // :rnd
39  HEX_PF_CRND = 1 << 1, // :crnd
40  HEX_PF_RAW = 1 << 2, // :raw
41  HEX_PF_CHOP = 1 << 3, // :chop
42  HEX_PF_SAT = 1 << 4, // :sat
43  HEX_PF_HI = 1 << 5, // :hi
44  HEX_PF_LO = 1 << 6, // :lo
45  HEX_PF_LSH1 = 1 << 7, // :<<1
46  HEX_PF_LSH16 = 1 << 8, // :<<16
47  HEX_PF_RSH1 = 1 << 9, // :>>1
48  HEX_PF_NEG = 1 << 10, // :neg
49  HEX_PF_POS = 1 << 11, // :pos
50  HEX_PF_SCALE = 1 << 12, // :scale, for FMA instructions
51  HEX_PF_DEPRECATED = 1 << 15, // :deprecated
52 } HexPf;
HexPf
Definition: hexagon.h:37
@ HEX_PF_CHOP
Definition: hexagon.h:41
@ HEX_PF_RND
Definition: hexagon.h:38
@ HEX_PF_RAW
Definition: hexagon.h:40
@ HEX_PF_NEG
Definition: hexagon.h:48
@ HEX_PF_POS
Definition: hexagon.h:49
@ HEX_PF_LSH16
Definition: hexagon.h:46
@ HEX_PF_CRND
Definition: hexagon.h:39
@ HEX_PF_SCALE
Definition: hexagon.h:50
@ HEX_PF_RSH1
Definition: hexagon.h:47
@ HEX_PF_HI
Definition: hexagon.h:43
@ HEX_PF_LSH1
Definition: hexagon.h:45
@ HEX_PF_DEPRECATED
Definition: hexagon.h:51
@ HEX_PF_LO
Definition: hexagon.h:44
@ HEX_PF_SAT
Definition: hexagon.h:42

◆ HexPred

enum HexPred
Enumerator
HEX_NOPRED 
HEX_PRED_TRUE 
HEX_PRED_FALSE 
HEX_PRED_NEW 

Definition at line 28 of file hexagon.h.

28  {
29  HEX_NOPRED, // no conditional execution
30  HEX_PRED_TRUE, // if (Pd) ...
31  HEX_PRED_FALSE, // if (!Pd) ...
32  HEX_PRED_NEW, // if (Pd.new) or if (!Pd.new)
33 } HexPred;
HexPred
Definition: hexagon.h:28
@ HEX_PRED_TRUE
Definition: hexagon.h:30
@ HEX_PRED_NEW
Definition: hexagon.h:32
@ HEX_PRED_FALSE
Definition: hexagon.h:31
@ HEX_NOPRED
Definition: hexagon.h:29

◆ HexRegClass

Enumerator
HEX_REG_CLASS_CTR_REGS 
HEX_REG_CLASS_CTR_REGS64 
HEX_REG_CLASS_DOUBLE_REGS 
HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS 
HEX_REG_CLASS_GENERAL_SUB_REGS 
HEX_REG_CLASS_GUEST_REGS 
HEX_REG_CLASS_GUEST_REGS64 
HEX_REG_CLASS_HVX_QR 
HEX_REG_CLASS_HVX_VQR 
HEX_REG_CLASS_HVX_VR 
HEX_REG_CLASS_HVX_WR 
HEX_REG_CLASS_INT_REGS 
HEX_REG_CLASS_INT_REGS_LOW8 
HEX_REG_CLASS_MOD_REGS 
HEX_REG_CLASS_PRED_REGS 
HEX_REG_CLASS_SYS_REGS 
HEX_REG_CLASS_SYS_REGS64 

Definition at line 142 of file hexagon.h.

142  {
160 } HexRegClass;
HexRegClass
Definition: hexagon.h:142
@ HEX_REG_CLASS_INT_REGS_LOW8
Definition: hexagon.h:155
@ HEX_REG_CLASS_GUEST_REGS
Definition: hexagon.h:148
@ HEX_REG_CLASS_HVX_QR
Definition: hexagon.h:150
@ HEX_REG_CLASS_GUEST_REGS64
Definition: hexagon.h:149
@ HEX_REG_CLASS_HVX_WR
Definition: hexagon.h:153
@ HEX_REG_CLASS_SYS_REGS
Definition: hexagon.h:158
@ HEX_REG_CLASS_MOD_REGS
Definition: hexagon.h:156
@ HEX_REG_CLASS_HVX_VQR
Definition: hexagon.h:151
@ HEX_REG_CLASS_INT_REGS
Definition: hexagon.h:154
@ HEX_REG_CLASS_DOUBLE_REGS
Definition: hexagon.h:145
@ HEX_REG_CLASS_SYS_REGS64
Definition: hexagon.h:159
@ HEX_REG_CLASS_HVX_VR
Definition: hexagon.h:152
@ HEX_REG_CLASS_CTR_REGS
Definition: hexagon.h:143
@ HEX_REG_CLASS_CTR_REGS64
Definition: hexagon.h:144
@ HEX_REG_CLASS_PRED_REGS
Definition: hexagon.h:157
@ HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS
Definition: hexagon.h:146
@ HEX_REG_CLASS_GENERAL_SUB_REGS
Definition: hexagon.h:147

Function Documentation

◆ hex_extend_op()

RZ_API void hex_extend_op ( HexState state,
RZ_INOUT HexOp op,
const bool  set_new_extender,
const ut32  addr 
)

Applies the constant extender to the immediate value in op.

Parameters
stateThe state to operade on.
opThe operand the extender is applied to or taken from.
set_new_extenderTrue if the immediate value of the op comes from immext() and sets the a new constant extender. False otherwise.
addrThe address of the currently disassembled instruction.

Definition at line 738 of file hexagon_arch.c.

738  {
739  if (rz_list_length(state->const_ext_l) > MAX_CONST_EXT) {
740  rz_list_purge(state->const_ext_l);
741  }
742 
743  if (op->type != HEX_OP_TYPE_IMM) {
744  return;
745  }
746 
747  HexConstExt *ce;
748  if (set_new_extender) {
749  ce = calloc(1, sizeof(HexConstExt));
750  ce->addr = addr + 4;
751  ce->const_ext = op->op.imm;
752  rz_list_append(state->const_ext_l, ce);
753  return;
754  }
755 
756  ce = get_const_ext_from_addr(state->const_ext_l, addr);
757  if (ce) {
758  op->op.imm = imm_is_scaled(op->attr) ? (op->op.imm >> op->shift) : op->op.imm;
759  op->op.imm = ((op->op.imm & 0x3F) | ce->const_ext);
760  rz_list_delete_data(state->const_ext_l, ce);
761  return;
762  }
763 }
#define MAX_CONST_EXT
Definition: hexagon.h:24
static HexConstExt * get_const_ext_from_addr(const RzList *ce_list, const ut32 addr)
Searched the constant extender in the ce_list, where addr is the key.
Definition: hexagon_arch.c:719
static bool imm_is_scaled(const HexOpAttr attr)
Definition: hexagon_arch.c:708
RZ_API bool rz_list_delete_data(RZ_NONNULL RzList *list, void *ptr)
Deletes an entry in the list by searching for a pointer.
Definition: list.c:148
RZ_API ut32 rz_list_length(RZ_NONNULL const RzList *list)
Returns the length of the list.
Definition: list.c:109
RZ_API RZ_BORROW RzListIter * rz_list_append(RZ_NONNULL RzList *list, void *data)
Appends at the end of the list a new element.
Definition: list.c:288
RZ_API void rz_list_purge(RZ_NONNULL RzList *list)
Empties the list without freeing the list pointer.
Definition: list.c:120
void * calloc(size_t number, size_t size)
Definition: malloc.c:102
ut32 const_ext
Definition: hexagon.h:127
ut32 addr
Definition: hexagon.h:126
Definition: dis.h:43
Definition: dis.c:32
static int addr
Definition: z80asm.c:58

References HexConstExt::addr, addr, calloc(), HexConstExt::const_ext, get_const_ext_from_addr(), HEX_OP_TYPE_IMM, imm_is_scaled(), MAX_CONST_EXT, rz_list_append(), rz_list_delete_data(), rz_list_length(), and rz_list_purge().

Referenced by hex_disasm_with_templates().

◆ hex_get_ctr_regs()

char* hex_get_ctr_regs ( int  opcode_reg,
bool  get_alias 
)

Definition at line 24 of file hexagon.c.

24  {
25  switch (opcode_reg) {
26  default: return "<err>";
28  return get_alias ? "LC0" : "C1";
30  return get_alias ? "SA0" : "C0";
32  return get_alias ? "LC1" : "C3";
34  return get_alias ? "SA1" : "C2";
36  return get_alias ? "P3:0" : "C4";
38  return get_alias ? "C5" : "C5";
40  return get_alias ? "PC" : "C9";
42  return get_alias ? "UGP" : "C10";
44  return get_alias ? "GP" : "C11";
46  return get_alias ? "CS0" : "C12";
48  return get_alias ? "CS1" : "C13";
50  return get_alias ? "UPCYCLELO" : "C14";
52  return get_alias ? "UPCYCLEHI" : "C15";
54  return get_alias ? "FRAMELIMIT" : "C16";
56  return get_alias ? "FRAMEKEY" : "C17";
58  return get_alias ? "PKTCOUNTLO" : "C18";
60  return get_alias ? "PKTCOUNTHI" : "C19";
62  return get_alias ? "UTIMERLO" : "C30";
64  return get_alias ? "UTIMERHI" : "C31";
66  return get_alias ? "M0" : "C6";
68  return get_alias ? "M1" : "C7";
70  return get_alias ? "USR" : "C8";
71  }
72 }

References HEX_REG_CTR_REGS_C0, HEX_REG_CTR_REGS_C1, HEX_REG_CTR_REGS_C10, HEX_REG_CTR_REGS_C11, HEX_REG_CTR_REGS_C12, HEX_REG_CTR_REGS_C13, HEX_REG_CTR_REGS_C14, HEX_REG_CTR_REGS_C15, HEX_REG_CTR_REGS_C16, HEX_REG_CTR_REGS_C17, HEX_REG_CTR_REGS_C18, HEX_REG_CTR_REGS_C19, HEX_REG_CTR_REGS_C2, HEX_REG_CTR_REGS_C3, HEX_REG_CTR_REGS_C30, HEX_REG_CTR_REGS_C31, HEX_REG_CTR_REGS_C4, HEX_REG_CTR_REGS_C5, HEX_REG_CTR_REGS_C6, HEX_REG_CTR_REGS_C7, HEX_REG_CTR_REGS_C8, and HEX_REG_CTR_REGS_C9.

Referenced by hex_get_reg_in_class().

◆ hex_get_ctr_regs64()

char* hex_get_ctr_regs64 ( int  opcode_reg,
bool  get_alias 
)

Definition at line 74 of file hexagon.c.

74  {
75  switch (opcode_reg) {
76  default: return "<err>";
78  return get_alias ? "LC0:SA0" : "C1:0";
80  return get_alias ? "LC1:SA1" : "C3:2";
82  return "C5:4";
84  return get_alias ? "M1:0" : "C7:6";
86  return "C9:8";
88  return "C11:10";
90  return get_alias ? "CS1:0" : "C13:12";
92  return get_alias ? "UPCYCLE" : "C15:14";
94  return "C17:16";
96  return get_alias ? "PKTCOUNT" : "C19:18";
98  return get_alias ? "UTIMER" : "C31:30";
99  }
100 }

References HEX_REG_CTR_REGS64_C11_10, HEX_REG_CTR_REGS64_C13_12, HEX_REG_CTR_REGS64_C15_14, HEX_REG_CTR_REGS64_C17_16, HEX_REG_CTR_REGS64_C19_18, HEX_REG_CTR_REGS64_C1_0, HEX_REG_CTR_REGS64_C31_30, HEX_REG_CTR_REGS64_C3_2, HEX_REG_CTR_REGS64_C5_4, HEX_REG_CTR_REGS64_C7_6, and HEX_REG_CTR_REGS64_C9_8.

Referenced by hex_get_reg_in_class().

◆ hex_get_double_regs()

char* hex_get_double_regs ( int  opcode_reg,
bool  get_alias 
)

Definition at line 102 of file hexagon.c.

102  {
103  switch (opcode_reg) {
104  default: return "<err>";
106  return "R1:0";
108  return "R3:2";
110  return "R5:4";
112  return "R7:6";
114  return "R9:8";
116  return "R13:12";
118  return "R15:14";
120  return "R17:16";
122  return "R19:18";
124  return "R21:20";
126  return "R23:22";
128  return "R25:24";
130  return "R27:26";
132  return "R11:10";
134  return "R29:28";
136  return get_alias ? "LR:FP" : "R31:30";
137  }
138 }

References HEX_REG_DOUBLE_REGS_R11_10, HEX_REG_DOUBLE_REGS_R13_12, HEX_REG_DOUBLE_REGS_R15_14, HEX_REG_DOUBLE_REGS_R17_16, HEX_REG_DOUBLE_REGS_R19_18, HEX_REG_DOUBLE_REGS_R1_0, HEX_REG_DOUBLE_REGS_R21_20, HEX_REG_DOUBLE_REGS_R23_22, HEX_REG_DOUBLE_REGS_R25_24, HEX_REG_DOUBLE_REGS_R27_26, HEX_REG_DOUBLE_REGS_R29_28, HEX_REG_DOUBLE_REGS_R31_30, HEX_REG_DOUBLE_REGS_R3_2, HEX_REG_DOUBLE_REGS_R5_4, HEX_REG_DOUBLE_REGS_R7_6, and HEX_REG_DOUBLE_REGS_R9_8.

Referenced by hex_get_reg_in_class().

◆ hex_get_general_double_low8_regs()

char* hex_get_general_double_low8_regs ( int  opcode_reg,
bool  get_alias 
)

Definition at line 140 of file hexagon.c.

140  {
141  opcode_reg = opcode_reg << 1;
142  if (opcode_reg > 6) { // HEX_REG_D3 == 6
143  opcode_reg = (opcode_reg & 0x7) | 0x10;
144  }
145  switch (opcode_reg) {
146  default: return "<err>";
148  return "R23:22";
150  return "R21:20";
152  return "R19:18";
154  return "R17:16";
156  return "R7:6";
158  return "R5:4";
160  return "R3:2";
162  return "R1:0";
163  }
164 }

References HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R17_16, HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R19_18, HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R1_0, HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R21_20, HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R23_22, HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R3_2, HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R5_4, and HEX_REG_GENERAL_DOUBLE_LOW8_REGS_R7_6.

Referenced by hex_get_reg_in_class().

◆ hex_get_general_sub_regs()

char* hex_get_general_sub_regs ( int  opcode_reg,
bool  get_alias 
)

Definition at line 166 of file hexagon.c.

166  {
167  if (opcode_reg > 7) { // HEX_REG_R7 == 7
168  opcode_reg = (opcode_reg & 0x7) | 0x10;
169  }
170  switch (opcode_reg) {
171  default: return "<err>";
173  return "R23";
175  return "R22";
177  return "R21";
179  return "R20";
181  return "R19";
183  return "R18";
185  return "R17";
187  return "R16";
189  return "R7";
191  return "R6";
193  return "R5";
195  return "R4";
197  return "R3";
199  return "R2";
201  return "R1";
203  return "R0";
204  }
205 }

References HEX_REG_GENERAL_SUB_REGS_R0, HEX_REG_GENERAL_SUB_REGS_R1, HEX_REG_GENERAL_SUB_REGS_R16, HEX_REG_GENERAL_SUB_REGS_R17, HEX_REG_GENERAL_SUB_REGS_R18, HEX_REG_GENERAL_SUB_REGS_R19, HEX_REG_GENERAL_SUB_REGS_R2, HEX_REG_GENERAL_SUB_REGS_R20, HEX_REG_GENERAL_SUB_REGS_R21, HEX_REG_GENERAL_SUB_REGS_R22, HEX_REG_GENERAL_SUB_REGS_R23, HEX_REG_GENERAL_SUB_REGS_R3, HEX_REG_GENERAL_SUB_REGS_R4, HEX_REG_GENERAL_SUB_REGS_R5, HEX_REG_GENERAL_SUB_REGS_R6, and HEX_REG_GENERAL_SUB_REGS_R7.

Referenced by hex_get_reg_in_class().

◆ hex_get_guest_regs()

char* hex_get_guest_regs ( int  opcode_reg,
bool  get_alias 
)

Definition at line 207 of file hexagon.c.

207  {
208  switch (opcode_reg) {
209  default: return "<err>";
211  return get_alias ? "GELR" : "G0";
213  return get_alias ? "GSR" : "G1";
215  return get_alias ? "GOSP" : "G2";
217  return get_alias ? "GBADVA" : "G3";
219  return "G4";
221  return "G5";
223  return "G6";
225  return "G7";
227  return "G8";
229  return "G9";
231  return "G10";
233  return "G11";
235  return "G12";
237  return "G13";
239  return "G14";
241  return "G15";
243  return get_alias ? "GPMUCNT4" : "G16";
245  return get_alias ? "GPMUCNT5" : "G17";
247  return get_alias ? "GPMUCNT6" : "G18";
249  return get_alias ? "GPMUCNT7" : "G19";
251  return "G20";
253  return "G21";
255  return "G22";
257  return "G23";
259  return get_alias ? "GPCYCLELO" : "G24";
261  return get_alias ? "GPCYCLEHI" : "G25";
263  return get_alias ? "GPMUCNT0" : "G26";
265  return get_alias ? "GPMUCNT1" : "G27";
267  return get_alias ? "GPMUCNT2" : "G28";
269  return get_alias ? "GPMUCNT3" : "G29";
271  return "G30";
273  return "G31";
274  }
275 }

References HEX_REG_GUEST_REGS_G0, HEX_REG_GUEST_REGS_G1, HEX_REG_GUEST_REGS_G10, HEX_REG_GUEST_REGS_G11, HEX_REG_GUEST_REGS_G12, HEX_REG_GUEST_REGS_G13, HEX_REG_GUEST_REGS_G14, HEX_REG_GUEST_REGS_G15, HEX_REG_GUEST_REGS_G16, HEX_REG_GUEST_REGS_G17, HEX_REG_GUEST_REGS_G18, HEX_REG_GUEST_REGS_G19, HEX_REG_GUEST_REGS_G2, HEX_REG_GUEST_REGS_G20, HEX_REG_GUEST_REGS_G21, HEX_REG_GUEST_REGS_G22, HEX_REG_GUEST_REGS_G23, HEX_REG_GUEST_REGS_G24, HEX_REG_GUEST_REGS_G25, HEX_REG_GUEST_REGS_G26, HEX_REG_GUEST_REGS_G27, HEX_REG_GUEST_REGS_G28, HEX_REG_GUEST_REGS_G29, HEX_REG_GUEST_REGS_G3, HEX_REG_GUEST_REGS_G30, HEX_REG_GUEST_REGS_G31, HEX_REG_GUEST_REGS_G4, HEX_REG_GUEST_REGS_G5, HEX_REG_GUEST_REGS_G6, HEX_REG_GUEST_REGS_G7, HEX_REG_GUEST_REGS_G8, and HEX_REG_GUEST_REGS_G9.

Referenced by hex_get_reg_in_class().

◆ hex_get_guest_regs64()

char* hex_get_guest_regs64 ( int  opcode_reg,
bool  get_alias 
)

Definition at line 277 of file hexagon.c.

277  {
278  switch (opcode_reg) {
279  default: return "<err>";
281  return "G1:0";
283  return "G3:2";
285  return "G5:4";
287  return "G7:6";
289  return "G9:8";
291  return "G11:10";
293  return "G13:12";
295  return "G15:14";
297  return "G17:16";
299  return "G19:18";
301  return "G21:20";
303  return "G23:22";
305  return "G25:24";
307  return "G27:26";
309  return "G29:28";
311  return "G31:30";
312  }
313 }

References HEX_REG_GUEST_REGS64_G11_10, HEX_REG_GUEST_REGS64_G13_12, HEX_REG_GUEST_REGS64_G15_14, HEX_REG_GUEST_REGS64_G17_16, HEX_REG_GUEST_REGS64_G19_18, HEX_REG_GUEST_REGS64_G1_0, HEX_REG_GUEST_REGS64_G21_20, HEX_REG_GUEST_REGS64_G23_22, HEX_REG_GUEST_REGS64_G25_24, HEX_REG_GUEST_REGS64_G27_26, HEX_REG_GUEST_REGS64_G29_28, HEX_REG_GUEST_REGS64_G31_30, HEX_REG_GUEST_REGS64_G3_2, HEX_REG_GUEST_REGS64_G5_4, HEX_REG_GUEST_REGS64_G7_6, and HEX_REG_GUEST_REGS64_G9_8.

Referenced by hex_get_reg_in_class().

◆ hex_get_hvx_qr()

char* hex_get_hvx_qr ( int  opcode_reg,
bool  get_alias 
)

Definition at line 315 of file hexagon.c.

315  {
316  switch (opcode_reg) {
317  default: return "<err>";
318  case HEX_REG_HVX_QR_Q0:
319  return "Q0";
320  case HEX_REG_HVX_QR_Q1:
321  return "Q1";
322  case HEX_REG_HVX_QR_Q2:
323  return "Q2";
324  case HEX_REG_HVX_QR_Q3:
325  return "Q3";
326  }
327 }

References HEX_REG_HVX_QR_Q0, HEX_REG_HVX_QR_Q1, HEX_REG_HVX_QR_Q2, and HEX_REG_HVX_QR_Q3.

Referenced by hex_get_reg_in_class().

◆ hex_get_hvx_vqr()

char* hex_get_hvx_vqr ( int  opcode_reg,
bool  get_alias 
)

Definition at line 329 of file hexagon.c.

329  {
330  switch (opcode_reg) {
331  default: return "<err>";
333  return "V3:0";
335  return "V7:4";
337  return "V11:8";
339  return "V15:12";
341  return "V19:16";
343  return "V23:20";
345  return "V27:24";
347  return "V31:28";
348  }
349 }

References HEX_REG_HVX_VQR_V11_8, HEX_REG_HVX_VQR_V15_12, HEX_REG_HVX_VQR_V19_16, HEX_REG_HVX_VQR_V23_20, HEX_REG_HVX_VQR_V27_24, HEX_REG_HVX_VQR_V31_28, HEX_REG_HVX_VQR_V3_0, and HEX_REG_HVX_VQR_V7_4.

Referenced by hex_get_reg_in_class().

◆ hex_get_hvx_vr()

char* hex_get_hvx_vr ( int  opcode_reg,
bool  get_alias 
)

Definition at line 351 of file hexagon.c.

351  {
352  switch (opcode_reg) {
353  default: return "<err>";
354  case HEX_REG_HVX_VR_V0:
355  return "V0";
356  case HEX_REG_HVX_VR_V1:
357  return "V1";
358  case HEX_REG_HVX_VR_V2:
359  return "V2";
360  case HEX_REG_HVX_VR_V3:
361  return "V3";
362  case HEX_REG_HVX_VR_V4:
363  return "V4";
364  case HEX_REG_HVX_VR_V5:
365  return "V5";
366  case HEX_REG_HVX_VR_V6:
367  return "V6";
368  case HEX_REG_HVX_VR_V7:
369  return "V7";
370  case HEX_REG_HVX_VR_V8:
371  return "V8";
372  case HEX_REG_HVX_VR_V9:
373  return "V9";
374  case HEX_REG_HVX_VR_V10:
375  return "V10";
376  case HEX_REG_HVX_VR_V11:
377  return "V11";
378  case HEX_REG_HVX_VR_V12:
379  return "V12";
380  case HEX_REG_HVX_VR_V13:
381  return "V13";
382  case HEX_REG_HVX_VR_V14:
383  return "V14";
384  case HEX_REG_HVX_VR_V15:
385  return "V15";
386  case HEX_REG_HVX_VR_V16:
387  return "V16";
388  case HEX_REG_HVX_VR_V17:
389  return "V17";
390  case HEX_REG_HVX_VR_V18:
391  return "V18";
392  case HEX_REG_HVX_VR_V19:
393  return "V19";
394  case HEX_REG_HVX_VR_V20:
395  return "V20";
396  case HEX_REG_HVX_VR_V21:
397  return "V21";
398  case HEX_REG_HVX_VR_V22:
399  return "V22";
400  case HEX_REG_HVX_VR_V23:
401  return "V23";
402  case HEX_REG_HVX_VR_V24:
403  return "V24";
404  case HEX_REG_HVX_VR_V25:
405  return "V25";
406  case HEX_REG_HVX_VR_V26:
407  return "V26";
408  case HEX_REG_HVX_VR_V27:
409  return "V27";
410  case HEX_REG_HVX_VR_V28:
411  return "V28";
412  case HEX_REG_HVX_VR_V29:
413  return "V29";
414  case HEX_REG_HVX_VR_V30:
415  return "V30";
416  case HEX_REG_HVX_VR_V31:
417  return "V31";
418  }
419 }

References HEX_REG_HVX_VR_V0, HEX_REG_HVX_VR_V1, HEX_REG_HVX_VR_V10, HEX_REG_HVX_VR_V11, HEX_REG_HVX_VR_V12, HEX_REG_HVX_VR_V13, HEX_REG_HVX_VR_V14, HEX_REG_HVX_VR_V15, HEX_REG_HVX_VR_V16, HEX_REG_HVX_VR_V17, HEX_REG_HVX_VR_V18, HEX_REG_HVX_VR_V19, HEX_REG_HVX_VR_V2, HEX_REG_HVX_VR_V20, HEX_REG_HVX_VR_V21, HEX_REG_HVX_VR_V22, HEX_REG_HVX_VR_V23, HEX_REG_HVX_VR_V24, HEX_REG_HVX_VR_V25, HEX_REG_HVX_VR_V26, HEX_REG_HVX_VR_V27, HEX_REG_HVX_VR_V28, HEX_REG_HVX_VR_V29, HEX_REG_HVX_VR_V3, HEX_REG_HVX_VR_V30, HEX_REG_HVX_VR_V31, HEX_REG_HVX_VR_V4, HEX_REG_HVX_VR_V5, HEX_REG_HVX_VR_V6, HEX_REG_HVX_VR_V7, HEX_REG_HVX_VR_V8, and HEX_REG_HVX_VR_V9.

Referenced by hex_get_reg_in_class().

◆ hex_get_hvx_wr()

char* hex_get_hvx_wr ( int  opcode_reg,
bool  get_alias 
)

Definition at line 421 of file hexagon.c.

421  {
422  switch (opcode_reg) {
423  default: return "<err>";
424  case HEX_REG_HVX_WR_V1_0:
425  return "V1:0";
426  case HEX_REG_HVX_WR_V3_2:
427  return "V3:2";
428  case HEX_REG_HVX_WR_V5_4:
429  return "V5:4";
430  case HEX_REG_HVX_WR_V7_6:
431  return "V7:6";
432  case HEX_REG_HVX_WR_V9_8:
433  return "V9:8";
435  return "V11:10";
437  return "V13:12";
439  return "V15:14";
441  return "V17:16";
443  return "V19:18";
445  return "V21:20";
447  return "V23:22";
449  return "V25:24";
451  return "V27:26";
453  return "V29:28";
455  return "V31:30";
456  }
457 }

References HEX_REG_HVX_WR_V11_10, HEX_REG_HVX_WR_V13_12, HEX_REG_HVX_WR_V15_14, HEX_REG_HVX_WR_V17_16, HEX_REG_HVX_WR_V19_18, HEX_REG_HVX_WR_V1_0, HEX_REG_HVX_WR_V21_20, HEX_REG_HVX_WR_V23_22, HEX_REG_HVX_WR_V25_24, HEX_REG_HVX_WR_V27_26, HEX_REG_HVX_WR_V29_28, HEX_REG_HVX_WR_V31_30, HEX_REG_HVX_WR_V3_2, HEX_REG_HVX_WR_V5_4, HEX_REG_HVX_WR_V7_6, and HEX_REG_HVX_WR_V9_8.

Referenced by hex_get_reg_in_class().

◆ hex_get_int_regs()

char* hex_get_int_regs ( int  opcode_reg,
bool  get_alias 
)

Definition at line 459 of file hexagon.c.

459  {
460  switch (opcode_reg) {
461  default: return "<err>";
462  case HEX_REG_INT_REGS_R0:
463  return "R0";
464  case HEX_REG_INT_REGS_R1:
465  return "R1";
466  case HEX_REG_INT_REGS_R2:
467  return "R2";
468  case HEX_REG_INT_REGS_R3:
469  return "R3";
470  case HEX_REG_INT_REGS_R4:
471  return "R4";
472  case HEX_REG_INT_REGS_R5:
473  return "R5";
474  case HEX_REG_INT_REGS_R6:
475  return "R6";
476  case HEX_REG_INT_REGS_R7:
477  return "R7";
478  case HEX_REG_INT_REGS_R8:
479  return "R8";
480  case HEX_REG_INT_REGS_R9:
481  return "R9";
483  return "R12";
485  return "R13";
487  return "R14";
489  return "R15";
491  return "R16";
493  return "R17";
495  return "R18";
497  return "R19";
499  return "R20";
501  return "R21";
503  return "R22";
505  return "R23";
507  return "R24";
509  return "R25";
511  return "R26";
513  return "R27";
515  return "R28";
517  return "R10";
519  return "R11";
521  return get_alias ? "SP" : "R29";
523  return get_alias ? "FP" : "R30";
525  return get_alias ? "LR" : "R31";
526  }
527 }

References HEX_REG_INT_REGS_R0, HEX_REG_INT_REGS_R1, HEX_REG_INT_REGS_R10, HEX_REG_INT_REGS_R11, HEX_REG_INT_REGS_R12, HEX_REG_INT_REGS_R13, HEX_REG_INT_REGS_R14, HEX_REG_INT_REGS_R15, HEX_REG_INT_REGS_R16, HEX_REG_INT_REGS_R17, HEX_REG_INT_REGS_R18, HEX_REG_INT_REGS_R19, HEX_REG_INT_REGS_R2, HEX_REG_INT_REGS_R20, HEX_REG_INT_REGS_R21, HEX_REG_INT_REGS_R22, HEX_REG_INT_REGS_R23, HEX_REG_INT_REGS_R24, HEX_REG_INT_REGS_R25, HEX_REG_INT_REGS_R26, HEX_REG_INT_REGS_R27, HEX_REG_INT_REGS_R28, HEX_REG_INT_REGS_R29, HEX_REG_INT_REGS_R3, HEX_REG_INT_REGS_R30, HEX_REG_INT_REGS_R31, HEX_REG_INT_REGS_R4, HEX_REG_INT_REGS_R5, HEX_REG_INT_REGS_R6, HEX_REG_INT_REGS_R7, HEX_REG_INT_REGS_R8, and HEX_REG_INT_REGS_R9.

Referenced by hex_get_reg_in_class().

◆ hex_get_int_regs_low8()

char* hex_get_int_regs_low8 ( int  opcode_reg,
bool  get_alias 
)

Definition at line 529 of file hexagon.c.

529  {
530  switch (opcode_reg) {
531  default: return "<err>";
533  return "R7";
535  return "R6";
537  return "R5";
539  return "R4";
541  return "R3";
543  return "R2";
545  return "R1";
547  return "R0";
548  }
549 }

References HEX_REG_INT_REGS_LOW8_R0, HEX_REG_INT_REGS_LOW8_R1, HEX_REG_INT_REGS_LOW8_R2, HEX_REG_INT_REGS_LOW8_R3, HEX_REG_INT_REGS_LOW8_R4, HEX_REG_INT_REGS_LOW8_R5, HEX_REG_INT_REGS_LOW8_R6, and HEX_REG_INT_REGS_LOW8_R7.

Referenced by hex_get_reg_in_class().

◆ hex_get_mod_regs()

char* hex_get_mod_regs ( int  opcode_reg,
bool  get_alias 
)

Definition at line 551 of file hexagon.c.

551  {
552  opcode_reg |= 6;
553  switch (opcode_reg) {
554  default: return "<err>";
555  case HEX_REG_MOD_REGS_C6:
556  return get_alias ? "M0" : "C6";
557  case HEX_REG_MOD_REGS_C7:
558  return get_alias ? "M1" : "C7";
559  }
560 }

References HEX_REG_MOD_REGS_C6, and HEX_REG_MOD_REGS_C7.

Referenced by hex_get_reg_in_class().

◆ hex_get_pred_regs()

char* hex_get_pred_regs ( int  opcode_reg,
bool  get_alias 
)

Definition at line 562 of file hexagon.c.

562  {
563  switch (opcode_reg) {
564  default: return "<err>";
566  return "P0";
568  return "P1";
570  return "P2";
572  return "P3";
573  }
574 }

References HEX_REG_PRED_REGS_P0, HEX_REG_PRED_REGS_P1, HEX_REG_PRED_REGS_P2, and HEX_REG_PRED_REGS_P3.

Referenced by hex_get_reg_in_class().

◆ hex_get_reg_in_class()

char* hex_get_reg_in_class ( HexRegClass  cls,
int  opcode_reg,
bool  get_alias 
)

Definition at line 829 of file hexagon.c.

829  {
830  switch (cls) {
832  return hex_get_ctr_regs(opcode_reg, get_alias);
834  return hex_get_ctr_regs64(opcode_reg, get_alias);
836  return hex_get_double_regs(opcode_reg, get_alias);
838  return hex_get_general_double_low8_regs(opcode_reg, get_alias);
840  return hex_get_general_sub_regs(opcode_reg, get_alias);
842  return hex_get_guest_regs(opcode_reg, get_alias);
844  return hex_get_guest_regs64(opcode_reg, get_alias);
846  return hex_get_hvx_qr(opcode_reg, get_alias);
848  return hex_get_hvx_vqr(opcode_reg, get_alias);
850  return hex_get_hvx_vr(opcode_reg, get_alias);
852  return hex_get_hvx_wr(opcode_reg, get_alias);
854  return hex_get_int_regs(opcode_reg, get_alias);
856  return hex_get_int_regs_low8(opcode_reg, get_alias);
858  return hex_get_mod_regs(opcode_reg, get_alias);
860  return hex_get_pred_regs(opcode_reg, get_alias);
862  return hex_get_sys_regs(opcode_reg, get_alias);
864  return hex_get_sys_regs64(opcode_reg, get_alias);
865  default:
866  return NULL;
867  }
868 }
static RzILOpEffect * cls(cs_insn *insn)
Definition: arm_il64.c:915
#define NULL
Definition: cris-opc.c:27
char * hex_get_double_regs(int opcode_reg, bool get_alias)
Definition: hexagon.c:102
char * hex_get_int_regs(int opcode_reg, bool get_alias)
Definition: hexagon.c:459
char * hex_get_ctr_regs(int opcode_reg, bool get_alias)
Definition: hexagon.c:24
char * hex_get_hvx_vr(int opcode_reg, bool get_alias)
Definition: hexagon.c:351
char * hex_get_ctr_regs64(int opcode_reg, bool get_alias)
Definition: hexagon.c:74
char * hex_get_pred_regs(int opcode_reg, bool get_alias)
Definition: hexagon.c:562
char * hex_get_int_regs_low8(int opcode_reg, bool get_alias)
Definition: hexagon.c:529
char * hex_get_hvx_qr(int opcode_reg, bool get_alias)
Definition: hexagon.c:315
char * hex_get_hvx_vqr(int opcode_reg, bool get_alias)
Definition: hexagon.c:329
char * hex_get_mod_regs(int opcode_reg, bool get_alias)
Definition: hexagon.c:551
char * hex_get_guest_regs64(int opcode_reg, bool get_alias)
Definition: hexagon.c:277
char * hex_get_sys_regs(int opcode_reg, bool get_alias)
Definition: hexagon.c:576
char * hex_get_general_double_low8_regs(int opcode_reg, bool get_alias)
Definition: hexagon.c:140
char * hex_get_guest_regs(int opcode_reg, bool get_alias)
Definition: hexagon.c:207
char * hex_get_sys_regs64(int opcode_reg, bool get_alias)
Definition: hexagon.c:744
char * hex_get_hvx_wr(int opcode_reg, bool get_alias)
Definition: hexagon.c:421
char * hex_get_general_sub_regs(int opcode_reg, bool get_alias)
Definition: hexagon.c:166

References cls(), hex_get_ctr_regs(), hex_get_ctr_regs64(), hex_get_double_regs(), hex_get_general_double_low8_regs(), hex_get_general_sub_regs(), hex_get_guest_regs(), hex_get_guest_regs64(), hex_get_hvx_qr(), hex_get_hvx_vqr(), hex_get_hvx_vr(), hex_get_hvx_wr(), hex_get_int_regs(), hex_get_int_regs_low8(), hex_get_mod_regs(), hex_get_pred_regs(), hex_get_sys_regs(), hex_get_sys_regs64(), HEX_REG_CLASS_CTR_REGS, HEX_REG_CLASS_CTR_REGS64, HEX_REG_CLASS_DOUBLE_REGS, HEX_REG_CLASS_GENERAL_DOUBLE_LOW8_REGS, HEX_REG_CLASS_GENERAL_SUB_REGS, HEX_REG_CLASS_GUEST_REGS, HEX_REG_CLASS_GUEST_REGS64, HEX_REG_CLASS_HVX_QR, HEX_REG_CLASS_HVX_VQR, HEX_REG_CLASS_HVX_VR, HEX_REG_CLASS_HVX_WR, HEX_REG_CLASS_INT_REGS, HEX_REG_CLASS_INT_REGS_LOW8, HEX_REG_CLASS_MOD_REGS, HEX_REG_CLASS_PRED_REGS, HEX_REG_CLASS_SYS_REGS, HEX_REG_CLASS_SYS_REGS64, and NULL.

Referenced by hex_disasm_with_templates().

◆ hex_get_sys_regs()

char* hex_get_sys_regs ( int  opcode_reg,
bool  get_alias 
)

Definition at line 576 of file hexagon.c.

576  {
577  switch (opcode_reg) {
578  default: return "<err>";
579  case HEX_REG_SYS_REGS_S0:
580  return get_alias ? "SGP0" : "S0";
581  case HEX_REG_SYS_REGS_S1:
582  return get_alias ? "SGP1" : "S1";
583  case HEX_REG_SYS_REGS_S2:
584  return get_alias ? "STID" : "S2";
585  case HEX_REG_SYS_REGS_S3:
586  return get_alias ? "ELR" : "S3";
587  case HEX_REG_SYS_REGS_S4:
588  return get_alias ? "BADVA0" : "S4";
589  case HEX_REG_SYS_REGS_S5:
590  return get_alias ? "BADVA1" : "S5";
591  case HEX_REG_SYS_REGS_S6:
592  return get_alias ? "SSR" : "S6";
593  case HEX_REG_SYS_REGS_S7:
594  return get_alias ? "CCR" : "S7";
595  case HEX_REG_SYS_REGS_S8:
596  return get_alias ? "HTID" : "S8";
597  case HEX_REG_SYS_REGS_S9:
598  return get_alias ? "BADVA" : "S9";
600  return get_alias ? "IMASK" : "S10";
602  return "S11";
604  return "S12";
606  return "S13";
608  return "S14";
610  return "S15";
612  return get_alias ? "S19" : "S19";
614  return "S23";
616  return "S25";
618  return get_alias ? "EVB" : "S16";
620  return get_alias ? "MODECTL" : "S17";
622  return get_alias ? "SYSCFG" : "S18";
624  return get_alias ? "S20" : "S20";
626  return get_alias ? "VID" : "S21";
628  return get_alias ? "S22" : "S22";
630  return "S24";
632  return "S26";
634  return get_alias ? "CFGBASE" : "S27";
636  return get_alias ? "DIAG" : "S28";
638  return get_alias ? "REV" : "S29";
640  return get_alias ? "PCYCLEHI" : "S31";
642  return get_alias ? "PCYCLELO" : "S30";
644  return get_alias ? "ISDBST" : "S32";
646  return get_alias ? "ISDBCFG0" : "S33";
648  return get_alias ? "ISDBCFG1" : "S34";
650  return "S35";
652  return get_alias ? "BRKPTPC0" : "S36";
654  return get_alias ? "BRKPTCFG0" : "S37";
656  return get_alias ? "BRKPTPC1" : "S38";
658  return get_alias ? "BRKPTCFG1" : "S39";
660  return get_alias ? "ISDBMBXIN" : "S40";
662  return get_alias ? "ISDBMBXOUT" : "S41";
664  return get_alias ? "ISDBEN" : "S42";
666  return get_alias ? "ISDBGPR" : "S43";
668  return "S44";
670  return "S45";
672  return "S46";
674  return "S47";
676  return get_alias ? "PMUCNT0" : "S48";
678  return get_alias ? "PMUCNT1" : "S49";
680  return get_alias ? "PMUCNT2" : "S50";
682  return get_alias ? "PMUCNT3" : "S51";
684  return get_alias ? "PMUEVTCFG" : "S52";
686  return get_alias ? "PMUCFG" : "S53";
688  return "S54";
690  return "S55";
692  return "S56";
694  return "S57";
696  return "S58";
698  return "S59";
700  return "S60";
702  return "S61";
704  return "S62";
706  return "S63";
708  return "S64";
710  return "S65";
712  return "S66";
714  return "S67";
716  return "S68";
718  return "S69";
720  return "S70";
722  return "S71";
724  return "S72";
726  return "S73";
728  return "S74";
730  return "S75";
732  return "S76";
734  return "S77";
736  return "S78";
738  return "S79";
740  return "S80";
741  }
742 }

References HEX_REG_SYS_REGS_S0, HEX_REG_SYS_REGS_S1, HEX_REG_SYS_REGS_S10, HEX_REG_SYS_REGS_S11, HEX_REG_SYS_REGS_S12, HEX_REG_SYS_REGS_S13, HEX_REG_SYS_REGS_S14, HEX_REG_SYS_REGS_S15, HEX_REG_SYS_REGS_S16, HEX_REG_SYS_REGS_S17, HEX_REG_SYS_REGS_S18, HEX_REG_SYS_REGS_S19, HEX_REG_SYS_REGS_S2, HEX_REG_SYS_REGS_S20, HEX_REG_SYS_REGS_S21, HEX_REG_SYS_REGS_S22, HEX_REG_SYS_REGS_S23, HEX_REG_SYS_REGS_S24, HEX_REG_SYS_REGS_S25, HEX_REG_SYS_REGS_S26, HEX_REG_SYS_REGS_S27, HEX_REG_SYS_REGS_S28, HEX_REG_SYS_REGS_S29, HEX_REG_SYS_REGS_S3, HEX_REG_SYS_REGS_S30, HEX_REG_SYS_REGS_S31, HEX_REG_SYS_REGS_S32, HEX_REG_SYS_REGS_S33, HEX_REG_SYS_REGS_S34, HEX_REG_SYS_REGS_S35, HEX_REG_SYS_REGS_S36, HEX_REG_SYS_REGS_S37, HEX_REG_SYS_REGS_S38, HEX_REG_SYS_REGS_S39, HEX_REG_SYS_REGS_S4, HEX_REG_SYS_REGS_S40, HEX_REG_SYS_REGS_S41, HEX_REG_SYS_REGS_S42, HEX_REG_SYS_REGS_S43, HEX_REG_SYS_REGS_S44, HEX_REG_SYS_REGS_S45, HEX_REG_SYS_REGS_S46, HEX_REG_SYS_REGS_S47, HEX_REG_SYS_REGS_S48, HEX_REG_SYS_REGS_S49, HEX_REG_SYS_REGS_S5, HEX_REG_SYS_REGS_S50, HEX_REG_SYS_REGS_S51, HEX_REG_SYS_REGS_S52, HEX_REG_SYS_REGS_S53, HEX_REG_SYS_REGS_S54, HEX_REG_SYS_REGS_S55, HEX_REG_SYS_REGS_S56, HEX_REG_SYS_REGS_S57, HEX_REG_SYS_REGS_S58, HEX_REG_SYS_REGS_S59, HEX_REG_SYS_REGS_S6, HEX_REG_SYS_REGS_S60, HEX_REG_SYS_REGS_S61, HEX_REG_SYS_REGS_S62, HEX_REG_SYS_REGS_S63, HEX_REG_SYS_REGS_S64, HEX_REG_SYS_REGS_S65, HEX_REG_SYS_REGS_S66, HEX_REG_SYS_REGS_S67, HEX_REG_SYS_REGS_S68, HEX_REG_SYS_REGS_S69, HEX_REG_SYS_REGS_S7, HEX_REG_SYS_REGS_S70, HEX_REG_SYS_REGS_S71, HEX_REG_SYS_REGS_S72, HEX_REG_SYS_REGS_S73, HEX_REG_SYS_REGS_S74, HEX_REG_SYS_REGS_S75, HEX_REG_SYS_REGS_S76, HEX_REG_SYS_REGS_S77, HEX_REG_SYS_REGS_S78, HEX_REG_SYS_REGS_S79, HEX_REG_SYS_REGS_S8, HEX_REG_SYS_REGS_S80, and HEX_REG_SYS_REGS_S9.

Referenced by hex_get_reg_in_class().

◆ hex_get_sys_regs64()

char* hex_get_sys_regs64 ( int  opcode_reg,
bool  get_alias 
)

Definition at line 744 of file hexagon.c.

744  {
745  switch (opcode_reg) {
746  default: return "<err>";
748  return get_alias ? "SGP1:0" : "S1:0";
750  return "S3:2";
752  return get_alias ? "BADVA1:0" : "S5:4";
754  return get_alias ? "CCR:SSR" : "S7:6";
756  return "S9:8";
758  return "S11:10";
760  return "S13:12";
762  return "S15:14";
764  return "S17:16";
766  return "S19:18";
768  return "S21:20";
770  return "S23:22";
772  return "S25:24";
774  return "S27:26";
776  return "S29:28";
778  return get_alias ? "PCYCLE" : "S31:30";
780  return "S33:32";
782  return "S35:34";
784  return "S37:36";
786  return "S39:38";
788  return "S41:40";
790  return "S43:42";
792  return "S45:44";
794  return "S47:46";
796  return "S49:48";
798  return "S51:50";
800  return "S53:52";
802  return "S55:54";
804  return "S57:56";
806  return "S59:58";
808  return "S61:60";
810  return "S63:62";
812  return "S65:64";
814  return "S67:66";
816  return "S69:68";
818  return "S71:70";
820  return "S73:72";
822  return "S75:74";
824  return "S77:76";
826  return "S79:78";
827  }
828 }

References HEX_REG_SYS_REGS64_S11_10, HEX_REG_SYS_REGS64_S13_12, HEX_REG_SYS_REGS64_S15_14, HEX_REG_SYS_REGS64_S17_16, HEX_REG_SYS_REGS64_S19_18, HEX_REG_SYS_REGS64_S1_0, HEX_REG_SYS_REGS64_S21_20, HEX_REG_SYS_REGS64_S23_22, HEX_REG_SYS_REGS64_S25_24, HEX_REG_SYS_REGS64_S27_26, HEX_REG_SYS_REGS64_S29_28, HEX_REG_SYS_REGS64_S31_30, HEX_REG_SYS_REGS64_S33_32, HEX_REG_SYS_REGS64_S35_34, HEX_REG_SYS_REGS64_S37_36, HEX_REG_SYS_REGS64_S39_38, HEX_REG_SYS_REGS64_S3_2, HEX_REG_SYS_REGS64_S41_40, HEX_REG_SYS_REGS64_S43_42, HEX_REG_SYS_REGS64_S45_44, HEX_REG_SYS_REGS64_S47_46, HEX_REG_SYS_REGS64_S49_48, HEX_REG_SYS_REGS64_S51_50, HEX_REG_SYS_REGS64_S53_52, HEX_REG_SYS_REGS64_S55_54, HEX_REG_SYS_REGS64_S57_56, HEX_REG_SYS_REGS64_S59_58, HEX_REG_SYS_REGS64_S5_4, HEX_REG_SYS_REGS64_S61_60, HEX_REG_SYS_REGS64_S63_62, HEX_REG_SYS_REGS64_S65_64, HEX_REG_SYS_REGS64_S67_66, HEX_REG_SYS_REGS64_S69_68, HEX_REG_SYS_REGS64_S71_70, HEX_REG_SYS_REGS64_S73_72, HEX_REG_SYS_REGS64_S75_74, HEX_REG_SYS_REGS64_S77_76, HEX_REG_SYS_REGS64_S79_78, HEX_REG_SYS_REGS64_S7_6, and HEX_REG_SYS_REGS64_S9_8.

Referenced by hex_get_reg_in_class().

◆ hexagon_disasm_0x0()

void hexagon_disasm_0x0 ( HexState state,
const ut32  hi_u32,
RZ_INOUT HexInsn hi,
const ut32  addr,
HexPkt pkt 
)

◆ hexagon_disasm_0x1()

void hexagon_disasm_0x1 ( HexState state,
const ut32  hi_u32,
RZ_INOUT HexInsn hi,
const ut32  addr,
HexPkt pkt 
)

◆ hexagon_disasm_0x2()

void hexagon_disasm_0x2 ( HexState state,
const ut32  hi_u32,
RZ_INOUT HexInsn hi,
const ut32  addr,
HexPkt pkt 
)

◆ hexagon_disasm_0x3()

void hexagon_disasm_0x3 ( HexState state,
const ut32  hi_u32,
RZ_INOUT HexInsn hi,
const ut32  addr,
HexPkt pkt 
)

◆ hexagon_disasm_0x4()

void hexagon_disasm_0x4 ( HexState state,
const ut32  hi_u32,
RZ_INOUT HexInsn hi,
const ut32  addr,
HexPkt pkt 
)

◆ hexagon_disasm_0x5()

void hexagon_disasm_0x5 ( HexState state,
const ut32  hi_u32,
RZ_INOUT HexInsn hi,
const ut32  addr,
HexPkt pkt 
)

◆ hexagon_disasm_0x6()

void hexagon_disasm_0x6 ( HexState state,
const ut32  hi_u32,
RZ_INOUT HexInsn hi,
const ut32  addr,
HexPkt pkt 
)

◆ hexagon_disasm_0x7()

void hexagon_disasm_0x7 ( HexState state,
const ut32  hi_u32,
RZ_INOUT HexInsn hi,
const ut32  addr,
HexPkt pkt 
)

◆ hexagon_disasm_0x8()

void hexagon_disasm_0x8 ( HexState state,
const ut32  hi_u32,
RZ_INOUT HexInsn hi,
const ut32  addr,
HexPkt pkt 
)

◆ hexagon_disasm_0x9()

void hexagon_disasm_0x9 ( HexState state,
const ut32  hi_u32,
RZ_INOUT HexInsn hi,
const ut32  addr,
HexPkt pkt 
)

◆ hexagon_disasm_0xa()

void hexagon_disasm_0xa ( HexState state,
const ut32  hi_u32,
RZ_INOUT HexInsn hi,
const ut32  addr,
HexPkt pkt 
)

◆ hexagon_disasm_0xb()

void hexagon_disasm_0xb ( HexState state,
const ut32  hi_u32,
RZ_INOUT HexInsn hi,
const ut32  addr,
HexPkt pkt 
)

◆ hexagon_disasm_0xc()

void hexagon_disasm_0xc ( HexState state,
const ut32  hi_u32,
RZ_INOUT HexInsn hi,
const ut32  addr,
HexPkt pkt 
)

◆ hexagon_disasm_0xd()

void hexagon_disasm_0xd ( HexState state,
const ut32  hi_u32,
RZ_INOUT HexInsn hi,
const ut32  addr,
HexPkt pkt 
)

◆ hexagon_disasm_0xe()

void hexagon_disasm_0xe ( HexState state,
const ut32  hi_u32,
RZ_INOUT HexInsn hi,
const ut32  addr,
HexPkt pkt 
)

◆ hexagon_disasm_duplex_0x0()

void hexagon_disasm_duplex_0x0 ( HexState state,
const ut32  hi_u32,
RZ_INOUT HexInsn hi,
const ut32  addr,
HexPkt pkt 
)

◆ hexagon_disasm_duplex_0x1()

void hexagon_disasm_duplex_0x1 ( HexState state,
const ut32  hi_u32,
RZ_INOUT HexInsn hi,
const ut32  addr,
HexPkt pkt 
)

◆ hexagon_disasm_duplex_0x2()

void hexagon_disasm_duplex_0x2 ( HexState state,
const ut32  hi_u32,
RZ_INOUT HexInsn hi,
const ut32  addr,
HexPkt pkt 
)

◆ hexagon_disasm_duplex_0x3()

void hexagon_disasm_duplex_0x3 ( HexState state,
const ut32  hi_u32,
RZ_INOUT HexInsn hi,
const ut32  addr,
HexPkt pkt 
)

◆ hexagon_disasm_duplex_0x4()

void hexagon_disasm_duplex_0x4 ( HexState state,
const ut32  hi_u32,
RZ_INOUT HexInsn hi,
const ut32  addr,
HexPkt pkt 
)

◆ hexagon_disasm_duplex_0x5()

void hexagon_disasm_duplex_0x5 ( HexState state,
const ut32  hi_u32,
RZ_INOUT HexInsn hi,
const ut32  addr,
HexPkt pkt 
)

◆ hexagon_disasm_duplex_0x6()

void hexagon_disasm_duplex_0x6 ( HexState state,
const ut32  hi_u32,
RZ_INOUT HexInsn hi,
const ut32  addr,
HexPkt pkt 
)

◆ hexagon_disasm_duplex_0x7()

void hexagon_disasm_duplex_0x7 ( HexState state,
const ut32  hi_u32,
RZ_INOUT HexInsn hi,
const ut32  addr,
HexPkt pkt 
)

◆ hexagon_disasm_duplex_0x8()

void hexagon_disasm_duplex_0x8 ( HexState state,
const ut32  hi_u32,
RZ_INOUT HexInsn hi,
const ut32  addr,
HexPkt pkt 
)

◆ hexagon_disasm_duplex_0x9()

void hexagon_disasm_duplex_0x9 ( HexState state,
const ut32  hi_u32,
RZ_INOUT HexInsn hi,
const ut32  addr,
HexPkt pkt 
)

◆ hexagon_disasm_duplex_0xa()

void hexagon_disasm_duplex_0xa ( HexState state,
const ut32  hi_u32,
RZ_INOUT HexInsn hi,
const ut32  addr,
HexPkt pkt 
)

◆ hexagon_disasm_duplex_0xb()

void hexagon_disasm_duplex_0xb ( HexState state,
const ut32  hi_u32,
RZ_INOUT HexInsn hi,
const ut32  addr,
HexPkt pkt 
)

◆ hexagon_disasm_duplex_0xc()

void hexagon_disasm_duplex_0xc ( HexState state,
const ut32  hi_u32,
RZ_INOUT HexInsn hi,
const ut32  addr,
HexPkt pkt 
)

◆ hexagon_disasm_duplex_0xd()

void hexagon_disasm_duplex_0xd ( HexState state,
const ut32  hi_u32,
RZ_INOUT HexInsn hi,
const ut32  addr,
HexPkt pkt 
)

◆ hexagon_disasm_duplex_0xe()

void hexagon_disasm_duplex_0xe ( HexState state,
const ut32  hi_u32,
RZ_INOUT HexInsn hi,
const ut32  addr,
HexPkt pkt 
)

◆ hexagon_disasm_instruction()

int hexagon_disasm_instruction ( HexState state,
const ut32  hi_u32,
RZ_INOUT HexInsn hi,
HexPkt pkt 
)

Definition at line 53620 of file hexagon_disas.c.

53620  {
53621  ut32 addr = hi->addr;
53622  if (hi->pkt_info.last_insn) {
53623  switch (hex_get_loop_flag(pkt)) {
53624  default: break;
53625  case HEX_LOOP_01:
53626  hi->ana_op.prefix = RZ_ANALYSIS_OP_PREFIX_HWLOOP_END;
53627  hi->ana_op.fail = pkt->hw_loop0_addr;
53628  hi->ana_op.jump = pkt->hw_loop1_addr;
53629  hi->ana_op.val = hi->ana_op.jump;
53630  break;
53631  case HEX_LOOP_0:
53632  hi->ana_op.prefix = RZ_ANALYSIS_OP_PREFIX_HWLOOP_END;
53633  hi->ana_op.jump = pkt->hw_loop0_addr;
53634  hi->ana_op.val = hi->ana_op.jump;
53635  break;
53636  case HEX_LOOP_1:
53637  hi->ana_op.prefix = RZ_ANALYSIS_OP_PREFIX_HWLOOP_END;
53638  hi->ana_op.jump = pkt->hw_loop1_addr;
53639  hi->ana_op.val = hi->ana_op.jump;
53640  break;
53641  }
53642  }
53643  if (hi_u32 != 0x00000000) {
53644  if (((hi_u32 >> 14) & 0x3) == 0) {
53645  // DUPLEXES
53646  ut32 cat = (((hi_u32 >> 29) & 0xF) << 1) | ((hi_u32 >> 13) & 1);
53647  if (cat < 0xf) {
53649  hi->duplex = true;
53650  }
53651  } else {
53652  ut32 cat = (hi_u32 >> 28) & 0xF;
53654  }
53655  }
53656  if (pkt->is_eob && is_last_instr(hi->parse_bits)) {
53657  hi->ana_op.eob = true;
53658  }
53659  if (hi->instruction == HEX_INS_INVALID_DECODE) {
53660  hi->parse_bits = ((hi_u32)&0xc000) >> 14;
53661  hi->ana_op.type = RZ_ANALYSIS_OP_TYPE_ILL;
53662  sprintf(hi->mnem_infix, "invalid");
53663  sprintf(hi->mnem, "%s%s%s", hi->pkt_info.mnem_prefix, hi->mnem_infix, hi->pkt_info.mnem_postfix);
53664  }
53665 
53666  return 4;
53667 }
uint32_t ut32
RZ_API HexLoopAttr hex_get_loop_flag(const HexPkt *p)
Returns the loop type of a packet. Though only if this packet is the last packet in last packet in a ...
Definition: hexagon_arch.c:446
static const HexInsnTemplate * templates_duplex[]
static void hex_disasm_with_templates(const HexInsnTemplate *tpl, HexState *state, ut32 hi_u32, RZ_INOUT HexInsn *hi, ut64 addr, HexPkt *pkt)
static const HexInsnTemplate * templates_normal[]
static bool is_last_instr(const ut8 parse_bits)
@ HEX_INS_INVALID_DECODE
Definition: hexagon_insn.h:13
hi(addr) 0x03
sprintf
Definition: kernel.h:365
@ RZ_ANALYSIS_OP_PREFIX_HWLOOP_END
Definition: rz_analysis.h:353
@ RZ_ANALYSIS_OP_TYPE_ILL
Definition: rz_analysis.h:387
ut32 hw_loop0_addr
Definition: hexagon.h:118
bool is_eob
Definition: hexagon.h:122
ut32 hw_loop1_addr
Definition: hexagon.h:119
static int cat(char *argv[])
Definition: ziptool.c:170

References addr, cat(), hex_disasm_with_templates(), hex_get_loop_flag(), HEX_INS_INVALID_DECODE, HEX_LOOP_0, HEX_LOOP_01, HEX_LOOP_1, hi(), HexPkt::hw_loop0_addr, HexPkt::hw_loop1_addr, HexPkt::is_eob, is_last_instr(), RZ_ANALYSIS_OP_PREFIX_HWLOOP_END, RZ_ANALYSIS_OP_TYPE_ILL, sprintf, templates_duplex, and templates_normal.

Referenced by hexagon_reverse_opcode().

◆ hexagon_get_config()

RZ_API RZ_BORROW RzConfig* hexagon_get_config ( )

◆ resolve_n_register()

int resolve_n_register ( const int  reg_num,
const ut32  addr,
const HexPkt p 
)

Resolves the 3 bit value of an Nt.new reg to the general register of the producer.

Parameters
addrThe address of the current instruction.
reg_numBits of Nt.new reg.
pThe current packet.
Returns
int The number of the general register. Or UT32_MAX if any error occured.

Definition at line 878 of file hexagon.c.

878  {
879  // .new values are documented in Programmers Reference Manual
880  if (reg_num <= 1 || reg_num >= 8) {
881  return UT32_MAX;
882  }
883 
884  ut8 ahead = (reg_num >> 1);
886  if (i == UT8_MAX) {
887  return UT32_MAX;
888  }
889 
890  ut8 prod_i = i; // Producer index
891  HexInsn *hi;
892  RzListIter *it;
893  rz_list_foreach_prev(p->insn, it, hi) {
894  if (ahead == 0) {
895  break;
896  }
897  if (hi->addr < addr) {
898  if (hi->instruction == HEX_INS_A4_EXT) {
899  --prod_i;
900  continue;
901  }
902  --ahead;
903  --prod_i;
904  }
905  }
906 
907  hi = rz_list_get_n(p->insn, prod_i);
908 
909  if (!hi) {
910  return UT32_MAX;
911  }
912  if (hi->instruction == HEX_INS_A4_EXT) {
913  return UT32_MAX;
914  }
915 
916  for (ut8 i = 0; i < 6; ++i) {
917  if (hi->ops[i].attr & HEX_OP_REG_OUT) {
918  return hi->ops[i].op.reg;
919  }
920  }
921  return UT32_MAX;
922 }
lzma_index ** i
Definition: index.h:629
RZ_API ut8 hexagon_get_pkt_index_of_addr(const ut32 addr, const HexPkt *p)
Returns the index of an addr in a given packet.
Definition: hexagon_arch.c:103
@ HEX_INS_A4_EXT
Definition: hexagon_insn.h:215
uint8_t ut8
Definition: lh5801.h:11
void * p
Definition: libc.cpp:67
RZ_API RZ_BORROW void * rz_list_get_n(RZ_NONNULL const RzList *list, ut32 n)
Returns the N-th element of the list.
Definition: list.c:574
#define UT32_MAX
Definition: rz_types_base.h:99
#define UT8_MAX

References addr, HEX_INS_A4_EXT, HEX_OP_REG_OUT, hexagon_get_pkt_index_of_addr(), hi(), i, p, rz_list_get_n(), UT32_MAX, and UT8_MAX.

Referenced by hex_disasm_with_templates().