LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | List of all members
llvm::X86AsmPrinter Class Reference

#include <X86AsmPrinter.h>

Inheritance diagram for llvm::X86AsmPrinter:
Inheritance graph
[legend]
Collaboration diagram for llvm::X86AsmPrinter:
Collaboration graph
[legend]

Public Member Functions

 X86AsmPrinter (TargetMachine &TM, MCStreamer &Streamer)
 
virtual const char * getPassName () const LLVM_OVERRIDE
 
const X86SubtargetgetSubtarget () const
 
virtual void EmitStartOfAsmFile (Module &M) LLVM_OVERRIDE
 
virtual void EmitEndOfAsmFile (Module &M) LLVM_OVERRIDE
 
virtual void EmitInstruction (const MachineInstr *MI) LLVM_OVERRIDE
 EmitInstruction - Targets should implement this to emit instructions. More...
 
void printSymbolOperand (const MachineOperand &MO, raw_ostream &O)
 
void printOperand (const MachineInstr *MI, unsigned OpNo, raw_ostream &O, const char *Modifier=0, unsigned AsmVariant=0)
 
void printPCRelImm (const MachineInstr *MI, unsigned OpNo, raw_ostream &O)
 
bool printAsmMRegister (const MachineOperand &MO, char Mode, raw_ostream &O)
 
virtual bool PrintAsmOperand (const MachineInstr *MI, unsigned OpNo, unsigned AsmVariant, const char *ExtraCode, raw_ostream &OS) LLVM_OVERRIDE
 
virtual bool PrintAsmMemoryOperand (const MachineInstr *MI, unsigned OpNo, unsigned AsmVariant, const char *ExtraCode, raw_ostream &OS) LLVM_OVERRIDE
 
void printMemReference (const MachineInstr *MI, unsigned Op, raw_ostream &O, const char *Modifier=NULL)
 
void printLeaMemReference (const MachineInstr *MI, unsigned Op, raw_ostream &O, const char *Modifier=NULL)
 
void printIntelMemReference (const MachineInstr *MI, unsigned Op, raw_ostream &O, const char *Modifier=NULL, unsigned AsmVariant=1)
 
virtual bool runOnMachineFunction (MachineFunction &F) LLVM_OVERRIDE
 
- Public Member Functions inherited from llvm::AsmPrinter
virtual ~AsmPrinter ()
 
const DwarfDebuggetDwarfDebug () const
 
bool isVerbose () const
 
unsigned getFunctionNumber () const
 
const TargetLoweringObjectFilegetObjFileLowering () const
 getObjFileLowering - Return information about object file lowering. More...
 
const DataLayoutgetDataLayout () const
 getDataLayout - Return information about data layout. More...
 
StringRef getTargetTriple () const
 getTargetTriple - Return the target triple string. More...
 
const MCSectiongetCurrentSection () const
 getCurrentSection() - Return the current section we are emitting to. More...
 
MCSymbolgetSymbol (const GlobalValue *GV) const
 
void getAnalysisUsage (AnalysisUsage &AU) const
 
bool doInitialization (Module &M)
 
bool doFinalization (Module &M)
 
void SetupMachineFunction (MachineFunction &MF)
 
void EmitFunctionHeader ()
 
void EmitFunctionBody ()
 
void emitPrologLabel (const MachineInstr &MI)
 
CFIMoveType needsCFIMoves ()
 
bool needsSEHMoves ()
 
bool needsRelocationsForDwarfStringPool () const
 
virtual void EmitConstantPool ()
 
void EmitJumpTableInfo ()
 
virtual void EmitGlobalVariable (const GlobalVariable *GV)
 EmitGlobalVariable - Emit the specified global variable to the .s file. More...
 
bool EmitSpecialLLVMGlobal (const GlobalVariable *GV)
 
void EmitAlignment (unsigned NumBits, const GlobalValue *GV=0) const
 
void EmitBasicBlockStart (const MachineBasicBlock *MBB) const
 
void EmitGlobalConstant (const Constant *CV)
 Print a general LLVM constant to the .s file. More...
 
virtual void EmitFunctionBodyStart ()
 
