LLVM 22.0.0git
|
AArch64MCInstLower - This class is used to lower an MachineInstr into an MCInst. More...
#include "Target/AArch64/AArch64MCInstLower.h"
Public Member Functions | |
AArch64MCInstLower (MCContext &ctx, AsmPrinter &printer) | |
bool | lowerOperand (const MachineOperand &MO, MCOperand &MCOp) const |
void | Lower (const MachineInstr *MI, MCInst &OutMI) const |
MCOperand | lowerSymbolOperandMachO (const MachineOperand &MO, MCSymbol *Sym) const |
MCOperand | lowerSymbolOperandELF (const MachineOperand &MO, MCSymbol *Sym) const |
MCOperand | lowerSymbolOperandCOFF (const MachineOperand &MO, MCSymbol *Sym) const |
MCOperand | LowerSymbolOperand (const MachineOperand &MO, MCSymbol *Sym) const |
MCSymbol * | GetGlobalValueSymbol (const GlobalValue *GV, unsigned TargetFlags) const |
MCSymbol * | GetGlobalAddressSymbol (const MachineOperand &MO) const |
MCSymbol * | GetExternalSymbolSymbol (const MachineOperand &MO) const |
AArch64MCInstLower - This class is used to lower an MachineInstr into an MCInst.
Definition at line 27 of file AArch64MCInstLower.h.
AArch64MCInstLower::AArch64MCInstLower | ( | MCContext & | ctx, |
AsmPrinter & | printer ) |
Definition at line 38 of file AArch64MCInstLower.cpp.
References printer.
MCSymbol * AArch64MCInstLower::GetExternalSymbolSymbol | ( | const MachineOperand & | MO | ) | const |
Definition at line 142 of file AArch64MCInstLower.cpp.
References llvm::MachineOperand::getSymbolName().
Referenced by lowerOperand().
MCSymbol * AArch64MCInstLower::GetGlobalAddressSymbol | ( | const MachineOperand & | MO | ) | const |
Definition at line 42 of file AArch64MCInstLower.cpp.
References llvm::MachineOperand::getGlobal(), GetGlobalValueSymbol(), and llvm::MachineOperand::getTargetFlags().
Referenced by lowerOperand().
MCSymbol * AArch64MCInstLower::GetGlobalValueSymbol | ( | const GlobalValue * | GV, |
unsigned | TargetFlags ) const |
Definition at line 46 of file AArch64MCInstLower.cpp.
References assert(), llvm::cast(), llvm::MCSymbolRefExpr::create(), llvm::getArm64ECMangledFunctionName(), llvm::MachineModuleInfoCOFF::getGVStubEntry(), llvm::GlobalValue::hasExternalLinkage(), llvm::is_contained(), llvm::isa(), llvm::Triple::isOSBinFormatCOFF(), llvm::Triple::isOSWindows(), llvm::Triple::isWindowsArm64EC(), llvm::MCSA_Global, llvm::MCSA_WeakAntiDep, llvm::AArch64II::MO_ARM64EC_CALLMANGLE, llvm::AArch64II::MO_COFFSTUB, and llvm::AArch64II::MO_DLLIMPORT.
Referenced by GetGlobalAddressSymbol().
void AArch64MCInstLower::Lower | ( | const MachineInstr * | MI, |
MCInst & | OutMI ) const |
Definition at line 376 of file AArch64MCInstLower.cpp.
References llvm::MCInst::addOperand(), llvm::MCOperand::createReg(), llvm::MCInst::getOpcode(), lowerOperand(), MI, and llvm::MCInst::setOpcode().
bool AArch64MCInstLower::lowerOperand | ( | const MachineOperand & | MO, |
MCOperand & | MCOp ) const |
Definition at line 332 of file AArch64MCInstLower.cpp.
References llvm::MCSymbolRefExpr::create(), llvm::MCOperand::createExpr(), llvm::MCOperand::createImm(), llvm::MCOperand::createReg(), llvm::MachineOperand::getBlockAddress(), GetExternalSymbolSymbol(), GetGlobalAddressSymbol(), llvm::MachineOperand::getImm(), llvm::MachineOperand::getIndex(), llvm::MachineOperand::getMBB(), llvm::MachineOperand::getMCSymbol(), llvm::MachineOperand::getReg(), llvm::MachineBasicBlock::getSymbol(), llvm::MachineOperand::getType(), llvm::MachineOperand::isImplicit(), llvm_unreachable, LowerSymbolOperand(), llvm::MachineOperand::MO_BlockAddress, llvm::MachineOperand::MO_ConstantPoolIndex, llvm::MachineOperand::MO_ExternalSymbol, llvm::MachineOperand::MO_GlobalAddress, llvm::MachineOperand::MO_Immediate, llvm::MachineOperand::MO_JumpTableIndex, llvm::MachineOperand::MO_MachineBasicBlock, llvm::MachineOperand::MO_MCSymbol, llvm::MachineOperand::MO_Register, and llvm::MachineOperand::MO_RegisterMask.
Referenced by Lower().
MCOperand AArch64MCInstLower::LowerSymbolOperand | ( | const MachineOperand & | MO, |
MCSymbol * | Sym ) const |
Definition at line 321 of file AArch64MCInstLower.cpp.
References assert(), lowerSymbolOperandCOFF(), lowerSymbolOperandELF(), and lowerSymbolOperandMachO().
Referenced by lowerOperand().
MCOperand AArch64MCInstLower::lowerSymbolOperandCOFF | ( | const MachineOperand & | MO, |
MCSymbol * | Sym ) const |
Definition at line 270 of file AArch64MCInstLower.cpp.
References llvm::MCConstantExpr::create(), llvm::MCSpecifierExpr::create(), llvm::MCSymbolRefExpr::create(), llvm::MCBinaryExpr::createAdd(), llvm::MCOperand::createExpr(), llvm::MachineOperand::getOffset(), llvm::MachineOperand::getTargetFlags(), llvm::MachineOperand::isJTI(), llvm::AArch64II::MO_FRAGMENT, llvm::AArch64II::MO_G0, llvm::AArch64II::MO_G1, llvm::AArch64II::MO_G2, llvm::AArch64II::MO_G3, llvm::AArch64II::MO_HI12, llvm::AArch64II::MO_NC, llvm::AArch64II::MO_PAGE, llvm::AArch64II::MO_PAGEOFF, llvm::AArch64II::MO_S, llvm::AArch64II::MO_TLS, llvm::AArch64::S_ABS, llvm::AArch64::S_G0, llvm::AArch64::S_G1, llvm::AArch64::S_G2, llvm::AArch64::S_G3, llvm::AArch64::S_NC, llvm::AArch64::S_PAGE, llvm::AArch64::S_PAGEOFF, llvm::AArch64::S_SABS, llvm::AArch64::S_SECREL_HI12, and llvm::AArch64::S_SECREL_LO12.
Referenced by LowerSymbolOperand().
MCOperand AArch64MCInstLower::lowerSymbolOperandELF | ( | const MachineOperand & | MO, |
MCSymbol * | Sym ) const |
Definition at line 182 of file AArch64MCInstLower.cpp.
References assert(), llvm::MCConstantExpr::create(), llvm::MCSpecifierExpr::create(), llvm::MCSymbolRefExpr::create(), llvm::MCBinaryExpr::createAdd(), llvm::MCOperand::createExpr(), EnableAArch64ELFLocalDynamicTLSGeneration, llvm::TLSModel::GeneralDynamic, llvm::MachineOperand::getGlobal(), llvm::MachineFunction::getInfo(), llvm::MachineOperand::getOffset(), llvm::MachineBasicBlock::getParent(), llvm::MachineInstr::getParent(), llvm::MachineOperand::getParent(), llvm::MachineOperand::getSymbolName(), llvm::MachineOperand::getTargetFlags(), llvm::AArch64FunctionInfo::hasELFSignedGOT(), llvm::TLSModel::InitialExec, llvm::MachineOperand::isGlobal(), llvm::MachineOperand::isJTI(), llvm::MachineOperand::isSymbol(), llvm::TLSModel::LocalDynamic, llvm::TLSModel::LocalExec, llvm::AArch64II::MO_FRAGMENT, llvm::AArch64II::MO_G0, llvm::AArch64II::MO_G1, llvm::AArch64II::MO_G2, llvm::AArch64II::MO_G3, llvm::AArch64II::MO_GOT, llvm::AArch64II::MO_HI12, llvm::AArch64II::MO_NC, llvm::AArch64II::MO_PAGE, llvm::AArch64II::MO_PAGEOFF, llvm::AArch64II::MO_PREL, llvm::AArch64II::MO_TLS, llvm::AArch64::S_ABS, llvm::AArch64::S_DTPREL, llvm::AArch64::S_G0, llvm::AArch64::S_G1, llvm::AArch64::S_G2, llvm::AArch64::S_G3, llvm::AArch64::S_GOT, llvm::AArch64::S_GOT_AUTH, llvm::AArch64::S_GOTTPREL, llvm::AArch64::S_HI12, llvm::AArch64::S_NC, llvm::AArch64::S_PAGE, llvm::AArch64::S_PAGEOFF, llvm::AArch64::S_PREL, llvm::AArch64::S_TLSDESC, llvm::AArch64::S_TLSDESC_AUTH, and llvm::AArch64::S_TPREL.
Referenced by LowerSymbolOperand().
MCOperand AArch64MCInstLower::lowerSymbolOperandMachO | ( | const MachineOperand & | MO, |
MCSymbol * | Sym ) const |
Definition at line 146 of file AArch64MCInstLower.cpp.
References llvm::MCConstantExpr::create(), llvm::MCSymbolRefExpr::create(), llvm::MCBinaryExpr::createAdd(), llvm::MCOperand::createExpr(), llvm::MachineOperand::getOffset(), llvm::MachineOperand::getTargetFlags(), llvm::MachineOperand::isJTI(), llvm_unreachable, llvm::AArch64II::MO_FRAGMENT, llvm::AArch64II::MO_GOT, llvm::AArch64II::MO_PAGE, llvm::AArch64II::MO_PAGEOFF, llvm::AArch64II::MO_TLS, llvm::AArch64::S_MACHO_GOTPAGE, llvm::AArch64::S_MACHO_GOTPAGEOFF, llvm::AArch64::S_MACHO_PAGE, llvm::AArch64::S_MACHO_PAGEOFF, llvm::AArch64::S_MACHO_TLVPPAGE, llvm::AArch64::S_MACHO_TLVPPAGEOFF, and llvm::AArch64::S_None.
Referenced by LowerSymbolOperand().