LLVM: lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp File Reference (original) (raw)

Go to the source code of this file.

Macros
#define DEBUG_TYPE "riscv-disassembler"
Functions
static MCDisassembler * createRISCVDisassembler (const Target &T, const MCSubtargetInfo &STI, MCContext &Ctx)
LLVM_ABI LLVM_EXTERNAL_VISIBILITY void LLVMInitializeRISCVDisassembler ()
static DecodeStatus DecodeGPRRegisterClass (MCInst &Inst, uint32_t RegNo, uint64_t Address, const MCDisassembler *Decoder)
static DecodeStatus DecodeGPRF16RegisterClass (MCInst &Inst, uint32_t RegNo, uint64_t Address, const MCDisassembler *Decoder)
static DecodeStatus DecodeGPRF32RegisterClass (MCInst &Inst, uint32_t RegNo, uint64_t Address, const MCDisassembler *Decoder)
static DecodeStatus DecodeGPRX1X5RegisterClass (MCInst &Inst, uint32_t RegNo, uint64_t Address, const MCDisassembler *Decoder)
static DecodeStatus DecodeFPR16RegisterClass (MCInst &Inst, uint32_t RegNo, uint64_t Address, const MCDisassembler *Decoder)
static DecodeStatus DecodeFPR32RegisterClass (MCInst &Inst, uint32_t RegNo, uint64_t Address, const MCDisassembler *Decoder)
static DecodeStatus DecodeFPR32CRegisterClass (MCInst &Inst, uint32_t RegNo, uint64_t Address, const MCDisassembler *Decoder)
static DecodeStatus DecodeFPR64RegisterClass (MCInst &Inst, uint32_t RegNo, uint64_t Address, const MCDisassembler *Decoder)
static DecodeStatus DecodeFPR64CRegisterClass (MCInst &Inst, uint32_t RegNo, uint64_t Address, const MCDisassembler *Decoder)
static DecodeStatus DecodeFPR128RegisterClass (MCInst &Inst, uint32_t RegNo, uint64_t Address, const MCDisassembler *Decoder)
static DecodeStatus DecodeGPRX1RegisterClass (MCInst &Inst, const MCDisassembler *Decoder)
static DecodeStatus DecodeSPRegisterClass (MCInst &Inst, const MCDisassembler *Decoder)
static DecodeStatus DecodeSPRegisterClass (MCInst &Inst, uint64_t RegNo, uint32_t Address, const MCDisassembler *Decoder)
static DecodeStatus DecodeGPRX5RegisterClass (MCInst &Inst, const MCDisassembler *Decoder)
static DecodeStatus DecodeGPRNoX0RegisterClass (MCInst &Inst, uint32_t RegNo, uint64_t Address, const MCDisassembler *Decoder)
static DecodeStatus DecodeGPRNoX2RegisterClass (MCInst &Inst, uint64_t RegNo, uint32_t Address, const MCDisassembler *Decoder)
static DecodeStatus DecodeGPRNoX31RegisterClass (MCInst &Inst, uint32_t RegNo, uint64_t Address, const MCDisassembler *Decoder)
static DecodeStatus DecodeGPRCRegisterClass (MCInst &Inst, uint32_t RegNo, uint64_t Address, const MCDisassembler *Decoder)
static DecodeStatus DecodeGPRPairRegisterClass (MCInst &Inst, uint32_t RegNo, uint64_t Address, const MCDisassembler *Decoder)
static DecodeStatus DecodeGPRPairNoX0RegisterClass (MCInst &Inst, uint32_t RegNo, uint64_t Address, const MCDisassembler *Decoder)
static DecodeStatus DecodeGPRPairCRegisterClass (MCInst &Inst, uint32_t RegNo, uint64_t Address, const MCDisassembler *Decoder)
static DecodeStatus DecodeSR07RegisterClass (MCInst &Inst, uint32_t RegNo, uint64_t Address, const void *Decoder)
static DecodeStatus DecodeVRRegisterClass (MCInst &Inst, uint32_t RegNo, uint64_t Address, const MCDisassembler *Decoder)
static DecodeStatus DecodeVRM2RegisterClass (MCInst &Inst, uint32_t RegNo, uint64_t Address, const MCDisassembler *Decoder)
static DecodeStatus DecodeVRM4RegisterClass (MCInst &Inst, uint32_t RegNo, uint64_t Address, const MCDisassembler *Decoder)
static DecodeStatus DecodeVRM8RegisterClass (MCInst &Inst, uint32_t RegNo, uint64_t Address, const MCDisassembler *Decoder)
static DecodeStatus DecodeVMV0RegisterClass (MCInst &Inst, uint32_t RegNo, uint64_t Address, const MCDisassembler *Decoder)
static DecodeStatus DecodeTRRegisterClass (MCInst &Inst, uint32_t RegNo, uint64_t Address, const MCDisassembler *Decoder)
static DecodeStatus DecodeTRM2RegisterClass (MCInst &Inst, uint32_t RegNo, uint64_t Address, const MCDisassembler *Decoder)
static DecodeStatus DecodeTRM4RegisterClass (MCInst &Inst, uint32_t RegNo, uint64_t Address, const MCDisassembler *Decoder)
static DecodeStatus decodeVMaskReg (MCInst &Inst, uint32_t RegNo, uint64_t Address, const MCDisassembler *Decoder)
static DecodeStatus decodeImmThreeOperand (MCInst &Inst, const MCDisassembler *Decoder)
static DecodeStatus decodeImmFourOperand (MCInst &Inst, const MCDisassembler *Decoder)
template<unsigned N>
static DecodeStatus decodeUImmOperand (MCInst &Inst, uint32_t Imm, int64_t Address, const MCDisassembler *Decoder)
template<unsigned Width, unsigned LowerBound>
static DecodeStatus decodeUImmOperandGE (MCInst &Inst, uint32_t Imm, int64_t Address, const MCDisassembler *Decoder)
template<unsigned Width, unsigned LowerBound>
static DecodeStatus decodeUImmPlus1OperandGE (MCInst &Inst, uint32_t Imm, int64_t Address, const MCDisassembler *Decoder)
static DecodeStatus decodeUImmSlistOperand (MCInst &Inst, uint32_t Imm, int64_t Address, const MCDisassembler *Decoder)
static DecodeStatus decodeUImmLog2XLenOperand (MCInst &Inst, uint32_t Imm, int64_t Address, const MCDisassembler *Decoder)
template<unsigned N>
static DecodeStatus decodeUImmNonZeroOperand (MCInst &Inst, uint32_t Imm, int64_t Address, const MCDisassembler *Decoder)
static DecodeStatus decodeUImmLog2XLenNonZeroOperand (MCInst &Inst, uint32_t Imm, int64_t Address, const MCDisassembler *Decoder)
template<unsigned N>
static DecodeStatus decodeUImmPlus1Operand (MCInst &Inst, uint32_t Imm, int64_t Address, const MCDisassembler *Decoder)
static DecodeStatus decodeImmZibiOperand (MCInst &Inst, uint32_t Imm, int64_t Address, const MCDisassembler *Decoder)
template<unsigned N>
static DecodeStatus decodeSImmOperand (MCInst &Inst, uint32_t Imm, int64_t Address, const MCDisassembler *Decoder)
template<unsigned N>
static DecodeStatus decodeSImmNonZeroOperand (MCInst &Inst, uint32_t Imm, int64_t Address, const MCDisassembler *Decoder)
template<unsigned T, unsigned N>
static DecodeStatus decodeSImmOperandAndLslN (MCInst &Inst, uint32_t Imm, int64_t Address, const MCDisassembler *Decoder)
static DecodeStatus decodeCLUIImmOperand (MCInst &Inst, uint32_t Imm, int64_t Address, const MCDisassembler *Decoder)
static DecodeStatus decodeFRMArg (MCInst &Inst, uint32_t Imm, int64_t Address, const MCDisassembler *Decoder)
static DecodeStatus decodeRTZArg (MCInst &Inst, uint32_t Imm, int64_t Address, const MCDisassembler *Decoder)
static DecodeStatus decodeZcmpRlist (MCInst &Inst, uint32_t Imm, uint64_t Address, const MCDisassembler *Decoder)
static DecodeStatus decodeXqccmpRlistS0 (MCInst &Inst, uint32_t Imm, uint64_t Address, const MCDisassembler *Decoder)
Variables
static constexpr FeatureBitset XCVFeatureGroup
static constexpr FeatureBitset XRivosFeatureGroup
static constexpr FeatureBitset XqciFeatureGroup
static constexpr FeatureBitset XSfVectorGroup
static constexpr FeatureBitset XSfSystemGroup
static constexpr FeatureBitset XMIPSGroup
static constexpr FeatureBitset XTHeadGroup
static constexpr FeatureBitset XAndesGroup
static constexpr FeatureBitset XSMTGroup = {RISCV::FeatureVendorXSMTVDot}
static constexpr DecoderListEntry DecoderList32 []
static constexpr DecoderListEntry DecoderList16 []
static constexpr DecoderListEntry DecoderList48 []

