Rizin
unix-like reverse engineering framework and cli tools
aarch64.h File Reference
#include "mybfd.h"
#include <stdint.h>
#include <stdlib.h>

Go to the source code of this file.

Classes

struct  aarch64_opcode
 
struct  aarch64_name_value_pair
 
struct  aarch64_sys_reg
 
struct  aarch64_sys_ins_reg
 
struct  aarch64_cond
 
struct  aarch64_opnd_info
 
struct  aarch64_inst
 
struct  aarch64_operand_error
 

Macros

#define AARCH64_PCREL_OFFSET   0
 
#define AARCH64_FEATURE_SHA2   0x200000000ULL /* SHA2 instructions. */
 
#define AARCH64_FEATURE_AES   0x800000000ULL /* AES instructions. */
 
#define AARCH64_FEATURE_V8_4   0x000000800ULL /* ARMv8.4 processors. */
 
#define AARCH64_FEATURE_SM4   0x100000000ULL /* SM3 & SM4 instructions. */
 
#define AARCH64_FEATURE_SHA3   0x400000000ULL /* SHA3 instructions. */
 
#define AARCH64_FEATURE_V8   0x00000001 /* All processors. */
 
#define AARCH64_FEATURE_V8_2   0x00000020 /* ARMv8.2 processors. */
 
#define AARCH64_FEATURE_V8_3   0x00000040 /* ARMv8.3 processors. */
 
#define AARCH64_FEATURE_CRYPTO   0x00010000 /* Crypto instructions. */
 
#define AARCH64_FEATURE_FP   0x00020000 /* FP instructions. */
 
#define AARCH64_FEATURE_SIMD   0x00040000 /* SIMD instructions. */
 
#define AARCH64_FEATURE_CRC   0x00080000 /* CRC instructions. */
 
#define AARCH64_FEATURE_LSE   0x00100000 /* LSE instructions. */
 
#define AARCH64_FEATURE_PAN   0x00200000 /* PAN instructions. */
 
#define AARCH64_FEATURE_LOR   0x00400000 /* LOR instructions. */
 
#define AARCH64_FEATURE_RDMA   0x00800000 /* v8.1 SIMD instructions. */
 
#define AARCH64_FEATURE_V8_1   0x01000000 /* v8.1 features. */
 
#define AARCH64_FEATURE_F16   0x02000000 /* v8.2 FP16 instructions. */
 
#define AARCH64_FEATURE_RAS   0x04000000 /* RAS Extensions. */
 
#define AARCH64_FEATURE_PROFILE   0x08000000 /* Statistical Profiling. */
 
#define AARCH64_FEATURE_SVE   0x10000000 /* SVE instructions. */
 
#define AARCH64_FEATURE_RCPC   0x20000000 /* RCPC instructions. */
 
#define AARCH64_FEATURE_COMPNUM   0x40000000 /* Complex # instructions. */
 
#define AARCH64_FEATURE_DOTPROD   0x080000000 /* Dot Product instructions. */
 
#define AARCH64_FEATURE_F16_FML   0x1000000000ULL /* v8.2 FP16FML ins. */
 
#define AARCH64_ARCH_V8
 
#define AARCH64_ARCH_V8_1
 
#define AARCH64_ARCH_V8_2
 
#define AARCH64_ARCH_V8_3
 
#define AARCH64_ARCH_V8_4
 
#define AARCH64_ARCH_NONE   AARCH64_FEATURE (0, 0)
 
#define AARCH64_ANY   AARCH64_FEATURE (-1, 0) /* Any basic core. */
 
#define AARCH64_CPU_HAS_ALL_FEATURES(CPU, FEAT)    ((~(CPU) & (FEAT)) == 0)
 
#define AARCH64_CPU_HAS_ANY_FEATURES(CPU, FEAT)    (((CPU) & (FEAT)) != 0)
 
#define AARCH64_CPU_HAS_FEATURE(CPU, FEAT)    AARCH64_CPU_HAS_ALL_FEATURES (CPU,FEAT)
 
#define AARCH64_MERGE_FEATURE_SETS(TARG, F1, F2)
 
#define AARCH64_CLEAR_FEATURE(TARG, F1, F2)
 
#define AARCH64_FEATURE(core, coproc)   ((core) | (coproc))
 
#define AARCH64_MAX_OPND_NUM   6
 
#define AARCH64_MAX_QLF_SEQ_NUM   10
 
#define F_ALIAS   (1 << 0)
 
#define F_HAS_ALIAS   (1 << 1)
 
#define F_P1   (1 << 2)
 
#define F_P2   (2 << 2)
 
#define F_P3   (3 << 2)
 
#define F_COND   (1 << 4)
 
#define F_SF   (1 << 5)
 
#define F_SIZEQ   (1 << 6)
 
#define F_FPTYPE   (1 << 7)
 
#define F_SSIZE   (1 << 8)
 
#define F_T   (1 << 9)
 
#define F_GPRSIZE_IN_Q   (1 << 10)
 
#define F_LDS_SIZE   (1 << 11)
 
#define F_OPD0_OPT   (1 << 12)
 
#define F_OPD1_OPT   (2 << 12)
 
#define F_OPD2_OPT   (3 << 12)
 
#define F_OPD3_OPT   (4 << 12)
 
#define F_OPD4_OPT   (5 << 12)
 
#define F_DEFAULT(X)   (((X) & 0x1f) << 15)
 
#define F_CONV   (1 << 20)
 
#define F_PSEUDO   (1 << 21)
 
#define F_MISC   (1 << 22)
 
#define F_N   (1 << 23)
 
#define F_OD(X)   (((X) & 0x7) << 24)
 
#define F_LSE_SZ   (1 << 27)
 
#define F_STRICT   (1ULL << 28)
 
#define F_SYS_READ   (1ULL << 29)
 
#define F_SYS_WRITE   (1ULL << 30)
 
#define DEBUG_TRACE(M, ...)   ;
 
#define DEBUG_TRACE_IF(C, M, ...)   ;
 

Typedefs

typedef uint32_t aarch64_insn
 
typedef unsigned long long aarch64_feature_set
 
typedef unsigned char aarch64_opnd_qualifier_t
 
typedef aarch64_opnd_qualifier_t aarch64_opnd_qualifier_seq_t[AARCH64_MAX_OPND_NUM]
 
typedef struct aarch64_opcode aarch64_opcode
 
typedef struct aarch64_opnd_info aarch64_opnd_info
 
typedef struct aarch64_inst aarch64_inst
 
typedef struct aarch64_operand_error aarch64_operand_error
 

Enumerations

enum  aarch64_operand_class {
  AARCH64_OPND_CLASS_NIL , AARCH64_OPND_CLASS_INT_REG , AARCH64_OPND_CLASS_MODIFIED_REG , AARCH64_OPND_CLASS_FP_REG ,
  AARCH64_OPND_CLASS_SIMD_REG , AARCH64_OPND_CLASS_SIMD_ELEMENT , AARCH64_OPND_CLASS_SISD_REG , AARCH64_OPND_CLASS_SIMD_REGLIST ,
  AARCH64_OPND_CLASS_SVE_REG , AARCH64_OPND_CLASS_PRED_REG , AARCH64_OPND_CLASS_ADDRESS , AARCH64_OPND_CLASS_IMMEDIATE ,
  AARCH64_OPND_CLASS_SYSTEM , AARCH64_OPND_CLASS_COND
}
 
enum  aarch64_opnd {
  AARCH64_OPND_NIL , AARCH64_OPND_Rd , AARCH64_OPND_Rn , AARCH64_OPND_Rm ,
  AARCH64_OPND_Rt , AARCH64_OPND_Rt2 , AARCH64_OPND_Rs , AARCH64_OPND_Ra ,
  AARCH64_OPND_Rt_SYS , AARCH64_OPND_Rd_SP , AARCH64_OPND_Rn_SP , AARCH64_OPND_Rm_SP ,
  AARCH64_OPND_PAIRREG , AARCH64_OPND_Rm_EXT , AARCH64_OPND_Rm_SFT , AARCH64_OPND_Fd ,
  AARCH64_OPND_Fn , AARCH64_OPND_Fm , AARCH64_OPND_Fa , AARCH64_OPND_Ft ,
  AARCH64_OPND_Ft2 , AARCH64_OPND_Sd , AARCH64_OPND_Sn , AARCH64_OPND_Sm ,
  AARCH64_OPND_Va , AARCH64_OPND_Vd , AARCH64_OPND_Vn , AARCH64_OPND_Vm ,
  AARCH64_OPND_VdD1 , AARCH64_OPND_VnD1 , AARCH64_OPND_Ed , AARCH64_OPND_En ,
  AARCH64_OPND_Em , AARCH64_OPND_Em16 , AARCH64_OPND_LVn , AARCH64_OPND_LVt ,
  AARCH64_OPND_LVt_AL , AARCH64_OPND_LEt , AARCH64_OPND_CRn , AARCH64_OPND_CRm ,
  AARCH64_OPND_IDX , AARCH64_OPND_MASK , AARCH64_OPND_IMM_VLSL , AARCH64_OPND_IMM_VLSR ,
  AARCH64_OPND_SIMD_IMM , AARCH64_OPND_SIMD_IMM_SFT , AARCH64_OPND_SIMD_FPIMM , AARCH64_OPND_SHLL_IMM ,
  AARCH64_OPND_IMM0 , AARCH64_OPND_FPIMM0 , AARCH64_OPND_FPIMM , AARCH64_OPND_IMMR ,
  AARCH64_OPND_IMMS , AARCH64_OPND_WIDTH , AARCH64_OPND_IMM , AARCH64_OPND_IMM_2 ,
  AARCH64_OPND_UIMM3_OP1 , AARCH64_OPND_UIMM3_OP2 , AARCH64_OPND_UIMM4 , AARCH64_OPND_UIMM7 ,
  AARCH64_OPND_BIT_NUM , AARCH64_OPND_EXCEPTION , AARCH64_OPND_CCMP_IMM , AARCH64_OPND_SIMM5 ,
  AARCH64_OPND_NZCV , AARCH64_OPND_LIMM , AARCH64_OPND_AIMM , AARCH64_OPND_HALF ,
  AARCH64_OPND_FBITS , AARCH64_OPND_IMM_MOV , AARCH64_OPND_IMM_ROT1 , AARCH64_OPND_IMM_ROT2 ,
  AARCH64_OPND_IMM_ROT3 , AARCH64_OPND_COND , AARCH64_OPND_COND1 , AARCH64_OPND_ADDR_ADRP ,
  AARCH64_OPND_ADDR_PCREL14 , AARCH64_OPND_ADDR_PCREL19 , AARCH64_OPND_ADDR_PCREL21 , AARCH64_OPND_ADDR_PCREL26 ,
  AARCH64_OPND_ADDR_SIMPLE , AARCH64_OPND_ADDR_REGOFF , AARCH64_OPND_ADDR_SIMM7 , AARCH64_OPND_ADDR_SIMM9 ,
  AARCH64_OPND_ADDR_SIMM9_2 , AARCH64_OPND_ADDR_SIMM10 , AARCH64_OPND_ADDR_UIMM12 , AARCH64_OPND_SIMD_ADDR_SIMPLE ,
  AARCH64_OPND_ADDR_OFFSET , AARCH64_OPND_SIMD_ADDR_POST , AARCH64_OPND_SYSREG , AARCH64_OPND_PSTATEFIELD ,
  AARCH64_OPND_SYSREG_AT , AARCH64_OPND_SYSREG_DC , AARCH64_OPND_SYSREG_IC , AARCH64_OPND_SYSREG_TLBI ,
  AARCH64_OPND_BARRIER , AARCH64_OPND_BARRIER_ISB , AARCH64_OPND_PRFOP , AARCH64_OPND_BARRIER_PSB ,
  AARCH64_OPND_SVE_ADDR_RI_S4x16 , AARCH64_OPND_SVE_ADDR_RI_S4xVL , AARCH64_OPND_SVE_ADDR_RI_S4x2xVL , AARCH64_OPND_SVE_ADDR_RI_S4x3xVL ,
  AARCH64_OPND_SVE_ADDR_RI_S4x4xVL , AARCH64_OPND_SVE_ADDR_RI_S6xVL , AARCH64_OPND_SVE_ADDR_RI_S9xVL , AARCH64_OPND_SVE_ADDR_RI_U6 ,
  AARCH64_OPND_SVE_ADDR_RI_U6x2 , AARCH64_OPND_SVE_ADDR_RI_U6x4 , AARCH64_OPND_SVE_ADDR_RI_U6x8 , AARCH64_OPND_SVE_ADDR_R ,
  AARCH64_OPND_SVE_ADDR_RR , AARCH64_OPND_SVE_ADDR_RR_LSL1 , AARCH64_OPND_SVE_ADDR_RR_LSL2 , AARCH64_OPND_SVE_ADDR_RR_LSL3 ,
  AARCH64_OPND_SVE_ADDR_RX , AARCH64_OPND_SVE_ADDR_RX_LSL1 , AARCH64_OPND_SVE_ADDR_RX_LSL2 , AARCH64_OPND_SVE_ADDR_RX_LSL3 ,
  AARCH64_OPND_SVE_ADDR_RZ , AARCH64_OPND_SVE_ADDR_RZ_LSL1 , AARCH64_OPND_SVE_ADDR_RZ_LSL2 , AARCH64_OPND_SVE_ADDR_RZ_LSL3 ,
  AARCH64_OPND_SVE_ADDR_RZ_XTW_14 , AARCH64_OPND_SVE_ADDR_RZ_XTW_22 , AARCH64_OPND_SVE_ADDR_RZ_XTW1_14 , AARCH64_OPND_SVE_ADDR_RZ_XTW1_22 ,
  AARCH64_OPND_SVE_ADDR_RZ_XTW2_14 , AARCH64_OPND_SVE_ADDR_RZ_XTW2_22 , AARCH64_OPND_SVE_ADDR_RZ_XTW3_14 , AARCH64_OPND_SVE_ADDR_RZ_XTW3_22 ,
  AARCH64_OPND_SVE_ADDR_ZI_U5 , AARCH64_OPND_SVE_ADDR_ZI_U5x2 , AARCH64_OPND_SVE_ADDR_ZI_U5x4 , AARCH64_OPND_SVE_ADDR_ZI_U5x8 ,
  AARCH64_OPND_SVE_ADDR_ZZ_LSL , AARCH64_OPND_SVE_ADDR_ZZ_SXTW , AARCH64_OPND_SVE_ADDR_ZZ_UXTW , AARCH64_OPND_SVE_AIMM ,
  AARCH64_OPND_SVE_ASIMM , AARCH64_OPND_SVE_FPIMM8 , AARCH64_OPND_SVE_I1_HALF_ONE , AARCH64_OPND_SVE_I1_HALF_TWO ,
  AARCH64_OPND_SVE_I1_ZERO_ONE , AARCH64_OPND_SVE_IMM_ROT1 , AARCH64_OPND_SVE_IMM_ROT2 , AARCH64_OPND_SVE_INV_LIMM ,
  AARCH64_OPND_SVE_LIMM , AARCH64_OPND_SVE_LIMM_MOV , AARCH64_OPND_SVE_PATTERN , AARCH64_OPND_SVE_PATTERN_SCALED ,
  AARCH64_OPND_SVE_PRFOP , AARCH64_OPND_SVE_Pd , AARCH64_OPND_SVE_Pg3 , AARCH64_OPND_SVE_Pg4_5 ,
  AARCH64_OPND_SVE_Pg4_10 , AARCH64_OPND_SVE_Pg4_16 , AARCH64_OPND_SVE_Pm , AARCH64_OPND_SVE_Pn ,
  AARCH64_OPND_SVE_Pt , AARCH64_OPND_SVE_Rm , AARCH64_OPND_SVE_Rn_SP , AARCH64_OPND_SVE_SHLIMM_PRED ,
  AARCH64_OPND_SVE_SHLIMM_UNPRED , AARCH64_OPND_SVE_SHRIMM_PRED , AARCH64_OPND_SVE_SHRIMM_UNPRED , AARCH64_OPND_SVE_SIMM5 ,
  AARCH64_OPND_SVE_SIMM5B , AARCH64_OPND_SVE_SIMM6 , AARCH64_OPND_SVE_SIMM8 , AARCH64_OPND_SVE_UIMM3 ,
  AARCH64_OPND_SVE_UIMM7 , AARCH64_OPND_SVE_UIMM8 , AARCH64_OPND_SVE_UIMM8_53 , AARCH64_OPND_SVE_VZn ,
  AARCH64_OPND_SVE_Vd , AARCH64_OPND_SVE_Vm , AARCH64_OPND_SVE_Vn , AARCH64_OPND_SVE_Za_5 ,
  AARCH64_OPND_SVE_Za_16 , AARCH64_OPND_SVE_Zd , AARCH64_OPND_SVE_Zm_5 , AARCH64_OPND_SVE_Zm_16 ,
  AARCH64_OPND_SVE_Zm3_INDEX , AARCH64_OPND_SVE_Zm3_22_INDEX , AARCH64_OPND_SVE_Zm4_INDEX , AARCH64_OPND_SVE_Zn ,
  AARCH64_OPND_SVE_Zn_INDEX , AARCH64_OPND_SVE_ZnxN , AARCH64_OPND_SVE_Zt , AARCH64_OPND_SVE_ZtxN ,
  AARCH64_OPND_SM3_IMM2
}
 
enum  aarch64_opnd_qualifier {
  AARCH64_OPND_QLF_NIL , AARCH64_OPND_QLF_W , AARCH64_OPND_QLF_X , AARCH64_OPND_QLF_WSP ,
  AARCH64_OPND_QLF_SP , AARCH64_OPND_QLF_S_B , AARCH64_OPND_QLF_S_H , AARCH64_OPND_QLF_S_S ,
  AARCH64_OPND_QLF_S_D , AARCH64_OPND_QLF_S_Q , AARCH64_OPND_QLF_S_4B , AARCH64_OPND_QLF_V_4B ,
  AARCH64_OPND_QLF_V_8B , AARCH64_OPND_QLF_V_16B , AARCH64_OPND_QLF_V_2H , AARCH64_OPND_QLF_V_4H ,
  AARCH64_OPND_QLF_V_8H , AARCH64_OPND_QLF_V_2S , AARCH64_OPND_QLF_V_4S , AARCH64_OPND_QLF_V_1D ,
  AARCH64_OPND_QLF_V_2D , AARCH64_OPND_QLF_V_1Q , AARCH64_OPND_QLF_P_Z , AARCH64_OPND_QLF_P_M ,
  AARCH64_OPND_QLF_CR , AARCH64_OPND_QLF_imm_0_7 , AARCH64_OPND_QLF_imm_0_15 , AARCH64_OPND_QLF_imm_0_31 ,
  AARCH64_OPND_QLF_imm_0_63 , AARCH64_OPND_QLF_imm_1_32 , AARCH64_OPND_QLF_imm_1_64 , AARCH64_OPND_QLF_LSL ,
  AARCH64_OPND_QLF_MSL , AARCH64_OPND_QLF_RETRIEVE
}
 
