LLVM 20.0.0git
|
#include "Target/LoongArch/MCTargetDesc/LoongArchMCExpr.h"
Public Member Functions | |
VariantKind | getKind () const |
const MCExpr * | getSubExpr () const |
bool | getRelaxHint () const |
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 LoongArchMCExpr * | create (const MCExpr *Expr, VariantKind Kind, MCContext &Ctx, bool Hint=false) |
static bool | classof (const MCExpr *E) |
static StringRef | getVariantKindName (VariantKind Kind) |
static VariantKind | getVariantKindForName (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 |
Definition at line 23 of file LoongArchMCExpr.h.
Definition at line 25 of file LoongArchMCExpr.h.
Definition at line 111 of file LoongArchMCExpr.h.
References E, and llvm::MCExpr::Target.
|
static |
Definition at line 27 of file LoongArchMCExpr.cpp.
Referenced by lowerSymbolOperand().
|
overridevirtual |
Implements llvm::MCTargetExpr.
Definition at line 45 of file LoongArchMCExpr.cpp.
References llvm::MCExpr::evaluateAsRelocatable(), llvm::MCValue::get(), llvm::MCValue::getConstant(), getKind(), getSubExpr(), llvm::MCValue::getSymA(), llvm::MCValue::getSymB(), and VK_LoongArch_None.
|
inlineoverridevirtual |
Implements llvm::MCTargetExpr.
Definition at line 105 of file LoongArchMCExpr.h.
References llvm::MCExpr::findAssociatedFragment(), and getSubExpr().
|
overridevirtual |
Implements llvm::MCTargetExpr.
Definition at line 265 of file LoongArchMCExpr.cpp.
References fixELFSymbolsInTLSFixupsImpl(), getKind(), getSubExpr(), VK_LoongArch_TLS_DESC_HI20, VK_LoongArch_TLS_DESC_PC_HI20, VK_LoongArch_TLS_DESC_PCREL20_S2, VK_LoongArch_TLS_GD_HI20, VK_LoongArch_TLS_GD_PC_HI20, VK_LoongArch_TLS_GD_PCREL20_S2, VK_LoongArch_TLS_IE_HI20, VK_LoongArch_TLS_IE_PC_HI20, VK_LoongArch_TLS_LD_HI20, VK_LoongArch_TLS_LD_PC_HI20, VK_LoongArch_TLS_LD_PCREL20_S2, and VK_LoongArch_TLS_LE_HI20.
|
inline |
Definition at line 97 of file LoongArchMCExpr.h.
Referenced by evaluateAsRelocatableImpl(), fixELFSymbolsInTLSFixups(), and printImpl().
|
inline |
Definition at line 99 of file LoongArchMCExpr.h.
Definition at line 98 of file LoongArchMCExpr.h.
Referenced by evaluateAsRelocatableImpl(), findAssociatedFragment(), fixELFSymbolsInTLSFixups(), and visitUsedExpr().
|
static |
Definition at line 180 of file LoongArchMCExpr.cpp.
References llvm::StringSwitch< T, R >::Case(), llvm::StringSwitch< T, R >::Default(), name, VK_LoongArch_ABS64_HI12, VK_LoongArch_ABS64_LO20, VK_LoongArch_ABS_HI20, VK_LoongArch_ABS_LO12, VK_LoongArch_B16, VK_LoongArch_B21, VK_LoongArch_B26, VK_LoongArch_CALL36, VK_LoongArch_CALL_PLT, VK_LoongArch_GOT64_HI12, VK_LoongArch_GOT64_LO20, VK_LoongArch_GOT64_PC_HI12, VK_LoongArch_GOT64_PC_LO20, VK_LoongArch_GOT_HI20, VK_LoongArch_GOT_LO12, VK_LoongArch_GOT_PC_HI20, VK_LoongArch_GOT_PC_LO12, VK_LoongArch_Invalid, VK_LoongArch_PCALA64_HI12, VK_LoongArch_PCALA64_LO20, VK_LoongArch_PCALA_HI20, VK_LoongArch_PCALA_LO12, VK_LoongArch_PCREL20_S2, VK_LoongArch_TLS_DESC64_HI12, VK_LoongArch_TLS_DESC64_LO20, VK_LoongArch_TLS_DESC64_PC_HI12, VK_LoongArch_TLS_DESC64_PC_LO20, VK_LoongArch_TLS_DESC_CALL, VK_LoongArch_TLS_DESC_HI20, VK_LoongArch_TLS_DESC_LD, VK_LoongArch_TLS_DESC_LO12, VK_LoongArch_TLS_DESC_PC_HI20, VK_LoongArch_TLS_DESC_PC_LO12, VK_LoongArch_TLS_DESC_PCREL20_S2, VK_LoongArch_TLS_GD_HI20, VK_LoongArch_TLS_GD_PC_HI20, VK_LoongArch_TLS_GD_PCREL20_S2, VK_LoongArch_TLS_IE64_HI12, VK_LoongArch_TLS_IE64_LO20, VK_LoongArch_TLS_IE64_PC_HI12, VK_LoongArch_TLS_IE64_PC_LO20, VK_LoongArch_TLS_IE_HI20, VK_LoongArch_TLS_IE_LO12, VK_LoongArch_TLS_IE_PC_HI20, VK_LoongArch_TLS_IE_PC_LO12, VK_LoongArch_TLS_LD_HI20, VK_LoongArch_TLS_LD_PC_HI20, VK_LoongArch_TLS_LD_PCREL20_S2, VK_LoongArch_TLS_LE64_HI12, VK_LoongArch_TLS_LE64_LO20, VK_LoongArch_TLS_LE_ADD_R, VK_LoongArch_TLS_LE_HI20, VK_LoongArch_TLS_LE_HI20_R, VK_LoongArch_TLS_LE_LO12, and VK_LoongArch_TLS_LE_LO12_R.
|
static |
Definition at line 64 of file LoongArchMCExpr.cpp.
References llvm_unreachable, VK_LoongArch_ABS64_HI12, VK_LoongArch_ABS64_LO20, VK_LoongArch_ABS_HI20, VK_LoongArch_ABS_LO12, VK_LoongArch_B16, VK_LoongArch_B21, VK_LoongArch_B26, VK_LoongArch_CALL36, VK_LoongArch_CALL_PLT, VK_LoongArch_GOT64_HI12, VK_LoongArch_GOT64_LO20, VK_LoongArch_GOT64_PC_HI12, VK_LoongArch_GOT64_PC_LO20, VK_LoongArch_GOT_HI20, VK_LoongArch_GOT_LO12, VK_LoongArch_GOT_PC_HI20, VK_LoongArch_GOT_PC_LO12, VK_LoongArch_PCALA64_HI12, VK_LoongArch_PCALA64_LO20, VK_LoongArch_PCALA_HI20, VK_LoongArch_PCALA_LO12, VK_LoongArch_PCREL20_S2, VK_LoongArch_TLS_DESC64_HI12, VK_LoongArch_TLS_DESC64_LO20, VK_LoongArch_TLS_DESC64_PC_HI12, VK_LoongArch_TLS_DESC64_PC_LO20, VK_LoongArch_TLS_DESC_CALL, VK_LoongArch_TLS_DESC_HI20, VK_LoongArch_TLS_DESC_LD, VK_LoongArch_TLS_DESC_LO12, VK_LoongArch_TLS_DESC_PC_HI20, VK_LoongArch_TLS_DESC_PC_LO12, VK_LoongArch_TLS_DESC_PCREL20_S2, VK_LoongArch_TLS_GD_HI20, VK_LoongArch_TLS_GD_PC_HI20, VK_LoongArch_TLS_GD_PCREL20_S2, VK_LoongArch_TLS_IE64_HI12, VK_LoongArch_TLS_IE64_LO20, VK_LoongArch_TLS_IE64_PC_HI12, VK_LoongArch_TLS_IE64_PC_LO20, VK_LoongArch_TLS_IE_HI20, VK_LoongArch_TLS_IE_LO12, VK_LoongArch_TLS_IE_PC_HI20, VK_LoongArch_TLS_IE_PC_LO12, VK_LoongArch_TLS_LD_HI20, VK_LoongArch_TLS_LD_PC_HI20, VK_LoongArch_TLS_LD_PCREL20_S2, VK_LoongArch_TLS_LE64_HI12, VK_LoongArch_TLS_LE64_LO20, VK_LoongArch_TLS_LE_ADD_R, VK_LoongArch_TLS_LE_HI20, VK_LoongArch_TLS_LE_HI20_R, VK_LoongArch_TLS_LE_LO12, and VK_LoongArch_TLS_LE_LO12_R.
Referenced by printImpl().
|
overridevirtual |
Implements llvm::MCTargetExpr.
Definition at line 33 of file LoongArchMCExpr.cpp.
References getKind(), getVariantKindName(), OS, llvm::MCExpr::print(), VK_LoongArch_CALL, and VK_LoongArch_None.
|
overridevirtual |
Implements llvm::MCTargetExpr.
Definition at line 60 of file LoongArchMCExpr.cpp.
References getSubExpr(), and llvm::MCStreamer::visitUsedExpr().