DEBUG_TYPE

#define DEBUG_TYPE "riscv-disassembler"

createRISCVDisassembler()

decodeCLUIImmOperand()

DecodeFPR128RegisterClass()

DecodeFPR16RegisterClass()

DecodeFPR32CRegisterClass()

DecodeFPR32RegisterClass()

DecodeFPR64CRegisterClass()

DecodeFPR64RegisterClass()

decodeFRMArg()

DecodeGPRCRegisterClass()

DecodeGPRF16RegisterClass()

DecodeGPRF32RegisterClass()

DecodeGPRNoX0RegisterClass()

DecodeGPRNoX2RegisterClass()

DecodeGPRNoX31RegisterClass()

DecodeGPRPairCRegisterClass()

DecodeGPRPairNoX0RegisterClass()

DecodeGPRPairRegisterClass()

DecodeGPRRegisterClass()

DecodeGPRX1RegisterClass()

DecodeGPRX1X5RegisterClass()

DecodeGPRX5RegisterClass()

decodeImmFourOperand()

decodeImmThreeOperand()

decodeImmZibiOperand()

decodeRTZArg()

decodeSImmNonZeroOperand()

decodeSImmOperand()

decodeSImmOperandAndLslN()

DecodeSPRegisterClass() [1/2]

DecodeSPRegisterClass() [2/2]

