LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Macros | Typedefs | Functions
AArch64Disassembler.cpp File Reference
#include "AArch64.h"
#include "AArch64RegisterInfo.h"
#include "AArch64Subtarget.h"
#include "Utils/AArch64BaseInfo.h"
#include "llvm/MC/MCInst.h"
#include "llvm/MC/MCInstrDesc.h"
#include "llvm/MC/MCExpr.h"
#include "llvm/MC/MCContext.h"
#include "llvm/MC/MCDisassembler.h"
#include "llvm/MC/MCFixedLenDisassembler.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/MemoryObject.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/TargetRegistry.h"
#include "llvm/Support/raw_ostream.h"
#include "AArch64GenDisassemblerTables.inc"
#include "AArch64GenInstrInfo.inc"
Include dependency graph for AArch64Disassembler.cpp:

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "arm-disassembler"
 

Typedefs

typedef
MCDisassembler::DecodeStatus 
DecodeStatus
 

Functions

static DecodeStatus DecodeGPR64RegisterClass (llvm::MCInst &Inst, unsigned RegNo, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeGPR64xspRegisterClass (llvm::MCInst &Inst, unsigned RegNo, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeGPR32RegisterClass (llvm::MCInst &Inst, unsigned RegNo, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeGPR32wspRegisterClass (llvm::MCInst &Inst, unsigned RegNo, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeFPR8RegisterClass (llvm::MCInst &Inst, unsigned RegNo, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeFPR16RegisterClass (llvm::MCInst &Inst, unsigned RegNo, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeFPR32RegisterClass (llvm::MCInst &Inst, unsigned RegNo, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeFPR64RegisterClass (llvm::MCInst &Inst, unsigned RegNo, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeFPR64LoRegisterClass (llvm::MCInst &Inst, unsigned RegNo, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeFPR128RegisterClass (llvm::MCInst &Inst, unsigned RegNo, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeFPR128LoRegisterClass (llvm::MCInst &Inst, unsigned RegNo, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeGPR64noxzrRegisterClass (llvm::MCInst &Inst, unsigned RegNo, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeDPairRegisterClass (llvm::MCInst &Inst, unsigned RegNo, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeQPairRegisterClass (llvm::MCInst &Inst, unsigned RegNo, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeDTripleRegisterClass (llvm::MCInst &Inst, unsigned RegNo, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeQTripleRegisterClass (llvm::MCInst &Inst, unsigned RegNo, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeDQuadRegisterClass (llvm::MCInst &Inst, unsigned RegNo, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeQQuadRegisterClass (llvm::MCInst &Inst, unsigned RegNo, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeAddrRegExtendOperand (llvm::MCInst &Inst, unsigned OptionHiS, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeBitfield32ImmOperand (llvm::MCInst &Inst, unsigned Imm6Bits, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeCVT32FixedPosOperand (llvm::MCInst &Inst, unsigned Imm6Bits, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeFPZeroOperand (llvm::MCInst &Inst, unsigned RmBits, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeShiftRightImm8 (MCInst &Inst, unsigned Val, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeShiftRightImm16 (MCInst &Inst, unsigned Val, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeShiftRightImm32 (MCInst &Inst, unsigned Val, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeShiftRightImm64 (MCInst &Inst, unsigned Val, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeShiftLeftImm8 (MCInst &Inst, unsigned Val, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeShiftLeftImm16 (MCInst &Inst, unsigned Val, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeShiftLeftImm32 (MCInst &Inst, unsigned Val, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeShiftLeftImm64 (MCInst &Inst, unsigned Val, uint64_t Address, const void *Decoder)
 
template<int RegWidth>
static DecodeStatus DecodeMoveWideImmOperand (llvm::MCInst &Inst, unsigned FullImm, uint64_t Address, const void *Decoder)
 
template<int RegWidth>
static DecodeStatus DecodeLogicalImmOperand (llvm::MCInst &Inst, unsigned Bits, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeRegExtendOperand (llvm::MCInst &Inst, unsigned ShiftAmount, uint64_t Address, const void *Decoder)
 
template<A64SE::ShiftExtSpecifiers Ext, bool IsHalf>
static DecodeStatus DecodeNeonMovImmShiftOperand (llvm::MCInst &Inst, unsigned ShiftAmount, uint64_t Address, const void *Decoder)
 
static DecodeStatus Decode32BitShiftOperand (llvm::MCInst &Inst, unsigned ShiftAmount, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeBitfieldInstruction (llvm::MCInst &Inst, unsigned Insn, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeFMOVLaneInstruction (llvm::MCInst &Inst, unsigned Insn, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeLDSTPairInstruction (llvm::MCInst &Inst, unsigned Insn, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeLoadPairExclusiveInstruction (llvm::MCInst &Inst, unsigned Val, uint64_t Address, const void *Decoder)
 
template<typename SomeNamedImmMapper >
static DecodeStatus DecodeNamedImmOperand (llvm::MCInst &Inst, unsigned Val, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeSysRegOperand (const A64SysReg::SysRegMapper &InstMapper, llvm::MCInst &Inst, unsigned Val, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeMRSOperand (llvm::MCInst &Inst, unsigned Val, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeMSROperand (llvm::MCInst &Inst, unsigned Val, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeSingleIndexedInstruction (llvm::MCInst &Inst, unsigned Val, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeVLDSTPostInstruction (MCInst &Inst, unsigned Val, uint64_t Address, const void *Decoder)
 
static DecodeStatus DecodeVLDSTLanePostInstruction (MCInst &Inst, unsigned Insn, uint64_t Address, const void *Decoder)
 
static bool Check (DecodeStatus &Out, DecodeStatus In)
 
static unsigned getReg (const void *D, unsigned RC, unsigned RegNo)
 
static DecodeStatus DecodeRegisterClassByID (llvm::MCInst &Inst, unsigned RegNo, unsigned RegID, const void *Decoder)
 
static DecodeStatus DecodeLoadPairExclusiveInstruction (llvm::MCInst &Inst, uint32_t Val, uint64_t Address, const void *Decoder)
 
static MCDisassemblercreateAArch64Disassembler (const Target &T, const MCSubtargetInfo &STI)
 
void LLVMInitializeAArch64Disassembler ()
 

Macro Definition Documentation

#define DEBUG_TYPE   "arm-disassembler"

Definition at line 16 of file AArch64Disassembler.cpp.

Typedef Documentation

Definition at line 36 of file AArch64Disassembler.cpp.

Function Documentation

static bool Check ( DecodeStatus Out,
DecodeStatus  In 
)
static
static MCDisassembler* createAArch64Disassembler ( const Target T,
const MCSubtargetInfo STI 
)
static
static DecodeStatus Decode32BitShiftOperand ( llvm::MCInst Inst,
unsigned  ShiftAmount,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeAddrRegExtendOperand ( llvm::MCInst Inst,
unsigned  OptionHiS,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeBitfield32ImmOperand ( llvm::MCInst Inst,
unsigned  Imm6Bits,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeBitfieldInstruction ( llvm::MCInst Inst,
unsigned  Insn,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeCVT32FixedPosOperand ( llvm::MCInst Inst,
unsigned  Imm6Bits,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeDPairRegisterClass ( llvm::MCInst Inst,
unsigned  RegNo,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeDQuadRegisterClass ( llvm::MCInst Inst,
unsigned  RegNo,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeDTripleRegisterClass ( llvm::MCInst Inst,
unsigned  RegNo,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeFMOVLaneInstruction ( llvm::MCInst Inst,
unsigned  Insn,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeFPR128LoRegisterClass ( llvm::MCInst Inst,
unsigned  RegNo,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeFPR128RegisterClass ( llvm::MCInst Inst,
unsigned  RegNo,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeFPR16RegisterClass ( llvm::MCInst Inst,
unsigned  RegNo,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeFPR32RegisterClass ( llvm::MCInst Inst,
unsigned  RegNo,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeFPR64LoRegisterClass ( llvm::MCInst Inst,
unsigned  RegNo,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeFPR64RegisterClass ( llvm::MCInst Inst,
unsigned  RegNo,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeFPR8RegisterClass ( llvm::MCInst Inst,
unsigned  RegNo,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeFPZeroOperand ( llvm::MCInst Inst,
unsigned  RmBits,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeGPR32RegisterClass ( llvm::MCInst Inst,
unsigned  RegNo,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeGPR32wspRegisterClass ( llvm::MCInst Inst,
unsigned  RegNo,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeGPR64noxzrRegisterClass ( llvm::MCInst Inst,
unsigned  RegNo,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeGPR64RegisterClass ( llvm::MCInst Inst,
unsigned  RegNo,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeGPR64xspRegisterClass ( llvm::MCInst Inst,
unsigned  RegNo,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeLDSTPairInstruction ( llvm::MCInst Inst,
unsigned  Insn,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeLoadPairExclusiveInstruction ( llvm::MCInst Inst,
unsigned  Val,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeLoadPairExclusiveInstruction ( llvm::MCInst Inst,
uint32_t  Val,
uint64_t  Address,
const void *  Decoder 
)
static
template<int RegWidth>
static DecodeStatus DecodeLogicalImmOperand ( llvm::MCInst Inst,
unsigned  Bits,
uint64_t  Address,
const void *  Decoder 
)
static
template<int RegWidth>
static DecodeStatus DecodeMoveWideImmOperand ( llvm::MCInst Inst,
unsigned  FullImm,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeMRSOperand ( llvm::MCInst Inst,
unsigned  Val,
uint64_t  Address,
const void *  Decoder 
)
static

Definition at line 915 of file AArch64Disassembler.cpp.

References DecodeSysRegOperand().

static DecodeStatus DecodeMSROperand ( llvm::MCInst Inst,
unsigned  Val,
uint64_t  Address,
const void *  Decoder 
)
static

Definition at line 923 of file AArch64Disassembler.cpp.

References DecodeSysRegOperand().

template<typename SomeNamedImmMapper >
static DecodeStatus DecodeNamedImmOperand ( llvm::MCInst Inst,
unsigned  Val,
uint64_t  Address,
const void *  Decoder 
)
static
template<A64SE::ShiftExtSpecifiers Ext, bool IsHalf>
static DecodeStatus DecodeNeonMovImmShiftOperand ( llvm::MCInst Inst,
unsigned  ShiftAmount,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeQPairRegisterClass ( llvm::MCInst Inst,
unsigned  RegNo,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeQQuadRegisterClass ( llvm::MCInst Inst,
unsigned  RegNo,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeQTripleRegisterClass ( llvm::MCInst Inst,
unsigned  RegNo,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeRegExtendOperand ( llvm::MCInst Inst,
unsigned  ShiftAmount,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeRegisterClassByID ( llvm::MCInst Inst,
unsigned  RegNo,
unsigned  RegID,
const void *  Decoder 
)
static
static DecodeStatus DecodeShiftLeftImm16 ( MCInst Inst,
unsigned  Val,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeShiftLeftImm32 ( MCInst Inst,
unsigned  Val,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeShiftLeftImm64 ( MCInst Inst,
unsigned  Val,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeShiftLeftImm8 ( MCInst Inst,
unsigned  Val,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeShiftRightImm16 ( MCInst Inst,
unsigned  Val,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeShiftRightImm32 ( MCInst Inst,
unsigned  Val,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeShiftRightImm64 ( MCInst Inst,
unsigned  Val,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeShiftRightImm8 ( MCInst Inst,
unsigned  Val,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeSingleIndexedInstruction ( llvm::MCInst Inst,
unsigned  Val,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeSysRegOperand ( const A64SysReg::SysRegMapper InstMapper,
llvm::MCInst Inst,
unsigned  Val,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeVLDSTLanePostInstruction ( MCInst Inst,
unsigned  Insn,
uint64_t  Address,
const void *  Decoder 
)
static
static DecodeStatus DecodeVLDSTPostInstruction ( MCInst Inst,
unsigned  Val,
uint64_t  Address,
const void *  Decoder 
)
static
static unsigned getReg ( const void *  D,
unsigned  RC,
unsigned  RegNo 
)
static

Definition at line 295 of file AArch64Disassembler.cpp.

Referenced by AddNodeIDCustom(), llvm::PPCInstrInfo::canInsertSelect(), CC_Hexagon32_VarArgs(), CheckForPhysRegDependency(), llvm::ScheduleDAGSDNodes::computeOperandLatency(), llvm::SelectionDAGBuilder::CopyValueToVirtualRegister(), DecodeFPR128RegisterClass(), DecodeFPR16RegisterClass(), DecodeFPR32RegisterClass(), DecodeFPR64RegisterClass(), DecodeFPR8RegisterClass(), DecodeGPR32RegisterClass(), DecodeGPR32wspRegisterClass(), DecodeGPR64noxzrRegisterClass(), DecodeGPR64RegisterClass(), DecodeGPR64xspRegisterClass(), DecodeRegisterClassByID(), emitAlignedDPRCS2Restores(), llvm::AArch64FrameLowering::emitFrameMemOps(), GetCostForDef(), getTruncatedArgReg(), HasNoSignedComparisonUses(), hasOnlyLiveInOpers(), hasOnlyLiveOutUses(), llvm::XCoreInstrInfo::InsertBranch(), llvm::ARMBaseInstrInfo::InsertBranch(), llvm::HexagonInstrInfo::InsertBranch(), llvm::NVPTXInstrInfo::InsertBranch(), llvm::PPCInstrInfo::InsertBranch(), llvm::PPCInstrInfo::insertSelect(), llvm::HexagonTargetLowering::LowerINLINEASM(), MatchingStackOffset(), llvm::ARMBaseInstrInfo::PredicateInstruction(), llvm::R600InstrInfo::PredicateInstruction(), llvm::PPCInstrInfo::PredicateInstruction(), llvm::TargetInstrInfo::PredicateInstruction(), llvm::HexagonFrameLowering::restoreCalleeSavedRegisters(), RetCC_Hexagon32_VarArgs(), llvm::PPCInstrInfo::ReverseBranchCondition(), llvm::rewriteT2FrameIndex(), llvm::HexagonFrameLowering::spillCalleeSavedRegisters(), and llvm::PPCInstrInfo::SubsumesPredicate().

void LLVMInitializeAArch64Disassembler ( )