virtual void EmitFunctionBodyEnd ()
 
virtual void EmitFunctionEntryLabel ()
 
virtual void EmitMachineConstantPoolValue (MachineConstantPoolValue *MCPV)
 
virtual void EmitXXStructor (const Constant *CV)
 
virtual bool isBlockOnlyReachableByFallthrough (const MachineBasicBlock *MBB) const
 
virtual void emitImplicitDef (const MachineInstr *MI) const
 
MCSymbolGetTempSymbol (StringRef Name, unsigned ID) const
 
MCSymbolGetTempSymbol (StringRef Name) const
 
MCSymbolGetSymbolWithGlobalValueBase (const GlobalValue *GV, StringRef Suffix, bool ForcePrivate=true) const
 
MCSymbolGetExternalSymbolSymbol (StringRef Sym) const
 
MCSymbolGetCPISymbol (unsigned CPID) const
 GetCPISymbol - Return the symbol for the specified constant pool entry. More...
 
MCSymbolGetJTISymbol (unsigned JTID, bool isLinkerPrivate=false) const
 GetJTISymbol - Return the symbol for the specified jump table entry. More...
 
MCSymbolGetJTSetSymbol (unsigned UID, unsigned MBBID) const
 
MCSymbolGetBlockAddressSymbol (const BlockAddress *BA) const
 
MCSymbolGetBlockAddressSymbol (const BasicBlock *BB) const
 
void printOffset (int64_t Offset, raw_ostream &OS) const
 printOffset - This is just convenient handler for printing offsets. More...
 
void EmitInt8 (int Value) const
 
void EmitInt16 (int Value) const
 
void EmitInt32 (int Value) const
 
void EmitLabelDifference (const MCSymbol *Hi, const MCSymbol *Lo, unsigned Size) const
 
void EmitLabelOffsetDifference (const MCSymbol *Hi, uint64_t Offset, const MCSymbol *Lo, unsigned Size) const
 
void EmitLabelPlusOffset (const MCSymbol *Label, uint64_t Offset, unsigned Size, bool IsSectionRelative=false) const
 
void EmitLabelReference (const MCSymbol *Label, unsigned Size, bool IsSectionRelative=false) const
 
void EmitSLEB128 (int64_t Value, const char *Desc=0) const
 EmitSLEB128 - emit the specified signed leb128 value. More...
 
void EmitULEB128 (uint64_t Value, const char *Desc=0, unsigned PadTo=0) const
 EmitULEB128 - emit the specified unsigned leb128 value. More...
 
void EmitCFAByte (unsigned Val) const
 EmitCFAByte - Emit a .byte 42 directive for a DW_CFA_xxx value. More...
 
void EmitEncodingByte (unsigned Val, const char *Desc=0) const
 
unsigned GetSizeOfEncodedValue (unsigned Encoding) const
 GetSizeOfEncodedValue - Return the size of the encoding in bytes. More...
 
void EmitTTypeReference (const GlobalValue *GV, unsigned Encoding) const
 EmitReference - Emit reference to a ttype global with a specified encoding. More...
 
void EmitSectionOffset (const MCSymbol *Label, const MCSymbol *SectionLabel) const
 
virtual unsigned getISAEncoding ()
 
virtual void EmitDwarfRegOp (const MachineLocation &MLoc, bool Indirect) const
 EmitDwarfRegOp - Emit dwarf register operation. More...
 
void emitCFIInstruction (const MCCFIInstruction &Inst) const
 Emit frame instruction to describe the layout of the frame. More...
 
virtual void PrintSpecial (const MachineInstr *MI, raw_ostream &OS, const char *Code) const
 
- Public Member Functions inherited from llvm::FunctionPass
 FunctionPass (char &pid)
 
PasscreatePrinterPass (raw_ostream &O, const std::string &Banner) const
 createPrinterPass - Get a function printer pass. More...
 
virtual void assignPassManager (PMStack &PMS, PassManagerType T)
 
virtual PassManagerType getPotentialPassManagerType () const
 Return what kind of Pass Manager can manage this pass. More...
 
