LLVM  6.0.0svn
Public Member Functions | List of all members
llvm::MipsAsmBackend Class Reference

#include "Target/Mips/MCTargetDesc/MipsAsmBackend.h"

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

Public Member Functions

 MipsAsmBackend (const Target &T, const MCRegisterInfo &MRI, const Triple &TT, StringRef CPU, bool N32)
 
std::unique_ptr< MCObjectWritercreateObjectWriter (raw_pwrite_stream &OS) const override
 Create a new MCObjectWriter instance for use by the assembler backend to emit the final object file. More...
 
void applyFixup (const MCAssembler &Asm, const MCFixup &Fixup, const MCValue &Target, MutableArrayRef< char > Data, uint64_t Value, bool IsResolved) const override
 ApplyFixup - Apply the Value for given Fixup into the provided data fragment, at the offset specified by the fixup and following the fixup kind as appropriate. More...
 
Optional< MCFixupKindgetFixupKind (StringRef Name) const override
 Map a relocation name used in .reloc to a fixup kind. More...
 
const MCFixupKindInfogetFixupKindInfo (MCFixupKind Kind) const override
 Get information on a fixup kind. More...
 
unsigned getNumFixupKinds () const override
 Get the number of target specific fixup kinds. More...
 
bool writeNopData (uint64_t Count, MCObjectWriter *OW) const override
 WriteNopData - Write an (optimal) nop sequence of Count bytes to the given output. More...
 
Target Relaxation Interfaces
bool mayNeedRelaxation (const MCInst &Inst) const override
 MayNeedRelaxation - Check whether the given instruction may need relaxation. More...
 
bool fixupNeedsRelaxation (const MCFixup &Fixup, uint64_t Value, const MCRelaxableFragment *DF, const MCAsmLayout &Layout) const override
 fixupNeedsRelaxation - Target specific predicate for whether a given fixup requires the associated instruction to be relaxed. More...
 
void relaxInstruction (const MCInst &Inst, const MCSubtargetInfo &STI, MCInst &Res) const override
 RelaxInstruction - Relax the instruction in the given fragment to the next wider instruction. More...
 
- Public Member Functions inherited from llvm::MCAsmBackend
 MCAsmBackend (const MCAsmBackend &)=delete
 
MCAsmBackendoperator= (const MCAsmBackend &)=delete
 
virtual ~MCAsmBackend ()
 
virtual void reset ()
 lifetime management More...
 
virtual unsigned getMinimumNopSize () const
 Returns the minimum size of a nop in bytes on this target. More...
 
virtual void finishLayout (MCAssembler const &Asm, MCAsmLayout &Layout) const
 Give backend an opportunity to finish layout after relaxation. More...
 
virtual void handleAssemblerFlag (MCAssemblerFlag Flag)
 Handle any target-specific assembler flags. By default, do nothing. More...
 
virtual uint32_t generateCompactUnwindEncoding (ArrayRef< MCCFIInstruction >) const
 Generate the compact unwind encoding for the CFI instructions. More...
 
void handleCodePaddingBasicBlockStart (MCObjectStreamer *OS, const MCCodePaddingContext &Context)
 Handles all target related code padding when starting to write a new basic block to an object file. More...
 
void handleCodePaddingBasicBlockEnd (const MCCodePaddingContext &Context)
 Handles all target related code padding after writing a block to an object file. More...
 
void handleCodePaddingInstructionBegin (const MCInst &Inst)
 Handles all target related code padding before writing a new instruction to an object file. More...
 
void handleCodePaddingInstructionEnd (const MCInst &Inst)
 Handles all target related code padding after writing an instruction to an object file. More...
 
bool relaxFragment (MCPaddingFragment *PF, MCAsmLayout &Layout)
 Relaxes a fragment (changes the size of the padding) according to target requirements. More...
 
virtual bool shouldForceRelocation (const MCAssembler &Asm, const MCFixup &Fixup, const MCValue &Target)
 Hook to check if a relocation is needed for some target specific reason. More...
 
virtual bool fixupNeedsRelaxationAdvanced (const MCFixup &Fixup, bool Resolved, uint64_t Value, const MCRelaxableFragment *DF, const MCAsmLayout &Layout) const
 Target specific predicate for whether a given fixup requires the associated instruction to be relaxed. More...
 

Additional Inherited Members