enum  aarch64_insn_class {
  addsub_carry , addsub_ext , addsub_imm , addsub_shift ,
  asimdall , asimddiff , asimdelem , asimdext ,
  asimdimm , asimdins , asimdmisc , asimdperm ,
  asimdsame , asimdshf , asimdtbl , asisddiff ,
  asisdelem , asisdlse , asisdlsep , asisdlso ,
  asisdlsop , asisdmisc , asisdone , asisdpair ,
  asisdsame , asisdshf , bitfield , branch_imm ,
  branch_reg , compbranch , condbranch , condcmp_imm ,
  condcmp_reg , condsel , cryptoaes , cryptosha2 ,
  cryptosha3 , dp_1src , dp_2src , dp_3src ,
  exception , extract , float2fix , float2int ,
  floatccmp , floatcmp , floatdp1 , floatdp2 ,
  floatdp3 , floatimm , floatsel , ldst_immpost ,
  ldst_immpre , ldst_imm9 , ldst_imm10 , ldst_pos ,
  ldst_regoff , ldst_unpriv , ldst_unscaled , ldstexcl ,
  ldstnapair_offs , ldstpair_off , ldstpair_indexed , loadlit ,
  log_imm , log_shift , lse_atomic , movewide ,
  pcreladdr , ic_system , sve_cpy , sve_index ,
  sve_limm , sve_misc , sve_movprfx , sve_pred_zm ,
  sve_shift_pred , sve_shift_unpred , sve_size_bhs , sve_size_bhsd ,
  sve_size_hsd , sve_size_sd , testbranch , cryptosm3 ,
  cryptosm4 , dotproduct
}
 
enum  aarch64_op {
  OP_NIL , OP_STRB_POS , OP_LDRB_POS , OP_LDRSB_POS ,
  OP_STRH_POS , OP_LDRH_POS , OP_LDRSH_POS , OP_STR_POS ,
  OP_LDR_POS , OP_STRF_POS , OP_LDRF_POS , OP_LDRSW_POS ,
  OP_PRFM_POS , OP_STURB , OP_LDURB , OP_LDURSB ,
  OP_STURH , OP_LDURH , OP_LDURSH , OP_STUR ,
  OP_LDUR , OP_STURV , OP_LDURV , OP_LDURSW ,
  OP_PRFUM , OP_LDR_LIT , OP_LDRV_LIT , OP_LDRSW_LIT ,
  OP_PRFM_LIT , OP_ADD , OP_B , OP_BL ,
  OP_MOVN , OP_MOVZ , OP_MOVK , OP_MOV_IMM_LOG ,
  OP_MOV_IMM_WIDE , OP_MOV_IMM_WIDEN , OP_MOV_V , OP_ASR_IMM ,
  OP_LSR_IMM , OP_LSL_IMM , OP_BIC , OP_UBFX ,
  OP_BFXIL , OP_SBFX , OP_SBFIZ , OP_BFI ,
  OP_BFC , OP_UBFIZ , OP_UXTB , OP_UXTH ,
  OP_UXTW , OP_CINC , OP_CINV , OP_CNEG ,
  OP_CSET , OP_CSETM , OP_FCVT , OP_FCVTN ,
  OP_FCVTN2 , OP_FCVTL , OP_FCVTL2 , OP_FCVTXN_S ,
  OP_ROR_IMM , OP_SXTL , OP_SXTL2 , OP_UXTL ,
  OP_UXTL2 , OP_MOV_P_P , OP_MOV_Z_P_Z , OP_MOV_Z_V ,
  OP_MOV_Z_Z , OP_MOV_Z_Zi , OP_MOVM_P_P_P , OP_MOVS_P_P ,
  OP_MOVZS_P_P_P , OP_MOVZ_P_P_P , OP_NOTS_P_P_P_Z , OP_NOT_P_P_P_Z ,
  OP_FCMLA_ELEM , OP_TOTAL_NUM
}
 
enum  aarch64_modifier_kind {
  AARCH64_MOD_NONE , AARCH64_MOD_MSL , AARCH64_MOD_ROR , AARCH64_MOD_ASR ,
  AARCH64_MOD_LSR , AARCH64_MOD_LSL , AARCH64_MOD_UXTB , AARCH64_MOD_UXTH ,
  AARCH64_MOD_UXTW , AARCH64_MOD_UXTX , AARCH64_MOD_SXTB , AARCH64_MOD_SXTH ,
  AARCH64_MOD_SXTW , AARCH64_MOD_SXTX , AARCH64_MOD_MUL , AARCH64_MOD_MUL_VL
}
 
enum  aarch64_operand_error_kind {
  AARCH64_OPDE_NIL , AARCH64_OPDE_RECOVERABLE , AARCH64_OPDE_SYNTAX_ERROR , AARCH64_OPDE_FATAL_SYNTAX_ERROR ,
  AARCH64_OPDE_INVALID_VARIANT , AARCH64_OPDE_UNTIED_OPERAND , AARCH64_OPDE_OUT_OF_RANGE , AARCH64_OPDE_UNALIGNED ,
  AARCH64_OPDE_REG_LIST , AARCH64_OPDE_OTHER_ERROR
}
 

Functions

static bfd_boolean empty_qualifier_sequence_p (const aarch64_opnd_qualifier_t *qualifiers)
 
static bfd_boolean alias_opcode_p (const aarch64_opcode *opcode)
 
static bfd_boolean opcode_has_alias (const aarch64_opcode *opcode)
 
static int opcode_priority (const aarch64_opcode *opcode)
 
static bfd_boolean pseudo_opcode_p (const aarch64_opcode *opcode)
 
static bfd_boolean optional_operand_p (const aarch64_opcode *opcode, unsigned int idx)
 
static aarch64_insn get_optional_operand_default_value (const aarch64_opcode *opcode)
 
static unsigned int get_opcode_dependent_value (const aarch64_opcode *opcode)
 
static bfd_boolean opcode_has_special_coder (const aarch64_opcode *opcode)
 
bfd_boolean aarch64_sys_reg_deprecated_p (const aarch64_sys_reg *)
 
bfd_boolean aarch64_sys_reg_supported_p (const aarch64_feature_set, const aarch64_sys_reg *)
 
bfd_boolean aarch64_pstatefield_supported_p (const aarch64_feature_set, const aarch64_sys_reg *)
 
bfd_boolean aarch64_sys_ins_reg_has_xt (const aarch64_sys_ins_reg *)
 
bfd_boolean aarch64_sys_ins_reg_supported_p (const aarch64_feature_set, const aarch64_sys_ins_reg *)
 
bfd_boolean aarch64_extend_operator_p (enum aarch64_modifier_kind)
 
enum aarch64_modifier_kind aarch64_get_operand_modifier (const struct aarch64_name_value_pair *)
 
const aarch64_condget_cond_from_value (aarch64_insn value)
 
const aarch64_condget_inverted_cond (const aarch64_cond *cond)
 
int aarch64_opcode_encode (const aarch64_opcode *, const aarch64_inst *, aarch64_insn *, aarch64_opnd_qualifier_t *, aarch64_operand_error *)
 
const aarch64_opcodeaarch64_replace_opcode (struct aarch64_inst *, const aarch64_opcode *)
 
const aarch64_opcodeaarch64_get_opcode (enum aarch64_op)
 
void aarch64_print_operand (char *, size_t, bfd_vma, const aarch64_opcode *, const aarch64_opnd_info *, int, int *, bfd_vma *, char **)
 
int aarch64_operand_index (const enum aarch64_opnd *, enum aarch64_opnd)
 
aarch64_opnd_qualifier_t aarch64_get_expected_qualifier (const aarch64_opnd_qualifier_seq_t *, int, const aarch64_opnd_qualifier_t, int)
 
int aarch64_num_of_operands (const aarch64_opcode *)
 
int aarch64_stack_pointer_p (const aarch64_opnd_info *)
 
int aarch64_zero_register_p (const aarch64_opnd_info *)
 
int aarch64_decode_insn (aarch64_insn, aarch64_inst *, bfd_boolean, aarch64_operand_error *errors)
 
unsigned char aarch64_get_qualifier_esize (aarch64_opnd_qualifier_t)
 
enum aarch64_operand_class aarch64_get_operand_class (enum aarch64_opnd)
 
const char * aarch64_get_operand_name (enum aarch64_opnd)
 
const char * aarch64_get_operand_desc (enum aarch64_opnd)
 
bfd_boolean aarch64_sve_dupm_mov_immediate_p (uint64_t, int)
 

Variables

aarch64_opcode aarch64_opcode_table []
 
const struct aarch64_name_value_pair aarch64_operand_modifiers []
 
const struct aarch64_name_value_pair aarch64_barrier_options [16]
 
const struct aarch64_name_value_pair aarch64_prfops [32]
 
const struct aarch64_name_value_pair aarch64_hint_options []
 
const aarch64_sys_reg aarch64_sys_regs []
 
const aarch64_sys_reg aarch64_pstatefields []
 
const aarch64_sys_ins_reg aarch64_sys_regs_ic []
 
const aarch64_sys_ins_reg aarch64_sys_regs_dc []
 
const aarch64_sys_ins_reg aarch64_sys_regs_at []
 
const aarch64_sys_ins_reg aarch64_sys_regs_tlbi []
 
const aarch64_cond aarch64_conds [16]
 
const char *const aarch64_sve_pattern_array [32]
 
const char *const aarch64_sve_prfop_array [16]
 

Macro Definition Documentation

◆ AARCH64_ANY

#define AARCH64_ANY   AARCH64_FEATURE (-1, 0) /* Any basic core. */

Definition at line 93 of file aarch64.h.

◆ AARCH64_ARCH_NONE

#define AARCH64_ARCH_NONE   AARCH64_FEATURE (0, 0)

Definition at line 92 of file aarch64.h.

◆ AARCH64_ARCH_V8

#define AARCH64_ARCH_V8
Value:
#define AARCH64_FEATURE_V8
Definition: aarch64.h:48
#define AARCH64_FEATURE_FP
Definition: aarch64.h:52
#define AARCH64_FEATURE(core, coproc)
Definition: aarch64.h:121
#define AARCH64_FEATURE_SIMD
Definition: aarch64.h:53

Definition at line 70 of file aarch64.h.

◆ AARCH64_ARCH_V8_1

#define AARCH64_ARCH_V8_1
Value:
#define AARCH64_FEATURE_CRC
Definition: aarch64.h:54
#define AARCH64_FEATURE_PAN
Definition: aarch64.h:56
#define AARCH64_FEATURE_RDMA
Definition: aarch64.h:58
#define AARCH64_FEATURE_LOR
Definition: aarch64.h:57
#define AARCH64_FEATURE_LSE
Definition: aarch64.h:55
#define AARCH64_ARCH_V8
Definition: aarch64.h:70
#define AARCH64_FEATURE_V8_1
Definition: aarch64.h:59

Definition at line 73 of file aarch64.h.

◆ AARCH64_ARCH_V8_2

#define AARCH64_ARCH_V8_2
Value:
#define AARCH64_ARCH_V8_1
Definition: aarch64.h:73
#define AARCH64_FEATURE_V8_2
Definition: aarch64.h:49
#define AARCH64_FEATURE_RAS
Definition: aarch64.h:61

Definition at line 80 of file aarch64.h.

◆ AARCH64_ARCH_V8_3

#define AARCH64_ARCH_V8_3
Value:
#define AARCH64_FEATURE_RCPC
Definition: aarch64.h:64
#define AARCH64_FEATURE_COMPNUM
Definition: aarch64.h:65
#define AARCH64_ARCH_V8_2
Definition: aarch64.h:80
#define AARCH64_FEATURE_V8_3
Definition: aarch64.h:50

Definition at line 83 of file aarch64.h.

◆ AARCH64_ARCH_V8_4

#define AARCH64_ARCH_V8_4
Value:
#define AARCH64_ARCH_V8_3
Definition: aarch64.h:83
#define AARCH64_FEATURE_DOTPROD
Definition: aarch64.h:66
#define AARCH64_FEATURE_F16_FML
Definition: aarch64.h:67
#define AARCH64_FEATURE_V8_4
Definition: aarch64.h:45

Definition at line 87 of file aarch64.h.

◆ AARCH64_CLEAR_FEATURE

#define AARCH64_CLEAR_FEATURE (   TARG,
  F1,
  F2 
)
Value:
do \
{ \
(TARG) = (F1) &~ (F2); \
} \
while (0)
#define F2(x, y)
Definition: sparc.h:198
#define F1(x)
Definition: sparc.h:200

Definition at line 114 of file aarch64.h.

◆ AARCH64_CPU_HAS_ALL_FEATURES

#define AARCH64_CPU_HAS_ALL_FEATURES (   CPU,
  FEAT 
)     ((~(CPU) & (FEAT)) == 0)

Definition at line 98 of file aarch64.h.

◆ AARCH64_CPU_HAS_ANY_FEATURES

#define AARCH64_CPU_HAS_ANY_FEATURES (   CPU,
  FEAT 
)     (((CPU) & (FEAT)) != 0)

Definition at line 101 of file aarch64.h.

◆ AARCH64_CPU_HAS_FEATURE

#define AARCH64_CPU_HAS_FEATURE (   CPU,
  FEAT 
)     AARCH64_CPU_HAS_ALL_FEATURES (CPU,FEAT)

Definition at line 104 of file aarch64.h.

◆ AARCH64_FEATURE

#define AARCH64_FEATURE (   core,
  coproc 
)    ((core) | (coproc))

Definition at line 121 of file aarch64.h.

◆ AARCH64_FEATURE_AES

#define AARCH64_FEATURE_AES   0x800000000ULL /* AES instructions. */

Definition at line 44 of file aarch64.h.

◆ AARCH64_FEATURE_COMPNUM

#define AARCH64_FEATURE_COMPNUM   0x40000000 /* Complex # instructions. */

Definition at line 65 of file aarch64.h.

◆ AARCH64_FEATURE_CRC

#define AARCH64_FEATURE_CRC   0x00080000 /* CRC instructions. */

Definition at line 54 of file aarch64.h.

◆ AARCH64_FEATURE_CRYPTO

#define AARCH64_FEATURE_CRYPTO   0x00010000 /* Crypto instructions. */

Definition at line 51 of file aarch64.h.

◆ AARCH64_FEATURE_DOTPROD

#define AARCH64_FEATURE_DOTPROD   0x080000000 /* Dot Product instructions. */

Definition at line 66 of file aarch64.h.

◆ AARCH64_FEATURE_F16

#define AARCH64_FEATURE_F16   0x02000000 /* v8.2 FP16 instructions. */

Definition at line 60 of file aarch64.h.

◆ AARCH64_FEATURE_F16_FML

#define AARCH64_FEATURE_F16_FML   0x1000000000ULL /* v8.2 FP16FML ins. */

Definition at line 67 of file aarch64.h.

◆ AARCH64_FEATURE_FP

#define AARCH64_FEATURE_FP   0x00020000 /* FP instructions. */

Definition at line 52 of file aarch64.h.

◆ AARCH64_FEATURE_LOR

#define AARCH64_FEATURE_LOR   0x00400000 /* LOR instructions. */

Definition at line 57 of file aarch64.h.

◆ AARCH64_FEATURE_LSE

#define AARCH64_FEATURE_LSE   0x00100000 /* LSE instructions. */

Definition at line 55 of file aarch64.h.

◆ AARCH64_FEATURE_PAN

#define AARCH64_FEATURE_PAN   0x00200000 /* PAN instructions. */

Definition at line 56 of file aarch64.h.

◆ AARCH64_FEATURE_PROFILE

#define AARCH64_FEATURE_PROFILE   0x08000000 /* Statistical Profiling. */

Definition at line 62 of file aarch64.h.

◆ AARCH64_FEATURE_RAS

#define AARCH64_FEATURE_RAS   0x04000000 /* RAS Extensions. */

Definition at line 61 of file aarch64.h.

◆ AARCH64_FEATURE_RCPC

#define AARCH64_FEATURE_RCPC   0x20000000 /* RCPC instructions. */

Definition at line 64 of file aarch64.h.

◆ AARCH64_FEATURE_RDMA

#define AARCH64_FEATURE_RDMA   0x00800000 /* v8.1 SIMD instructions. */

Definition at line 58 of file aarch64.h.

◆ AARCH64_FEATURE_SHA2

#define AARCH64_FEATURE_SHA2   0x200000000ULL /* SHA2 instructions. */

Definition at line 43 of file aarch64.h.

◆ AARCH64_FEATURE_SHA3

#define AARCH64_FEATURE_SHA3   0x400000000ULL /* SHA3 instructions. */

Definition at line 47 of file aarch64.h.

◆ AARCH64_FEATURE_SIMD

#define AARCH64_FEATURE_SIMD   0x00040000 /* SIMD instructions. */

Definition at line 53 of file aarch64.h.

◆ AARCH64_FEATURE_SM4

#define AARCH64_FEATURE_SM4   0x100000000ULL /* SM3 & SM4 instructions. */

Definition at line 46 of file aarch64.h.

◆ AARCH64_FEATURE_SVE

#define AARCH64_FEATURE_SVE   0x10000000 /* SVE instructions. */

Definition at line 63 of file aarch64.h.

◆ AARCH64_FEATURE_V8

#define AARCH64_FEATURE_V8   0x00000001 /* All processors. */

Definition at line 48 of file aarch64.h.

◆ AARCH64_FEATURE_V8_1

#define AARCH64_FEATURE_V8_1   0x01000000 /* v8.1 features. */

Definition at line 59 of file aarch64.h.

◆ AARCH64_FEATURE_V8_2

#define AARCH64_FEATURE_V8_2   0x00000020 /* ARMv8.2 processors. */

Definition at line 49 of file aarch64.h.

◆ AARCH64_FEATURE_V8_3

#define AARCH64_FEATURE_V8_3   0x00000040 /* ARMv8.3 processors. */

Definition at line 50 of file aarch64.h.

◆ AARCH64_FEATURE_V8_4

#define AARCH64_FEATURE_V8_4   0x000000800ULL /* ARMv8.4 processors. */

Definition at line 45 of file aarch64.h.

◆ AARCH64_MAX_OPND_NUM

#define AARCH64_MAX_OPND_NUM   6

Definition at line 648 of file aarch64.h.

◆ AARCH64_MAX_QLF_SEQ_NUM

#define AARCH64_MAX_QLF_SEQ_NUM   10

Definition at line 650 of file aarch64.h.

◆ AARCH64_MERGE_FEATURE_SETS

#define AARCH64_MERGE_FEATURE_SETS (   TARG,
  F1,
  F2 
)
Value:
do \
{ \
(TARG) = (F1) | (F2); \
} \
while (0)

Definition at line 107 of file aarch64.h.

◆ AARCH64_PCREL_OFFSET

#define AARCH64_PCREL_OFFSET   0

Definition at line 38 of file aarch64.h.

◆ DEBUG_TRACE

#define DEBUG_TRACE (   M,
  ... 
)    ;

Definition at line 1198 of file aarch64.h.

◆ DEBUG_TRACE_IF

#define DEBUG_TRACE_IF (   C,
  M,
  ... 
)    ;

Definition at line 1199 of file aarch64.h.

◆ F_ALIAS

#define F_ALIAS   (1 << 0)

Definition at line 722 of file aarch64.h.

◆ F_COND

#define F_COND   (1 << 4)

Definition at line 730 of file aarch64.h.

◆ F_CONV

#define F_CONV   (1 << 20)

Definition at line 758 of file aarch64.h.

◆ F_DEFAULT

#define F_DEFAULT (   X)    (((X) & 0x1f) << 15)

Definition at line 752 of file aarch64.h.

◆ F_FPTYPE

#define F_FPTYPE   (1 << 7)

Definition at line 736 of file aarch64.h.

◆ F_GPRSIZE_IN_Q

#define F_GPRSIZE_IN_Q   (1 << 10)

Definition at line 742 of file aarch64.h.

◆ F_HAS_ALIAS

#define F_HAS_ALIAS   (1 << 1)

Definition at line 723 of file aarch64.h.

◆ F_LDS_SIZE

#define F_LDS_SIZE   (1 << 11)

Definition at line 744 of file aarch64.h.

◆ F_LSE_SZ

#define F_LSE_SZ   (1 << 27)

Definition at line 770 of file aarch64.h.

◆ F_MISC

#define F_MISC   (1 << 22)

Definition at line 764 of file aarch64.h.

◆ F_N

#define F_N   (1 << 23)

