LLVM  8.0.1
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< MCObjectTargetWritercreateObjectTargetWriter () const override
 
void applyFixup (const MCAssembler &Asm, const MCFixup &Fixup, const MCValue &Target, MutableArrayRef< char > Data, uint64_t Value, bool IsResolved, const MCSubtargetInfo *STI) 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 (raw_ostream &OS, uint64_t Count) const override
 WriteNopData - Write an (optimal) nop sequence of Count bytes to the given output. More...
 
bool shouldForceRelocation (const MCAssembler &Asm, const MCFixup &Fixup, const MCValue &Target) override
 Hook to check if a relocation is needed for some target specific reason. More...
 
bool isMicroMips (const MCSymbol *Sym) const override
 Check whether a given symbol has been flagged with MICROMIPS flag. More...
 
Target Relaxation Interfaces
bool mayNeedRelaxation (const MCInst &Inst, const MCSubtargetInfo &STI) 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...
 
std::unique_ptr< MCObjectWritercreateObjectWriter (raw_pwrite_stream &OS) const
 Create a new MCObjectWriter instance for use by the assembler backend to emit the final object file. More...
 
std::unique_ptr< MCObjectWritercreateDwoObjectWriter (raw_pwrite_stream &OS, raw_pwrite_stream &DwoOS) const
 Create an MCObjectWriter that writes two object files: a .o file which is linked into the final program and a .dwo file which is used by debuggers. 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 requiresDiffExpressionRelocations () const
 Check whether the given target requires emitting differences of two symbols as a set of relocations. More...
 
virtual bool fixupNeedsRelaxationAdvanced (const MCFixup &Fixup, bool Resolved, uint64_t Value, const MCRelaxableFragment *DF, const MCAsmLayout &Layout, const bool WasForced) const
 Target specific predicate for whether a given fixup requires the associated instruction to be relaxed. More...
 

Additional Inherited Members

- Public Attributes inherited from llvm::MCAsmBackend
const support::endianness Endian
 
- Protected Member Functions inherited from llvm::MCAsmBackend
 MCAsmBackend (support::endianness Endian)
 

Detailed Description

Definition at line 31 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 MCSubtargetInfo STI 
) const
overridevirtual

◆ createObjectTargetWriter()

std::unique_ptr< MCObjectTargetWriter > MipsAsmBackend::createObjectTargetWriter ( ) const
overridevirtual

Implements llvm::MCAsmBackend.

Definition at line 220 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 70 of file MipsAsmBackend.h.

References llvm_unreachable.

◆ getFixupKind()

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

◆ 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 52 of file MipsAsmBackend.h.

References llvm::Mips::NumTargetFixupKinds.

Referenced by getFixupKindInfo().

◆ isMicroMips()

bool MipsAsmBackend::isMicroMips ( const MCSymbol Sym) const
overridevirtual

Check whether a given symbol has been flagged with MICROMIPS flag.

Reimplemented from llvm::MCAsmBackend.

Definition at line 580 of file MipsAsmBackend.cpp.

References llvm::ELF::STO_MIPS_MICROMIPS.

Referenced by relaxInstruction().

◆ mayNeedRelaxation()

bool llvm::MipsAsmBackend::mayNeedRelaxation ( const MCInst Inst,
const MCSubtargetInfo STI 
) const
inlineoverridevirtual

MayNeedRelaxation - Check whether the given instruction may need relaxation.

Parameters
Inst- The instruction to test.

Implements llvm::MCAsmBackend.

Definition at line 63 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 84 of file MipsAsmBackend.h.

References isMicroMips(), shouldForceRelocation(), and writeNopData().

◆ shouldForceRelocation()

bool MipsAsmBackend::shouldForceRelocation ( const MCAssembler Asm,
const MCFixup Fixup,
const MCValue Target 
)
overridevirtual

◆ writeNopData()

bool MipsAsmBackend::writeNopData ( raw_ostream OS,
uint64_t  Count 
) 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 525 of file MipsAsmBackend.cpp.

References llvm::raw_ostream::write_zeros().

Referenced by relaxInstruction().


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