LLVM: lib/MC/MCAssembler.cpp File Reference (original) (raw)
Go to the source code of this file.
Namespaces | |
---|---|
namespace | llvm |
This is an optimization pass for GlobalISel generic memory operations. | |
namespace | stats |
Functions | |
---|---|
static uint64_t | computeBundlePadding (unsigned BundleSize, const MCEncodedFragment *F, uint64_t FOffset, uint64_t FSize) |
static bool | getLabelOffset (const MCAssembler &Asm, const MCSymbol &S, bool ReportError, uint64_t &Val) |
static bool | getSymbolOffsetImpl (const MCAssembler &Asm, const MCSymbol &S, bool ReportError, uint64_t &Val) |
static void | writeFragment (raw_ostream &OS, const MCAssembler &Asm, const MCFragment &F) |
Write the fragment F to the output file. | |
static bool | mayCrossBoundary (uint64_t StartAddr, uint64_t Size, Align BoundaryAlignment) |
Check if the branch crosses the boundary. | |
static bool | isAgainstBoundary (uint64_t StartAddr, uint64_t Size, Align BoundaryAlignment) |
Check if the branch is against the boundary. | |
static bool | needPadding (uint64_t StartAddr, uint64_t Size, Align BoundaryAlignment) |
Check if the branch needs padding. | |
◆ DEBUG_TYPE
#define DEBUG_TYPE "assembler"
◆ computeBundlePadding()
◆ getLabelOffset()
◆ getSymbolOffsetImpl()
Definition at line 459 of file MCAssembler.cpp.
References A, B, llvm::MCExpr::evaluateAsValue(), getLabelOffset(), llvm::MCSymbol::getName(), getSymbolOffsetImpl(), llvm::MCSymbol::getVariableValue(), llvm::MCSymbol::isVariable(), llvm::Offset, and llvm::report_fatal_error().
Referenced by llvm::MCAssembler::getSymbolOffset(), and getSymbolOffsetImpl().
◆ isAgainstBoundary()
Check if the branch is against the boundary.
Parameters
StartAddr | start address of the fused/unfused branch. |
---|---|
Size | size of the fused/unfused branch. |
BoundaryAlignment | alignment requirement of the branch. |
Returns
true if the branch is against the boundary.
Definition at line 1152 of file MCAssembler.cpp.
References Size, and llvm::Align::value().
Referenced by needPadding().
◆ mayCrossBoundary()
Check if the branch crosses the boundary.
Parameters
StartAddr | start address of the fused/unfused branch. |
---|---|
Size | size of the fused/unfused branch. |
BoundaryAlignment | alignment requirement of the branch. |
Returns
true if the branch cross the boundary.
Definition at line 1139 of file MCAssembler.cpp.
References llvm::Log2(), and Size.
Referenced by needPadding().
◆ needPadding()
Check if the branch needs padding.
Parameters
StartAddr | start address of the fused/unfused branch. |
---|---|
Size | size of the fused/unfused branch. |
BoundaryAlignment | alignment requirement of the branch. |
Returns
true if the branch needs padding.
Definition at line 1164 of file MCAssembler.cpp.
References isAgainstBoundary(), mayCrossBoundary(), and Size.
◆ writeFragment()
Write the fragment F
to the output file.
Definition at line 602 of file MCAssembler.cpp.
References assert(), llvm::Data, Endian, F, llvm::MCFragment::FT_Align, llvm::MCFragment::FT_BoundaryAlign, llvm::MCFragment::FT_CVDefRange, llvm::MCFragment::FT_CVInlineLines, llvm::MCFragment::FT_Data, llvm::MCFragment::FT_Dummy, llvm::MCFragment::FT_Dwarf, llvm::MCFragment::FT_DwarfFrame, llvm::MCFragment::FT_Fill, llvm::MCFragment::FT_LEB, llvm::MCFragment::FT_Nops, llvm::MCFragment::FT_Org, llvm::MCFragment::FT_PseudoProbe, llvm::MCFragment::FT_Relaxable, llvm::MCFragment::FT_SymbolId, llvm::MCEncodedFragmentWithFixups< ContentsSize, FixupsSize >::getContents(), llvm::MCNopsFragment::getControlledNopLength(), llvm::MCSymbol::getIndex(), llvm::MCNopsFragment::getLoc(), llvm::MCNopsFragment::getNumBytes(), llvm::MCAlignFragment::getSubtargetInfo(), llvm::MCNopsFragment::getSubtargetInfo(), llvm::MCBoundaryAlignFragment::getSubtargetInfo(), llvm::MCSymbolIdFragment::getSymbol(), llvm::MCAlignFragment::getValue(), llvm::MCFillFragment::getValue(), llvm::MCOrgFragment::getValue(), llvm::MCAlignFragment::getValueSize(), llvm::MCFillFragment::getValueSize(), llvm::MCAlignFragment::hasEmitNops(), I, llvm::little, llvm_unreachable, OS, llvm::Ref, llvm::report_fatal_error(), llvm::raw_ostream::tell(), and llvm::raw_ostream::write().
Referenced by llvm::MCAssembler::writeSectionData().