Go to the documentation of this file.
45 "Windows is the only supported COFF target");
67 if (!StubSym.getPointer())
132 "unexpected external TLS symbol");
241 "Invalid relocation requested");
@ MO_G3
MO_G3 - A symbol operand with this flag (granule 3) represents the high 16-bits of a 64-bit address,...
static const AArch64MCExpr * create(const MCExpr *Expr, VariantKind Kind, MCContext &Ctx)
@ MO_BlockAddress
Address of a basic block.
bool lowerOperand(const MachineOperand &MO, MCOperand &MCOp) const
@ MO_Immediate
Immediate operand.
This is an optimization pass for GlobalISel generic memory operations.
MCSymbol - Instances of this class represent a symbol name in the MC file, and MCSymbols are created ...
@ MO_HI12
MO_HI12 - This flag indicates that a symbol operand represents the bits 13-24 of a 64-bit address,...
static MCOperand createExpr(const MCExpr *Val)
MCSymbol * GetExternalSymbolSymbol(const MachineOperand &MO) const
@ MO_G1
MO_G1 - A symbol operand with this flag (granule 1) represents the bits 16-31 of a 64-bit address,...
bool isOSBinFormatCOFF() const
Tests whether the OS uses the COFF binary format.
const GlobalValue * getGlobal() const
static MCOperand createImm(int64_t Val)
Context object for machine code objects.
static const MCConstantExpr * create(int64_t Value, MCContext &Ctx, bool PrintInHex=false, unsigned SizeInBytes=0)
MCOperand lowerSymbolOperandDarwin(const MachineOperand &MO, MCSymbol *Sym) const
const BlockAddress * getBlockAddress() const
Triple - Helper class for working with autoconf configuration names.
@ MO_PREL
MO_PREL - Indicates that the bits of the symbol operand represented by MO_G0 etc are PC relative.
bool isSymbol() const
isSymbol - Tests if this is a MO_ExternalSymbol operand.
bool isJTI() const
isJTI - Tests if this is a MO_JumpTableIndex operand.
Instances of this class represent a single low-level machine instruction.
AArch64MCInstLower(MCContext &ctx, AsmPrinter &printer)
int64_t getOffset() const
Return the offset from the symbol in this operand.
MCSymbol * getMCSymbol() const
@ MO_Register
Register operand.
@ MO_TLS
MO_TLS - Indicates that the operand being accessed is some kind of thread-local symbol.
void setOpcode(unsigned Op)
MCSymbol * getSymbol() const
Return the MCSymbol for this basic block.
print alias Alias Set Printer
MCSymbol * getOrCreateSymbol(const Twine &Name)
Lookup the symbol inside with the specified Name.
@ MO_G0
MO_G0 - A symbol operand with this flag (granule 0) represents the bits 0-15 of a 64-bit address,...
bool isOSBinFormatELF() const
Tests whether the OS uses the ELF binary format.
@ MO_GlobalAddress
Address of a global value.
bool isOSDarwin() const
Is this a "Darwin" OS (macOS, iOS, tvOS, watchOS, or DriverKit).
@ CATCHRET
CATCHRET - Represents a return from a catch block funclet.
MachineOperand class - Representation of each machine instruction operand.
MCSymbol * GetGlobalAddressSymbol(const MachineOperand &MO) const
void addOperand(const MCOperand Op)
MachineModuleInfoCOFF - This is a MachineModuleInfoImpl implementation for COFF targets.
@ MO_S
MO_S - Indicates that the bits of the symbol operand represented by MO_G0 etc are signed.
MCOperand lowerSymbolOperandCOFF(const MachineOperand &MO, MCSymbol *Sym) const
unsigned getTargetFlags() const
virtual MCSymbol * GetCPISymbol(unsigned CPID) const
Return the symbol for the specified constant pool entry.
Representation of each machine instruction.
@ MO_DLLIMPORT
MO_DLLIMPORT - On a symbol operand, this represents that the reference to the symbol is for an import...
MCSymbol * GetBlockAddressSymbol(const BlockAddress *BA) const
Return the MCSymbol used to satisfy BlockAddress uses of the specified basic block.
@ MO_NC
MO_NC - Indicates whether the linker is expected to check the symbol reference for overflow.
@ MO_PAGEOFF
MO_PAGEOFF - A symbol operand with this flag represents the offset of that symbol within a 4K page.
MCSymbol * getSymbolPreferLocal(const GlobalValue &GV) const
Similar to getSymbol() but preferred for references.
@ CLEANUPRET
CLEANUPRET - Represents a return from a cleanup block funclet.
@ MO_MCSymbol
MCSymbol reference (for debug/eh info)
MachineOperandType getType() const
getType - Returns the MachineOperandType for this operand.
cl::opt< bool > EnableAArch64ELFLocalDynamicTLSGeneration
TLSModel::Model getTLSModel(const GlobalValue *GV) const
Returns the TLS model which should be used for the given global variable.
assert(ImpDefSCC.getReg()==AMDGPU::SCC &&ImpDefSCC.isDef())
MCSymbol * getSymbol(const GlobalValue *GV) const
Register getReg() const
getReg - Returns the register number.
@ MO_JumpTableIndex
Address of indexed Jump Table for switch.
static const MCBinaryExpr * createAdd(const MCExpr *LHS, const MCExpr *RHS, MCContext &Ctx)
MCSymbol * GetExternalSymbolSymbol(StringRef Sym) const
Return the MCSymbol for the specified ExternalSymbol.
Mangler & getMangler() const
MachineBasicBlock * getMBB() const
StringRef - Represent a constant reference to a string, i.e.
MCSymbol * GetJTISymbol(unsigned JTID, bool isLinkerPrivate=false) const
Return the symbol for the specified jump table entry.
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
static MCOperand createReg(unsigned Reg)
StubValueTy & getGVStubEntry(MCSymbol *Sym)
@ MO_MachineBasicBlock
MachineBasicBlock reference.
MachineModuleInfo * MMI
This is a pointer to the current MachineModuleInfo.
bool isOSWindows() const
Tests whether the OS is Windows.
void getNameWithPrefix(SmallVectorImpl< char > &Name, const GlobalValue *GV, Mangler &Mang, bool MayAlwaysUsePrivate=false) const
@ MO_ExternalSymbol
Name of external global symbol.
unsigned getOpcode() const
This class is intended to be used as a driving class for all asm writers.
static const MCSymbolRefExpr * create(const MCSymbol *Symbol, MCContext &Ctx)
MCOperand LowerSymbolOperand(const MachineOperand &MO, MCSymbol *Sym) const
MCOperand lowerSymbolOperandELF(const MachineOperand &MO, MCSymbol *Sym) const
PointerIntPair - This class implements a pair of a pointer and small integer.
TargetMachine & TM
Target machine description.
const char * getSymbolName() const
const TargetLoweringObjectFile & getObjFileLowering() const
Return information about object file lowering.
const Triple & getTargetTriple() const
Instances of this class represent operands of the MCInst class.
@ MO_G2
MO_G2 - A symbol operand with this flag (granule 2) represents the bits 32-47 of a 64-bit address,...
@ MO_COFFSTUB
MO_COFFSTUB - On a symbol operand "FOO", this indicates that the reference is actually to the "....
@ MO_RegisterMask
Mask of preserved registers.
@ MO_GOT
MO_GOT - This flag indicates that a symbol operand represents the address of the GOT entry for the sy...
Base class for the full range of assembler expressions which are needed for parsing.
Ty & getObjFileInfo()
Keep track of various per-module pieces of information for backends that would like to do so.
void Lower(const MachineInstr *MI, MCInst &OutMI) const
@ MO_PAGE
MO_PAGE - A symbol operand with this flag represents the pc-relative offset of the 4K page containing...
bool isGlobal() const
isGlobal - Tests if this is a MO_GlobalAddress operand.
@ MO_ConstantPoolIndex
Address of indexed Constant in Constant Pool.