DecodeSR07RegisterClass()

DecodeTRM2RegisterClass()

DecodeTRM4RegisterClass()

DecodeTRRegisterClass()

decodeUImmLog2XLenNonZeroOperand()

decodeUImmLog2XLenOperand()

decodeUImmNonZeroOperand()

decodeUImmOperand()

decodeUImmOperandGE()

decodeUImmPlus1Operand()

decodeUImmPlus1OperandGE()

decodeUImmSlistOperand()

decodeVMaskReg()

DecodeVMV0RegisterClass()

DecodeVRM2RegisterClass()

DecodeVRM4RegisterClass()

DecodeVRM8RegisterClass()

DecodeVRRegisterClass()

decodeXqccmpRlistS0()

decodeZcmpRlist()

LLVMInitializeRISCVDisassembler()

DecoderList16

DecoderListEntry DecoderList16[] staticconstexpr

Initial value:

{

{DecoderTableXqci16, XqciFeatureGroup, "Qualcomm uC 16-bit"},

{DecoderTableXqccmp16,

{RISCV::FeatureVendorXqccmp},

"Xqccmp (Qualcomm 16-bit Push/Pop & Double Move Instructions)"},

{DecoderTableXwchc16, {RISCV::FeatureVendorXwchc}, "WCH QingKe XW"},

{DecoderTableZicfiss16, {}, "Zicfiss (Shadow Stack 16-bit)"},

{DecoderTable16, {}, "standard 16-bit instructions"},

{DecoderTableRV32Only16, {}, "RV32-only 16-bit instructions"},

{DecoderTableZcOverlap16,

{},

"ZcOverlap (16-bit Instructions overlapping with Zcf/Zcd)"},

}

static constexpr FeatureBitset XqciFeatureGroup

Definition at line 747 of file RISCVDisassembler.cpp.

DecoderList32

DecoderListEntry DecoderList32[] staticconstexpr

Initial value:

{

{DecoderTableXCV32, XCVFeatureGroup, "CORE-V extensions"},

{DecoderTableXRivos32, XRivosFeatureGroup, "Rivos"},

{DecoderTableXqci32, XqciFeatureGroup, "Qualcomm uC Extensions"},

{DecoderTableXVentana32,

{RISCV::FeatureVendorXVentanaCondOps},

"XVentanaCondOps"},

{DecoderTableXTHead32, XTHeadGroup, "T-Head extensions"},

{DecoderTableXSfvector32, XSfVectorGroup, "SiFive vector extensions"},

{DecoderTableXSfsystem32, XSfSystemGroup, "SiFive system extensions"},

{DecoderTableXSfcease32, {RISCV::FeatureVendorXSfcease}, "SiFive sf.cease"},

{DecoderTableXMIPS32, XMIPSGroup, "Mips extensions"},

{DecoderTableXAndes32, XAndesGroup, "Andes extensions"},

{DecoderTableXSMT32, XSMTGroup, "SpacemiT extensions"},

{DecoderTable32, {}, "standard 32-bit instructions"},

{DecoderTableRV32Only32, {}, "RV32-only standard 32-bit instructions"},

{DecoderTableZfinx32, {}, "Zfinx (Float in Integer)"},

{DecoderTableZdinxRV32Only32, {}, "RV32-only Zdinx (Double in Integer)"},

}

static constexpr FeatureBitset XSMTGroup

static constexpr FeatureBitset XCVFeatureGroup