Definition at line 766 of file aarch64.h.

◆ F_OD

#define F_OD (   X)    (((X) & 0x7) << 24)

Definition at line 768 of file aarch64.h.

◆ F_OPD0_OPT

#define F_OPD0_OPT   (1 << 12)

Definition at line 746 of file aarch64.h.

◆ F_OPD1_OPT

#define F_OPD1_OPT   (2 << 12)

Definition at line 747 of file aarch64.h.

◆ F_OPD2_OPT

#define F_OPD2_OPT   (3 << 12)

Definition at line 748 of file aarch64.h.

◆ F_OPD3_OPT

#define F_OPD3_OPT   (4 << 12)

Definition at line 749 of file aarch64.h.

◆ F_OPD4_OPT

#define F_OPD4_OPT   (5 << 12)

Definition at line 750 of file aarch64.h.

◆ F_P1

#define F_P1   (1 << 2)

Definition at line 726 of file aarch64.h.

◆ F_P2

#define F_P2   (2 << 2)

Definition at line 727 of file aarch64.h.

◆ F_P3

#define F_P3   (3 << 2)

Definition at line 728 of file aarch64.h.

◆ F_PSEUDO

#define F_PSEUDO   (1 << 21)

Definition at line 762 of file aarch64.h.

◆ F_SF

#define F_SF   (1 << 5)

Definition at line 732 of file aarch64.h.

◆ F_SIZEQ

#define F_SIZEQ   (1 << 6)

Definition at line 734 of file aarch64.h.

◆ F_SSIZE

#define F_SSIZE   (1 << 8)

Definition at line 738 of file aarch64.h.

◆ F_STRICT

#define F_STRICT   (1ULL << 28)

Definition at line 772 of file aarch64.h.

◆ F_SYS_READ

#define F_SYS_READ   (1ULL << 29)

Definition at line 774 of file aarch64.h.

◆ F_SYS_WRITE

#define F_SYS_WRITE   (1ULL << 30)

Definition at line 776 of file aarch64.h.

◆ F_T

#define F_T   (1 << 9)

Definition at line 740 of file aarch64.h.

Typedef Documentation

◆ aarch64_feature_set

Definition at line 96 of file aarch64.h.

◆ aarch64_insn

Definition at line 40 of file aarch64.h.

◆ aarch64_inst

typedef struct aarch64_inst aarch64_inst

Definition at line 914 of file aarch64.h.

◆ aarch64_opcode

Definition at line 659 of file aarch64.h.

◆ aarch64_operand_error

Definition at line 914 of file aarch64.h.

◆ aarch64_opnd_info

Definition at line 914 of file aarch64.h.

◆ aarch64_opnd_qualifier_seq_t

typedef aarch64_opnd_qualifier_t aarch64_opnd_qualifier_seq_t[AARCH64_MAX_OPND_NUM]

Definition at line 655 of file aarch64.h.

◆ aarch64_opnd_qualifier_t

Definition at line 652 of file aarch64.h.

Enumeration Type Documentation

◆ aarch64_insn_class

Enumerator
addsub_carry 
addsub_ext 
addsub_imm 
addsub_shift 
asimdall 
asimddiff 
asimdelem 
asimdext 
asimdimm 
asimdins 
asimdmisc 
asimdperm 
asimdsame 
asimdshf 
asimdtbl 
asisddiff 
asisdelem 
asisdlse 
asisdlsep 
asisdlso 
asisdlsop 
asisdmisc 
asisdone 
asisdpair 
asisdsame 
asisdshf 
bitfield 
branch_imm 
branch_reg 
compbranch 
condbranch 
condcmp_imm 
condcmp_reg 
condsel 
cryptoaes 
cryptosha2 
cryptosha3 
dp_1src 
dp_2src 
dp_3src 
exception 
extract 
float2fix 
float2int 
floatccmp 
floatcmp 
floatdp1 
floatdp2 
floatdp3 
floatimm 
floatsel 
ldst_immpost 
ldst_immpre 
ldst_imm9 
ldst_imm10 
ldst_pos 
ldst_regoff 
ldst_unpriv 
ldst_unscaled 
ldstexcl 
ldstnapair_offs 
ldstpair_off 
ldstpair_indexed 
loadlit 
log_imm 
log_shift 
lse_atomic 
movewide 
pcreladdr 
ic_system 
sve_cpy 
sve_index 
sve_limm 
sve_misc 
sve_movprfx 
sve_pred_zm 
sve_shift_pred 
sve_shift_unpred 
sve_size_bhs 
sve_size_bhsd 
sve_size_hsd 
sve_size_sd 
testbranch 
cryptosm3 
cryptosm4 
dotproduct 

Definition at line 453 of file aarch64.h.

454 {
455  addsub_carry,
456  addsub_ext,
457  addsub_imm,
458  addsub_shift,
459  asimdall,
460  asimddiff,
461  asimdelem,
462  asimdext,
463  asimdimm,
464  asimdins,
465  asimdmisc,
466  asimdperm,
467  asimdsame,
468  asimdshf,
469  asimdtbl,
470  asisddiff,
471  asisdelem,
472  asisdlse,
473  asisdlsep,
474  asisdlso,
475  asisdlsop,
476  asisdmisc,
477  asisdone,
478  asisdpair,
479  asisdsame,
480  asisdshf,
481  bitfield,
482  branch_imm,
483  branch_reg,
484  compbranch,
485  condbranch,
486  condcmp_imm,
487  condcmp_reg,
488  condsel,
489  cryptoaes,
490  cryptosha2,
491  cryptosha3,
492  dp_1src,
493  dp_2src,
494  dp_3src,
495  exception,
496  extract,
497  float2fix,
498  float2int,
499  floatccmp,
500  floatcmp,
501  floatdp1,
502  floatdp2,
503  floatdp3,
504  floatimm,
505  floatsel,
506  ldst_immpost,
507  ldst_immpre,
508  ldst_imm9, /* immpost or immpre */
509  ldst_imm10, /* LDRAA/LDRAB */
510  ldst_pos,
511  ldst_regoff,
512  ldst_unpriv,
514  ldstexcl,
516  ldstpair_off,
518  loadlit,
519  log_imm,
520  log_shift,
521  lse_atomic,
522  movewide,
523  pcreladdr,
524  ic_system,
525  sve_cpy,
526  sve_index,
527  sve_limm,
528  sve_misc,
529  sve_movprfx,
530  sve_pred_zm,
533  sve_size_bhs,
535  sve_size_hsd,
536  sve_size_sd,
537  testbranch,
538  cryptosm3,
539  cryptosm4,
540  dotproduct,
541 };
@ asimdtbl
Definition: aarch64.h:469
@ sve_size_hsd
Definition: aarch64.h:535
@ ldst_unscaled
Definition: aarch64.h:513
@ floatsel
Definition: aarch64.h:505
@ log_shift
Definition: aarch64.h:520
@ loadlit
Definition: aarch64.h:518
@ sve_movprfx
Definition: aarch64.h:529
@ asisdsame
Definition: aarch64.h:479
@ ldst_imm9
Definition: aarch64.h:508
@ asimddiff
Definition: aarch64.h:460
@ ldst_immpre
Definition: aarch64.h:507
@ condcmp_reg
Definition: aarch64.h:487
@ asisdpair
Definition: aarch64.h:478
@ asisdmisc
Definition: aarch64.h:476
@ branch_imm
Definition: aarch64.h:482
@ ldstpair_off
Definition: aarch64.h:516
@ ldstpair_indexed
Definition: aarch64.h:517
@ pcreladdr
Definition: aarch64.h:523
@ cryptosha3
Definition: aarch64.h:491
@ asisdlsep
Definition: aarch64.h:473
@ asimdmisc
Definition: aarch64.h:465
@ condbranch
Definition: aarch64.h:485
@ floatimm
Definition: aarch64.h:504
@ floatdp1
Definition: aarch64.h:501
@ ldst_regoff
Definition: aarch64.h:511
@ sve_cpy
Definition: aarch64.h:525
@ asisddiff
Definition: aarch64.h:470
@ compbranch
Definition: aarch64.h:484
@ asimdshf
Definition: aarch64.h:468
@ exception
Definition: aarch64.h:495
@ asimdsame
Definition: aarch64.h:467
@ addsub_carry
Definition: aarch64.h:455
@ floatdp2
Definition: aarch64.h:502
@ floatccmp
Definition: aarch64.h:499
@ ldstnapair_offs
Definition: aarch64.h:515
@ cryptoaes
Definition: aarch64.h:489
@ asisdlse
Definition: aarch64.h:472
@ lse_atomic
Definition: aarch64.h:521
@ asisdelem
Definition: aarch64.h:471
@ log_imm
Definition: aarch64.h:519
@ ldst_immpost
Definition: aarch64.h:506
@ ldstexcl
Definition: aarch64.h:514
@ asimdimm
Definition: aarch64.h:463
@ cryptosm3
Definition: aarch64.h:538
@ cryptosha2
Definition: aarch64.h:490
@ asimdins
Definition: aarch64.h:464
@ sve_misc
Definition: aarch64.h:528
@ sve_size_sd
Definition: aarch64.h:536
@ asimdelem
Definition: aarch64.h:461
@ floatcmp
Definition: aarch64.h:500
@ floatdp3
Definition: aarch64.h:503
@ sve_size_bhsd
Definition: aarch64.h:534
@ dp_2src
Definition: aarch64.h:493
@ ldst_pos
Definition: aarch64.h:510
@ sve_limm
Definition: aarch64.h:527
@ asisdone
Definition: aarch64.h:477
@ addsub_shift
Definition: aarch64.h:458
@ asisdlso
Definition: aarch64.h:474
@ sve_index
Definition: aarch64.h:526
@ bitfield
Definition: aarch64.h:481
@ sve_size_bhs
Definition: aarch64.h:533
@ ldst_imm10
Definition: aarch64.h:509
@ asisdlsop
Definition: aarch64.h:475
@ dp_3src
Definition: aarch64.h:494
@ sve_shift_pred
Definition: aarch64.h:531
@ condcmp_imm
Definition: aarch64.h:486
@ sve_shift_unpred
Definition: aarch64.h:532
@ testbranch
Definition: aarch64.h:537
@ extract
Definition: aarch64.h:496
@ cryptosm4
Definition: aarch64.h:539
@ asimdext
Definition: aarch64.h:462
@ float2fix
Definition: aarch64.h:497
@ sve_pred_zm
Definition: aarch64.h:530
@ asimdperm
Definition: aarch64.h:466
@ ic_system
Definition: aarch64.h:524
@ float2int
Definition: aarch64.h:498
@ branch_reg
Definition: aarch64.h:483
@ ldst_unpriv
Definition: aarch64.h:512
@ dotproduct
Definition: aarch64.h:540
@ condsel
Definition: aarch64.h:488
@ movewide
Definition: aarch64.h:522
@ asimdall
Definition: aarch64.h:459
@ addsub_imm
Definition: aarch64.h:457
@ addsub_ext
Definition: aarch64.h:456
@ asisdshf
Definition: aarch64.h:480
@ dp_1src
Definition: aarch64.h:492

◆ aarch64_modifier_kind

Enumerator
AARCH64_MOD_NONE 
AARCH64_MOD_MSL 
AARCH64_MOD_ROR 
AARCH64_MOD_ASR 
AARCH64_MOD_LSR 
AARCH64_MOD_LSL 
AARCH64_MOD_UXTB 
AARCH64_MOD_UXTH 
AARCH64_MOD_UXTW 
AARCH64_MOD_UXTX 
AARCH64_MOD_SXTB 
AARCH64_MOD_SXTH 
AARCH64_MOD_SXTW 
AARCH64_MOD_SXTX 
AARCH64_MOD_MUL 
AARCH64_MOD_MUL_VL 

Definition at line 876 of file aarch64.h.

877 {
894 };
@ AARCH64_MOD_LSR
Definition: aarch64.h:882
@ AARCH64_MOD_NONE
Definition: aarch64.h:878
@ AARCH64_MOD_SXTH
Definition: aarch64.h:889
@ AARCH64_MOD_SXTB
Definition: aarch64.h:888
@ AARCH64_MOD_UXTH
Definition: aarch64.h:885
@ AARCH64_MOD_SXTW
Definition: aarch64.h:890
@ AARCH64_MOD_ASR
Definition: aarch64.h:881
@ AARCH64_MOD_ROR
Definition: aarch64.h:880
@ AARCH64_MOD_SXTX
Definition: aarch64.h:891
@ AARCH64_MOD_UXTW
Definition: aarch64.h:886
@ AARCH64_MOD_LSL
Definition: aarch64.h:883
@ AARCH64_MOD_UXTX
Definition: aarch64.h:887
@ AARCH64_MOD_MUL
Definition: aarch64.h:892
@ AARCH64_MOD_MSL
Definition: aarch64.h:879
@ AARCH64_MOD_UXTB
Definition: aarch64.h:884
@ AARCH64_MOD_MUL_VL
Definition: aarch64.h:893

◆ aarch64_op

enum aarch64_op
Enumerator
OP_NIL 
OP_STRB_POS 
OP_LDRB_POS 
OP_LDRSB_POS 
OP_STRH_POS 
OP_LDRH_POS 
OP_LDRSH_POS 
OP_STR_POS 
OP_LDR_POS 
OP_STRF_POS 
OP_LDRF_POS 
OP_LDRSW_POS 
OP_PRFM_POS 
OP_STURB 
OP_LDURB 
OP_LDURSB 
OP_STURH 
OP_LDURH 
OP_LDURSH 
OP_STUR 
OP_LDUR 
OP_STURV 
OP_LDURV 
OP_LDURSW 
OP_PRFUM 
OP_LDR_LIT 
OP_LDRV_LIT 
OP_LDRSW_LIT 
OP_PRFM_LIT 
OP_ADD 
OP_B 
OP_BL 
OP_MOVN 
OP_MOVZ 
OP_MOVK 
OP_MOV_IMM_LOG 
OP_MOV_IMM_WIDE 
OP_MOV_IMM_WIDEN 
OP_MOV_V 
OP_ASR_IMM 
OP_LSR_IMM 
OP_LSL_IMM 
OP_BIC 
OP_UBFX 
OP_BFXIL 
OP_SBFX 
OP_SBFIZ 
OP_BFI 
OP_BFC 
OP_UBFIZ 
OP_UXTB 
OP_UXTH 
OP_UXTW 
OP_CINC 
OP_CINV 
OP_CNEG 
OP_CSET 
OP_CSETM 
OP_FCVT 
OP_FCVTN 
OP_FCVTN2 
OP_FCVTL 
OP_FCVTL2 
OP_FCVTXN_S 
OP_ROR_IMM 
OP_SXTL 
OP_SXTL2 
OP_UXTL 
OP_UXTL2 
OP_MOV_P_P 
OP_MOV_Z_P_Z 
OP_MOV_Z_V 
OP_MOV_Z_Z 
OP_MOV_Z_Zi 
OP_MOVM_P_P_P 
OP_MOVS_P_P 
OP_MOVZS_P_P_P 
OP_MOVZ_P_P_P 
OP_NOTS_P_P_P_Z 
OP_NOT_P_P_P_Z 
OP_FCMLA_ELEM 
OP_TOTAL_NUM 

Definition at line 545 of file aarch64.h.

546 {
547  OP_NIL,
548  OP_STRB_POS,
549  OP_LDRB_POS,
550  OP_LDRSB_POS,
551  OP_STRH_POS,
552  OP_LDRH_POS,
553  OP_LDRSH_POS,
554  OP_STR_POS,
555  OP_LDR_POS,
556  OP_STRF_POS,
557  OP_LDRF_POS,
558  OP_LDRSW_POS,
559  OP_PRFM_POS,
560 
561  OP_STURB,
562  OP_LDURB,
563  OP_LDURSB,
564  OP_STURH,
565  OP_LDURH,
566  OP_LDURSH,
567  OP_STUR,
568  OP_LDUR,
569  OP_STURV,
570  OP_LDURV,
571  OP_LDURSW,
572  OP_PRFUM,
573 
574  OP_LDR_LIT,
575  OP_LDRV_LIT,
576  OP_LDRSW_LIT,
577  OP_PRFM_LIT,
578 
579  OP_ADD,
580  OP_B,
581  OP_BL,
582 
583  OP_MOVN,
584  OP_MOVZ,
585  OP_MOVK,
586 
587  OP_MOV_IMM_LOG, /* MOV alias for moving bitmask immediate. */
588  OP_MOV_IMM_WIDE, /* MOV alias for moving wide immediate. */
589  OP_MOV_IMM_WIDEN, /* MOV alias for moving wide immediate (negated). */
590 
591  OP_MOV_V, /* MOV alias for moving vector register. */
592 
593  OP_ASR_IMM,
594  OP_LSR_IMM,
595  OP_LSL_IMM,
596 
597  OP_BIC,
598 
599  OP_UBFX,
600  OP_BFXIL,
601  OP_SBFX,
602  OP_SBFIZ,
603  OP_BFI,
604  OP_BFC, /* ARMv8.2. */
605  OP_UBFIZ,
606  OP_UXTB,
607  OP_UXTH,
608  OP_UXTW,
609 
610  OP_CINC,
611  OP_CINV,
612  OP_CNEG,
613  OP_CSET,
614  OP_CSETM,
615 
616  OP_FCVT,
617  OP_FCVTN,
618  OP_FCVTN2,
619  OP_FCVTL,
620  OP_FCVTL2,
621  OP_FCVTXN_S, /* Scalar version. */
622 
623  OP_ROR_IMM,
624 
625  OP_SXTL,
626  OP_SXTL2,
627  OP_UXTL,
628  OP_UXTL2,
629 
630  OP_MOV_P_P,
631  OP_MOV_Z_P_Z,
632  OP_MOV_Z_V,
633  OP_MOV_Z_Z,
634  OP_MOV_Z_Zi,
636  OP_MOVS_P_P,
641 
642  OP_FCMLA_ELEM, /* ARMv8.3, indexed element version. */
643 
644  OP_TOTAL_NUM, /* Pseudo. */
645 };
@ OP_LDURH
Definition: aarch64.h:565
@ OP_PRFM_LIT
Definition: aarch64.h:577
@ OP_SXTL2
Definition: aarch64.h:626
@ OP_STURV
Definition: aarch64.h:569
@ OP_MOVM_P_P_P
Definition: aarch64.h:635
@ OP_FCMLA_ELEM
Definition: aarch64.h:642
@ OP_SXTL
Definition: aarch64.h:625
@ OP_STRB_POS
Definition: aarch64.h:548
@ OP_MOVN
Definition: aarch64.h:583
@ OP_FCVTXN_S
Definition: aarch64.h:621
@ OP_NOTS_P_P_P_Z
Definition: aarch64.h:639
@ OP_LDURSH
Definition: aarch64.h:566
@ OP_PRFM_POS
Definition: aarch64.h:559
@ OP_FCVTN2
Definition: aarch64.h:618
@ OP_STR_POS
Definition: aarch64.h:554
@ OP_STURB
Definition: aarch64.h:561
@ OP_BFC
Definition: aarch64.h:604
@ OP_UXTL
Definition: aarch64.h:627
@ OP_ASR_IMM
Definition: aarch64.h:593
@ OP_UXTB
Definition: aarch64.h:606
@ OP_FCVT
Definition: aarch64.h:616
@ OP_TOTAL_NUM
Definition: aarch64.h:644
@ OP_SBFX
Definition: aarch64.h:601
@ OP_STRF_POS
Definition: aarch64.h:556
@ OP_LDRSH_POS
Definition: aarch64.h:553
@ OP_BFXIL
Definition: aarch64.h:600
@ OP_LDUR
Definition: aarch64.h:568
@ OP_UXTL2
Definition: aarch64.h:628
@ OP_UXTW
Definition: aarch64.h:608
@ OP_B
Definition: aarch64.h:580
@ OP_LDRV_LIT
Definition: aarch64.h:575
@ OP_LDURSB
Definition: aarch64.h:563
@ OP_LDR_LIT
Definition: aarch64.h:574
@ OP_ROR_IMM
Definition: aarch64.h:623
@ OP_NIL
Definition: aarch64.h:547
@ OP_STRH_POS
Definition: aarch64.h:551
@ OP_LDRB_POS
Definition: aarch64.h:549
@ OP_LSL_IMM
Definition: aarch64.h:595
@ OP_NOT_P_P_P_Z
Definition: aarch64.h:640
@ OP_MOVS_P_P
Definition: aarch64.h:636
@ OP_STUR
Definition: aarch64.h:567
@ OP_LDURB
Definition: aarch64.h:562
@ OP_MOV_Z_Z
Definition: aarch64.h:633
@ OP_MOV_V
Definition: aarch64.h:591
@ OP_MOV_IMM_WIDEN
Definition: aarch64.h:589
@ OP_UBFIZ
Definition: aarch64.h:605
@ OP_LDR_POS
Definition: aarch64.h:555
@ OP_ADD
Definition: aarch64.h:579
@ OP_LSR_IMM
Definition: aarch64.h:594
@ OP_LDURSW
Definition: aarch64.h:571
@ OP_MOV_Z_P_Z
Definition: aarch64.h:631
@ OP_MOV_IMM_LOG
Definition: aarch64.h:587
@ OP_CSETM
Definition: aarch64.h:614
@ OP_LDRSW_POS
Definition: aarch64.h:558
@ OP_CINC
Definition: aarch64.h:610
@ OP_SBFIZ
Definition: aarch64.h:602
@ OP_STURH
Definition: aarch64.h:564
@ OP_BIC
Definition: aarch64.h:597
@ OP_FCVTN
Definition: aarch64.h:617
@ OP_BL
Definition: aarch64.h:581
@ OP_LDRF_POS
Definition: aarch64.h:557
@ OP_BFI
Definition: aarch64.h:603
@ OP_UXTH
Definition: aarch64.h:607
@ OP_MOV_Z_Zi
Definition: aarch64.h:634
@ OP_CNEG
Definition: aarch64.h:612
@ OP_FCVTL2
Definition: aarch64.h:620
@ OP_LDRSW_LIT
Definition: aarch64.h:576
@ OP_MOVZ_P_P_P
Definition: aarch64.h:638
@ OP_MOVZS_P_P_P
Definition: aarch64.h:637
@ OP_LDRSB_POS
Definition: aarch64.h:550
@ OP_CSET
Definition: aarch64.h:613
@ OP_MOVK
Definition: aarch64.h:585
@ OP_FCVTL
Definition: aarch64.h:619
@ OP_PRFUM
Definition: aarch64.h:572
@ OP_MOV_Z_V
Definition: aarch64.h:632
@ OP_MOV_IMM_WIDE
Definition: aarch64.h:588
@ OP_MOV_P_P
Definition: aarch64.h:630
@ OP_MOVZ
Definition: aarch64.h:584
@ OP_LDURV
Definition: aarch64.h:570
@ OP_LDRH_POS
Definition: aarch64.h:552
@ OP_UBFX
Definition: aarch64.h:599
@ OP_CINV
Definition: aarch64.h:611

