LLVM: llvm::LoongArchAsmBackend Class Reference (original) (raw)
#include "[Target/LoongArch/MCTargetDesc/LoongArchAsmBackend.h](LoongArchAsmBackend%5F8h%5Fsource.html)"
| Public Member Functions | |
|---|---|
| LoongArchAsmBackend (const MCSubtargetInfo &STI, uint8_t OSABI, bool Is64Bit, const MCTargetOptions &Options) | |
| bool | addReloc (const MCFragment &, const MCFixup &, const MCValue &, uint64_t &FixedValue, bool IsResolved) |
| void | applyFixup (const MCFragment &, const MCFixup &, const MCValue &Target, uint8_t *Data, uint64_t Value, bool IsResolved) override |
| std::optional< MCFixupKind > | getFixupKind (StringRef Name) const override |
| Map a relocation name used in .reloc to a fixup kind. | |
| MCFixupKindInfo | getFixupKindInfo (MCFixupKind Kind) const override |
| Get information on a fixup kind. | |
| bool | relaxAlign (MCFragment &F, unsigned &Size) override |
| bool | relaxDwarfLineAddr (MCFragment &) const override |
| bool | relaxDwarfCFA (MCFragment &) const override |
| std::pair< bool, bool > | relaxLEB128 (MCFragment &F, int64_t &Value) const override |
| bool | writeNopData (raw_ostream &OS, uint64_t Count, const MCSubtargetInfo *STI) const override |
| Write an (optimal) nop sequence of Count bytes to the given output. | |
| std::unique_ptr< MCObjectTargetWriter > | createObjectTargetWriter () const override |
| const MCTargetOptions & | getTargetOptions () const |
| DenseMap< MCSection *, const MCSymbolRefExpr * > & | getSecToAlignSym () |
| Public Member Functions inherited from llvm::MCAsmBackend | |
| MCAsmBackend (const MCAsmBackend &)=delete | |
| MCAsmBackend & | operator= (const MCAsmBackend &)=delete |
| virtual | ~MCAsmBackend () |
| void | setAssembler (MCAssembler *A) |
| MCContext & | getContext () const |
| bool | allowAutoPadding () const |
| Return true if this target might automatically pad instructions and thus need to emit padding enable/disable directives around sensative code. | |
| bool | allowEnhancedRelaxation () const |
| Return true if this target allows an unrelaxable instruction to be emitted into RelaxableFragment and then we can increase its size in a tricky way for optimization. | |
| virtual void | reset () |
| lifetime management | |
| std::unique_ptr< MCObjectWriter > | createObjectWriter (raw_pwrite_stream &OS) const |
| Create a new MCObjectWriter instance for use by the assembler backend to emit the final object file. | |
| std::unique_ptr< MCObjectWriter > | createDwoObjectWriter (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. | |
| virtual unsigned | getMinimumNopSize () const |
| Returns the minimum size of a nop in bytes on this target. | |
| virtual unsigned | getMaximumNopSize (const MCSubtargetInfo &STI) const |
| Returns the maximum size of a nop in bytes on this target. | |
| virtual bool | finishLayout () const |
| virtual uint64_t | generateCompactUnwindEncoding (const MCDwarfFrameInfo *FI, const MCContext *Ctxt) const |
| Generate the compact unwind encoding for the CFI instructions. | |
| bool | isDarwinCanonicalPersonality (const MCSymbol *Sym) const |
| virtual std::optional< bool > | evaluateFixup (const MCFragment &, MCFixup &, MCValue &, uint64_t &) |
| void | maybeAddReloc (const MCFragment &, const MCFixup &, const MCValue &, uint64_t &Value, bool IsResolved) |
| virtual bool | mayNeedRelaxation (unsigned Opcode, ArrayRef< MCOperand > Operands, const MCSubtargetInfo &STI) const |
| Check whether the given instruction (encoded as Opcode+Operands) may need relaxation. | |
| virtual bool | fixupNeedsRelaxationAdvanced (const MCFragment &, const MCFixup &, const MCValue &, uint64_t, bool Resolved) const |
| Target specific predicate for whether a given fixup requires the associated instruction to be relaxed. | |
| virtual bool | fixupNeedsRelaxation (const MCFixup &Fixup, uint64_t Value) const |
| Simple predicate for targets where !Resolved implies requiring relaxation. | |
| virtual void | relaxInstruction (MCInst &Inst, const MCSubtargetInfo &STI) const |
| Relax the instruction in the given fragment to the next wider instruction. | |
| virtual bool | relaxSFrameCFA (MCFragment &) const |
| Additional Inherited Members | |
|---|---|
| Static Public Member Functions inherited from llvm::MCAsmBackend | |
| static const MCSubtargetInfo * | getSubtargetInfo (const MCFragment &F) |
| Public Attributes inherited from llvm::MCAsmBackend | |
| const llvm::endianness | Endian |
| Protected Member Functions inherited from llvm::MCAsmBackend | |
| MCAsmBackend (llvm::endianness Endian) | |
| Protected Attributes inherited from llvm::MCAsmBackend | |
| MCAssembler * | Asm = nullptr |
| bool | AllowAutoPadding = false |
| bool | AllowEnhancedRelaxation = false |
Definition at line 26 of file LoongArchAsmBackend.h.
◆ addReloc()
Definition at line 399 of file LoongArchAsmBackend.cpp.
References A(), llvm::MCAsmBackend::Asm, assert(), B(), llvm::MCFixup::create(), F, Fallback, Fixup, llvm::FK_Data_1, llvm::FK_Data_2, llvm::FK_Data_4, llvm::FK_Data_8, llvm::FK_Data_leb128, llvm::MCValue::get(), getRelocPairForSize(), llvm::MCSymbol::getSection(), llvm::MCSymbol::isInSection(), llvm::MCSection::isLinkerRelaxable(), llvm_unreachable, and llvm::MCAsmBackend::maybeAddReloc().
Referenced by applyFixup().
◆ applyFixup()
Implements llvm::MCAsmBackend.
Definition at line 143 of file LoongArchAsmBackend.cpp.
References addReloc(), adjustFixupValue(), llvm::alignTo(), assert(), llvm::Data, F, Fixup, fixupLeb128(), llvm::FK_Data_leb128, llvm::MCAsmBackend::getContext(), getFixupKindInfo(), I, and llvm::mc::isRelocation().
◆ createObjectTargetWriter()
| std::unique_ptr< MCObjectTargetWriter > LoongArchAsmBackend::createObjectTargetWriter ( ) const | overridevirtual |
|---|
◆ getFixupKind()
| std::optional< MCFixupKind > LoongArchAsmBackend::getFixupKind ( StringRef Name) const | overridevirtual |
|---|
◆ getFixupKindInfo()
◆ getSecToAlignSym()
◆ getTargetOptions()
◆ relaxAlign()
Reimplemented from llvm::MCAsmBackend.
Definition at line 202 of file LoongArchAsmBackend.cpp.
References llvm::MCAsmBackend::Asm, llvm::MCConstantExpr::create(), llvm::MCFixup::create(), llvm::MCSymbolRefExpr::create(), llvm::MCBinaryExpr::createAdd(), F, llvm::FirstLiteralRelocationKind, Fixup, llvm::MCSection::getBeginSymbol(), llvm::MCAsmBackend::getContext(), llvm::MCSymbol::getFragment(), getSecToAlignSym(), llvm::Log2(), llvm::MCSymbol::setFragment(), and Size.
◆ relaxDwarfCFA()
| bool LoongArchAsmBackend::relaxDwarfCFA ( MCFragment & F) const | overridevirtual |
|---|
Reimplemented from llvm::MCAsmBackend.
Definition at line 314 of file LoongArchAsmBackend.cpp.
References llvm::MCAsmBackend::Asm, assert(), llvm::cast(), llvm::MCFixup::create(), llvm::Data, llvm::MCExpr::evaluateKnownAbsolute(), F, llvm::MCAsmBackend::getContext(), llvm::MCBinaryExpr::getLHS(), getRelocPairForSize(), llvm::MCBinaryExpr::getRHS(), llvm::isUInt(), llvm::isUIntN(), llvm::little, llvm_unreachable, llvm::Offset, and llvm::support::endian::write().
◆ relaxDwarfLineAddr()
| bool LoongArchAsmBackend::relaxDwarfLineAddr ( MCFragment & F) const | overridevirtual |
|---|
Reimplemented from llvm::MCAsmBackend.
Definition at line 262 of file LoongArchAsmBackend.cpp.
References llvm::MCAsmBackend::Asm, assert(), llvm::CallingConv::C, llvm::MCFixup::create(), llvm::Data, llvm::encodeSLEB128(), llvm::MCExpr::evaluateKnownAbsolute(), F, llvm::MCAsmBackend::getContext(), llvm::MCFixup::getDataKindForSize(), INT64_MAX, llvm::little, llvm::Offset, llvm::raw_ostream::tell(), llvm::support::endian::write(), and llvm::raw_ostream::write_zeros().
◆ relaxLEB128()
| std::pair< bool, bool > LoongArchAsmBackend::relaxLEB128 ( MCFragment & F, int64_t & Value ) const | overridevirtual |
|---|
◆ writeNopData()
The documentation for this class was generated from the following files:
- lib/Target/LoongArch/MCTargetDesc/LoongArchAsmBackend.h
- lib/Target/LoongArch/MCTargetDesc/LoongArchAsmBackend.cpp