19#define DEBUG_TYPE "hexagon-mcexpr"
22 return new (Ctx) HexagonMCExpr(Expr);
27 return Expr->evaluateAsRelocatable(Res, Asm);
35 return Expr->findAssociatedFragment();
41 assert((!Val || !MustNotExtend) &&
"Extension contradiction");
47 assert((!Val || !MustExtend) &&
"Extension contradiction");
57HexagonMCExpr::HexagonMCExpr(
MCExpr const *Expr)
58 : Expr(Expr), MustNotExtend(
false), MustExtend(
false), S27_2_reloc(
false),
59 SignMismatch(
false) {}
assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")
std::unique_ptr< MCStreamer > && Streamer
void setMustNotExtend(bool Val=true)
bool mustNotExtend() const
void printImpl(raw_ostream &OS, const MCAsmInfo *MAI) const override
bool signMismatch() const
static HexagonMCExpr * create(MCExpr const *Expr, MCContext &Ctx)
bool evaluateAsRelocatableImpl(MCValue &Res, const MCAssembler *Asm) const override
void setMustExtend(bool Val=true)
MCFragment * findAssociatedFragment() const override
MCExpr const * getExpr() const
void setS27_2_reloc(bool Val=true)
void setSignMismatch(bool Val=true)
void visitUsedExpr(MCStreamer &Streamer) const override
This class is intended to be used as a base class for asm properties and features specific to the tar...
void printExpr(raw_ostream &, const MCExpr &) const
Context object for machine code objects.
Base class for the full range of assembler expressions which are needed for parsing.
Streaming machine code generation interface.
This class implements an extremely fast bulk output stream that can only output to a stream.
This is an optimization pass for GlobalISel generic memory operations.