- Public Member Functions inherited from llvm::Pass
 Pass (PassKind K, char &pid)
 
virtual ~Pass ()
 
PassKind getPassKind () const
 
AnalysisID getPassID () const
 getPassID - Return the PassID number that corresponds to this pass. More...
 
virtual void print (raw_ostream &O, const Module *M) const
 
void dump () const
 
virtual void preparePassManager (PMStack &)
 Check if available pass managers are suitable for this pass or not. More...
 
void setResolver (AnalysisResolver *AR)
 
AnalysisResolvergetResolver () const
 
virtual void releaseMemory ()
 
virtual void * getAdjustedAnalysisPointer (AnalysisID ID)
 
virtual ImmutablePassgetAsImmutablePass ()
 
virtual PMDataManagergetAsPMDataManager ()
 
virtual void verifyAnalysis () const
 
virtual void dumpPassStructure (unsigned Offset=0)
 
template<typename AnalysisType >
AnalysisType * getAnalysisIfAvailable () const
 
bool mustPreserveAnalysisID (char &AID) const
 
template<typename AnalysisType >
AnalysisType & getAnalysis () const
 
template<typename AnalysisType >
AnalysisType & getAnalysis (Function &F)
 
template<typename AnalysisType >
AnalysisType & getAnalysisID (AnalysisID PI) const
 
template<typename AnalysisType >
AnalysisType & getAnalysisID (AnalysisID PI, Function &F)
 

Additional Inherited Members

- Public Types inherited from llvm::AsmPrinter
enum  CFIMoveType { CFI_M_None, CFI_M_EH, CFI_M_Debug }
 
- Static Public Member Functions inherited from llvm::Pass
static const PassInfolookupPassInfo (const void *TI)
 
static const PassInfolookupPassInfo (StringRef Arg)
 
static PasscreatePass (AnalysisID ID)
 
- Public Attributes inherited from llvm::AsmPrinter
TargetMachineTM
 
const MCAsmInfoMAI
 
const MCInstrInfoMII
 
MCContextOutContext
 
MCStreamerOutStreamer
 
const MachineFunctionMF
 The current machine function. More...
 
MachineModuleInfoMMI
 MMI - This is a pointer to the current MachineModuleInfo. More...
 
ManglerMang
 
MCSymbolCurrentFnSym
 
MCSymbolCurrentFnSymForSize
 
- Protected Member Functions inherited from llvm::AsmPrinter
 AsmPrinter (TargetMachine &TM, MCStreamer &Streamer)
 
- Protected Member Functions inherited from llvm::MachineFunctionPass
 MachineFunctionPass (char &ID)
 

Detailed Description

Definition at line 26 of file X86AsmPrinter.h.

Constructor & Destructor Documentation

llvm::X86AsmPrinter::X86AsmPrinter ( TargetMachine TM,
MCStreamer Streamer 
)
inlineexplicit

Definition at line 41 of file X86AsmPrinter.h.

References llvm::TargetMachine::getSubtarget().

Member Function Documentation

void X86AsmPrinter::EmitEndOfAsmFile ( Module )
virtual

EmitEndOfAsmFile - This virtual method can be overridden by targets that want to emit something at the end of their file.

Reimplemented from llvm::AsmPrinter.

Definition at line 546 of file X86AsmPrinter.cpp.

