LLVM 17.0.0git
|
A expression in AVR machine code. More...
#include "Target/AVR/MCTargetDesc/AVRMCExpr.h"
Public Types | |
enum | VariantKind { VK_AVR_None = 0 , VK_AVR_HI8 , VK_AVR_LO8 , VK_AVR_HH8 , VK_AVR_HHI8 , VK_AVR_PM , VK_AVR_PM_LO8 , VK_AVR_PM_HI8 , VK_AVR_PM_HH8 , VK_AVR_LO8_GS , VK_AVR_HI8_GS , VK_AVR_GS } |
Specifies the type of an expression. More... | |
![]() | |
enum | ExprKind : uint8_t { Binary , Constant , SymbolRef , Unary , Target } |
Public Member Functions | |
VariantKind | getKind () const |
Gets the type of the expression. | |
const char * | getName () const |
Gets the name of the expression. | |
const MCExpr * | getSubExpr () const |
AVR::Fixups | getFixupKind () const |
Gets the fixup which corresponds to the expression. | |
bool | evaluateAsConstant (int64_t &Result) const |
Evaluates the fixup as a constant value. | |
bool | isNegated () const |
void | setNegated (bool negated=true) |
void | printImpl (raw_ostream &OS, const MCAsmInfo *MAI) const override |
bool | evaluateAsRelocatableImpl (MCValue &Res, const MCAsmLayout *Layout, const MCFixup *Fixup) const override |
void | visitUsedExpr (MCStreamer &streamer) const override |
MCFragment * | findAssociatedFragment () const override |
void | fixELFSymbolsInTLSFixups (MCAssembler &Asm) const override |
![]() | |
virtual void | printImpl (raw_ostream &OS, const MCAsmInfo *MAI) const =0 |
virtual bool | evaluateAsRelocatableImpl (MCValue &Res, const MCAsmLayout *Layout, const MCFixup *Fixup) const =0 |
virtual bool | isEqualTo (const MCExpr *x) const |
virtual bool | inlineAssignedExpr () const |
virtual void | visitUsedExpr (MCStreamer &Streamer) const =0 |
virtual MCFragment * | findAssociatedFragment () const =0 |
virtual void | fixELFSymbolsInTLSFixups (MCAssembler &) const =0 |
![]() | |
MCExpr (const MCExpr &)=delete | |
MCExpr & | operator= (const MCExpr &)=delete |
ExprKind | getKind () const |
SMLoc | getLoc () const |
void | print (raw_ostream &OS, const MCAsmInfo *MAI, bool InParens=false) const |
void | dump () const |
bool | evaluateAsAbsolute (int64_t &Res, const MCAsmLayout &Layout, const SectionAddrMap &Addrs) const |
Try to evaluate the expression to an absolute value. | |
bool | evaluateAsAbsolute (int64_t &Res) const |
bool | evaluateAsAbsolute (int64_t &Res, const MCAssembler &Asm) const |
bool | evaluateAsAbsolute (int64_t &Res, const MCAssembler *Asm) const |
bool | evaluateAsAbsolute (int64_t &Res, const MCAsmLayout &Layout) const |
bool | evaluateKnownAbsolute (int64_t &Res, const MCAsmLayout &Layout) const |
bool | evaluateAsRelocatable (MCValue &Res, const MCAsmLayout *Layout, const MCFixup *Fixup) const |
Try to evaluate the expression to a relocatable value, i.e. | |
bool | evaluateAsValue (MCValue &Res, const MCAsmLayout &Layout) const |
Try to evaluate the expression to the form (a - b + constant) where neither a nor b are variables. | |
MCFragment * | findAssociatedFragment () const |
Find the "associated section" for this expression, which is currently defined as the absolute section for constants, or otherwise the section associated with the first defined symbol in the expression. | |
Static Public Member Functions | |
static const AVRMCExpr * | create (VariantKind Kind, const MCExpr *Expr, bool isNegated, MCContext &Ctx) |
Creates an AVR machine code expression. | |
static bool | classof (const MCExpr *E) |
static VariantKind | getKindByName (StringRef Name) |
![]() | |
static bool | classof (const MCExpr *E) |
Additional Inherited Members | |
![]() | |
MCTargetExpr () | |
virtual | ~MCTargetExpr ()=default |
![]() | |
MCExpr (ExprKind Kind, SMLoc Loc, unsigned SubclassData=0) | |
bool | evaluateAsRelocatableImpl (MCValue &Res, const MCAssembler *Asm, const MCAsmLayout *Layout, const MCFixup *Fixup, const SectionAddrMap *Addrs, bool InSet) const |
unsigned | getSubclassData () const |
A expression in AVR machine code.
Definition at line 19 of file AVRMCExpr.h.
Specifies the type of an expression.
Definition at line 22 of file AVRMCExpr.h.
Definition at line 70 of file AVRMCExpr.h.
References E, and llvm::MCExpr::Target.
|
static |
Creates an AVR machine code expression.
Definition at line 38 of file AVRMCExpr.cpp.
Referenced by llvm::AVRAsmPrinter::lowerConstant(), and llvm::AVRMCInstLower::lowerSymbolOperand().
bool llvm::AVRMCExpr::evaluateAsConstant | ( | int64_t & | Result | ) | const |
Evaluates the fixup as a constant value.
Definition at line 54 of file AVRMCExpr.cpp.
References llvm::MCExpr::evaluateAsRelocatable(), and getSubExpr().
|
overridevirtual |
Implements llvm::MCTargetExpr.
Definition at line 71 of file AVRMCExpr.cpp.
References Context, llvm::MCSymbolRefExpr::create(), llvm::MCExpr::evaluateAsRelocatable(), Fixup, llvm::MCValue::get(), llvm::MCAsmLayout::getAssembler(), llvm::MCAssembler::getContext(), Sym, llvm::MCSymbolRefExpr::VK_AVR_PM, VK_AVR_PM, and llvm::MCSymbolRefExpr::VK_None.
|
inlineoverridevirtual |
Implements llvm::MCTargetExpr.
Definition at line 64 of file AVRMCExpr.h.
References llvm::MCExpr::findAssociatedFragment(), and getSubExpr().
|
inlineoverridevirtual |
Implements llvm::MCTargetExpr.
Definition at line 68 of file AVRMCExpr.h.
AVR::Fixups llvm::AVRMCExpr::getFixupKind | ( | ) | const |
Gets the fixup which corresponds to the expression.
Definition at line 149 of file AVRMCExpr.cpp.
References llvm::AVR::fixup_16_pm, llvm::AVR::fixup_hh8_ldi, llvm::AVR::fixup_hh8_ldi_neg, llvm::AVR::fixup_hh8_ldi_pm, llvm::AVR::fixup_hh8_ldi_pm_neg, llvm::AVR::fixup_hi8_ldi, llvm::AVR::fixup_hi8_ldi_gs, llvm::AVR::fixup_hi8_ldi_neg, llvm::AVR::fixup_hi8_ldi_pm, llvm::AVR::fixup_hi8_ldi_pm_neg, llvm::AVR::fixup_lo8_ldi, llvm::AVR::fixup_lo8_ldi_gs, llvm::AVR::fixup_lo8_ldi_neg, llvm::AVR::fixup_lo8_ldi_pm, llvm::AVR::fixup_lo8_ldi_pm_neg, llvm::AVR::fixup_ms8_ldi, llvm::AVR::fixup_ms8_ldi_neg, getKind(), isNegated(), llvm::AVR::LastTargetFixupKind, llvm_unreachable, VK_AVR_GS, VK_AVR_HH8, VK_AVR_HHI8, VK_AVR_HI8, VK_AVR_HI8_GS, VK_AVR_LO8, VK_AVR_LO8_GS, VK_AVR_None, VK_AVR_PM, VK_AVR_PM_HH8, VK_AVR_PM_HI8, and VK_AVR_PM_LO8.
|
inline |
Gets the type of the expression.
Definition at line 46 of file AVRMCExpr.h.
Referenced by getFixupKind().
|
static |
Definition at line 209 of file AVRMCExpr.cpp.
References llvm::find_if(), llvm::Mod, Name, and VK_AVR_None.
Gets the name of the expression.
Definition at line 197 of file AVRMCExpr.cpp.
References llvm::find_if(), and llvm::Mod.
Referenced by printImpl().
Definition at line 49 of file AVRMCExpr.h.
Referenced by evaluateAsConstant(), findAssociatedFragment(), printImpl(), and visitUsedExpr().
|
inline |
Definition at line 55 of file AVRMCExpr.h.
Referenced by getFixupKind(), and printImpl().
|
overridevirtual |
Implements llvm::MCTargetExpr.
Definition at line 43 of file AVRMCExpr.cpp.
References assert(), getName(), getSubExpr(), isNegated(), OS, llvm::MCExpr::print(), and VK_AVR_None.
Definition at line 56 of file AVRMCExpr.h.
|
overridevirtual |
Implements llvm::MCTargetExpr.
Definition at line 193 of file AVRMCExpr.cpp.
References getSubExpr(), and llvm::MCStreamer::visitUsedExpr().