◆ aarch64_operand_class

Enumerator
AARCH64_OPND_CLASS_NIL 
AARCH64_OPND_CLASS_INT_REG 
AARCH64_OPND_CLASS_MODIFIED_REG 
AARCH64_OPND_CLASS_FP_REG 
AARCH64_OPND_CLASS_SIMD_REG 
AARCH64_OPND_CLASS_SIMD_ELEMENT 
AARCH64_OPND_CLASS_SISD_REG 
AARCH64_OPND_CLASS_SIMD_REGLIST 
AARCH64_OPND_CLASS_SVE_REG 
AARCH64_OPND_CLASS_PRED_REG 
AARCH64_OPND_CLASS_ADDRESS 
AARCH64_OPND_CLASS_IMMEDIATE 
AARCH64_OPND_CLASS_SYSTEM 
AARCH64_OPND_CLASS_COND 

Definition at line 123 of file aarch64.h.

124 {
139 };
@ AARCH64_OPND_CLASS_MODIFIED_REG
Definition: aarch64.h:127
@ AARCH64_OPND_CLASS_NIL
Definition: aarch64.h:125
@ AARCH64_OPND_CLASS_SYSTEM
Definition: aarch64.h:137
@ AARCH64_OPND_CLASS_INT_REG
Definition: aarch64.h:126
@ AARCH64_OPND_CLASS_IMMEDIATE
Definition: aarch64.h:136
@ AARCH64_OPND_CLASS_SVE_REG
Definition: aarch64.h:133
@ AARCH64_OPND_CLASS_ADDRESS
Definition: aarch64.h:135
@ AARCH64_OPND_CLASS_COND
Definition: aarch64.h:138
@ AARCH64_OPND_CLASS_SIMD_REGLIST
Definition: aarch64.h:132
@ AARCH64_OPND_CLASS_SIMD_REG
Definition: aarch64.h:129
@ AARCH64_OPND_CLASS_FP_REG
Definition: aarch64.h:128
@ AARCH64_OPND_CLASS_SISD_REG
Definition: aarch64.h:131
@ AARCH64_OPND_CLASS_PRED_REG
Definition: aarch64.h:134
@ AARCH64_OPND_CLASS_SIMD_ELEMENT
Definition: aarch64.h:130

◆ aarch64_operand_error_kind

Enumerator
AARCH64_OPDE_NIL 
AARCH64_OPDE_RECOVERABLE 
AARCH64_OPDE_SYNTAX_ERROR 
AARCH64_OPDE_FATAL_SYNTAX_ERROR 
AARCH64_OPDE_INVALID_VARIANT 
AARCH64_OPDE_UNTIED_OPERAND 
AARCH64_OPDE_OUT_OF_RANGE 
AARCH64_OPDE_UNALIGNED 
AARCH64_OPDE_REG_LIST 
AARCH64_OPDE_OTHER_ERROR 

Definition at line 1092 of file aarch64.h.

1093 {
1104 };
@ AARCH64_OPDE_OUT_OF_RANGE
Definition: aarch64.h:1100
@ AARCH64_OPDE_INVALID_VARIANT
Definition: aarch64.h:1098
@ AARCH64_OPDE_UNTIED_OPERAND
Definition: aarch64.h:1099
@ AARCH64_OPDE_RECOVERABLE
Definition: aarch64.h:1095
@ AARCH64_OPDE_NIL
Definition: aarch64.h:1094
@ AARCH64_OPDE_FATAL_SYNTAX_ERROR
Definition: aarch64.h:1097
@ AARCH64_OPDE_UNALIGNED
Definition: aarch64.h:1101
@ AARCH64_OPDE_REG_LIST
Definition: aarch64.h:1102
@ AARCH64_OPDE_SYNTAX_ERROR
Definition: aarch64.h:1096
@ AARCH64_OPDE_OTHER_ERROR
Definition: aarch64.h:1103

◆ aarch64_opnd

Enumerator
AARCH64_OPND_NIL 
AARCH64_OPND_Rd 
AARCH64_OPND_Rn 
AARCH64_OPND_Rm 
AARCH64_OPND_Rt 
AARCH64_OPND_Rt2 
AARCH64_OPND_Rs 
AARCH64_OPND_Ra 
AARCH64_OPND_Rt_SYS 
AARCH64_OPND_Rd_SP 
AARCH64_OPND_Rn_SP 
AARCH64_OPND_Rm_SP 
AARCH64_OPND_PAIRREG 
AARCH64_OPND_Rm_EXT 
AARCH64_OPND_Rm_SFT 
AARCH64_OPND_Fd 
AARCH64_OPND_Fn 
AARCH64_OPND_Fm 
AARCH64_OPND_Fa 
AARCH64_OPND_Ft 
AARCH64_OPND_Ft2 
AARCH64_OPND_Sd 
AARCH64_OPND_Sn 
AARCH64_OPND_Sm 
AARCH64_OPND_Va 
AARCH64_OPND_Vd 
AARCH64_OPND_Vn 
AARCH64_OPND_Vm 
AARCH64_OPND_VdD1 
AARCH64_OPND_VnD1 
AARCH64_OPND_Ed 
AARCH64_OPND_En 
AARCH64_OPND_Em 
AARCH64_OPND_Em16 
AARCH64_OPND_LVn 
AARCH64_OPND_LVt 
AARCH64_OPND_LVt_AL 
AARCH64_OPND_LEt 
AARCH64_OPND_CRn 
AARCH64_OPND_CRm 
AARCH64_OPND_IDX 
AARCH64_OPND_MASK 
AARCH64_OPND_IMM_VLSL 
AARCH64_OPND_IMM_VLSR 
AARCH64_OPND_SIMD_IMM 
AARCH64_OPND_SIMD_IMM_SFT 
AARCH64_OPND_SIMD_FPIMM 
AARCH64_OPND_SHLL_IMM 
AARCH64_OPND_IMM0 
AARCH64_OPND_FPIMM0 
AARCH64_OPND_FPIMM 
AARCH64_OPND_IMMR 
AARCH64_OPND_IMMS 
AARCH64_OPND_WIDTH 
AARCH64_OPND_IMM 
AARCH64_OPND_IMM_2 
AARCH64_OPND_UIMM3_OP1 
AARCH64_OPND_UIMM3_OP2 
AARCH64_OPND_UIMM4 
AARCH64_OPND_UIMM7 
AARCH64_OPND_BIT_NUM 
AARCH64_OPND_EXCEPTION 
AARCH64_OPND_CCMP_IMM 
AARCH64_OPND_SIMM5 
AARCH64_OPND_NZCV 
AARCH64_OPND_LIMM 
AARCH64_OPND_AIMM 
AARCH64_OPND_HALF 
AARCH64_OPND_FBITS 
AARCH64_OPND_IMM_MOV 
AARCH64_OPND_IMM_ROT1 
AARCH64_OPND_IMM_ROT2 
AARCH64_OPND_IMM_ROT3 
AARCH64_OPND_COND 
AARCH64_OPND_COND1 
AARCH64_OPND_ADDR_ADRP 
AARCH64_OPND_ADDR_PCREL14 
AARCH64_OPND_ADDR_PCREL19 
AARCH64_OPND_ADDR_PCREL21 
AARCH64_OPND_ADDR_PCREL26 
AARCH64_OPND_ADDR_SIMPLE 
AARCH64_OPND_ADDR_REGOFF 
AARCH64_OPND_ADDR_SIMM7 
AARCH64_OPND_ADDR_SIMM9 
AARCH64_OPND_ADDR_SIMM9_2 
AARCH64_OPND_ADDR_SIMM10 
AARCH64_OPND_ADDR_UIMM12 
AARCH64_OPND_SIMD_ADDR_SIMPLE 
AARCH64_OPND_ADDR_OFFSET 
AARCH64_OPND_SIMD_ADDR_POST 
AARCH64_OPND_SYSREG 
AARCH64_OPND_PSTATEFIELD 
AARCH64_OPND_SYSREG_AT 
AARCH64_OPND_SYSREG_DC 
AARCH64_OPND_SYSREG_IC 
AARCH64_OPND_SYSREG_TLBI 
AARCH64_OPND_BARRIER 
AARCH64_OPND_BARRIER_ISB 
AARCH64_OPND_PRFOP 
AARCH64_OPND_BARRIER_PSB 
AARCH64_OPND_SVE_ADDR_RI_S4x16 
AARCH64_OPND_SVE_ADDR_RI_S4xVL 
AARCH64_OPND_SVE_ADDR_RI_S4x2xVL 
AARCH64_OPND_SVE_ADDR_RI_S4x3xVL 
AARCH64_OPND_SVE_ADDR_RI_S4x4xVL 
AARCH64_OPND_SVE_ADDR_RI_S6xVL 
AARCH64_OPND_SVE_ADDR_RI_S9xVL 
AARCH64_OPND_SVE_ADDR_RI_U6 
AARCH64_OPND_SVE_ADDR_RI_U6x2 
AARCH64_OPND_SVE_ADDR_RI_U6x4 
AARCH64_OPND_SVE_ADDR_RI_U6x8 
AARCH64_OPND_SVE_ADDR_R 
AARCH64_OPND_SVE_ADDR_RR 
AARCH64_OPND_SVE_ADDR_RR_LSL1 
AARCH64_OPND_SVE_ADDR_RR_LSL2 
AARCH64_OPND_SVE_ADDR_RR_LSL3 
AARCH64_OPND_SVE_ADDR_RX 
AARCH64_OPND_SVE_ADDR_RX_LSL1 
AARCH64_OPND_SVE_ADDR_RX_LSL2 
AARCH64_OPND_SVE_ADDR_RX_LSL3 
AARCH64_OPND_SVE_ADDR_RZ 
AARCH64_OPND_SVE_ADDR_RZ_LSL1 
AARCH64_OPND_SVE_ADDR_RZ_LSL2 
AARCH64_OPND_SVE_ADDR_RZ_LSL3 
AARCH64_OPND_SVE_ADDR_RZ_XTW_14 
AARCH64_OPND_SVE_ADDR_RZ_XTW_22 
AARCH64_OPND_SVE_ADDR_RZ_XTW1_14 
AARCH64_OPND_SVE_ADDR_RZ_XTW1_22 
AARCH64_OPND_SVE_ADDR_RZ_XTW2_14 
AARCH64_OPND_SVE_ADDR_RZ_XTW2_22 
AARCH64_OPND_SVE_ADDR_RZ_XTW3_14 
AARCH64_OPND_SVE_ADDR_RZ_XTW3_22 
AARCH64_OPND_SVE_ADDR_ZI_U5 
AARCH64_OPND_SVE_ADDR_ZI_U5x2 
AARCH64_OPND_SVE_ADDR_ZI_U5x4 
AARCH64_OPND_SVE_ADDR_ZI_U5x8 
AARCH64_OPND_SVE_ADDR_ZZ_LSL 
AARCH64_OPND_SVE_ADDR_ZZ_SXTW 
AARCH64_OPND_SVE_ADDR_ZZ_UXTW 
AARCH64_OPND_SVE_AIMM 
AARCH64_OPND_SVE_ASIMM 
AARCH64_OPND_SVE_FPIMM8 
AARCH64_OPND_SVE_I1_HALF_ONE 
AARCH64_OPND_SVE_I1_HALF_TWO 
AARCH64_OPND_SVE_I1_ZERO_ONE 
AARCH64_OPND_SVE_IMM_ROT1 
AARCH64_OPND_SVE_IMM_ROT2 
AARCH64_OPND_SVE_INV_LIMM 
AARCH64_OPND_SVE_LIMM 
AARCH64_OPND_SVE_LIMM_MOV 
AARCH64_OPND_SVE_PATTERN 
AARCH64_OPND_SVE_PATTERN_SCALED 
AARCH64_OPND_SVE_PRFOP 
AARCH64_OPND_SVE_Pd 
AARCH64_OPND_SVE_Pg3 
AARCH64_OPND_SVE_Pg4_5 
AARCH64_OPND_SVE_Pg4_10 
AARCH64_OPND_SVE_Pg4_16 
AARCH64_OPND_SVE_Pm 
AARCH64_OPND_SVE_Pn 
AARCH64_OPND_SVE_Pt 
AARCH64_OPND_SVE_Rm 
AARCH64_OPND_SVE_Rn_SP 
AARCH64_OPND_SVE_SHLIMM_PRED 
AARCH64_OPND_SVE_SHLIMM_UNPRED 
AARCH64_OPND_SVE_SHRIMM_PRED 
AARCH64_OPND_SVE_SHRIMM_UNPRED 
AARCH64_OPND_SVE_SIMM5 
AARCH64_OPND_SVE_SIMM5B 
AARCH64_OPND_SVE_SIMM6 
AARCH64_OPND_SVE_SIMM8 
AARCH64_OPND_SVE_UIMM3 
AARCH64_OPND_SVE_UIMM7 
AARCH64_OPND_SVE_UIMM8 
AARCH64_OPND_SVE_UIMM8_53 
AARCH64_OPND_SVE_VZn 
AARCH64_OPND_SVE_Vd 
AARCH64_OPND_SVE_Vm 
AARCH64_OPND_SVE_Vn 
AARCH64_OPND_SVE_Za_5 
AARCH64_OPND_SVE_Za_16 
AARCH64_OPND_SVE_Zd 
AARCH64_OPND_SVE_Zm_5 
AARCH64_OPND_SVE_Zm_16 
AARCH64_OPND_SVE_Zm3_INDEX 
AARCH64_OPND_SVE_Zm3_22_INDEX 
AARCH64_OPND_SVE_Zm4_INDEX 
AARCH64_OPND_SVE_Zn 
AARCH64_OPND_SVE_Zn_INDEX 
AARCH64_OPND_SVE_ZnxN 
AARCH64_OPND_SVE_Zt 
AARCH64_OPND_SVE_ZtxN 
AARCH64_OPND_SM3_IMM2 

Definition at line 144 of file aarch64.h.

