LLVM: llvm::MCBinaryExpr Class Reference (original) (raw)

Binary assembler expressions. More...

#include "[llvm/MC/MCExpr.h](MCExpr%5F8h%5Fsource.html)"

Public Types
enum Opcode { Add, And, Div, EQ, GT, GTE, LAnd, LOr, LT, LTE, Mod, Mul, NE, Or, OrNot, Shl, AShr, LShr, Sub, Xor }
Public Types inherited from llvm::MCExpr
enum ExprKind : uint8_t { Binary, Constant, SymbolRef, Unary, Specifier, Target }
Public Member Functions
Accessors
Opcode getOpcode () const
Get the kind of this binary expression.
const MCExpr * getLHS () const
Get the left-hand side expression of the binary operator.
const MCExpr * getRHS () const
Get the right-hand side expression of the binary operator.
Public Member Functions inherited from llvm::MCExpr
MCExpr (const MCExpr &)=delete
MCExpr & operator= (const MCExpr &)=delete
ExprKind getKind () const
SMLoc getLoc () const
LLVM_ABI void dump () const
LLVM_ABI bool evaluateAsAbsolute (int64_t &Res) const
Try to evaluate the expression to an absolute value.
LLVM_ABI bool evaluateAsAbsolute (int64_t &Res, const MCAssembler &Asm) const
LLVM_ABI bool evaluateAsAbsolute (int64_t &Res, const MCAssembler *Asm) const
LLVM_ABI bool evaluateKnownAbsolute (int64_t &Res, const MCAssembler &Asm) const
Aggressive variant of evaluateAsRelocatable when relocations are unavailable (e.g.
LLVM_ABI bool evaluateAsRelocatable (MCValue &Res, const MCAssembler *Asm) const
Try to evaluate the expression to a relocatable value, i.e.
LLVM_ABI 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.
LLVM_ABI 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 bool classof (const MCExpr *E)
Construction
static LLVM_ABI const MCBinaryExpr * create (Opcode Op, const MCExpr *LHS, const MCExpr *RHS, MCContext &Ctx, SMLoc Loc=SMLoc())
static const MCBinaryExpr * createAdd (const MCExpr *LHS, const MCExpr *RHS, MCContext &Ctx, SMLoc Loc=SMLoc())
static const MCBinaryExpr * createAnd (const MCExpr *LHS, const MCExpr *RHS, MCContext &Ctx)
static const MCBinaryExpr * createDiv (const MCExpr *LHS, const MCExpr *RHS, MCContext &Ctx)
static const MCBinaryExpr * createEQ (const MCExpr *LHS, const MCExpr *RHS, MCContext &Ctx)
static const MCBinaryExpr * createGT (const MCExpr *LHS, const MCExpr *RHS, MCContext &Ctx)
static const MCBinaryExpr * createGTE (const MCExpr *LHS, const MCExpr *RHS, MCContext &Ctx)
static const MCBinaryExpr * createLAnd (const MCExpr *LHS, const MCExpr *RHS, MCContext &Ctx)
static const MCBinaryExpr * createLOr (const MCExpr *LHS, const MCExpr *RHS, MCContext &Ctx)
static const MCBinaryExpr * createLT (const MCExpr *LHS, const MCExpr *RHS, MCContext &Ctx)
static const MCBinaryExpr * createLTE (const MCExpr *LHS, const MCExpr *RHS, MCContext &Ctx)
static const MCBinaryExpr * createMod (const MCExpr *LHS, const MCExpr *RHS, MCContext &Ctx)
static const MCBinaryExpr * createMul (const MCExpr *LHS, const MCExpr *RHS, MCContext &Ctx)
static const MCBinaryExpr * createNE (const MCExpr *LHS, const MCExpr *RHS, MCContext &Ctx)
static const MCBinaryExpr * createOr (const MCExpr *LHS, const MCExpr *RHS, MCContext &Ctx)
static const MCBinaryExpr * createShl (const MCExpr *LHS, const MCExpr *RHS, MCContext &Ctx)
static const MCBinaryExpr * createAShr (const MCExpr *LHS, const MCExpr *RHS, MCContext &Ctx)
static const MCBinaryExpr * createLShr (const MCExpr *LHS, const MCExpr *RHS, MCContext &Ctx)
static const MCBinaryExpr * createSub (const MCExpr *LHS, const MCExpr *RHS, MCContext &Ctx)
static const MCBinaryExpr * createXor (const MCExpr *LHS, const MCExpr *RHS, MCContext &Ctx)
Static Public Member Functions inherited from llvm::MCExpr
static LLVM_ABI bool evaluateSymbolicAdd (const MCAssembler *, bool, const MCValue &, const MCValue &, MCValue &)
Additional Inherited Members
Protected Types inherited from llvm::MCExpr
using Spec = uint16_t
Protected Member Functions inherited from llvm::MCExpr
MCExpr (ExprKind Kind, SMLoc Loc, unsigned SubclassData=0)
LLVM_ABI bool evaluateAsRelocatableImpl (MCValue &Res, const MCAssembler *Asm, bool InSet) const
unsigned getSubclassData () const

Binary assembler expressions.

Definition at line 299 of file MCExpr.h.

Opcode

Enumerator
Add Addition.
And Bitwise and.
Div Signed division.
EQ Equality comparison.
GT Signed greater than comparison (result is either 0 or some target-specific non-zero value)
GTE Signed greater than or equal comparison (result is either 0 or some target-specific non-zero value).
LAnd Logical and.
LOr Logical or.
LT Signed less than comparison (result is either 0 or some target-specific non-zero value).
LTE Signed less than or equal comparison (result is either 0 or some target-specific non-zero value).
Mod Signed remainder.
Mul Multiplication.
NE Inequality comparison.
Or Bitwise or.
OrNot Bitwise or not.
Shl Shift left.
AShr Arithmetic shift right.
LShr Logical shift right.
Sub Subtraction.
Xor Bitwise exclusive or.

Definition at line 301 of file MCExpr.h.

classof()

create()

Definition at line 201 of file MCExpr.cpp.

References llvm::MCExpr::MCExpr(), and Opc.

Referenced by llvm::MCAsmParser::applySpecifier(), buildSymbolDiff(), buildSymbolDiff(), computeLabelDiff(), createAdd(), createAnd(), createAShr(), createDiv(), createEQ(), createGT(), createGTE(), createLAnd(), createLOr(), createLShr(), createLT(), createLTE(), createMod(), createMul(), createNE(), createOr(), createShl(), createSub(), createXor(), makeEndMinusStartExpr(), makeStartPlusIntExpr(), and tryFoldHelper().

createAdd()

Definition at line 343 of file MCExpr.h.

References Add, create(), and llvm::MCExpr::MCExpr().

Referenced by createPCXRelExprOp(), llvm::MCResourceInfo::createTotalNumSGPRs(), llvm::AMDGPUTargetAsmStreamer::EmitAmdhsaKernelDescriptor(), llvm::MCWinCOFFStreamer::emitCOFFImgRel32(), llvm::MCWinCOFFStreamer::emitCOFFSecRel32(), llvm::ARMAsmPrinter::emitInstruction(), llvm::SystemZAsmPrinter::emitInstruction(), llvm::X86AsmPrinter::emitInstruction(), llvm::ARMAsmPrinter::emitJumpTableAddrs(), llvm::ARMAsmPrinter::emitJumpTableTBInst(), llvm::AsmPrinter::emitLabelPlusOffset(), llvm::ARMAsmPrinter::emitMachineConstantPoolValue(), llvm::MCObjectStreamer::emitRelocDirective(), EmitSymbolRefWithOfs(), EmitSymbolRefWithOfs(), llvm::AsmPrinter::emitXRayTable(), llvm::CodeViewContext::encodeDefRange(), llvm::MCResourceInfo::gatherResourceInfo(), llvm::MipsMCCodeEmitter::getBranchTarget21OpValue(), llvm::MipsMCCodeEmitter::getBranchTarget21OpValueMM(), llvm::MipsMCCodeEmitter::getBranchTarget26OpValue(), llvm::MipsMCCodeEmitter::getBranchTarget26OpValueMM(), llvm::MipsMCCodeEmitter::getBranchTargetOpValue(), llvm::MipsMCCodeEmitter::getBranchTargetOpValue1SImm16(), llvm::MipsMCCodeEmitter::getBranchTargetOpValueLsl2MMR6(), llvm::MipsMCCodeEmitter::getBranchTargetOpValueMMR6(), llvm::MipsTargetObjectFile::getDebugThreadLocalSymbol(), llvm::SystemZMCInstLower::getExpr(), llvm::X86_64MCAsmInfoDarwin::getExprForPersonalitySymbol(), llvm::AArch64_ELFTargetObjectFile::getIndirectSymViaGOTPCRel(), llvm::ARMElfTargetObjectFile::getIndirectSymViaGOTPCRel(), llvm::RISCVELFTargetObjectFile::getIndirectSymViaGOTPCRel(), llvm::TargetLoweringObjectFileMachO::getIndirectSymViaGOTPCRel(), llvm::X86_64ELFTargetObjectFile::getIndirectSymViaGOTPCRel(), llvm::X86_64MachoTargetObjectFile::getIndirectSymViaGOTPCRel(), GetSymbolRef(), GetSymbolRef(), llvm::X86_64MachoTargetObjectFile::getTTypeGlobalReference(), llvm::AsmPrinter::lowerConstant(), llvm::AMDGPUMCInstLower::lowerOperand(), llvm::TargetLoweringObjectFileCOFF::lowerRelativeReference(), llvm::TargetLoweringObjectFileELF::lowerSymbolDifference(), llvm::LanaiMCInstLower::LowerSymbolOperand(), llvm::M68kMCInstLower::LowerSymbolOperand(), llvm::MSP430MCInstLower::LowerSymbolOperand(), llvm::XtensaAsmPrinter::LowerSymbolOperand(), LowerSymbolOperand(), llvm::AVRMCInstLower::lowerSymbolOperand(), lowerSymbolOperand(), lowerSymbolOperand(), llvm::AArch64MCInstLower::lowerSymbolOperandCOFF(), llvm::AArch64MCInstLower::lowerSymbolOperandELF(), llvm::AArch64MCInstLower::lowerSymbolOperandMachO(), llvm::LoongArchAsmBackend::relaxAlign(), llvm::AMDGPUAsmPrinter::runOnMachineFunction(), llvm::AArch64ExternalSymbolizer::tryAddingSymbolicOperand(), and llvm::MCExternalSymbolizer::tryAddingSymbolicOperand().

createAnd()

createAShr()

createDiv()

createEQ()

createGT()

createGTE()

createLAnd()

createLOr()

createLShr()

createLT()

createLTE()

createMod()

createMul()

createNE()

createOr()

createShl()

createSub()

Definition at line 428 of file MCExpr.h.

References create(), llvm::MCExpr::MCExpr(), and Sub.

Referenced by llvm::CSKYConstantPool::addEntry(), addNegOperand(), computeAccumOffset(), createPCXRelExprOp(), llvm::SystemZTargetGOFFStreamer::createWordDiffExpr(), llvm::SystemZTargetHLASMStreamer::createWordDiffExpr(), EmitAbsDifference(), llvm::MCStreamer::emitAbsoluteSymbolDiff(), llvm::MCStreamer::emitAbsoluteSymbolDiffAsULEB128(), llvm::AMDGPUTargetELFStreamer::EmitAmdhsaKernelDescriptor(), llvm::MipsTargetELFStreamer::emitDirectiveEnd(), llvm::EHStreamer::emitExceptionTable(), llvm::AsmPrinter::emitFunctionBody(), llvm::AMDGPUAsmPrinter::emitFunctionBodyEnd(), llvm::AMDGPUTargetELFStreamer::EmitHSAMetadata(), llvm::ARMAsmPrinter::emitInstruction(), llvm::X86AsmPrinter::emitInstruction(), llvm::AMDGPUTargetELFStreamer::EmitISAVersion(), llvm::ARMAsmPrinter::emitJumpTableAddrs(), llvm::AsmPrinter::emitJumpTableEntry(), llvm::BPFAsmPrinter::emitJumpTableInfo(), llvm::ARMAsmPrinter::emitJumpTableTBInst(), llvm::X86AsmPrinter::emitKCFITypeId(), llvm::ARMAsmPrinter::emitMachineConstantPoolValue(), llvm::CSKYAsmPrinter::emitMachineConstantPoolValue(), EmitSymbolRefWithOfs(), llvm::AsmPrinter::emitXRayTable(), llvm::WasmException::endFunction(), llvm::MCAsmInfo::getExprForFDESymbol(), llvm::AArch64MCAsmInfoDarwin::getExprForPersonalitySymbol(), llvm::AArch64_MachoTargetObjectFile::getIndirectSymViaGOTPCRel(), llvm::TargetLoweringObjectFileMachO::getIndirectSymViaGOTPCRel(), GetOptionalAbsDifference(), GetSubDivExpr(), GetSymbolRef(), llvm::AArch64_MachoTargetObjectFile::getTTypeGlobalReference(), llvm::TargetLoweringObjectFile::getTTypeReference(), llvm::HexagonAsmPrinter::HexagonProcessInstruction(), llvm::SIInstrInfo::insertIndirectBranch(), llvm::AsmPrinter::lowerConstant(), llvm::VETargetLowering::LowerCustomJumpTableEntry(), llvm::TargetLoweringObjectFileELF::lowerSymbolDifference(), llvm::FaultMaps::recordFaultingOp(), llvm::AArch64ExternalSymbolizer::tryAddingSymbolicOperand(), and llvm::MCExternalSymbolizer::tryAddingSymbolicOperand().

createXor()

getLHS()

const MCExpr * llvm::MCBinaryExpr::getLHS ( ) const inline

Get the left-hand side expression of the binary operator.

Definition at line 446 of file MCExpr.h.

References llvm::MCExpr::MCExpr().

Referenced by llvm::MCAsmParser::applySpecifier(), binaryOpKnownBitsMapHelper(), llvm::SystemZHLASMAsmStreamer::emitHLASMValueImpl(), llvm::MCExpr::evaluateAsRelocatableImpl(), EvaluateCRExpr(), llvm::MCExpr::findAssociatedFragment(), llvm::PPCMCCodeEmitter::getDispRI34PCRelEncoding(), hasGOTReference(), isEvaluated(), llvm::AMDGPUMCExpr::isSymbolUsedInExpression(), llvm::LoongArchAsmBackend::relaxDwarfCFA(), llvm::RISCVAsmBackend::relaxDwarfCFA(), startsWithGlobalOffsetTable(), tryFoldHelper(), and llvm::MCStreamer::visitUsedExpr().

getOpcode()

Opcode llvm::MCBinaryExpr::getOpcode ( ) const inline

getRHS()

const MCExpr * llvm::MCBinaryExpr::getRHS ( ) const inline

Get the right-hand side expression of the binary operator.

Definition at line 449 of file MCExpr.h.

References llvm::MCExpr::MCExpr().

Referenced by llvm::MCAsmParser::applySpecifier(), binaryOpKnownBitsMapHelper(), llvm::SystemZHLASMAsmStreamer::emitHLASMValueImpl(), llvm::MCExpr::evaluateAsRelocatableImpl(), EvaluateCRExpr(), llvm::MCExpr::findAssociatedFragment(), llvm::PPCMCCodeEmitter::getDispRI34PCRelEncoding(), hasGOTReference(), isEvaluated(), llvm::AMDGPUMCExpr::isSymbolUsedInExpression(), llvm::LoongArchAsmBackend::relaxDwarfCFA(), llvm::RISCVAsmBackend::relaxDwarfCFA(), startsWithGlobalOffsetTable(), tryFoldHelper(), and llvm::MCStreamer::visitUsedExpr().


The documentation for this class was generated from the following files: