LLVM 20.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... | |
Public Types inherited from llvm::MCExpr | |
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 MCAssembler *Asm, const MCFixup *Fixup) const override |
void | visitUsedExpr (MCStreamer &streamer) const override |
MCFragment * | findAssociatedFragment () const override |
void | fixELFSymbolsInTLSFixups (MCAssembler &Asm) const override |
Public Member Functions inherited from llvm::MCTargetExpr | |
virtual void | printImpl (raw_ostream &OS, const MCAsmInfo *MAI) const =0 |
virtual bool | evaluateAsRelocatableImpl (MCValue &Res, const MCAssembler *Asm, const MCFixup *Fixup) const =0 |
virtual bool | isEqualTo (const MCExpr *x) const |
virtual bool | isSymbolUsedInExpression (const MCSymbol *Sym) const |
virtual bool | inlineAssignedExpr () const |
virtual void | visitUsedExpr (MCStreamer &Streamer) const =0 |
virtual MCFragment * | findAssociatedFragment () const =0 |
virtual void | fixELFSymbolsInTLSFixups (MCAssembler &) const =0 |
Public Member Functions inherited from llvm::MCExpr | |
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 | isSymbolUsedInExpression (const MCSymbol *Sym) const |
Returns whether the given symbol is used anywhere in the expression or subexpressions. | |
bool | evaluateAsAbsolute (int64_t &Res, const MCAssembler &Asm, 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 | evaluateKnownAbsolute (int64_t &Res, const MCAssembler &Asm) const |
Aggressive variant of evaluateAsRelocatable when relocations are unavailable (e.g. | |
bool | evaluateAsRelocatable (MCValue &Res, const MCAssembler *Asm, const MCFixup *Fixup) const |
Try to evaluate the expression to a relocatable value, i.e. | |
bool | evaluateAsValue (MCValue &Res, const MCAssembler &Asm) 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 Public Member Functions inherited from llvm::MCTargetExpr | |
static bool | classof (const MCExpr *E) |
Additional Inherited Members | |
Protected Member Functions inherited from llvm::MCTargetExpr | |
MCTargetExpr () | |
virtual | ~MCTargetExpr ()=default |
Protected Member Functions inherited from llvm::MCExpr | |
MCExpr (ExprKind Kind, SMLoc Loc, unsigned SubclassData=0) | |
bool | evaluateAsRelocatableImpl (MCValue &Res, const MCAssembler *Asm, 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 37 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 53 of file AVRMCExpr.cpp.
References llvm::MCExpr::evaluateAsRelocatable(), and getSubExpr().
|
overridevirtual |
Implements llvm::MCTargetExpr.
Definition at line 70 of file AVRMCExpr.cpp.
References llvm::MCSymbolRefExpr::create(), llvm::MCExpr::evaluateAsRelocatable(), Fixup, llvm::MCValue::get(), 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 148 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 208 of file AVRMCExpr.cpp.
References llvm::find_if(), llvm::Mod, Name, and VK_AVR_None.
Gets the name of the expression.
Definition at line 196 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 42 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 192 of file AVRMCExpr.cpp.
References getSubExpr(), and llvm::MCStreamer::visitUsedExpr().