References llvm::MCStreamer::AddBlankLine(), llvm::Module::begin(), llvm::MCStreamer::BeginCOFFSymbolDef(), llvm::MCSymbolRefExpr::Create(), llvm::AsmPrinter::CurrentFnSym, llvm::AsmPrinter::EmitAlignment(), llvm::MCStreamer::EmitAssemblerFlag(), llvm::MCStreamer::EmitBytes(), llvm::MCStreamer::EmitCOFFSymbolStorageClass(), llvm::MCStreamer::EmitCOFFSymbolType(), llvm::MCStreamer::EmitIntValue(), llvm::MCStreamer::EmitLabel(), llvm::MCStreamer::EmitSymbolAttribute(), llvm::MCStreamer::EmitSymbolValue(), llvm::MCStreamer::EmitValue(), llvm::Module::end(), llvm::MCStreamer::EndCOFFSymbolDef(), llvm::X86COFFMachineModuleInfo::externals_begin(), llvm::X86COFFMachineModuleInfo::externals_end(), llvm::MachineModuleInfo::getContext(), llvm::TargetMachine::getDataLayout(), llvm::MCObjectFileInfo::getDataRelSection(), llvm::MCObjectFileInfo::getDrectveSection(), llvm::MachineModuleInfoMachO::GetFnStubList(), llvm::MachineModuleInfoMachO::GetGVStubList(), llvm::MachineModuleInfoELF::GetGVStubList(), llvm::MachineModuleInfoMachO::GetHiddenGVStubList(), llvm::PointerIntPair< PointerTy, IntBits, IntType, PtrTraits >::getInt(), llvm::MCContext::getMachOSection(), llvm::SectionKind::getMetadata(), llvm::MachineModuleInfo::getObjFileInfo(), llvm::AsmPrinter::getObjFileLowering(), llvm::MCContext::GetOrCreateSymbol(), llvm::PointerIntPair< PointerTy, IntBits, IntType, PtrTraits >::getPointer(), llvm::DataLayout::getPointerSize(), llvm::AsmPrinter::getSymbol(), llvm::Module::global_begin(), llvm::Module::global_end(), I, llvm::COFF::IMAGE_SYM_CLASS_EXTERNAL, llvm::COFF::IMAGE_SYM_DTYPE_FUNCTION, llvm::X86Subtarget::is64Bit(), llvm::X86Subtarget::isTargetCOFF(), llvm::X86Subtarget::isTargetCygMing(), llvm::X86Subtarget::isTargetELF(), llvm::X86Subtarget::isTargetEnvMacho(), llvm::X86Subtarget::isTargetWindows(), llvm::MCAF_SubsectionsViaSymbols, llvm::MCSA_Global, llvm::MCSA_IndirectSymbol, llvm::AsmPrinter::MMI, llvm::AsmPrinter::OutContext, llvm::AsmPrinter::OutStreamer, llvm::MachO::S_NON_LAZY_SYMBOL_POINTERS, llvm::MachO::S_SYMBOL_STUBS, llvm::COFF::SCT_COMPLEX_TYPE_SHIFT, llvm::StackMaps::serializeToStackMapSection(), llvm::MCStreamer::SwitchSection(), TD, llvm::AsmPrinter::TM, and llvm::MachineModuleInfo::usesVAFloatArgument().

void X86AsmPrinter::EmitInstruction ( const MachineInstr )
virtual
void X86AsmPrinter::EmitStartOfAsmFile ( Module )
virtual
virtual const char* llvm::X86AsmPrinter::getPassName ( ) const
inlinevirtual

getPassName - Return a nice clean name for a pass. This usually implemented in terms of the name that is registered by one of the Registration templates, but can be overloaded directly.

Reimplemented from llvm::Pass.

Definition at line 46 of file X86AsmPrinter.h.

const X86Subtarget& llvm::X86AsmPrinter::getSubtarget ( ) const
inline

Definition at line 50 of file X86AsmPrinter.h.

Referenced by SimplifyShortMoveForm().

bool X86AsmPrinter::PrintAsmMemoryOperand ( const MachineInstr MI,
unsigned  OpNo,
unsigned  AsmVariant,
const char *  ExtraCode,
raw_ostream OS 
)
virtual

PrintAsmMemoryOperand - Print the specified operand of MI, an INLINEASM instruction, using the specified assembler variant as an address. Targets should override this to format as appropriate. This method can return true if the operand is erroneous.

Reimplemented from llvm::AsmPrinter.

Definition at line 486 of file X86AsmPrinter.cpp.

References printIntelMemReference(), and printMemReference().