145 {
146  AARCH64_OPND_NIL, /* no operand---MUST BE FIRST!*/
147 
148  AARCH64_OPND_Rd, /* Integer register as destination. */
149  AARCH64_OPND_Rn, /* Integer register as source. */
150  AARCH64_OPND_Rm, /* Integer register as source. */
151  AARCH64_OPND_Rt, /* Integer register used in ld/st instructions. */
152  AARCH64_OPND_Rt2, /* Integer register used in ld/st pair instructions. */
153  AARCH64_OPND_Rs, /* Integer register used in ld/st exclusive. */
154  AARCH64_OPND_Ra, /* Integer register used in ddp_3src instructions. */
155  AARCH64_OPND_Rt_SYS, /* Integer register used in system instructions. */
156 
157  AARCH64_OPND_Rd_SP, /* Integer Rd or SP. */
158  AARCH64_OPND_Rn_SP, /* Integer Rn or SP. */
159  AARCH64_OPND_Rm_SP, /* Integer Rm or SP. */
160  AARCH64_OPND_PAIRREG, /* Paired register operand. */
161  AARCH64_OPND_Rm_EXT, /* Integer Rm extended. */
162  AARCH64_OPND_Rm_SFT, /* Integer Rm shifted. */
163 
164  AARCH64_OPND_Fd, /* Floating-point Fd. */
165  AARCH64_OPND_Fn, /* Floating-point Fn. */
166  AARCH64_OPND_Fm, /* Floating-point Fm. */
167  AARCH64_OPND_Fa, /* Floating-point Fa. */
168  AARCH64_OPND_Ft, /* Floating-point Ft. */
169  AARCH64_OPND_Ft2, /* Floating-point Ft2. */
170 
171  AARCH64_OPND_Sd, /* AdvSIMD Scalar Sd. */
172  AARCH64_OPND_Sn, /* AdvSIMD Scalar Sn. */
173  AARCH64_OPND_Sm, /* AdvSIMD Scalar Sm. */
174 
175  AARCH64_OPND_Va, /* AdvSIMD Vector Va. */
176  AARCH64_OPND_Vd, /* AdvSIMD Vector Vd. */
177  AARCH64_OPND_Vn, /* AdvSIMD Vector Vn. */
178  AARCH64_OPND_Vm, /* AdvSIMD Vector Vm. */
179  AARCH64_OPND_VdD1, /* AdvSIMD <Vd>.D[1]; for FMOV only. */
180  AARCH64_OPND_VnD1, /* AdvSIMD <Vn>.D[1]; for FMOV only. */
181  AARCH64_OPND_Ed, /* AdvSIMD Vector Element Vd. */
182  AARCH64_OPND_En, /* AdvSIMD Vector Element Vn. */
183  AARCH64_OPND_Em, /* AdvSIMD Vector Element Vm. */
184  AARCH64_OPND_Em16, /* AdvSIMD Vector Element Vm restricted to V0 - V15 when
185  qualifier is S_H. */
186  AARCH64_OPND_LVn, /* AdvSIMD Vector register list used in e.g. TBL. */
187  AARCH64_OPND_LVt, /* AdvSIMD Vector register list used in ld/st. */
188  AARCH64_OPND_LVt_AL, /* AdvSIMD Vector register list for loading single
189  structure to all lanes. */
190  AARCH64_OPND_LEt, /* AdvSIMD Vector Element list. */
191 
192  AARCH64_OPND_CRn, /* Co-processor register in CRn field. */
193  AARCH64_OPND_CRm, /* Co-processor register in CRm field. */
194 
195  AARCH64_OPND_IDX, /* AdvSIMD EXT index operand. */
196  AARCH64_OPND_MASK, /* AdvSIMD EXT index operand. */
197  AARCH64_OPND_IMM_VLSL,/* Immediate for shifting vector registers left. */
198  AARCH64_OPND_IMM_VLSR,/* Immediate for shifting vector registers right. */
199  AARCH64_OPND_SIMD_IMM,/* AdvSIMD modified immediate without shift. */
200  AARCH64_OPND_SIMD_IMM_SFT, /* AdvSIMD modified immediate with shift. */
201  AARCH64_OPND_SIMD_FPIMM,/* AdvSIMD 8-bit fp immediate. */
202  AARCH64_OPND_SHLL_IMM,/* Immediate shift for AdvSIMD SHLL instruction
203  (no encoding). */
204  AARCH64_OPND_IMM0, /* Immediate for #0. */
205  AARCH64_OPND_FPIMM0, /* Immediate for #0.0. */
206  AARCH64_OPND_FPIMM, /* Floating-point Immediate. */
207  AARCH64_OPND_IMMR, /* Immediate #<immr> in e.g. BFM. */
208  AARCH64_OPND_IMMS, /* Immediate #<imms> in e.g. BFM. */
209  AARCH64_OPND_WIDTH, /* Immediate #<width> in e.g. BFI. */
210  AARCH64_OPND_IMM, /* Immediate. */
211  AARCH64_OPND_IMM_2, /* Immediate. */
212  AARCH64_OPND_UIMM3_OP1,/* Unsigned 3-bit immediate in the op1 field. */
213  AARCH64_OPND_UIMM3_OP2,/* Unsigned 3-bit immediate in the op2 field. */
214  AARCH64_OPND_UIMM4, /* Unsigned 4-bit immediate in the CRm field. */
215  AARCH64_OPND_UIMM7, /* Unsigned 7-bit immediate in the CRm:op2 fields. */
216  AARCH64_OPND_BIT_NUM, /* Immediate. */
217  AARCH64_OPND_EXCEPTION,/* imm16 operand in exception instructions. */
218  AARCH64_OPND_CCMP_IMM,/* Immediate in conditional compare instructions. */
219  AARCH64_OPND_SIMM5, /* 5-bit signed immediate in the imm5 field. */
220  AARCH64_OPND_NZCV, /* Flag bit specifier giving an alternative value for
221  each condition flag. */
222 
223  AARCH64_OPND_LIMM, /* Logical Immediate. */
224  AARCH64_OPND_AIMM, /* Arithmetic immediate. */
225  AARCH64_OPND_HALF, /* #<imm16>{, LSL #<shift>} operand in move wide. */
226  AARCH64_OPND_FBITS, /* FP #<fbits> operand in e.g. SCVTF */
227  AARCH64_OPND_IMM_MOV, /* Immediate operand for the MOV alias. */
228  AARCH64_OPND_IMM_ROT1, /* Immediate rotate operand for FCMLA. */
229  AARCH64_OPND_IMM_ROT2, /* Immediate rotate operand for indexed FCMLA. */
230  AARCH64_OPND_IMM_ROT3, /* Immediate rotate operand for FCADD. */
231 
232  AARCH64_OPND_COND, /* Standard condition as the last operand. */
233  AARCH64_OPND_COND1, /* Same as the above, but excluding AL and NV. */
234 
235  AARCH64_OPND_ADDR_ADRP, /* Memory address for ADRP */
236  AARCH64_OPND_ADDR_PCREL14, /* 14-bit PC-relative address for e.g. TBZ. */
237  AARCH64_OPND_ADDR_PCREL19, /* 19-bit PC-relative address for e.g. LDR. */
238  AARCH64_OPND_ADDR_PCREL21, /* 21-bit PC-relative address for e.g. ADR. */
239  AARCH64_OPND_ADDR_PCREL26, /* 26-bit PC-relative address for e.g. BL. */
240 
241  AARCH64_OPND_ADDR_SIMPLE, /* Address of ld/st exclusive. */
242  AARCH64_OPND_ADDR_REGOFF, /* Address of register offset. */
243  AARCH64_OPND_ADDR_SIMM7, /* Address of signed 7-bit immediate. */
244  AARCH64_OPND_ADDR_SIMM9, /* Address of signed 9-bit immediate. */
245  AARCH64_OPND_ADDR_SIMM9_2, /* Same as the above, but the immediate is
246  negative or unaligned and there is
247  no writeback allowed. This operand code
248  is only used to support the programmer-
249  friendly feature of using LDR/STR as the
250  the mnemonic name for LDUR/STUR instructions
251  wherever there is no ambiguity. */
252  AARCH64_OPND_ADDR_SIMM10, /* Address of signed 10-bit immediate. */
253  AARCH64_OPND_ADDR_UIMM12, /* Address of unsigned 12-bit immediate. */
254  AARCH64_OPND_SIMD_ADDR_SIMPLE,/* Address of ld/st multiple structures. */
255  AARCH64_OPND_ADDR_OFFSET, /* Address with an optional 9-bit immediate. */
256  AARCH64_OPND_SIMD_ADDR_POST, /* Address of ld/st multiple post-indexed. */
257 
258  AARCH64_OPND_SYSREG, /* System register operand. */
259  AARCH64_OPND_PSTATEFIELD, /* PSTATE field name operand. */
260  AARCH64_OPND_SYSREG_AT, /* System register <at_op> operand. */
261  AARCH64_OPND_SYSREG_DC, /* System register <dc_op> operand. */
262  AARCH64_OPND_SYSREG_IC, /* System register <ic_op> operand. */
263  AARCH64_OPND_SYSREG_TLBI, /* System register <tlbi_op> operand. */
264  AARCH64_OPND_BARRIER, /* Barrier operand. */
265  AARCH64_OPND_BARRIER_ISB, /* Barrier operand for ISB. */
266  AARCH64_OPND_PRFOP, /* Prefetch operation. */
267  AARCH64_OPND_BARRIER_PSB, /* Barrier operand for PSB. */
268 
269  AARCH64_OPND_SVE_ADDR_RI_S4x16, /* SVE [<Xn|SP>, #<simm4>*16]. */
270  AARCH64_OPND_SVE_ADDR_RI_S4xVL, /* SVE [<Xn|SP>, #<simm4>, MUL VL]. */
271  AARCH64_OPND_SVE_ADDR_RI_S4x2xVL, /* SVE [<Xn|SP>, #<simm4>*2, MUL VL]. */
272  AARCH64_OPND_SVE_ADDR_RI_S4x3xVL, /* SVE [<Xn|SP>, #<simm4>*3, MUL VL]. */
273  AARCH64_OPND_SVE_ADDR_RI_S4x4xVL, /* SVE [<Xn|SP>, #<simm4>*4, MUL VL]. */
274  AARCH64_OPND_SVE_ADDR_RI_S6xVL, /* SVE [<Xn|SP>, #<simm6>, MUL VL]. */
275  AARCH64_OPND_SVE_ADDR_RI_S9xVL, /* SVE [<Xn|SP>, #<simm9>, MUL VL]. */
276  AARCH64_OPND_SVE_ADDR_RI_U6, /* SVE [<Xn|SP>, #<uimm6>]. */
277  AARCH64_OPND_SVE_ADDR_RI_U6x2, /* SVE [<Xn|SP>, #<uimm6>*2]. */
278  AARCH64_OPND_SVE_ADDR_RI_U6x4, /* SVE [<Xn|SP>, #<uimm6>*4]. */
279  AARCH64_OPND_SVE_ADDR_RI_U6x8, /* SVE [<Xn|SP>, #<uimm6>*8]. */
280  AARCH64_OPND_SVE_ADDR_R, /* SVE [<Xn|SP>]. */
281  AARCH64_OPND_SVE_ADDR_RR, /* SVE [<Xn|SP>, <Xm|XZR>]. */
282  AARCH64_OPND_SVE_ADDR_RR_LSL1, /* SVE [<Xn|SP>, <Xm|XZR>, LSL #1]. */
283  AARCH64_OPND_SVE_ADDR_RR_LSL2, /* SVE [<Xn|SP>, <Xm|XZR>, LSL #2]. */
284  AARCH64_OPND_SVE_ADDR_RR_LSL3, /* SVE [<Xn|SP>, <Xm|XZR>, LSL #3]. */
285  AARCH64_OPND_SVE_ADDR_RX, /* SVE [<Xn|SP>, <Xm>]. */
286  AARCH64_OPND_SVE_ADDR_RX_LSL1, /* SVE [<Xn|SP>, <Xm>, LSL #1]. */
287  AARCH64_OPND_SVE_ADDR_RX_LSL2, /* SVE [<Xn|SP>, <Xm>, LSL #2]. */
288  AARCH64_OPND_SVE_ADDR_RX_LSL3, /* SVE [<Xn|SP>, <Xm>, LSL #3]. */
289  AARCH64_OPND_SVE_ADDR_RZ, /* SVE [<Xn|SP>, Zm.D]. */
290  AARCH64_OPND_SVE_ADDR_RZ_LSL1, /* SVE [<Xn|SP>, Zm.D, LSL #1]. */
291  AARCH64_OPND_SVE_ADDR_RZ_LSL2, /* SVE [<Xn|SP>, Zm.D, LSL #2]. */
292  AARCH64_OPND_SVE_ADDR_RZ_LSL3, /* SVE [<Xn|SP>, Zm.D, LSL #3]. */
293  AARCH64_OPND_SVE_ADDR_RZ_XTW_14, /* SVE [<Xn|SP>, Zm.<T>, (S|U)XTW].
294  Bit 14 controls S/U choice. */
295  AARCH64_OPND_SVE_ADDR_RZ_XTW_22, /* SVE [<Xn|SP>, Zm.<T>, (S|U)XTW].
296  Bit 22 controls S/U choice. */
297  AARCH64_OPND_SVE_ADDR_RZ_XTW1_14, /* SVE [<Xn|SP>, Zm.<T>, (S|U)XTW #1].
298  Bit 14 controls S/U choice. */
299  AARCH64_OPND_SVE_ADDR_RZ_XTW1_22, /* SVE [<Xn|SP>, Zm.<T>, (S|U)XTW #1].
300  Bit 22 controls S/U choice. */
301  AARCH64_OPND_SVE_ADDR_RZ_XTW2_14, /* SVE [<Xn|SP>, Zm.<T>, (S|U)XTW #2].
302  Bit 14 controls S/U choice. */
303  AARCH64_OPND_SVE_ADDR_RZ_XTW2_22, /* SVE [<Xn|SP>, Zm.<T>, (S|U)XTW #2].
304  Bit 22 controls S/U choice. */
305  AARCH64_OPND_SVE_ADDR_RZ_XTW3_14, /* SVE [<Xn|SP>, Zm.<T>, (S|U)XTW #3].
306  Bit 14 controls S/U choice. */
307  AARCH64_OPND_SVE_ADDR_RZ_XTW3_22, /* SVE [<Xn|SP>, Zm.<T>, (S|U)XTW #3].
308  Bit 22 controls S/U choice. */
309  AARCH64_OPND_SVE_ADDR_ZI_U5, /* SVE [Zn.<T>, #<uimm5>]. */
310  AARCH64_OPND_SVE_ADDR_ZI_U5x2, /* SVE [Zn.<T>, #<uimm5>*2]. */
311  AARCH64_OPND_SVE_ADDR_ZI_U5x4, /* SVE [Zn.<T>, #<uimm5>*4]. */
312  AARCH64_OPND_SVE_ADDR_ZI_U5x8, /* SVE [Zn.<T>, #<uimm5>*8]. */
313  AARCH64_OPND_SVE_ADDR_ZZ_LSL, /* SVE [Zn.<T>, Zm,<T>, LSL #<msz>]. */
314  AARCH64_OPND_SVE_ADDR_ZZ_SXTW, /* SVE [Zn.<T>, Zm,<T>, SXTW #<msz>]. */
315  AARCH64_OPND_SVE_ADDR_ZZ_UXTW, /* SVE [Zn.<T>, Zm,<T>, UXTW #<msz>]. */
316  AARCH64_OPND_SVE_AIMM, /* SVE unsigned arithmetic immediate. */
317  AARCH64_OPND_SVE_ASIMM, /* SVE signed arithmetic immediate. */
318  AARCH64_OPND_SVE_FPIMM8, /* SVE 8-bit floating-point immediate. */
319  AARCH64_OPND_SVE_I1_HALF_ONE, /* SVE choice between 0.5 and 1.0. */
320  AARCH64_OPND_SVE_I1_HALF_TWO, /* SVE choice between 0.5 and 2.0. */
321  AARCH64_OPND_SVE_I1_ZERO_ONE, /* SVE choice between 0.0 and 1.0. */
322  AARCH64_OPND_SVE_IMM_ROT1, /* SVE 1-bit rotate operand (90 or 270). */
323  AARCH64_OPND_SVE_IMM_ROT2, /* SVE 2-bit rotate operand (N*90). */
324  AARCH64_OPND_SVE_INV_LIMM, /* SVE inverted logical immediate. */
325  AARCH64_OPND_SVE_LIMM, /* SVE logical immediate. */
326  AARCH64_OPND_SVE_LIMM_MOV, /* SVE logical immediate for MOV. */
327  AARCH64_OPND_SVE_PATTERN, /* SVE vector pattern enumeration. */
328  AARCH64_OPND_SVE_PATTERN_SCALED, /* Likewise, with additional MUL factor. */
329  AARCH64_OPND_SVE_PRFOP, /* SVE prefetch operation. */
330  AARCH64_OPND_SVE_Pd, /* SVE p0-p15 in Pd. */
331  AARCH64_OPND_SVE_Pg3, /* SVE p0-p7 in Pg. */
332  AARCH64_OPND_SVE_Pg4_5, /* SVE p0-p15 in Pg, bits [8,5]. */
333  AARCH64_OPND_SVE_Pg4_10, /* SVE p0-p15 in Pg, bits [13,10]. */
334  AARCH64_OPND_SVE_Pg4_16, /* SVE p0-p15 in Pg, bits [19,16]. */
335  AARCH64_OPND_SVE_Pm, /* SVE p0-p15 in Pm. */
336  AARCH64_OPND_SVE_Pn, /* SVE p0-p15 in Pn. */
337  AARCH64_OPND_SVE_Pt, /* SVE p0-p15 in Pt. */
338  AARCH64_OPND_SVE_Rm, /* Integer Rm or ZR, alt. SVE position. */
339  AARCH64_OPND_SVE_Rn_SP, /* Integer Rn or SP, alt. SVE position. */
340  AARCH64_OPND_SVE_SHLIMM_PRED, /* SVE shift left amount (predicated). */
341  AARCH64_OPND_SVE_SHLIMM_UNPRED, /* SVE shift left amount (unpredicated). */
342  AARCH64_OPND_SVE_SHRIMM_PRED, /* SVE shift right amount (predicated). */
343  AARCH64_OPND_SVE_SHRIMM_UNPRED, /* SVE shift right amount (unpredicated). */
344  AARCH64_OPND_SVE_SIMM5, /* SVE signed 5-bit immediate. */
345  AARCH64_OPND_SVE_SIMM5B, /* SVE secondary signed 5-bit immediate. */
346  AARCH64_OPND_SVE_SIMM6, /* SVE signed 6-bit immediate. */
347  AARCH64_OPND_SVE_SIMM8, /* SVE signed 8-bit immediate. */
348  AARCH64_OPND_SVE_UIMM3, /* SVE unsigned 3-bit immediate. */
349  AARCH64_OPND_SVE_UIMM7, /* SVE unsigned 7-bit immediate. */
350  AARCH64_OPND_SVE_UIMM8, /* SVE unsigned 8-bit immediate. */
351  AARCH64_OPND_SVE_UIMM8_53, /* SVE split unsigned 8-bit immediate. */
352  AARCH64_OPND_SVE_VZn, /* Scalar SIMD&FP register in Zn field. */
353  AARCH64_OPND_SVE_Vd, /* Scalar SIMD&FP register in Vd. */
354  AARCH64_OPND_SVE_Vm, /* Scalar SIMD&FP register in Vm. */
355  AARCH64_OPND_SVE_Vn, /* Scalar SIMD&FP register in Vn. */
356  AARCH64_OPND_SVE_Za_5, /* SVE vector register in Za, bits [9,5]. */
357  AARCH64_OPND_SVE_Za_16, /* SVE vector register in Za, bits [20,16]. */
358  AARCH64_OPND_SVE_Zd, /* SVE vector register in Zd. */
359  AARCH64_OPND_SVE_Zm_5, /* SVE vector register in Zm, bits [9,5]. */
360  AARCH64_OPND_SVE_Zm_16, /* SVE vector register in Zm, bits [20,16]. */
361  AARCH64_OPND_SVE_Zm3_INDEX, /* z0-z7[0-3] in Zm, bits [20,16]. */
362  AARCH64_OPND_SVE_Zm3_22_INDEX, /* z0-z7[0-7] in Zm3_INDEX plus bit 22. */
363  AARCH64_OPND_SVE_Zm4_INDEX, /* z0-z15[0-1] in Zm, bits [20,16]. */
364  AARCH64_OPND_SVE_Zn, /* SVE vector register in Zn. */
365  AARCH64_OPND_SVE_Zn_INDEX, /* Indexed SVE vector register, for DUP. */
366  AARCH64_OPND_SVE_ZnxN, /* SVE vector register list in Zn. */
367  AARCH64_OPND_SVE_Zt, /* SVE vector register in Zt. */
368  AARCH64_OPND_SVE_ZtxN, /* SVE vector register list in Zt. */
369  AARCH64_OPND_SM3_IMM2, /* SM3 encodes lane in bits [13, 14]. */
370 };
@ AARCH64_OPND_ADDR_SIMM10
Definition: aarch64.h:252
@ AARCH64_OPND_SVE_UIMM8_53
Definition: aarch64.h:351
@ AARCH64_OPND_Rm_SFT
Definition: aarch64.h:162
@ AARCH64_OPND_SVE_Rn_SP
Definition: aarch64.h:339
@ AARCH64_OPND_Sm
Definition: aarch64.h:173
@ AARCH64_OPND_FPIMM
Definition: aarch64.h:206
@ AARCH64_OPND_SVE_UIMM3
Definition: aarch64.h:348
@ AARCH64_OPND_UIMM3_OP1
Definition: aarch64.h:212
@ AARCH64_OPND_SVE_Vm
Definition: aarch64.h:354
@ AARCH64_OPND_SVE_ADDR_ZI_U5
Definition: aarch64.h:309
@ AARCH64_OPND_SVE_Pg4_5
Definition: aarch64.h:332
@ AARCH64_OPND_PRFOP
Definition: aarch64.h:266
@ AARCH64_OPND_SM3_IMM2
Definition: aarch64.h:369
@ AARCH64_OPND_FBITS
Definition: aarch64.h:226
@ AARCH64_OPND_SIMD_IMM
Definition: aarch64.h:199
@ AARCH64_OPND_SVE_Pg3
Definition: aarch64.h:331
@ AARCH64_OPND_SVE_ADDR_RI_S4x16
Definition: aarch64.h:269
@ AARCH64_OPND_CRm
Definition: aarch64.h:193
@ AARCH64_OPND_SVE_Pg4_16
Definition: aarch64.h:334
@ AARCH64_OPND_SVE_SIMM6
Definition: aarch64.h:346
@ AARCH64_OPND_IMM_2
Definition: aarch64.h:211
@ AARCH64_OPND_SVE_LIMM
Definition: aarch64.h:325
@ AARCH64_OPND_SIMM5
Definition: aarch64.h:219
@ AARCH64_OPND_SVE_IMM_ROT1
Definition: aarch64.h:322
@ AARCH64_OPND_BIT_NUM
Definition: aarch64.h:216
@ AARCH64_OPND_Va
Definition: aarch64.h:175
@ AARCH64_OPND_SVE_ADDR_RX_LSL2
Definition: aarch64.h:287
@ AARCH64_OPND_Fa
Definition: aarch64.h:167
@ AARCH64_OPND_LEt
Definition: aarch64.h:190
@ AARCH64_OPND_SVE_SHRIMM_PRED
Definition: aarch64.h:342
@ AARCH64_OPND_SVE_ADDR_RI_U6x2
Definition: aarch64.h:277
@ AARCH64_OPND_SVE_ADDR_RI_S4x4xVL
Definition: aarch64.h:273
@ AARCH64_OPND_ADDR_SIMM9_2
Definition: aarch64.h:245
@ AARCH64_OPND_IMM_VLSL
Definition: aarch64.h:197
@ AARCH64_OPND_SVE_ADDR_RR_LSL3
Definition: aarch64.h:284
@ AARCH64_OPND_SVE_Zm3_22_INDEX
Definition: aarch64.h:362
@ AARCH64_OPND_SVE_ADDR_RR_LSL2
Definition: aarch64.h:283
@ AARCH64_OPND_SIMD_FPIMM
Definition: aarch64.h:201
@ AARCH64_OPND_SVE_SHRIMM_UNPRED
Definition: aarch64.h:343
@ AARCH64_OPND_IMM_VLSR
Definition: aarch64.h:198
@ AARCH64_OPND_SVE_ADDR_ZZ_LSL
Definition: aarch64.h:313
@ AARCH64_OPND_SYSREG_IC
Definition: aarch64.h:262
@ AARCH64_OPND_SVE_ADDR_RZ_XTW3_14
Definition: aarch64.h:305
@ AARCH64_OPND_LIMM
Definition: aarch64.h:223
@ AARCH64_OPND_COND1
Definition: aarch64.h:233
@ AARCH64_OPND_BARRIER_PSB
Definition: aarch64.h:267
@ AARCH64_OPND_SVE_Zm3_INDEX
Definition: aarch64.h:361
@ AARCH64_OPND_SVE_Rm
Definition: aarch64.h:338
@ AARCH64_OPND_SVE_ADDR_RZ_XTW1_22
Definition: aarch64.h:299
@ AARCH64_OPND_SVE_Zd
Definition: aarch64.h:358
@ AARCH64_OPND_SVE_ADDR_RZ_XTW_14
Definition: aarch64.h:293
@ AARCH64_OPND_ADDR_UIMM12
Definition: aarch64.h:253
@ AARCH64_OPND_SVE_SHLIMM_PRED
Definition: aarch64.h:340
@ AARCH64_OPND_Em16
Definition: aarch64.h:184
@ AARCH64_OPND_SVE_SIMM8
Definition: aarch64.h:347
@ AARCH64_OPND_SVE_Pn
Definition: aarch64.h:336
@ AARCH64_OPND_LVt
Definition: aarch64.h:187
@ AARCH64_OPND_SVE_ADDR_RX_LSL3
Definition: aarch64.h:288
@ AARCH64_OPND_ADDR_SIMM9
Definition: aarch64.h:244
@ AARCH64_OPND_UIMM3_OP2
Definition: aarch64.h:213
@ AARCH64_OPND_SYSREG
Definition: aarch64.h:258
@ AARCH64_OPND_Ft2
Definition: aarch64.h:169
@ AARCH64_OPND_PSTATEFIELD
Definition: aarch64.h:259
@ AARCH64_OPND_SVE_ADDR_RZ_LSL3
Definition: aarch64.h:292
@ AARCH64_OPND_SVE_Pt
Definition: aarch64.h:337
@ AARCH64_OPND_Sd
Definition: aarch64.h:171
@ AARCH64_OPND_SVE_ADDR_RI_S4x3xVL
Definition: aarch64.h:272
@ AARCH64_OPND_SVE_ADDR_RX_LSL1
Definition: aarch64.h:286
@ AARCH64_OPND_SVE_ADDR_RR
Definition: aarch64.h:281
@ AARCH64_OPND_SVE_Zm_5
Definition: aarch64.h:359
@ AARCH64_OPND_SYSREG_AT
Definition: aarch64.h:260
@ AARCH64_OPND_SVE_LIMM_MOV
Definition: aarch64.h:326
@ AARCH64_OPND_IDX
Definition: aarch64.h:195
@ AARCH64_OPND_SVE_ZnxN
Definition: aarch64.h:366
@ AARCH64_OPND_SVE_I1_HALF_ONE
Definition: aarch64.h:319
@ AARCH64_OPND_ADDR_PCREL26
Definition: aarch64.h:239
@ AARCH64_OPND_Rn_SP
Definition: aarch64.h:158
@ AARCH64_OPND_SVE_VZn
Definition: aarch64.h:352
@ AARCH64_OPND_SVE_Pg4_10
Definition: aarch64.h:333
@ AARCH64_OPND_SIMD_IMM_SFT
Definition: aarch64.h:200
@ AARCH64_OPND_IMM_ROT2
Definition: aarch64.h:229
@ AARCH64_OPND_HALF
Definition: aarch64.h:225
@ AARCH64_OPND_ADDR_PCREL19
Definition: aarch64.h:237
@ AARCH64_OPND_IMMS
Definition: aarch64.h:208
@ AARCH64_OPND_SYSREG_DC
Definition: aarch64.h:261
@ AARCH64_OPND_SVE_ADDR_RI_S9xVL
Definition: aarch64.h:275
@ AARCH64_OPND_LVt_AL
Definition: aarch64.h:188
@ AARCH64_OPND_Fn
Definition: aarch64.h:165
@ AARCH64_OPND_BARRIER_ISB
Definition: aarch64.h:265
@ AARCH64_OPND_SIMD_ADDR_SIMPLE
Definition: aarch64.h:254
@ AARCH64_OPND_IMM_MOV
Definition: aarch64.h:227
@ AARCH64_OPND_Rd
Definition: aarch64.h:148
@ AARCH64_OPND_Em
Definition: aarch64.h:183
@ AARCH64_OPND_SVE_ADDR_RI_S6xVL
Definition: aarch64.h:274
@ AARCH64_OPND_Ft
Definition: aarch64.h:168
@ AARCH64_OPND_SVE_PRFOP
Definition: aarch64.h:329
@ AARCH64_OPND_ADDR_ADRP
Definition: aarch64.h:235
@ AARCH64_OPND_SVE_ADDR_RZ_XTW2_22
Definition: aarch64.h:303
@ AARCH64_OPND_SVE_UIMM7
Definition: aarch64.h:349
@ AARCH64_OPND_SVE_ADDR_RZ_XTW1_14
Definition: aarch64.h:297
@ AARCH64_OPND_SVE_ADDR_RI_U6
Definition: aarch64.h:276
@ AARCH64_OPND_SVE_AIMM
Definition: aarch64.h:316
@ AARCH64_OPND_SVE_SIMM5B
Definition: aarch64.h:345
@ AARCH64_OPND_NIL
Definition: aarch64.h:146
@ AARCH64_OPND_SHLL_IMM
Definition: aarch64.h:202
@ AARCH64_OPND_SVE_ADDR_RI_U6x8
Definition: aarch64.h:279
@ AARCH64_OPND_SVE_PATTERN
Definition: aarch64.h:327
@ AARCH64_OPND_SVE_ADDR_RZ_LSL2
Definition: aarch64.h:291
@ AARCH64_OPND_SVE_FPIMM8
Definition: aarch64.h:318
@ AARCH64_OPND_SVE_Za_16
Definition: aarch64.h:357
@ AARCH64_OPND_SVE_ADDR_RX
Definition: aarch64.h:285
@ AARCH64_OPND_ADDR_SIMM7
Definition: aarch64.h:243
@ AARCH64_OPND_NZCV
Definition: aarch64.h:220
@ AARCH64_OPND_LVn
Definition: aarch64.h:186
@ AARCH64_OPND_SVE_ADDR_RZ_LSL1
Definition: aarch64.h:290
@ AARCH64_OPND_SVE_UIMM8
Definition: aarch64.h:350
@ AARCH64_OPND_ADDR_PCREL21
Definition: aarch64.h:238
@ AARCH64_OPND_Rd_SP
Definition: aarch64.h:157
@ AARCH64_OPND_VdD1
Definition: aarch64.h:179
@ AARCH64_OPND_SVE_ZtxN
Definition: aarch64.h:368
@ AARCH64_OPND_ADDR_REGOFF
Definition: aarch64.h:242
@ AARCH64_OPND_AIMM
Definition: aarch64.h:224
@ AARCH64_OPND_IMMR
Definition: aarch64.h:207
@ AARCH64_OPND_VnD1
Definition: aarch64.h:180
@ AARCH64_OPND_SVE_SIMM5
Definition: aarch64.h:344
@ AARCH64_OPND_SVE_ADDR_RI_S4xVL
Definition: aarch64.h:270
@ AARCH64_OPND_UIMM4
Definition: aarch64.h:214
@ AARCH64_OPND_Rs
Definition: aarch64.h:153
@ AARCH64_OPND_SVE_ADDR_RZ
Definition: aarch64.h:289
@ AARCH64_OPND_SVE_Pd
Definition: aarch64.h:330
@ AARCH64_OPND_Rt2
Definition: aarch64.h:152
@ AARCH64_OPND_ADDR_OFFSET
Definition: aarch64.h:255
@ AARCH64_OPND_SVE_I1_HALF_TWO
Definition: aarch64.h:320
@ AARCH64_OPND_SVE_ADDR_RI_S4x2xVL
Definition: aarch64.h:271
@ AARCH64_OPND_SVE_Zm4_INDEX
Definition: aarch64.h:363
@ AARCH64_OPND_EXCEPTION
Definition: aarch64.h:217
@ AARCH64_OPND_Vd
Definition: aarch64.h:176
@ AARCH64_OPND_SVE_I1_ZERO_ONE
Definition: aarch64.h:321
@ AARCH64_OPND_SVE_ASIMM
Definition: aarch64.h:317
@ AARCH64_OPND_SVE_Za_5
Definition: aarch64.h:356
@ AARCH64_OPND_SVE_PATTERN_SCALED
Definition: aarch64.h:328
@ AARCH64_OPND_SVE_Pm
Definition: aarch64.h:335
@ AARCH64_OPND_SVE_ADDR_ZI_U5x8
Definition: aarch64.h:312
@ AARCH64_OPND_SVE_ADDR_RZ_XTW_22
Definition: aarch64.h:295
@ AARCH64_OPND_Fd
Definition: aarch64.h:164
@ AARCH64_OPND_SVE_SHLIMM_UNPRED
Definition: aarch64.h:341
@ AARCH64_OPND_SIMD_ADDR_POST
Definition: aarch64.h:256
@ AARCH64_OPND_SVE_ADDR_ZI_U5x4
Definition: aarch64.h:311
@ AARCH64_OPND_SVE_IMM_ROT2
Definition: aarch64.h:323
@ AARCH64_OPND_Vm
Definition: aarch64.h:178
@ AARCH64_OPND_IMM
Definition: aarch64.h:210
@ AARCH64_OPND_CCMP_IMM
Definition: aarch64.h:218
@ AARCH64_OPND_Rt
Definition: aarch64.h:151
@ AARCH64_OPND_IMM_ROT1
Definition: aarch64.h:228
@ AARCH64_OPND_Rt_SYS
Definition: aarch64.h:155
@ AARCH64_OPND_Rm
Definition: aarch64.h:150
@ AARCH64_OPND_SVE_Zn
Definition: aarch64.h:364
@ AARCH64_OPND_BARRIER
Definition: aarch64.h:264
@ AARCH64_OPND_SVE_ADDR_ZZ_UXTW
Definition: aarch64.h:315
@ AARCH64_OPND_Rm_SP
Definition: aarch64.h:159
@ AARCH64_OPND_SVE_Zt
Definition: aarch64.h:367
@ AARCH64_OPND_SVE_Zn_INDEX
Definition: aarch64.h:365
@ AARCH64_OPND_SVE_ADDR_RR_LSL1
Definition: aarch64.h:282
@ AARCH64_OPND_Rn
Definition: aarch64.h:149
@ AARCH64_OPND_SVE_Vd
Definition: aarch64.h:353
@ AARCH64_OPND_En
Definition: aarch64.h:182
@ AARCH64_OPND_MASK
Definition: aarch64.h:196
@ AARCH64_OPND_Rm_EXT
Definition: aarch64.h:161
@ AARCH64_OPND_SVE_ADDR_ZZ_SXTW
Definition: aarch64.h:314
@ AARCH64_OPND_SVE_Zm_16
Definition: aarch64.h:360
@ AARCH64_OPND_COND
Definition: aarch64.h:232
@ AARCH64_OPND_Ed
Definition: aarch64.h:181
@ AARCH64_OPND_IMM0
Definition: aarch64.h:204
@ AARCH64_OPND_ADDR_PCREL14
Definition: aarch64.h:236
@ AARCH64_OPND_SVE_ADDR_R
Definition: aarch64.h:280
@ AARCH64_OPND_SVE_ADDR_RZ_XTW3_22
Definition: aarch64.h:307
@ AARCH64_OPND_ADDR_SIMPLE
Definition: aarch64.h:241
@ AARCH64_OPND_Ra
Definition: aarch64.h:154
@ AARCH64_OPND_Sn
Definition: aarch64.h:172
@ AARCH64_OPND_FPIMM0
Definition: aarch64.h:205
@ AARCH64_OPND_SVE_ADDR_RI_U6x4
Definition: aarch64.h:278
@ AARCH64_OPND_SYSREG_TLBI
Definition: aarch64.h:263
@ AARCH64_OPND_SVE_ADDR_ZI_U5x2
Definition: aarch64.h:310
@ AARCH64_OPND_CRn
Definition: aarch64.h:192
@ AARCH64_OPND_Fm
Definition: aarch64.h:166
@ AARCH64_OPND_IMM_ROT3
Definition: aarch64.h:230
@ AARCH64_OPND_WIDTH
Definition: aarch64.h:209
@ AARCH64_OPND_SVE_Vn
Definition: aarch64.h:355
@ AARCH64_OPND_SVE_ADDR_RZ_XTW2_14
Definition: aarch64.h:301
@ AARCH64_OPND_UIMM7
Definition: aarch64.h:215
@ AARCH64_OPND_Vn
Definition: aarch64.h:177
@ AARCH64_OPND_PAIRREG
Definition: aarch64.h:160
@ AARCH64_OPND_SVE_INV_LIMM
Definition: aarch64.h:324

