9#ifndef LLVM_AVR_MCEXPR_H
10#define LLVM_AVR_MCEXPR_H
56 void setNegated(
bool negated =
true) { Negated = negated; }
78 int64_t evaluateAsInt64(int64_t
Value)
const;
86 : Kind(Kind), SubExpr(Expr), Negated(Negated) {}
87 ~AVRMCExpr() =
default;
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
PowerPC TLS Dynamic Call Fixup
A expression in AVR machine code.
static const AVRMCExpr * create(VariantKind Kind, const MCExpr *Expr, bool isNegated, MCContext &Ctx)
Creates an AVR machine code expression.
void setNegated(bool negated=true)
MCFragment * findAssociatedFragment() const override
void visitUsedExpr(MCStreamer &streamer) const override
bool evaluateAsRelocatableImpl(MCValue &Res, const MCAsmLayout *Layout, const MCFixup *Fixup) const override
static VariantKind getKindByName(StringRef Name)
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.
void fixELFSymbolsInTLSFixups(MCAssembler &Asm) const override
void printImpl(raw_ostream &OS, const MCAsmInfo *MAI) const override
static bool classof(const MCExpr *E)
VariantKind getKind() const
Gets the type of the expression.
const MCExpr * getSubExpr() const
VariantKind
Specifies the type of an expression.
@ VK_AVR_PM_LO8
Corresponds to pm_lo8().
@ VK_AVR_LO8
Corresponds to lo8().
@ VK_AVR_PM_HI8
Corresponds to pm_hi8().
@ VK_AVR_PM
Corresponds to pm(), reference to program memory.
@ VK_AVR_HHI8
Corresponds to hhi8().
@ VK_AVR_HI8_GS
Corresponds to hi8(gs()).
@ VK_AVR_HH8
Corresponds to hlo8() and hh8().
@ VK_AVR_LO8_GS
Corresponds to lo8(gs()).
@ VK_AVR_PM_HH8
Corresponds to pm_hh8().
@ VK_AVR_GS
Corresponds to gs().
@ VK_AVR_HI8
Corresponds to hi8().
const char * getName() const
Gets the name of the expression.
This class is intended to be used as a base class for asm properties and features specific to the tar...
Encapsulates the layout of an assembly file at a particular point in time.
Context object for machine code objects.
Base class for the full range of assembler expressions which are needed for parsing.
@ Target
Target specific expression.
MCFragment * findAssociatedFragment() const
Find the "associated section" for this expression, which is currently defined as the absolute section...
Encode information on a single operation to perform on a byte sequence (e.g., an encoded instruction)...
Streaming machine code generation interface.
This is an extension point for target-specific MCExpr subclasses to implement.
This represents an "assembler immediate".
StringRef - Represent a constant reference to a string, i.e.
LLVM Value Representation.
This class implements an extremely fast bulk output stream that can only output to a stream.
Fixups
The set of supported fixups.
This is an optimization pass for GlobalISel generic memory operations.