- Protected Member Functions inherited from llvm::MCAsmBackend
 MCAsmBackend ()
 
 MCAsmBackend (std::unique_ptr< MCCodePadder > TargetCodePadder)
 

Detailed Description

Definition at line 30 of file MipsAsmBackend.h.

Constructor & Destructor Documentation

◆ MipsAsmBackend()

llvm::MipsAsmBackend::MipsAsmBackend ( const Target T,
const MCRegisterInfo MRI,
const Triple TT,
StringRef  CPU,
bool  N32 
)
inline

Member Function Documentation

◆ applyFixup()

void MipsAsmBackend::applyFixup ( const MCAssembler Asm,
const MCFixup Fixup,
const MCValue Target,
MutableArrayRef< char Data,
uint64_t  Value,
bool  IsResolved 
) const
overridevirtual

◆ createObjectWriter()

std::unique_ptr< MCObjectWriter > MipsAsmBackend::createObjectWriter ( raw_pwrite_stream OS) const
overridevirtual

Create a new MCObjectWriter instance for use by the assembler backend to emit the final object file.

Implements llvm::MCAsmBackend.

Definition at line 214 of file MipsAsmBackend.cpp.

References llvm::createMipsELFObjectWriter().

Referenced by MipsAsmBackend().

◆ fixupNeedsRelaxation()

bool llvm::MipsAsmBackend::fixupNeedsRelaxation ( const MCFixup Fixup,
uint64_t  Value,
const MCRelaxableFragment DF,
const MCAsmLayout Layout 
) const
inlineoverridevirtual

fixupNeedsRelaxation - Target specific predicate for whether a given fixup requires the associated instruction to be relaxed.

Implements llvm::MCAsmBackend.

Definition at line 67 of file MipsAsmBackend.h.

References llvm_unreachable.

◆ getFixupKind()

Optional< MCFixupKind > MipsAsmBackend::getFixupKind ( StringRef  Name) const
overridevirtual

Map a relocation name used in .reloc to a fixup kind.

Reimplemented from llvm::MCAsmBackend.

Definition at line 297 of file MipsAsmBackend.cpp.

References llvm::StringSwitch< T, R >::Default(), llvm::Mips::fixup_Mips_NONE, llvm::FK_Data_4, llvm::MCAsmBackend::getFixupKind(), and getFixupKindInfo().

Referenced by MipsAsmBackend().

◆ getFixupKindInfo()

const MCFixupKindInfo & MipsAsmBackend::getFixupKindInfo ( MCFixupKind  Kind) const
overridevirtual

◆ getNumFixupKinds()

unsigned llvm::MipsAsmBackend::getNumFixupKinds ( ) const
inlineoverridevirtual

Get the number of target specific fixup kinds.

Implements llvm::MCAsmBackend.

Definition at line 50 of file MipsAsmBackend.h.

References llvm::Mips::NumTargetFixupKinds.

Referenced by getFixupKindInfo().

◆ mayNeedRelaxation()

bool llvm::MipsAsmBackend::mayNeedRelaxation ( const MCInst Inst) const
inlineoverridevirtual

MayNeedRelaxation - Check whether the given instruction may need relaxation.

Parameters
Inst- The instruction to test.

Implements llvm::MCAsmBackend.

Definition at line 61 of file MipsAsmBackend.h.

◆ relaxInstruction()

void llvm::MipsAsmBackend::relaxInstruction ( const MCInst Inst,
const MCSubtargetInfo STI,
MCInst Res 
) const
inlineoverridevirtual

RelaxInstruction - Relax the instruction in the given fragment to the next wider instruction.

Parameters
Inst- The instruction to relax, which may be the same as the output.
[out]ResOn return, the relaxed instruction.

Implements llvm::MCAsmBackend.

Definition at line 81 of file MipsAsmBackend.h.

References writeNopData().

◆ writeNopData()

bool MipsAsmBackend::writeNopData ( uint64_t  Count,
MCObjectWriter OW 
) const
overridevirtual

WriteNopData - Write an (optimal) nop sequence of Count bytes to the given output.

If the target cannot generate such a sequence, it should return an error.

Returns
- True on success.

Implements llvm::MCAsmBackend.

Definition at line 466 of file MipsAsmBackend.cpp.

References llvm::MCObjectWriter::WriteZeros().

Referenced by relaxInstruction().


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