◆ aarch64_opnd_qualifier

Enumerator
AARCH64_OPND_QLF_NIL 
AARCH64_OPND_QLF_W 
AARCH64_OPND_QLF_X 
AARCH64_OPND_QLF_WSP 
AARCH64_OPND_QLF_SP 
AARCH64_OPND_QLF_S_B 
AARCH64_OPND_QLF_S_H 
AARCH64_OPND_QLF_S_S 
AARCH64_OPND_QLF_S_D 
AARCH64_OPND_QLF_S_Q 
AARCH64_OPND_QLF_S_4B 
AARCH64_OPND_QLF_V_4B 
AARCH64_OPND_QLF_V_8B 
AARCH64_OPND_QLF_V_16B 
AARCH64_OPND_QLF_V_2H 
AARCH64_OPND_QLF_V_4H 
AARCH64_OPND_QLF_V_8H 
AARCH64_OPND_QLF_V_2S 
AARCH64_OPND_QLF_V_4S 
AARCH64_OPND_QLF_V_1D 
AARCH64_OPND_QLF_V_2D 
AARCH64_OPND_QLF_V_1Q 
AARCH64_OPND_QLF_P_Z 
AARCH64_OPND_QLF_P_M 
AARCH64_OPND_QLF_CR 
AARCH64_OPND_QLF_imm_0_7 
AARCH64_OPND_QLF_imm_0_15 
AARCH64_OPND_QLF_imm_0_31 
AARCH64_OPND_QLF_imm_0_63 
AARCH64_OPND_QLF_imm_1_32 
AARCH64_OPND_QLF_imm_1_64 
AARCH64_OPND_QLF_LSL 
AARCH64_OPND_QLF_MSL 
AARCH64_OPND_QLF_RETRIEVE 

Definition at line 377 of file aarch64.h.

378 {
379  /* Indicating no further qualification on an operand. */
381 
382  /* Qualifying an operand which is a general purpose (integer) register;
383  indicating the operand data size or a specific register. */
384  AARCH64_OPND_QLF_W, /* Wn, WZR or WSP. */
385  AARCH64_OPND_QLF_X, /* Xn, XZR or XSP. */
386  AARCH64_OPND_QLF_WSP, /* WSP. */
387  AARCH64_OPND_QLF_SP, /* SP. */
388 
389  /* Qualifying an operand which is a floating-point register, a SIMD
390  vector element or a SIMD vector element list; indicating operand data
391  size or the size of each SIMD vector element in the case of a SIMD
392  vector element list.
393  These qualifiers are also used to qualify an address operand to
394  indicate the size of data element a load/store instruction is
395  accessing.
396  They are also used for the immediate shift operand in e.g. SSHR. Such
397  a use is only for the ease of operand encoding/decoding and qualifier
398  sequence matching; such a use should not be applied widely; use the value
399  constraint qualifiers for immediate operands wherever possible. */
405  /* This type qualifier has a special meaning in that it means that 4 x 1 byte
406  are selected by the instruction. Other than that it has no difference
407  with AARCH64_OPND_QLF_S_B in encoding. It is here purely for syntactical
408  reasons and is an exception from normal AArch64 disassembly scheme. */
410 
411  /* Qualifying an operand which is a SIMD vector register or a SIMD vector
412  register list; indicating register shape.
413  They are also used for the immediate shift operand in e.g. SSHR. Such
414  a use is only for the ease of operand encoding/decoding and qualifier
415  sequence matching; such a use should not be applied widely; use the value
416  constraint qualifiers for immediate operands wherever possible. */
428 
431 
432  /* Constraint on value. */
433  AARCH64_OPND_QLF_CR, /* CRn, CRm. */
440 
441  /* Indicate whether an AdvSIMD modified immediate operand is shift-zeros
442  or shift-ones. */
445 
446  /* Special qualifier helping retrieve qualifier information during the
447  decoding time (currently not in use). */
449 };
@ AARCH64_OPND_QLF_RETRIEVE
Definition: aarch64.h:448
@ AARCH64_OPND_QLF_imm_0_7
Definition: aarch64.h:434
@ AARCH64_OPND_QLF_W
Definition: aarch64.h:384
@ AARCH64_OPND_QLF_V_4S
Definition: aarch64.h:424
@ AARCH64_OPND_QLF_V_1D
Definition: aarch64.h:425
@ AARCH64_OPND_QLF_imm_1_64
Definition: aarch64.h:439
@ AARCH64_OPND_QLF_SP
Definition: aarch64.h:387
@ AARCH64_OPND_QLF_S_D
Definition: aarch64.h:403
@ AARCH64_OPND_QLF_S_Q
Definition: aarch64.h:404
@ AARCH64_OPND_QLF_V_8H
Definition: aarch64.h:422
@ AARCH64_OPND_QLF_S_B
Definition: aarch64.h:400
@ AARCH64_OPND_QLF_P_M
Definition: aarch64.h:430
@ AARCH64_OPND_QLF_CR
Definition: aarch64.h:433
@ AARCH64_OPND_QLF_V_2S
Definition: aarch64.h:423
@ AARCH64_OPND_QLF_V_4H
Definition: aarch64.h:421
@ AARCH64_OPND_QLF_V_2D
Definition: aarch64.h:426
@ AARCH64_OPND_QLF_imm_1_32
Definition: aarch64.h:438
@ AARCH64_OPND_QLF_V_16B
Definition: aarch64.h:419
@ AARCH64_OPND_QLF_imm_0_31
Definition: aarch64.h:436
@ AARCH64_OPND_QLF_LSL
Definition: aarch64.h:443
@ AARCH64_OPND_QLF_V_8B
Definition: aarch64.h:418
@ AARCH64_OPND_QLF_S_S
Definition: aarch64.h:402
@ AARCH64_OPND_QLF_V_2H
Definition: aarch64.h:420
@ AARCH64_OPND_QLF_imm_0_15
Definition: aarch64.h:435
@ AARCH64_OPND_QLF_V_1Q
Definition: aarch64.h:427
@ AARCH64_OPND_QLF_WSP
Definition: aarch64.h:386
@ AARCH64_OPND_QLF_S_H
Definition: aarch64.h:401
@ AARCH64_OPND_QLF_X
Definition: aarch64.h:385
@ AARCH64_OPND_QLF_P_Z
Definition: aarch64.h:429
@ AARCH64_OPND_QLF_imm_0_63
Definition: aarch64.h:437
@ AARCH64_OPND_QLF_NIL
Definition: aarch64.h:380
@ AARCH64_OPND_QLF_V_4B
Definition: aarch64.h:417
@ AARCH64_OPND_QLF_S_4B
Definition: aarch64.h:409
@ AARCH64_OPND_QLF_MSL
Definition: aarch64.h:444