bool X86AsmPrinter::printAsmMRegister ( const MachineOperand MO,
char  Mode,
raw_ostream O 
)
bool X86AsmPrinter::PrintAsmOperand ( const MachineInstr MI,
unsigned  OpNo,
unsigned  AsmVariant,
const char *  ExtraCode,
raw_ostream O 
)
virtual
void X86AsmPrinter::printIntelMemReference ( const MachineInstr MI,
unsigned  Op,
raw_ostream O,
const char *  Modifier = NULL,
unsigned  AsmVariant = 1 
)
void X86AsmPrinter::printLeaMemReference ( const MachineInstr MI,
unsigned  Op,
raw_ostream O,
const char *  Modifier = NULL 
)
void X86AsmPrinter::printMemReference ( const MachineInstr MI,
unsigned  Op,
raw_ostream O,
const char *  Modifier = NULL 
)
void X86AsmPrinter::printOperand ( const MachineInstr MI,
unsigned  OpNo,
raw_ostream O,
const char *  Modifier = 0,
unsigned  AsmVariant = 0 
)
void X86AsmPrinter::printPCRelImm ( const MachineInstr MI,
unsigned  OpNo,
raw_ostream O 
)
void X86AsmPrinter::printSymbolOperand ( const MachineOperand MO,
raw_ostream O 
)

printSymbolOperand - Print a raw symbol reference operand. This handles jump tables, constant pools, global address and external symbols, all of which print to a label with various suffixes for relocation types etc.

Definition at line 77 of file X86AsmPrinter.cpp.

References llvm::StringRef::end(), llvm::AsmPrinter::GetCPISymbol(), llvm::AsmPrinter::GetExternalSymbolSymbol(), llvm::MachineOperand::getGlobal(), llvm::MachineOperand::getIndex(), llvm::AsmPrinter::GetJTISymbol(), llvm::MCSymbol::getName(), llvm::MachineModuleInfo::getObjFileInfo(), llvm::MachineOperand::getOffset(), llvm::MCContext::GetOrCreateSymbol(), llvm::MachineFunction::getPICBaseSymbol(), llvm::PointerIntPair< PointerTy, IntBits, IntType, PtrTraits >::getPointer(), llvm::AsmPrinter::getSymbol(), llvm::MachineOperand::getSymbolName(), llvm::AsmPrinter::GetSymbolWithGlobalValueBase(), llvm::MachineOperand::getTargetFlags(), llvm::MachineOperand::getType(), llvm::GlobalValue::hasInternalLinkage(), llvm_unreachable, llvm::AsmPrinter::MF, llvm::AsmPrinter::MMI, llvm::MachineOperand::MO_ConstantPoolIndex, llvm::X86II::MO_DARWIN_HIDDEN_NONLAZY_PIC_BASE, llvm::X86II::MO_DARWIN_NONLAZY, llvm::X86II::MO_DARWIN_NONLAZY_PIC_BASE, llvm::X86II::MO_DARWIN_STUB, llvm::X86II::MO_DLLIMPORT, llvm::X86II::MO_DTPOFF, llvm::MachineOperand::MO_ExternalSymbol, llvm::MachineOperand::MO_GlobalAddress, llvm::X86II::MO_GOT, llvm::X86II::MO_GOT_ABSOLUTE_ADDRESS, llvm::X86II::MO_GOTNTPOFF, llvm::X86II::MO_GOTOFF, llvm::X86II::MO_GOTPCREL, llvm::X86II::MO_GOTTPOFF, llvm::X86II::MO_INDNTPOFF, llvm::MachineOperand::MO_JumpTableIndex, llvm::X86II::MO_NO_FLAG, llvm::X86II::MO_NTPOFF, llvm::X86II::MO_PIC_BASE_OFFSET, llvm::X86II::MO_PLT, llvm::X86II::MO_SECREL, llvm::X86II::MO_TLSGD, llvm::X86II::MO_TLSLD, llvm::X86II::MO_TLSLDM, llvm::X86II::MO_TLVP, llvm::X86II::MO_TLVP_PIC_BASE, llvm::X86II::MO_TPOFF, llvm::AsmPrinter::OutContext, llvm::AsmPrinter::printOffset(), and llvm::StringRef::str().

Referenced by PrintAsmOperand(), printLeaMemReference(), printOperand(), and printPCRelImm().

bool X86AsmPrinter::runOnMachineFunction ( MachineFunction MF)
virtual

The documentation for this class was generated from the following files: