LLVM 20.0.0git
|
#include "Target/Mips/MCTargetDesc/MipsMCExpr.h"
Public Types | |
enum | MipsExprKind { MEK_None , MEK_CALL_HI16 , MEK_CALL_LO16 , MEK_DTPREL , MEK_DTPREL_HI , MEK_DTPREL_LO , MEK_GOT , MEK_GOTTPREL , MEK_GOT_CALL , MEK_GOT_DISP , MEK_GOT_HI16 , MEK_GOT_LO16 , MEK_GOT_OFST , MEK_GOT_PAGE , MEK_GPREL , MEK_HI , MEK_HIGHER , MEK_HIGHEST , MEK_LO , MEK_NEG , MEK_PCREL_HI16 , MEK_PCREL_LO16 , MEK_TLSGD , MEK_TLSLDM , MEK_TPREL_HI , MEK_TPREL_LO , MEK_Special } |
Public Types inherited from llvm::MCExpr | |
enum | ExprKind : uint8_t { Binary , Constant , SymbolRef , Unary , Target } |
Public Member Functions | |
MipsExprKind | getKind () const |
Get the kind of this expression. | |
const MCExpr * | getSubExpr () const |
Get the child of this expression. | |
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 |
bool | isGpOff (MipsExprKind &Kind) const |
bool | isGpOff () const |
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 | 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 | 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 MipsMCExpr * | create (MipsExprKind Kind, const MCExpr *Expr, MCContext &Ctx) |
static const MipsMCExpr * | createGpOff (MipsExprKind Kind, const MCExpr *Expr, MCContext &Ctx) |
static bool | classof (const MCExpr *E) |
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 17 of file MipsMCExpr.h.
Definition at line 19 of file MipsMCExpr.h.
Definition at line 79 of file MipsMCExpr.h.
References E, and llvm::MCExpr::Target.
|
static |
Definition at line 27 of file MipsMCExpr.cpp.
Referenced by createGpOff(), llvm::MipsTargetELFStreamer::emitDirectiveCpLoad(), and llvm::MipsTargetObjectFile::getDebugThreadLocalSymbol().
|
static |
Definition at line 32 of file MipsMCExpr.cpp.
References create(), MEK_GPREL, and MEK_NEG.
Referenced by llvm::MipsTargetELFStreamer::emitDirectiveCpsetup().
|
overridevirtual |
Implements llvm::MCTargetExpr.
Definition at line 132 of file MipsMCExpr.cpp.
References llvm::MCExpr::evaluateAsRelocatable(), Fixup, llvm::MCValue::get(), llvm::MCValue::getConstant(), getKind(), llvm::MCValue::getRefKind(), getSubExpr(), llvm::MCValue::getSymA(), llvm::MCValue::getSymB(), llvm::MCValue::isAbsolute(), isGpOff(), llvm_unreachable, MEK_CALL_HI16, MEK_CALL_LO16, MEK_DTPREL, MEK_DTPREL_HI, MEK_DTPREL_LO, MEK_GOT, MEK_GOT_CALL, MEK_GOT_DISP, MEK_GOT_HI16, MEK_GOT_LO16, MEK_GOT_OFST, MEK_GOT_PAGE, MEK_GOTTPREL, MEK_GPREL, MEK_HI, MEK_HIGHER, MEK_HIGHEST, MEK_LO, MEK_NEG, MEK_None, MEK_PCREL_HI16, MEK_PCREL_LO16, MEK_Special, MEK_TLSGD, MEK_TLSLDM, MEK_TPREL_HI, MEK_TPREL_LO, and llvm::MCSymbolRefExpr::VK_None.
|
inlineoverridevirtual |
Implements llvm::MCTargetExpr.
Definition at line 73 of file MipsMCExpr.h.
References llvm::MCExpr::findAssociatedFragment(), and getSubExpr().
|
overridevirtual |
Implements llvm::MCTargetExpr.
Definition at line 248 of file MipsMCExpr.cpp.
References fixELFSymbolsInTLSFixupsImpl(), getKind(), getSubExpr(), llvm_unreachable, MEK_CALL_HI16, MEK_CALL_LO16, MEK_DTPREL, MEK_DTPREL_HI, MEK_DTPREL_LO, MEK_GOT, MEK_GOT_CALL, MEK_GOT_DISP, MEK_GOT_HI16, MEK_GOT_LO16, MEK_GOT_OFST, MEK_GOT_PAGE, MEK_GOTTPREL, MEK_GPREL, MEK_HI, MEK_HIGHER, MEK_HIGHEST, MEK_LO, MEK_NEG, MEK_None, MEK_PCREL_HI16, MEK_PCREL_LO16, MEK_Special, MEK_TLSGD, MEK_TLSLDM, MEK_TPREL_HI, and MEK_TPREL_LO.
|
inline |
Get the kind of this expression.
Definition at line 63 of file MipsMCExpr.h.
Referenced by evaluateAsRelocatableImpl(), fixELFSymbolsInTLSFixups(), llvm::MipsMCCodeEmitter::getExprOpValue(), and isGpOff().
Get the child of this expression.
Definition at line 66 of file MipsMCExpr.h.
Referenced by evaluateAsRelocatableImpl(), findAssociatedFragment(), fixELFSymbolsInTLSFixups(), llvm::MipsMCCodeEmitter::getExprOpValue(), isGpOff(), printImpl(), and visitUsedExpr().
|
inline |
Definition at line 84 of file MipsMCExpr.h.
References isGpOff().
Referenced by evaluateAsRelocatableImpl(), and isGpOff().
bool MipsMCExpr::isGpOff | ( | MipsExprKind & | Kind | ) | const |
Definition at line 289 of file MipsMCExpr.cpp.
References getKind(), getSubExpr(), MEK_GPREL, MEK_HI, MEK_LO, MEK_NEG, and S1.
Referenced by llvm::MipsMCCodeEmitter::getExprOpValue().
|
overridevirtual |
Implements llvm::MCTargetExpr.
Definition at line 37 of file MipsMCExpr.cpp.
References getSubExpr(), llvm_unreachable, MEK_CALL_HI16, MEK_CALL_LO16, MEK_DTPREL, MEK_DTPREL_HI, MEK_DTPREL_LO, MEK_GOT, MEK_GOT_CALL, MEK_GOT_DISP, MEK_GOT_HI16, MEK_GOT_LO16, MEK_GOT_OFST, MEK_GOT_PAGE, MEK_GOTTPREL, MEK_GPREL, MEK_HI, MEK_HIGHER, MEK_HIGHEST, MEK_LO, MEK_NEG, MEK_None, MEK_PCREL_HI16, MEK_PCREL_LO16, MEK_Special, MEK_TLSGD, MEK_TLSLDM, MEK_TPREL_HI, MEK_TPREL_LO, OS, and llvm::MCExpr::print().
|
overridevirtual |
Implements llvm::MCTargetExpr.
Definition at line 218 of file MipsMCExpr.cpp.
References getSubExpr(), and llvm::MCStreamer::visitUsedExpr().