Function Documentation

◆ aarch64_decode_insn()

int aarch64_decode_insn ( aarch64_insn  insn,
aarch64_inst inst,
bfd_boolean  noaliases_p,
aarch64_operand_error errors 
)

Definition at line 2958 of file aarch64-dis.c.

2961 {
2962  const aarch64_opcode *opcode = aarch64_opcode_lookup (insn);
2963 
2964 #ifdef DEBUG_AARCH64
2965  if (debug_dump)
2966  {
2967  const aarch64_opcode *tmp = opcode;
2968  printf ("\n");
2969  DEBUG_TRACE ("opcode lookup:");
2970  while (tmp != NULL)
2971  {
2972  aarch64_verbose (" %s", tmp->name);
2974  }
2975  }
2976 #endif /* DEBUG_AARCH64 */
2977 
2978  /* A list of opcodes may have been found, as aarch64_opcode_lookup cannot
2979  distinguish some opcodes, e.g. SSHR and MOVI, which almost share the same
2980  opcode field and value, apart from the difference that one of them has an
2981  extra field as part of the opcode, but such a field is used for operand
2982  encoding in other opcode(s) ('immh' in the case of the example). */
2983  while (opcode != NULL)
2984  {
2985  /* But only one opcode can be decoded successfully for, as the
2986  decoding routine will check the constraint carefully. */
2987  if (aarch64_opcode_decode (opcode, insn, inst, noaliases_p, errors) == 1)
2988  return ERR_OK;
2989  opcode = aarch64_find_next_opcode (opcode);
2990  }
2991 
2992  return ERR_UND;
2993 }
const aarch64_opcode * aarch64_find_next_opcode(const aarch64_opcode *opcode)
const aarch64_opcode * aarch64_opcode_lookup(uint32_t word)
static bfd_boolean aarch64_opcode_decode(const aarch64_opcode *, const aarch64_insn, aarch64_inst *, int, aarch64_operand_error *errors)
Definition: aarch64-dis.c:2835
#define ERR_OK
Definition: aarch64-dis.c:31
#define ERR_UND
Definition: aarch64-dis.c:32
#define DEBUG_TRACE(M,...)
Definition: aarch64.h:1198
#define NULL
Definition: cris-opc.c:27
_Use_decl_annotations_ int __cdecl printf(const char *const _Format,...)
Definition: cs_driver.c:93

References aarch64_find_next_opcode(), aarch64_opcode_decode(), aarch64_opcode_lookup(), DEBUG_TRACE, ERR_OK, ERR_UND, NULL, printf(), and autogen_x86imm::tmp.

Referenced by print_insn_aarch64_word().

◆ aarch64_extend_operator_p()

bfd_boolean aarch64_extend_operator_p ( enum  aarch64_modifier_kind)

Definition at line 430 of file aarch64-opc.c.

431 {
432  return (kind > AARCH64_MOD_LSL && kind <= AARCH64_MOD_SXTX)
433  ? TRUE : FALSE;
434 }
#define TRUE
Definition: mybfd.h:103
#define FALSE
Definition: mybfd.h:102

References AARCH64_MOD_LSL, AARCH64_MOD_SXTX, FALSE, and TRUE.

Referenced by operand_general_constraint_met_p().

◆ aarch64_get_expected_qualifier()

aarch64_opnd_qualifier_t aarch64_get_expected_qualifier ( const aarch64_opnd_qualifier_seq_t qseq_list,
int  idx,
const  aarch64_opnd_qualifier_t,
int  known_idx 
)

Definition at line 621 of file aarch64-opc.c.

625 {
626  int i, saved_i;
627 
628  /* Special case.
629 
630  When the known qualifier is NIL, we have to assume that there is only
631  one qualifier sequence in the *QSEQ_LIST and return the corresponding
632  qualifier directly. One scenario is that for instruction
633  PRFM <prfop>, [<Xn|SP>, #:lo12:<symbol>]
634  which has only one possible valid qualifier sequence
635  NIL, S_D
636  the caller may pass NIL in KNOWN_QLF to obtain S_D so that it can
637  determine the correct relocation type (i.e. LDST64_LO12) for PRFM.
638 
639  Because the qualifier NIL has dual roles in the qualifier sequence:
640  it can mean no qualifier for the operand, or the qualifer sequence is
641  not in use (when all qualifiers in the sequence are NILs), we have to
642  handle this special case here. */
643  if (known_qlf == AARCH64_OPND_NIL)
644  {
645  assert (qseq_list[0][known_idx] == AARCH64_OPND_NIL);
646  return qseq_list[0][idx];
647  }
648 
649  for (i = 0, saved_i = -1; i < AARCH64_MAX_QLF_SEQ_NUM; i++)
650  {
651  if (qseq_list[i][known_idx] == known_qlf)
652  {
653  if (saved_i != -1)
654  /* More than one sequences are found to have KNOWN_QLF at
655  KNOWN_IDX. */
656  return AARCH64_OPND_NIL;
657  saved_i = i;
658  }
659  }
660 
661  return qseq_list[saved_i][idx];
662 }
#define AARCH64_MAX_QLF_SEQ_NUM
Definition: aarch64.h:650
lzma_index ** i
Definition: index.h:629
assert(limit<=UINT32_MAX/2)
int idx
Definition: setup.py:197

References AARCH64_MAX_QLF_SEQ_NUM, AARCH64_OPND_NIL, assert(), i, and setup::idx.

◆ aarch64_get_opcode()

const aarch64_opcode* aarch64_get_opcode ( enum  aarch64_op)

Definition at line 318 of file aarch64-opc-2.c.

319 {
321 }
ut8 op
Definition: 6502dis.c:13
static const unsigned op_enum_table[]
struct aarch64_opcode aarch64_opcode_table[]
Definition: aarch64-tbl.h:2241

References aarch64_opcode_table, op, and op_enum_table.

◆ aarch64_get_operand_class()

enum aarch64_operand_class aarch64_get_operand_class ( enum  aarch64_opnd)

◆ aarch64_get_operand_desc()

const char* aarch64_get_operand_desc ( enum  aarch64_opnd)

Definition at line 342 of file aarch64-opc.c.

343 {
344  return aarch64_operands[type].desc;
345 }
const char * desc
Definition: aarch64-opc.h:183

References aarch64_operands, aarch64_operand::desc, and type.

◆ aarch64_get_operand_modifier()

enum aarch64_modifier_kind aarch64_get_operand_modifier ( const struct aarch64_name_value_pair desc)

Definition at line 376 of file aarch64-opc.c.

409 {
411 }
const struct aarch64_name_value_pair aarch64_operand_modifiers[]
Definition: aarch64-opc.c:386
const char * desc
Definition: bin_vsf.c:19

References aarch64_conds, and cond.

◆ aarch64_get_operand_name()

const char* aarch64_get_operand_name ( enum  aarch64_opnd)

Definition at line 334 of file aarch64-opc.c.

335 {
336  return aarch64_operands[type].name;
337 }
const char * name
Definition: aarch64-opc.h:174

References aarch64_operands, aarch64_operand::name, and type.

◆ aarch64_get_qualifier_esize()

◆ aarch64_num_of_operands()

int aarch64_num_of_operands ( const aarch64_opcode opcode)

Definition at line 842 of file aarch64-opc.c.

843 {
844  int i = 0;
845  const enum aarch64_opnd *opnds = opcode->operands;
846  while (opnds[i++] != AARCH64_OPND_NIL)
847  ;
848  --i;
849  assert (i >= 0 && i <= AARCH64_MAX_OPND_NUM);
850  return i;
851 }
#define AARCH64_MAX_OPND_NUM
Definition: aarch64.h:648
aarch64_opnd
Definition: aarch64.h:145
enum aarch64_opnd operands[AARCH64_MAX_OPND_NUM]
Definition: aarch64.h:697

References AARCH64_MAX_OPND_NUM, AARCH64_OPND_NIL, assert(), i, and aarch64_opcode::operands.

Referenced by aarch64_find_best_match(), determine_disassembling_preference(), and match_operands_qualifier().

◆ aarch64_opcode_encode()

int aarch64_opcode_encode ( const aarch64_opcode ,
const aarch64_inst ,
aarch64_insn ,
aarch64_opnd_qualifier_t ,
aarch64_operand_error  
)

◆ aarch64_operand_index()

int aarch64_operand_index ( const enum aarch64_opnd operands,
enum  aarch64_opnd 
)

Definition at line 2736 of file aarch64-opc.c.

2737 {
2738  int i;
2739  for (i = 0; i < AARCH64_MAX_OPND_NUM; ++i)
2740  if (operands[i] == operand)
2741  return i;
2742  else if (operands[i] == AARCH64_OPND_NIL)
2743  break;
2744  return -1;
2745 }
operand
Definition: arc-opc.c:39

References AARCH64_MAX_OPND_NUM, AARCH64_OPND_NIL, and i.

Referenced by do_special_decoding().

◆ aarch64_print_operand()

void aarch64_print_operand ( char *  ,
size_t  ,
bfd_vma  ,
const aarch64_opcode ,
const aarch64_opnd_info ,
int  ,
int ,
bfd_vma ,
char **   
)

◆ aarch64_pstatefield_supported_p()

bfd_boolean aarch64_pstatefield_supported_p ( const  aarch64_feature_set,
const aarch64_sys_reg reg 
)

Definition at line 4293 of file aarch64-opc.c.