static constexpr FeatureBitset XSfVectorGroup

static constexpr FeatureBitset XMIPSGroup

static constexpr FeatureBitset XAndesGroup

static constexpr FeatureBitset XTHeadGroup

static constexpr FeatureBitset XRivosFeatureGroup

static constexpr FeatureBitset XSfSystemGroup

Definition at line 689 of file RISCVDisassembler.cpp.

DecoderList48

DecoderListEntry DecoderList48[] staticconstexpr

XAndesGroup

Initial value:

= {

RISCV::FeatureVendorXAndesPerf, RISCV::FeatureVendorXAndesBFHCvt,

RISCV::FeatureVendorXAndesVBFHCvt, RISCV::FeatureVendorXAndesVSIntH,

RISCV::FeatureVendorXAndesVSIntLoad, RISCV::FeatureVendorXAndesVPackFPH,

RISCV::FeatureVendorXAndesVDot}

Definition at line 681 of file RISCVDisassembler.cpp.

XCVFeatureGroup

Initial value:

= {

RISCV::FeatureVendorXCVbitmanip, RISCV::FeatureVendorXCVelw,

RISCV::FeatureVendorXCVmac, RISCV::FeatureVendorXCVmem,

RISCV::FeatureVendorXCValu, RISCV::FeatureVendorXCVsimd,

RISCV::FeatureVendorXCVbi}

Definition at line 631 of file RISCVDisassembler.cpp.

XMIPSGroup

Initial value:

= {

RISCV::FeatureVendorXMIPSLSP,

RISCV::FeatureVendorXMIPSCMov,

RISCV::FeatureVendorXMIPSCBOP,

RISCV::FeatureVendorXMIPSEXECTL,

}

Definition at line 666 of file RISCVDisassembler.cpp.

XqciFeatureGroup

Initial value:

= {

RISCV::FeatureVendorXqcia, RISCV::FeatureVendorXqciac,

RISCV::FeatureVendorXqcibi, RISCV::FeatureVendorXqcibm,

RISCV::FeatureVendorXqcicli, RISCV::FeatureVendorXqcicm,

RISCV::FeatureVendorXqcics, RISCV::FeatureVendorXqcicsr,

RISCV::FeatureVendorXqciint, RISCV::FeatureVendorXqciio,

RISCV::FeatureVendorXqcilb, RISCV::FeatureVendorXqcili,

RISCV::FeatureVendorXqcilia, RISCV::FeatureVendorXqcilo,

RISCV::FeatureVendorXqcilsm, RISCV::FeatureVendorXqcisim,

RISCV::FeatureVendorXqcisls, RISCV::FeatureVendorXqcisync,

}

Definition at line 642 of file RISCVDisassembler.cpp.

XRivosFeatureGroup

Initial value:

= {

RISCV::FeatureVendorXRivosVisni,

RISCV::FeatureVendorXRivosVizip,

}

Definition at line 637 of file RISCVDisassembler.cpp.

XSfSystemGroup

Initial value:

= {

RISCV::FeatureVendorXSiFivecdiscarddlone,

RISCV::FeatureVendorXSiFivecflushdlone,

}

Definition at line 661 of file RISCVDisassembler.cpp.

XSfVectorGroup

Initial value:

= {

RISCV::FeatureVendorXSfvcp, RISCV::FeatureVendorXSfvqmaccdod,

RISCV::FeatureVendorXSfvqmaccqoq, RISCV::FeatureVendorXSfvfwmaccqqq,

RISCV::FeatureVendorXSfvfnrclipxfqf, RISCV::FeatureVendorXSfmmbase,

RISCV::FeatureVendorXSfvfexpa, RISCV::FeatureVendorXSfvfexpa64e,

RISCV::FeatureVendorXSfvfbfexp16e, RISCV::FeatureVendorXSfvfexp16e,

RISCV::FeatureVendorXSfvfexp32e}

Definition at line 654 of file RISCVDisassembler.cpp.

XSMTGroup

XTHeadGroup

Initial value:

= {

RISCV::FeatureVendorXTHeadBa, RISCV::FeatureVendorXTHeadBb,

RISCV::FeatureVendorXTHeadBs, RISCV::FeatureVendorXTHeadCondMov,

RISCV::FeatureVendorXTHeadCmo, RISCV::FeatureVendorXTHeadFMemIdx,

RISCV::FeatureVendorXTHeadMac, RISCV::FeatureVendorXTHeadMemIdx,

RISCV::FeatureVendorXTHeadMemPair, RISCV::FeatureVendorXTHeadSync,

RISCV::FeatureVendorXTHeadVdot}

Definition at line 673 of file RISCVDisassembler.cpp.