|
LLVM 24.0.0git
|
#include "AArch64Disassembler.h"#include "AArch64ExternalSymbolizer.h"#include "MCTargetDesc/AArch64AddressingModes.h"#include "MCTargetDesc/AArch64MCTargetDesc.h"#include "TargetInfo/AArch64TargetInfo.h"#include "Utils/AArch64BaseInfo.h"#include "llvm/MC/MCDecoder.h"#include "llvm/MC/MCDecoderOps.h"#include "llvm/MC/MCDisassembler/MCRelocationInfo.h"#include "llvm/MC/MCInst.h"#include "llvm/MC/MCInstrDesc.h"#include "llvm/MC/MCRegisterInfo.h"#include "llvm/MC/MCSubtargetInfo.h"#include "llvm/MC/TargetRegistry.h"#include "llvm/Support/Compiler.h"#include "llvm/Support/Debug.h"#include <memory>#include "AArch64GenDisassemblerTables.inc"#include "AArch64GenInstrInfo.inc"Go to the source code of this file.
Macros | |
| #define | DEBUG_TYPE "aarch64-disassembler" |
| #define | Success MCDisassembler::Success |
| #define | Fail MCDisassembler::Fail |
| #define | SoftFail MCDisassembler::SoftFail |
Typedefs | |
| using | DecodeStatus = MCDisassembler::DecodeStatus |
| #define DEBUG_TYPE "aarch64-disassembler" |
Definition at line 33 of file AArch64Disassembler.cpp.
| #define Fail MCDisassembler::Fail |
Definition at line 43 of file AArch64Disassembler.cpp.
Referenced by checkedGetHex(), DecodeAddSubERegInstruction(), DecodeAddSubImmShift(), DecodeAdrInstruction(), DecodeAuthLoadInstruction(), DecodeExclusiveLdStInstruction(), DecodeGPR64x8ClassRegisterClass(), DecodeGPRSeqPairsClassRegisterClass(), DecodeHinteUImm16(), DecodeImm8OptLsl(), DecodeLogicalImmInstruction(), DecodeMatrixTileListRegisterClass(), DecodeMoveImmInstruction(), DecodeMulMinMaxRegisterClass(), DecodePairLdStInstruction(), DecodePCRelLabel16(), DecodePPR2Mul2RegisterClass(), DecodePRFMRegInstruction(), DecodeSignedLdStInstruction(), DecodeSImm(), DecodeSimpleRegisterClass(), DecodeSVCROp(), DecodeSVELogicalImmInstruction(), DecodeSyspXzrInstruction(), DecodeSystemPStateImm0_15Instruction(), DecodeSystemPStateImm0_1Instruction(), DecodeThreeAddrSRegInstruction(), DecodeUnsignedLdStInstruction(), DecodeZK(), DecodeZPR2Mul2RegisterClass(), DecodeZPR4Mul4RegisterClass(), llvm::object::MachOObjectFile::getChainedFixupsSegments(), parseThunkName(), NodeArray::printAsString(), llvm::orc::detail::WaitingOnGraphOpReplay< ContainerIdT, ElementIdT >::Replayer::replay(), llvm::sys::RetryAfterSignal(), safeToMergeTerminators(), and llvm::BTFParser::symbolize().
| #define SoftFail MCDisassembler::SoftFail |
Definition at line 44 of file AArch64Disassembler.cpp.
Referenced by DecodeAuthLoadInstruction(), DecodeExclusiveLdStInstruction(), DecodePairLdStInstruction(), and DecodeSignedLdStInstruction().
| #define Success MCDisassembler::Success |
Definition at line 42 of file AArch64Disassembler.cpp.
Referenced by canRenameUntilSecondLoad(), collectMetadataInfo(), combineIRFlags(), computeLabelDiff(), createCmpXchgInstFun(), DecodeAddSubERegInstruction(), DecodeAddSubImmShift(), DecodeAdrInstruction(), DecodeAuthLoadInstruction(), DecodeExclusiveLdStInstruction(), DecodeFixedPointScaleImm32(), DecodeFixedPointScaleImm64(), DecodeFMOVLaneInstruction(), DecodeGPR64x8ClassRegisterClass(), DecodeGPRSeqPairsClassRegisterClass(), DecodeHinteUImm16(), DecodeImm8OptLsl(), DecodeLogicalImmInstruction(), DecodeMatrixTileListRegisterClass(), DecodeMemExtend(), DecodeModImmInstruction(), DecodeModImmTiedInstruction(), DecodeMoveImmInstruction(), DecodeMPR128RegisterClass(), DecodeMPR16RegisterClass(), DecodeMPR32RegisterClass(), DecodeMPR64RegisterClass(), DecodeMPR8RegisterClass(), DecodeMPRRegisterClass(), DecodeMRSSystemRegister(), DecodeMSRSystemRegister(), DecodeMulMinMaxRegisterClass(), DecodePairLdStInstruction(), DecodePCRelLabel16(), DecodePCRelLabel19(), DecodePCRelLabel9(), DecodePPR2Mul2RegisterClass(), DecodePRFMRegInstruction(), DecodeSignedLdStInstruction(), DecodeSImm(), DecodeSimpleRegisterClass(), DecodeSMESpillFillInstruction(), DecodeSVCROp(), DecodeSVEIncDecImm(), DecodeSVELogicalImmInstruction(), DecodeSyspXzrInstruction(), DecodeSystemPStateImm0_15Instruction(), DecodeSystemPStateImm0_1Instruction(), DecodeTestAndBranch(), DecodeThreeAddrSRegInstruction(), DecodeUnconditionalBranch(), DecodeUnsignedLdStInstruction(), DecodeVecShiftLImm(), DecodeVecShiftRImm(), DecodeZeroImm(), DecodeZK(), DecodeZPR2Mul2RegisterClass(), DecodeZPR4Mul4RegisterClass(), DecodeZTRRegisterClass(), emitLoad(), emitStore(), getAttrValueAsInt(), getCompoundInsn(), insertCSRSaves(), LowerCMP_SWAP(), mergeCompatibleInvokesImpl(), and sinkLastInstruction().
Definition at line 36 of file AArch64Disassembler.cpp.
|
static |
Definition at line 1630 of file AArch64Disassembler.cpp.
References T.
Referenced by LLVMInitializeAArch64Disassembler().
|
static |
Definition at line 1674 of file AArch64Disassembler.cpp.
Referenced by LLVMInitializeAArch64Disassembler().
|
static |
Definition at line 1049 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), DecodeSimpleRegisterClass(), Fail, llvm::MCD::fieldFromInstruction(), llvm::MCInst::getOpcode(), and Success.
|
static |
Definition at line 1237 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), DecodeSimpleRegisterClass(), Fail, llvm::MCD::fieldFromInstruction(), Success, and llvm::MCDisassembler::tryAddingSymbolicOperand().
|
static |
Definition at line 1222 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), DecodeSimpleRegisterClass(), Fail, llvm::MCD::fieldFromInstruction(), llvm::SignExtend64(), Success, and llvm::MCDisassembler::tryAddingSymbolicOperand().
|
static |
Definition at line 1014 of file AArch64Disassembler.cpp.
References DecodeSImm(), DecodeSimpleRegisterClass(), Fail, llvm::MCD::fieldFromInstruction(), llvm::MCInst::getOpcode(), SoftFail, and Success.
|
static |
Definition at line 1484 of file AArch64Disassembler.cpp.
References DecodeSimpleRegisterClass(), llvm::MCDisassembler::Fail, llvm::MCD::fieldFromInstruction(), and llvm::MCDisassembler::Success.
|
static |
Definition at line 756 of file AArch64Disassembler.cpp.
References DecodeSimpleRegisterClass(), Fail, llvm::MCD::fieldFromInstruction(), llvm::MCInst::getOpcode(), SoftFail, and Success.
|
static |
Definition at line 197 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), and Success.
|
static |
Definition at line 206 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), and Success.
|
static |
Definition at line 275 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), DecodeSimpleRegisterClass(), llvm::MCD::fieldFromInstruction(), and Success.
|
static |
Definition at line 60 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createReg(), Fail, and Success.
|
static |
Definition at line 1360 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createReg(), Fail, Reg, and Success.
Referenced by DecodeWSeqPairsClassRegisterClass(), and DecodeXSeqPairsClassRegisterClass().
|
static |
Definition at line 1457 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), Fail, and Success.
|
static |
Definition at line 1446 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), Fail, and Success.
|
static |
Definition at line 1124 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), DecodeSimpleRegisterClass(), Fail, llvm::MCD::fieldFromInstruction(), llvm::MCInst::getOpcode(), llvm::AArch64_AM::isValidDecodeLogicalImmediate(), and Success.
|
static |
Definition at line 123 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), Fail, and Success.
|
static |
Definition at line 249 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), and Success.
Referenced by DecodePRFMRegInstruction().
|
static |
Definition at line 1161 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), DecodeSimpleRegisterClass(), llvm::MCD::fieldFromInstruction(), llvm::MCInst::getOpcode(), and Success.
|
static |
Definition at line 1202 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), DecodeSimpleRegisterClass(), llvm::MCD::fieldFromInstruction(), and Success.
|
static |
Definition at line 448 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), DecodeSimpleRegisterClass(), Fail, llvm::MCD::fieldFromInstruction(), llvm::MCInst::getOpcode(), llvm::MCInst::getOperand(), Success, and llvm::MCDisassembler::tryAddingSymbolicOperand().
|
static |
Definition at line 177 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createReg(), Reg, and Success.
|
static |
Definition at line 150 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createReg(), Reg, and Success.
|
static |
Definition at line 159 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createReg(), Reg, and Success.
|
static |
Definition at line 168 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createReg(), Reg, and Success.
|
static |
Definition at line 144 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createReg(), and Success.
|
static |
Definition at line 138 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createReg(), and Success.
Referenced by DecodeSMESpillFillInstruction().
|
static |
Definition at line 257 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), and Success.
|
static |
Definition at line 267 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), and Success.
|
static |
Definition at line 76 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createReg(), Fail, Reg, and Success.
|
static |
Definition at line 849 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), DecodeSimpleRegisterClass(), Fail, llvm::MCD::fieldFromInstruction(), llvm::MCInst::getOpcode(), llvm::SignExtend64(), SoftFail, and Success.
|
static |
Definition at line 213 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), Fail, Success, and llvm::MCDisassembler::tryAddingSymbolicOperand().
|
static |
Definition at line 228 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), llvm::MCInst::getOpcode(), llvm::SignExtend64(), Success, and llvm::MCDisassembler::tryAddingSymbolicOperand().
|
static |
Definition at line 239 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), llvm::SignExtend64(), Success, and llvm::MCDisassembler::tryAddingSymbolicOperand().
|
static |
Definition at line 186 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createReg(), Fail, and Success.
|
static |
Definition at line 1570 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), DecodeMemExtend(), DecodeSimpleRegisterClass(), Fail, llvm::MCD::fieldFromInstruction(), llvm::MCInst::getOpcode(), and Success.
|
static |
Definition at line 1544 of file AArch64Disassembler.cpp.
References DecodeSimpleRegisterClass(), llvm::MCDisassembler::Fail, llvm::MCD::fieldFromInstruction(), and llvm::MCDisassembler::Success.
|
static |
Definition at line 1515 of file AArch64Disassembler.cpp.
References DecodeSimpleRegisterClass(), llvm::MCDisassembler::Fail, llvm::MCD::fieldFromInstruction(), and llvm::MCDisassembler::Success.
|
static |
Definition at line 553 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), DecodeSimpleRegisterClass(), Fail, llvm::MCD::fieldFromInstruction(), llvm::MCInst::getOpcode(), llvm::SignExtend64(), SoftFail, and Success.
|
static |
Definition at line 1431 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), Fail, and Success.
Referenced by DecodeAuthLoadInstruction().
|
static |
Definition at line 47 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createReg(), Fail, and Success.
Referenced by DecodeAddSubERegInstruction(), DecodeAddSubImmShift(), DecodeAdrInstruction(), DecodeAuthLoadInstruction(), DecodeCPYMemOpInstruction(), DecodeExclusiveLdStInstruction(), DecodeFMOVLaneInstruction(), DecodeLogicalImmInstruction(), DecodeModImmInstruction(), DecodeModImmTiedInstruction(), DecodeMoveImmInstruction(), DecodePairLdStInstruction(), DecodePRFMRegInstruction(), DecodeSETMemGoOpInstruction(), DecodeSETMemOpInstruction(), DecodeSignedLdStInstruction(), DecodeSMESpillFillInstruction(), DecodeSVELogicalImmInstruction(), DecodeSyspXzrInstruction(), DecodeTestAndBranch(), DecodeThreeAddrSRegInstruction(), and DecodeUnsignedLdStInstruction().
|
static |
Definition at line 1608 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), DecodeMPRRegisterClass(), DecodeSimpleRegisterClass(), llvm::MCD::fieldFromInstruction(), and Success.
|
static |
Definition at line 1475 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), Fail, and Success.
|
static |
Definition at line 1468 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), and Success.
|
static |
Definition at line 1408 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), DecodeSimpleRegisterClass(), Fail, llvm::MCD::fieldFromInstruction(), llvm::MCInst::getOpcode(), llvm::AArch64_AM::isValidDecodeLogicalImmediate(), and Success.
|
static |
Definition at line 1386 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), DecodeSimpleRegisterClass(), Fail, llvm::MCD::fieldFromInstruction(), and Success.
|
static |
Definition at line 1296 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), Fail, llvm::MCD::fieldFromInstruction(), llvm::MCSubtargetInfo::getFeatureBits(), llvm::MCDisassembler::getSubtargetInfo(), isInvalidPState(), and Success.
|
static |
Definition at line 1317 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), Fail, llvm::MCD::fieldFromInstruction(), llvm::MCSubtargetInfo::getFeatureBits(), llvm::MCDisassembler::getSubtargetInfo(), isInvalidPState(), and Success.
|
static |
Definition at line 1338 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), DecodeSimpleRegisterClass(), llvm::MCD::fieldFromInstruction(), llvm::SignExtend64(), Success, and llvm::MCDisassembler::tryAddingSymbolicOperand().
|
static |
Definition at line 381 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), DecodeSimpleRegisterClass(), Fail, llvm::MCD::fieldFromInstruction(), llvm::MCInst::getOpcode(), and Success.
|
static |
Definition at line 1278 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), llvm::MCD::fieldFromInstruction(), llvm::SignExtend64(), Success, and llvm::MCDisassembler::tryAddingSymbolicOperand().
|
static |
Definition at line 487 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), DecodeSimpleRegisterClass(), Fail, llvm::MCD::fieldFromInstruction(), llvm::MCInst::getOpcode(), Success, and llvm::MCDisassembler::tryAddingSymbolicOperand().
|
static |
Definition at line 368 of file AArch64Disassembler.cpp.
References DecodeVecShiftLImm().
|
static |
Definition at line 362 of file AArch64Disassembler.cpp.
References DecodeVecShiftLImm().
|
static |
Definition at line 356 of file AArch64Disassembler.cpp.
References DecodeVecShiftLImm().
|
static |
Definition at line 374 of file AArch64Disassembler.cpp.
References DecodeVecShiftLImm().
|
static |
Definition at line 308 of file AArch64Disassembler.cpp.
References llvm::Add, llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), and Success.
Referenced by DecodeVecShiftL16Imm(), DecodeVecShiftL32Imm(), DecodeVecShiftL64Imm(), and DecodeVecShiftL8Imm().
|
static |
Definition at line 338 of file AArch64Disassembler.cpp.
References DecodeVecShiftRImm().
|
static |
Definition at line 344 of file AArch64Disassembler.cpp.
References DecodeVecShiftRImm().
|
static |
Definition at line 326 of file AArch64Disassembler.cpp.
References DecodeVecShiftRImm().
|
static |
Definition at line 332 of file AArch64Disassembler.cpp.
References DecodeVecShiftRImm().
|
static |
Definition at line 314 of file AArch64Disassembler.cpp.
References DecodeVecShiftRImm().
|
static |
Definition at line 320 of file AArch64Disassembler.cpp.
References DecodeVecShiftRImm().
|
static |
Definition at line 350 of file AArch64Disassembler.cpp.
References DecodeVecShiftRImm().
|
static |
Definition at line 302 of file AArch64Disassembler.cpp.
References llvm::Add, llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), and Success.
Referenced by DecodeVecShiftR16Imm(), DecodeVecShiftR16ImmNarrow(), DecodeVecShiftR32Imm(), DecodeVecShiftR32ImmNarrow(), DecodeVecShiftR64Imm(), DecodeVecShiftR64ImmNarrow(), and DecodeVecShiftR8Imm().
|
static |
Definition at line 1373 of file AArch64Disassembler.cpp.
References DecodeGPRSeqPairsClassRegisterClass().
|
static |
Definition at line 1380 of file AArch64Disassembler.cpp.
References DecodeGPRSeqPairsClassRegisterClass().
|
static |
Definition at line 1425 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createImm(), and Success.
|
static |
Definition at line 100 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createReg(), Fail, and Success.
|
static |
Definition at line 87 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createReg(), Fail, Reg, and Success.
|
static |
Definition at line 111 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createReg(), Fail, and Success.
|
static |
Definition at line 132 of file AArch64Disassembler.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createReg(), and Success.
Definition at line 1289 of file AArch64Disassembler.cpp.
Referenced by DecodeSystemPStateImm0_15Instruction(), and DecodeSystemPStateImm0_1Instruction().
| LLVM_ABI LLVM_EXTERNAL_VISIBILITY void LLVMInitializeAArch64Disassembler | ( | ) |
Definition at line 1683 of file AArch64Disassembler.cpp.
References createAArch64Disassembler(), createAArch64ExternalSymbolizer(), llvm::getTheAArch64_32Target(), llvm::getTheAArch64beTarget(), llvm::getTheAArch64leTarget(), llvm::getTheARM64_32Target(), llvm::getTheARM64Target(), llvm::TargetRegistry::RegisterMCDisassembler(), and llvm::TargetRegistry::RegisterMCSymbolizer().