LLVM API Documentation

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

#include <ARMAsmPrinter.h>

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

Public Member Functions

 ARMAsmPrinter (TargetMachine &TM, MCStreamer &Streamer)
 
virtual const char * getPassName () const LLVM_OVERRIDE
 
void printOperand (const MachineInstr *MI, int OpNum, raw_ostream &O, const char *Modifier=0)
 
virtual bool PrintAsmOperand (const MachineInstr *MI, unsigned OpNum, unsigned AsmVariant, const char *ExtraCode, raw_ostream &O) LLVM_OVERRIDE
 
virtual bool PrintAsmMemoryOperand (const MachineInstr *MI, unsigned OpNum, unsigned AsmVariant, const char *ExtraCode, raw_ostream &O) LLVM_OVERRIDE
 
void EmitJumpTable (const MachineInstr *MI)
 
void EmitJump2Table (const MachineInstr *MI)
 
virtual void EmitInstruction (const MachineInstr *MI) LLVM_OVERRIDE
 EmitInstruction - Targets should implement this to emit instructions. More...
 
virtual bool runOnMachineFunction (MachineFunction &F) LLVM_OVERRIDE
 
virtual void EmitConstantPool () LLVM_OVERRIDE
 
virtual void EmitFunctionBodyEnd () LLVM_OVERRIDE
 
virtual void EmitFunctionEntryLabel () LLVM_OVERRIDE
 
virtual void EmitStartOfAsmFile (Module &M) LLVM_OVERRIDE
 
virtual void EmitEndOfAsmFile (Module &M) LLVM_OVERRIDE
 
virtual void EmitXXStructor (const Constant *CV) LLVM_OVERRIDE
 
bool lowerOperand (const MachineOperand &MO, MCOperand &MCOp)
 
virtual void EmitDwarfRegOp (const MachineLocation &MLoc, bool Indirect) const LLVM_OVERRIDE
 EmitDwarfRegOp - Emit dwarf register operation. More...
 
virtual unsigned getISAEncoding () LLVM_OVERRIDE
 
virtual void EmitMachineConstantPoolValue (MachineConstantPoolValue *MCPV) 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
 
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 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
 
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 29 of file ARMAsmPrinter.h.

Constructor & Destructor Documentation

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

Definition at line 47 of file ARMAsmPrinter.h.

References llvm::TargetMachine::getSubtarget().

Member Function Documentation

virtual void llvm::ARMAsmPrinter::EmitConstantPool ( )
inlinevirtual

EmitConstantPool - Print to the current output stream assembly representations of the constants in the constant pool MCP. This is used to print out constants which have been "spilled to memory" by the code generator.

Reimplemented from llvm::AsmPrinter.

Definition at line 71 of file ARMAsmPrinter.h.

void ARMAsmPrinter::EmitDwarfRegOp ( const MachineLocation MLoc,
bool  Indirect 
) const
virtual
void ARMAsmPrinter::EmitEndOfAsmFile ( Module )
virtual
void ARMAsmPrinter::EmitFunctionBodyEnd ( )
virtual

EmitFunctionBodyEnd - Targets can override this to emit stuff after the last basic block in the function.

Reimplemented from llvm::AsmPrinter.

Definition at line 123 of file ARMAsmPrinter.cpp.

References llvm::MCStreamer::EmitDataRegion(), llvm::MCDR_DataRegionEnd, and llvm::AsmPrinter::OutStreamer.

void ARMAsmPrinter::EmitFunctionEntryLabel ( )
virtual

EmitFunctionEntryLabel - Emit the label that is the entrypoint for the function. This can be overridden by targets as required to do custom stuff.

Reimplemented from llvm::AsmPrinter.

Definition at line 132 of file ARMAsmPrinter.cpp.

References llvm::AsmPrinter::CurrentFnSym, llvm::MCStreamer::EmitAssemblerFlag(), llvm::MCStreamer::EmitLabel(), llvm::MCStreamer::EmitThumbFunc(), llvm::ARMFunctionInfo::isThumbFunction(), llvm::MCAF_Code16, and llvm::AsmPrinter::OutStreamer.

void ARMAsmPrinter::EmitInstruction ( const MachineInstr )
virtual

EmitInstruction - Targets should implement this to emit instructions.

CONSTPOOL_ENTRY - This instruction represents a floating constant pool in the function. The first operand is the ID# for this instruction, the second is the index into the MachineConstantPool that this is, the third is the size in bytes of this constant pool entry. The required alignment is specified on the basic block holding this MI.

Reimplemented from llvm::AsmPrinter.

Definition at line 1108 of file ARMAsmPrinter.cpp.