4295 {
4296  if (!(reg->flags & F_ARCHEXT))
4297  return TRUE;
4298 
4299  /* PAN. Values are from aarch64_pstatefields. */
4300  if (reg->value == 0x04
4302  return FALSE;
4303 
4304  /* UAO. Values are from aarch64_pstatefields. */
4305  if (reg->value == 0x03
4307  return FALSE;
4308 
4309  /* DIT. Values are from aarch64_pstatefields. */
4310  if (reg->value == 0x1a
4312  return FALSE;
4313 
4314  return TRUE;
4315 }
#define F_ARCHEXT
Definition: aarch64-opc.h:207
#define AARCH64_CPU_HAS_FEATURE(CPU, FEAT)
Definition: aarch64.h:104
static const struct @646 features[]
#define reg(n)

References AARCH64_CPU_HAS_FEATURE, AARCH64_FEATURE_PAN, AARCH64_FEATURE_V8_2, AARCH64_FEATURE_V8_4, F_ARCHEXT, FALSE, features, reg, and TRUE.

◆ aarch64_replace_opcode()

const aarch64_opcode* aarch64_replace_opcode ( struct aarch64_inst inst,
const aarch64_opcode opcode 
)

Definition at line 2715 of file aarch64-opc.c.

2716 {
2717  int i;
2718  const aarch64_opcode *old = inst->opcode;
2719 
2720  inst->opcode = opcode;
2721 
2722  /* Update the operand types. */
2723  for (i = 0; i < AARCH64_MAX_OPND_NUM; ++i)
2724  {
2725  inst->operands[i].type = opcode->operands[i];
2726  if (opcode->operands[i] == AARCH64_OPND_NIL)
2727  break;
2728  }
2729 
2730  DEBUG_TRACE ("replace %s with %s", old->name, opcode->name);
2731 
2732  return old;
2733 }
aarch64_opnd_info operands[AARCH64_MAX_OPND_NUM]
Definition: aarch64.h:1035
const aarch64_opcode * opcode
Definition: aarch64.h:1029
const char * name
Definition: aarch64.h:673
enum aarch64_opnd type
Definition: aarch64.h:920

References AARCH64_MAX_OPND_NUM, AARCH64_OPND_NIL, DEBUG_TRACE, i, aarch64_opcode::name, aarch64_inst::opcode, aarch64_opcode::operands, aarch64_inst::operands, and aarch64_opnd_info::type.

Referenced by determine_disassembling_preference().

◆ aarch64_stack_pointer_p()

int aarch64_stack_pointer_p ( const aarch64_opnd_info operand)

Definition at line 562 of file aarch64-opc.c.

563 {
564  return ((aarch64_get_operand_class (operand->type)
567  && operand->reg.regno == 31);
568 }
enum aarch64_operand_class aarch64_get_operand_class(enum aarch64_opnd type)
Definition: aarch64-opc.c:328
static bfd_boolean operand_maybe_stack_pointer(const aarch64_operand *operand)
Definition: aarch64-opc.h:243

References aarch64_get_operand_class(), aarch64_operands, AARCH64_OPND_CLASS_INT_REG, and operand_maybe_stack_pointer().

Referenced by aarch64_print_operand(), operand_also_qualified_p(), and operand_general_constraint_met_p().

◆ aarch64_sve_dupm_mov_immediate_p()

bfd_boolean aarch64_sve_dupm_mov_immediate_p ( uint64_t  uvalue,
int  esize 
)

Definition at line 4521 of file aarch64-opc.c.

4522 {
4523  int64_t svalue = uvalue;
4524  uint64_t upper = (uint64_t) -1 << (esize * 4) << (esize * 4);
4525 
4526  if ((uvalue & ~upper) != uvalue && (uvalue | upper) != uvalue)
4527  return FALSE;
4528  if (esize <= 4 || (uint32_t) uvalue == (uint32_t) (uvalue >> 32))
4529  {
4530  svalue = (int32_t) uvalue;
4531  if (esize <= 2 || (uint16_t) uvalue == (uint16_t) (uvalue >> 16))
4532  {
4533  svalue = (int16_t) uvalue;
4534  if (esize == 1 || (uint8_t) uvalue == (uint8_t) (uvalue >> 8))
4535  return FALSE;
4536  }
4537  }
4538  if ((svalue & 0xff) == 0)
4539  svalue /= 256;
4540  return svalue < -128 || svalue >= 128;
4541 }
unsigned short uint16_t
Definition: sftypes.h:30
long int64_t
Definition: sftypes.h:32
int int32_t
Definition: sftypes.h:33
unsigned int uint32_t
Definition: sftypes.h:29
unsigned long uint64_t
Definition: sftypes.h:28
short int16_t
Definition: sftypes.h:34
unsigned char uint8_t
Definition: sftypes.h:31

References FALSE.

Referenced by aarch64_ext_sve_limm_mov(), and operand_general_constraint_met_p().

◆ aarch64_sys_ins_reg_has_xt()

bfd_boolean aarch64_sys_ins_reg_has_xt ( const aarch64_sys_ins_reg sys_ins_reg)

Definition at line 4445 of file aarch64-opc.c.

4446 {
4447  return (sys_ins_reg->flags & F_HASXT) != 0;
4448 }
#define F_HASXT
Definition: aarch64-opc.h:210
uint32_t flags
Definition: aarch64.h:861

References F_HASXT, and aarch64_sys_ins_reg::flags.

Referenced by aarch64_ext_regrt_sysins(), aarch64_ext_sysins_op(), and operand_general_constraint_met_p().

◆ aarch64_sys_ins_reg_supported_p()

bfd_boolean aarch64_sys_ins_reg_supported_p ( const  aarch64_feature_set,
const aarch64_sys_ins_reg reg 
)

Definition at line 4451 of file aarch64-opc.c.

4453 {
4454  if (!(reg->flags & F_ARCHEXT))
4455  return TRUE;
4456 
4457  /* DC CVAP. Values are from aarch64_sys_regs_dc. */
4458  if (reg->value == CPENS (3, C7, C12, 1)
4460  return FALSE;
4461 
4462  /* AT S1E1RP, AT S1E1WP. Values are from aarch64_sys_regs_at. */
4463  if ((reg->value == CPENS (0, C7, C9, 0)
4464  || reg->value == CPENS (0, C7, C9, 1))
4466  return FALSE;
4467 
4468  return TRUE;
4469 }
#define C9
Definition: aarch64-opc.c:3663
#define CPENS(op1, crn, crm, op2)
Definition: aarch64-opc.c:3652
#define C12
Definition: aarch64-opc.c:3666
#define C7
Definition: aarch64-opc.c:3661

References AARCH64_CPU_HAS_FEATURE, AARCH64_FEATURE_V8_2, C12, C7, C9, CPENS, F_ARCHEXT, FALSE, features, reg, and TRUE.

◆ aarch64_sys_reg_deprecated_p()

bfd_boolean aarch64_sys_reg_deprecated_p ( const aarch64_sys_reg reg)

Definition at line 4067 of file aarch64-opc.c.

4068 {
4069  return (reg->flags & F_DEPRECATED) != 0;
4070 }
#define F_DEPRECATED
Definition: aarch64-opc.h:204

References F_DEPRECATED, and reg.

Referenced by aarch64_print_operand().

◆ aarch64_sys_reg_supported_p()

bfd_boolean aarch64_sys_reg_supported_p ( const  aarch64_feature_set,
const aarch64_sys_reg reg 
)

Definition at line 4073 of file aarch64-opc.c.

4075 {
4076  if (!(reg->flags & F_ARCHEXT))
4077  return TRUE;
4078 
4079  /* PAN. Values are from aarch64_sys_regs. */
4080  if (reg->value == CPEN_(0,C2,3)
4082  return FALSE;
4083 
4084  /* Virtualization host extensions: system registers. */
4085  if ((reg->value == CPENC (3, 4, C2, C0, 1)
4086  || reg->value == CPENC (3, 4, C13, C0, 1)
4087  || reg->value == CPENC (3, 4, C14, C3, 0)
4088  || reg->value == CPENC (3, 4, C14, C3, 1)
4089  || reg->value == CPENC (3, 4, C14, C3, 2))
4091  return FALSE;
4092 
4093  /* Virtualization host extensions: *_el12 names of *_el1 registers. */
4094  if ((reg->value == CPEN_ (5, C0, 0)
4095  || reg->value == CPEN_ (5, C0, 1)
4096  || reg->value == CPENC (3, 5, C1, C0, 0)
4097  || reg->value == CPENC (3, 5, C1, C0, 2)
4098  || reg->value == CPENC (3, 5, C2, C0, 0)
4099  || reg->value == CPENC (3, 5, C2, C0, 1)
4100  || reg->value == CPENC (3, 5, C2, C0, 2)
4101  || reg->value == CPENC (3, 5, C5, C1, 0)
4102  || reg->value == CPENC (3, 5, C5, C1, 1)
4103  || reg->value == CPENC (3, 5, C5, C2, 0)
4104  || reg->value == CPENC (3, 5, C6, C0, 0)
4105  || reg->value == CPENC (3, 5, C10, C2, 0)
4106  || reg->value == CPENC (3, 5, C10, C3, 0)
4107  || reg->value == CPENC (3, 5, C12, C0, 0)
4108  || reg->value == CPENC (3, 5, C13, C0, 1)
4109  || reg->value == CPENC (3, 5, C14, C1, 0))
4111  return FALSE;
4112 
4113  /* Virtualization host extensions: *_el02 names of *_el0 registers. */
4114  if ((reg->value == CPENC (3, 5, C14, C2, 0)
4115  || reg->value == CPENC (3, 5, C14, C2, 1)
4116  || reg->value == CPENC (3, 5, C14, C2, 2)
4117  || reg->value == CPENC (3, 5, C14, C3, 0)
4118  || reg->value == CPENC (3, 5, C14, C3, 1)
4119  || reg->value == CPENC (3, 5, C14, C3, 2))
4121  return FALSE;
4122 
4123  /* ARMv8.2 features. */
4124 
4125  /* ID_AA64MMFR2_EL1. */
4126  if (reg->value == CPENC (3, 0, C0, C7, 2)
4128  return FALSE;
4129 
4130  /* PSTATE.UAO. */
4131  if (reg->value == CPEN_ (0, C2, 4)
4133  return FALSE;
4134 
4135  /* RAS extension. */
4136 
4137  /* ERRIDR_EL1, ERRSELR_EL1, ERXFR_EL1, ERXCTLR_EL1, ERXSTATUS_EL, ERXADDR_EL1,
4138  ERXMISC0_EL1 AND ERXMISC1_EL1. */
4139  if ((reg->value == CPENC (3, 0, C5, C3, 0)
4140  || reg->value == CPENC (3, 0, C5, C3, 1)
4141  || reg->value == CPENC (3, 0, C5, C3, 2)
4142  || reg->value == CPENC (3, 0, C5, C3, 3)
4143  || reg->value == CPENC (3, 0, C5, C4, 0)
4144  || reg->value == CPENC (3, 0, C5, C4, 1)
4145  || reg->value == CPENC (3, 0, C5, C4, 2)
4146  || reg->value == CPENC (3, 0, C5, C4, 3)
4147  || reg->value == CPENC (3, 0, C5, C5, 0)
4148  || reg->value == CPENC (3, 0, C5, C5, 1))
4150  return FALSE;
4151 
4152  /* VSESR_EL2, DISR_EL1 and VDISR_EL2. */
4153  if ((reg->value == CPENC (3, 4, C5, C2, 3)
4154  || reg->value == CPENC (3, 0, C12, C1, 1)
4155  || reg->value == CPENC (3, 4, C12, C1, 1))
4157  return FALSE;
4158 
4159  /* Statistical Profiling extension. */
4160  if ((reg->value == CPENC (3, 0, C9, C10, 0)
4161  || reg->value == CPENC (3, 0, C9, C10, 1)
4162  || reg->value == CPENC (3, 0, C9, C10, 3)
4163  || reg->value == CPENC (3, 0, C9, C10, 7)
4164  || reg->value == CPENC (3, 0, C9, C9, 0)
4165  || reg->value == CPENC (3, 0, C9, C9, 2)
4166  || reg->value == CPENC (3, 0, C9, C9, 3)
4167  || reg->value == CPENC (3, 0, C9, C9, 4)
4168  || reg->value == CPENC (3, 0, C9, C9, 5)
4169  || reg->value == CPENC (3, 0, C9, C9, 6)
4170  || reg->value == CPENC (3, 0, C9, C9, 7)
4171  || reg->value == CPENC (3, 4, C9, C9, 0)
4172  || reg->value == CPENC (3, 5, C9, C9, 0))
4174  return FALSE;
4175 
4176  /* ARMv8.3 Pointer authentication keys. */
4177  if ((reg->value == CPENC (3, 0, C2, C1, 0)
4178  || reg->value == CPENC (3, 0, C2, C1, 1)
4179  || reg->value == CPENC (3, 0, C2, C1, 2)
4180  || reg->value == CPENC (3, 0, C2, C1, 3)
4181  || reg->value == CPENC (3, 0, C2, C2, 0)
4182  || reg->value == CPENC (3, 0, C2, C2, 1)
4183  || reg->value == CPENC (3, 0, C2, C2, 2)
4184  || reg->value == CPENC (3, 0, C2, C2, 3)
4185  || reg->value == CPENC (3, 0, C2, C3, 0)
4186  || reg->value == CPENC (3, 0, C2, C3, 1))
4188  return FALSE;
4189 
4190  /* SVE. */
4191  if ((reg->value == CPENC (3, 0, C0, C4, 4)
4192  || reg->value == CPENC (3, 0, C1, C2, 0)
4193  || reg->value == CPENC (3, 4, C1, C2, 0)
4194  || reg->value == CPENC (3, 6, C1, C2, 0)
4195  || reg->value == CPENC (3, 5, C1, C2, 0)
4196  || reg->value == CPENC (3, 0, C0, C0, 7))
4198  return FALSE;
4199 
4200  /* ARMv8.4 features. */
4201 
4202  /* PSTATE.DIT. */
4203  if (reg->value == CPEN_ (3, C2, 5)
4205  return FALSE;
4206 
4207  /* Virtualization extensions. */
4208  if ((reg->value == CPENC(3, 4, C2, C6, 2)
4209  || reg->value == CPENC(3, 4, C2, C6, 0)
4210  || reg->value == CPENC(3, 4, C14, C4, 0)
4211  || reg->value == CPENC(3, 4, C14, C4, 2)
4212  || reg->value == CPENC(3, 4, C14, C4, 1)
4213  || reg->value == CPENC(3, 4, C14, C5, 0)
4214  || reg->value == CPENC(3, 4, C14, C5, 2)
4215  || reg->value == CPENC(3, 4, C14, C5, 1)
4216  || reg->value == CPENC(3, 4, C1, C3, 1)
4217  || reg->value == CPENC(3, 4, C2, C2, 0))
4219  return FALSE;
4220 
4221  /* ARMv8.4 TLB instructions. */
4222  if ((reg->value == CPENS (0, C8, C1, 0)
4223  || reg->value == CPENS (0, C8, C1, 1)
4224  || reg->value == CPENS (0, C8, C1, 2)
4225  || reg->value == CPENS (0, C8, C1, 3)
4226  || reg->value == CPENS (0, C8, C1, 5)
4227  || reg->value == CPENS (0, C8, C1, 7)
4228  || reg->value == CPENS (4, C8, C4, 0)
4229  || reg->value == CPENS (4, C8, C4, 4)
4230  || reg->value == CPENS (4, C8, C1, 1)
4231  || reg->value == CPENS (4, C8, C1, 5)
4232  || reg->value == CPENS (4, C8, C1, 6)
4233  || reg->value == CPENS (6, C8, C1, 1)
4234  || reg->value == CPENS (6, C8, C1, 5)
4235  || reg->value == CPENS (4, C8, C1, 0)
4236  || reg->value == CPENS (4, C8, C1, 4)
4237  || reg->value == CPENS (6, C8, C1, 0)
4238  || reg->value == CPENS (0, C8, C6, 1)
4239  || reg->value == CPENS (0, C8, C6, 3)
4240  || reg->value == CPENS (0, C8, C6, 5)
4241  || reg->value == CPENS (0, C8, C6, 7)
4242  || reg->value == CPENS (0, C8, C2, 1)
4243  || reg->value == CPENS (0, C8, C2, 3)
4244  || reg->value == CPENS (0, C8, C2, 5)
4245  || reg->value == CPENS (0, C8, C2, 7)
4246  || reg->value == CPENS (0, C8, C5, 1)
4247  || reg->value == CPENS (0, C8, C5, 3)
4248  || reg->value == CPENS (0, C8, C5, 5)
4249  || reg->value == CPENS (0, C8, C5, 7)
4250  || reg->value == CPENS (4, C8, C0, 2)
4251  || reg->value == CPENS (4, C8, C0, 6)
4252  || reg->value == CPENS (4, C8, C4, 2)
4253  || reg->value == CPENS (4, C8, C4, 6)
4254  || reg->value == CPENS (4, C8, C4, 3)
4255  || reg->value == CPENS (4, C8, C4, 7)
4256  || reg->value == CPENS (4, C8, C6, 1)
4257  || reg->value == CPENS (4, C8, C6, 5)
4258  || reg->value == CPENS (4, C8, C2, 1)
4259  || reg->value == CPENS (4, C8, C2, 5)
4260  || reg->value == CPENS (4, C8, C5, 1)
4261  || reg->value == CPENS (4, C8, C5, 5)
4262  || reg->value == CPENS (6, C8, C6, 1)
4263  || reg->value == CPENS (6, C8, C6, 5)
4264  || reg->value == CPENS (6, C8, C2, 1)
4265  || reg->value == CPENS (6, C8, C2, 5)
4266  || reg->value == CPENS (6, C8, C5, 1)
4267  || reg->value == CPENS (6, C8, C5, 5))
4269  return FALSE;
4270 
4271  return TRUE;
4272 }
#define CPENC(op0, op1, crn, crm, op2)
Definition: aarch64-opc.c:3647
#define C5
Definition: aarch64-opc.c:3659
#define C6
Definition: aarch64-opc.c:3660
#define C1
Definition: aarch64-opc.c:3655
#define C3
Definition: aarch64-opc.c:3657
#define C8
Definition: aarch64-opc.c:3662
#define C10
Definition: aarch64-opc.c:3664
#define C13
Definition: aarch64-opc.c:3667
#define CPEN_(op1, crm, op2)
Definition: aarch64-opc.c:3650
#define C0
Definition: aarch64-opc.c:3654
#define C14
Definition: aarch64-opc.c:3668
#define C4
Definition: aarch64-opc.c:3658
#define C2
Definition: aarch64-opc.c:3656
#define AARCH64_FEATURE_SVE
Definition: aarch64.h:63
#define AARCH64_FEATURE_PROFILE
Definition: aarch64.h:62

References AARCH64_CPU_HAS_FEATURE, AARCH64_FEATURE_PAN, AARCH64_FEATURE_PROFILE, AARCH64_FEATURE_RAS, AARCH64_FEATURE_SVE, AARCH64_FEATURE_V8_1, AARCH64_FEATURE_V8_2, AARCH64_FEATURE_V8_3, AARCH64_FEATURE_V8_4, C0, C1, C10, C12, C13, C14, C2, C3, C4, C5, C6, C7, C8, C9, CPEN_, CPENC, CPENS, F_ARCHEXT, FALSE, features, reg, and TRUE.

◆ aarch64_zero_register_p()

int aarch64_zero_register_p ( const aarch64_opnd_info operand)

Definition at line 572 of file aarch64-opc.c.

573 {
574  return ((aarch64_get_operand_class (operand->type)
577  && operand->reg.regno == 31);
578 }

References aarch64_get_operand_class(), aarch64_operands, AARCH64_OPND_CLASS_INT_REG, and operand_maybe_stack_pointer().

◆ alias_opcode_p()

static bfd_boolean alias_opcode_p ( const aarch64_opcode opcode)
inlinestatic

Definition at line 780 of file aarch64.h.

781 {
782  return (opcode->flags & F_ALIAS) ? TRUE : FALSE;
783 }
#define F_ALIAS
Definition: aarch64.h:722
uint32_t flags
Definition: aarch64.h:706

References F_ALIAS, FALSE, aarch64_opcode::opcode, and TRUE.

Referenced by determine_disassembling_preference().

◆ empty_qualifier_sequence_p()

static bfd_boolean empty_qualifier_sequence_p ( const aarch64_opnd_qualifier_t qualifiers)
inlinestatic

Definition at line 659 of file aarch64.h.

660 {
661  int i;
662  for (i = 0; i < AARCH64_MAX_OPND_NUM; ++i)
663  if (qualifiers[i] != AARCH64_OPND_QLF_NIL)
664  return FALSE;
665  return TRUE;
666 }

Referenced by aarch64_find_best_match().

◆ get_cond_from_value()

const aarch64_cond* get_cond_from_value ( aarch64_insn  value)

Definition at line 369 of file aarch64-opc.c.

370 {
371  assert (value < 16);
372  return &aarch64_conds[(unsigned int) value];
373 }
const aarch64_cond aarch64_conds[16]
Definition: aarch64-opc.c:348
static int value
Definition: cmd_api.c:93
static int
Definition: sfsocketcall.h:114

References aarch64_conds, assert(), int, and value.

Referenced by aarch64_ext_cond(), and do_special_decoding().

◆ get_inverted_cond()

const aarch64_cond* get_inverted_cond ( const aarch64_cond cond)

Definition at line 376 of file aarch64-opc.c.

377 {
378  return &aarch64_conds[cond->value ^ 0x1];
379 }
#define cond(bop, top, mask, flags)

Referenced by convert_csinc_to_cset(), and convert_from_csel().

◆ get_opcode_dependent_value()

static unsigned int get_opcode_dependent_value ( const aarch64_opcode opcode)
inlinestatic

◆ get_optional_operand_default_value()

static aarch64_insn get_optional_operand_default_value ( const aarch64_opcode opcode)
inlinestatic

Definition at line 812 of file aarch64.h.

813 {
814  return (opcode->flags >> 15) & 0x1f;
815 }

References aarch64_opcode::opcode.

Referenced by aarch64_print_operand().

◆ opcode_has_alias()

static bfd_boolean opcode_has_alias ( const aarch64_opcode opcode)
inlinestatic

Definition at line 786 of file aarch64.h.

787 {
788  return (opcode->flags & F_HAS_ALIAS) ? TRUE : FALSE;
789 }
#define F_HAS_ALIAS
Definition: aarch64.h:723

References F_HAS_ALIAS, FALSE, aarch64_opcode::opcode, and TRUE.

Referenced by determine_disassembling_preference().

◆ opcode_has_special_coder()

static bfd_boolean opcode_has_special_coder ( const aarch64_opcode opcode)
inlinestatic

Definition at line 824 of file aarch64.h.

825 {
826  return (opcode->flags & (F_SF | F_LSE_SZ | F_SIZEQ | F_FPTYPE | F_SSIZE | F_T
828  : FALSE;
829 }
#define F_SF
Definition: aarch64.h:732
#define F_SIZEQ
Definition: aarch64.h:734
#define F_T
Definition: aarch64.h:740
#define F_N
Definition: aarch64.h:766
#define F_GPRSIZE_IN_Q
Definition: aarch64.h:742
#define F_LSE_SZ
Definition: aarch64.h:770
#define F_COND
Definition: aarch64.h:730
#define F_SSIZE
Definition: aarch64.h:738
#define F_FPTYPE
Definition: aarch64.h:736
#define F_LDS_SIZE
Definition: aarch64.h:744
#define F_MISC
Definition: aarch64.h:764

References F_COND, F_FPTYPE, F_GPRSIZE_IN_Q, F_LDS_SIZE, F_LSE_SZ, F_MISC, F_N, F_SF, F_SIZEQ, F_SSIZE, F_T, FALSE, aarch64_opcode::opcode, and TRUE.

Referenced by aarch64_opcode_decode().

◆ opcode_priority()

static int opcode_priority ( const aarch64_opcode opcode)
inlinestatic

Definition at line 793 of file aarch64.h.

794 {
795  return (opcode->flags >> 2) & 0x3;
796 }

References aarch64_opcode::opcode.

◆ optional_operand_p()

static bfd_boolean optional_operand_p ( const aarch64_opcode opcode,
unsigned int  idx 
)
inlinestatic

Definition at line 805 of file aarch64.h.

806 {
807  return (((opcode->flags >> 12) & 0x7) == idx + 1)
808  ? TRUE : FALSE;
809 }

References FALSE, setup::idx, aarch64_opcode::opcode, and TRUE.

Referenced by aarch64_print_operand().

◆ pseudo_opcode_p()

static bfd_boolean pseudo_opcode_p ( const aarch64_opcode opcode)
inlinestatic

Definition at line 799 of file aarch64.h.

800 {
801  return (opcode->flags & F_PSEUDO) != 0lu ? TRUE : FALSE;
802 }
#define F_PSEUDO
Definition: aarch64.h:762

References F_PSEUDO, FALSE, aarch64_opcode::opcode, and TRUE.

Referenced by determine_disassembling_preference().

Variable Documentation

◆ aarch64_barrier_options

const struct aarch64_name_value_pair aarch64_barrier_options[16]
extern

Definition at line 437 of file aarch64-opc.c.

Referenced by aarch64_ext_barrier().

◆ aarch64_conds

const aarch64_cond aarch64_conds[16]
extern

Definition at line 348 of file aarch64-opc.c.

Referenced by aarch64_get_operand_modifier(), and get_cond_from_value().

◆ aarch64_hint_options

const struct aarch64_name_value_pair aarch64_hint_options[]
extern

Definition at line 437 of file aarch64-opc.c.

Referenced by aarch64_ext_hint().

◆ aarch64_opcode_table

◆ aarch64_operand_modifiers

const struct aarch64_name_value_pair aarch64_operand_modifiers[]
extern

◆ aarch64_prfops

const struct aarch64_name_value_pair aarch64_prfops[32]
extern

Definition at line 437 of file aarch64-opc.c.

Referenced by aarch64_ext_prfop().

◆ aarch64_pstatefields

const aarch64_sys_reg aarch64_pstatefields[]
extern

Definition at line 4281 of file aarch64-opc.c.

Referenced by aarch64_ext_pstatefield(), and aarch64_print_operand().

◆ aarch64_sve_pattern_array

const char* const aarch64_sve_pattern_array[32]
extern

Definition at line 43 of file aarch64-opc.c.

Referenced by aarch64_print_operand().

◆ aarch64_sve_prfop_array

const char* const aarch64_sve_prfop_array[16]
extern

Definition at line 84 of file aarch64-opc.c.

Referenced by aarch64_print_operand().

◆ aarch64_sys_regs

const aarch64_sys_reg aarch64_sys_regs[]
extern

Definition at line 3673 of file aarch64-opc.c.

Referenced by aarch64_print_operand().

◆ aarch64_sys_regs_at

const aarch64_sys_ins_reg aarch64_sys_regs_at[]
extern

Definition at line 4339 of file aarch64-opc.c.

Referenced by aarch64_ext_sysins_op().

◆ aarch64_sys_regs_dc

const aarch64_sys_ins_reg aarch64_sys_regs_dc[]
extern

Definition at line 4325 of file aarch64-opc.c.

Referenced by aarch64_ext_sysins_op().

◆ aarch64_sys_regs_ic

const aarch64_sys_ins_reg aarch64_sys_regs_ic[]
extern

Definition at line 4317 of file aarch64-opc.c.

Referenced by aarch64_ext_sysins_op().

◆ aarch64_sys_regs_tlbi

const aarch64_sys_ins_reg aarch64_sys_regs_tlbi[]
extern

Definition at line 4358 of file aarch64-opc.c.

Referenced by aarch64_ext_sysins_op().