References llvm::MCStreamer::AddComment(), llvm::MCInstBuilder::addImm(), llvm::MCInst::addOperand(), llvm::MCInstBuilder::addReg(), llvm::ARMCC::AL, llvm::MachineConstantPoolEntry::ConstVal, llvm::convertAddSubFlagsOpcode(), llvm::MCConstantExpr::Create(), llvm::MCSymbolRefExpr::Create(), llvm::MCBinaryExpr::CreateAdd(), llvm::MCOperand::CreateExpr(), llvm::MCOperand::CreateImm(), llvm::ARMMCExpr::CreateLower16(), llvm::MCOperand::CreateReg(), llvm::MCBinaryExpr::CreateSub(), llvm::ARMMCExpr::CreateUpper16(), llvm::TargetOpcode::DBG_VALUE, llvm::AsmPrinter::EmitAlignment(), llvm::MCStreamer::EmitDataRegion(), llvm::AsmPrinter::EmitGlobalConstant(), llvm::MCStreamer::EmitInstruction(), llvm::MCStreamer::EmitIntValue(), EmitJump2Table(), EmitJumpTable(), llvm::MCStreamer::EmitLabel(), EmitMachineConstantPoolValue(), EnableARMEHABI, llvm::MachineInstr::FrameSetup, llvm::MachineConstantPool::getConstants(), llvm::AsmPrinter::GetCPISymbol(), llvm::MachineInstr::getFlag(), llvm::AsmPrinter::getFunctionNumber(), llvm::MachineOperand::getGlobal(), llvm::MachineOperand::getImm(), llvm::MachineOperand::getIndex(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), getPICLabel(), llvm::MCAsmInfo::getPrivateGlobalPrefix(), llvm::MachineOperand::getReg(), llvm::AsmPrinter::getSymbol(), llvm::MachineOperand::getTargetFlags(), llvm::MachineConstantPoolEntry::isMachineConstantPoolEntry(), llvm::ARMSubtarget::isTargetDarwin(), llvm_unreachable, llvm::LowerARMMachineInstrToMCInst(), llvm::MachineConstantPoolEntry::MachineCPVal, llvm::AsmPrinter::MAI, llvm::MCDR_DataRegion, llvm::MCDR_DataRegionEnd, llvm::ARMII::MO_HI16_NONLAZY_PIC, llvm::ARMII::MO_LO16_NONLAZY_PIC, llvm::AsmPrinter::OutContext, llvm::AsmPrinter::OutStreamer, llvm::MCInst::setOpcode(), llvm::ISD::TRAP, and llvm::MachineConstantPoolEntry::Val.

void ARMAsmPrinter::EmitJump2Table ( const MachineInstr MI)
void ARMAsmPrinter::EmitJumpTable ( const MachineInstr MI)
void ARMAsmPrinter::EmitMachineConstantPoolValue ( MachineConstantPoolValue MCPV)
virtual
void ARMAsmPrinter::EmitStartOfAsmFile ( Module )
virtual
void ARMAsmPrinter::EmitXXStructor ( const Constant CV)
virtual
virtual unsigned llvm::ARMAsmPrinter::getISAEncoding ( )
inlinevirtual

getISAEncoding - Get the value for DW_AT_APPLE_isa. Zero if no isa encoding specified.

Reimplemented from llvm::AsmPrinter.

Definition at line 104 of file ARMAsmPrinter.h.

References llvm::ARM::DW_ISA_ARM_arm, and llvm::ARM::DW_ISA_ARM_thumb.

virtual const char* llvm::ARMAsmPrinter::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 52 of file ARMAsmPrinter.h.

bool ARMAsmPrinter::lowerOperand ( const MachineOperand MO,
MCOperand MCOp 
)
bool ARMAsmPrinter::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 424 of file ARMAsmPrinter.cpp.

References llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::ARMInstPrinter::getRegisterName(), and llvm::MachineOperand::isReg().

bool ARMAsmPrinter::PrintAsmOperand ( const MachineInstr MI,
unsigned  OpNo,
unsigned  AsmVariant,
const char *  ExtraCode,
raw_ostream O 
)
virtual

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

PrintAsmOperand - Print the specified operand of MI, an INLINEASM instruction, using the specified assembler variant. Targets should override this to format as appropriate.

Reimplemented from llvm::AsmPrinter.

Definition at line 249 of file ARMAsmPrinter.cpp.

References llvm::MachineOperand::getImm(), llvm::InlineAsm::getNumOperandRegisters(), llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOperand(), llvm::MachineInstr::getParent(), llvm::MachineBasicBlock::getParent(), llvm::MachineOperand::getReg(), llvm::TargetMachine::getRegisterInfo(), llvm::ARMInstPrinter::getRegisterName(), llvm::MCRegisterInfo::getSubReg(), llvm::MachineFunction::getTarget(), llvm::InlineAsm::hasRegClassConstraint(), llvm::MachineOperand::isImm(), llvm::MachineOperand::isReg(), llvm::InlineAsm::isUseOperandTiedToDef(), llvm::MCRegisterInfo::DiffListIterator::isValid(), llvm::AsmPrinter::MF, llvm::AsmPrinter::PrintAsmOperand(), and printOperand().

void ARMAsmPrinter::printOperand ( const MachineInstr MI,
int  OpNum,
raw_ostream O,
const char *  Modifier = 0 
)
bool ARMAsmPrinter::runOnMachineFunction ( MachineFunction MF)
virtual

runOnMachineFunction - This uses the EmitInstruction() method to print assembly for each instruction.

Reimplemented from llvm::AsmPrinter.

Definition at line 160 of file ARMAsmPrinter.cpp.

References llvm::MachineFunction::getConstantPool(), llvm::MachineFunction::getInfo(), and llvm::AsmPrinter::runOnMachineFunction().


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