LLVM 20.0.0git
|
Binary assembler expressions. More...
#include "llvm/MC/MCExpr.h"
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 , 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 |
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. | |
Additional Inherited Members | |
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 647 of file MCExpr.h.
References llvm::MCExpr::Binary, and E.
|
static |
Definition at line 211 of file MCExpr.cpp.
Referenced by 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().
|
inlinestatic |
Definition at line 537 of file MCExpr.h.
References Add, create(), LHS, and RHS.
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(), 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::TargetLoweringObjectFileMachO::getIndirectSymViaGOTPCRel(), llvm::AArch64_ELFTargetObjectFile::getIndirectSymViaGOTPCRel(), llvm::ARMElfTargetObjectFile::getIndirectSymViaGOTPCRel(), llvm::RISCVELFTargetObjectFile::getIndirectSymViaGOTPCRel(), llvm::X86_64MachoTargetObjectFile::getIndirectSymViaGOTPCRel(), llvm::X86_64ELFTargetObjectFile::getIndirectSymViaGOTPCRel(), GetSymbolRef(), llvm::X86_64MachoTargetObjectFile::getTTypeGlobalReference(), llvm::AsmPrinter::lowerConstant(), AMDGPUMCInstLower::lowerOperand(), LowerSymbolOperand(), llvm::XtensaAsmPrinter::LowerSymbolOperand(), llvm::LanaiMCInstLower::LowerSymbolOperand(), llvm::M68kMCInstLower::LowerSymbolOperand(), llvm::MSP430MCInstLower::LowerSymbolOperand(), lowerSymbolOperand(), llvm::AVRMCInstLower::lowerSymbolOperand(), llvm::AArch64MCInstLower::lowerSymbolOperandCOFF(), llvm::AArch64MCInstLower::lowerSymbolOperandELF(), llvm::AArch64MCInstLower::lowerSymbolOperandMachO(), llvm::AMDGPUAsmPrinter::runOnMachineFunction(), llvm::MCExternalSymbolizer::tryAddingSymbolicOperand(), and llvm::AArch64ExternalSymbolizer::tryAddingSymbolicOperand().
|
inlinestatic |
Definition at line 542 of file MCExpr.h.
References And, create(), LHS, and RHS.
Referenced by llvm::AMDGPU::MCKernelDescriptor::bits_get(), llvm::AMDGPU::MCKernelDescriptor::bits_set(), llvm::SIInstrInfo::insertIndirectBranch(), MaskShift(), llvm::AMDGPU::maskShiftGet(), and llvm::AMDGPU::maskShiftSet().
|
inlinestatic |
Definition at line 547 of file MCExpr.h.
References create(), Div, LHS, and RHS.
Referenced by computeAccumOffset(), llvm::ARMAsmPrinter::emitJumpTableTBInst(), and GetSubDivExpr().
|
inlinestatic |
Definition at line 617 of file MCExpr.h.
References create(), LHS, LShr, and RHS.
Referenced by llvm::AMDGPU::MCKernelDescriptor::bits_get(), and llvm::AMDGPU::maskShiftGet().
|
inlinestatic |
Definition at line 592 of file MCExpr.h.
References create(), LHS, Mul, and RHS.
Referenced by llvm::AMDGPUTargetAsmStreamer::EmitAmdhsaKernelDescriptor(), and llvm::AMDGPUAsmPrinter::runOnMachineFunction().
|
inlinestatic |
Definition at line 602 of file MCExpr.h.
References create(), LHS, Or, and RHS.
Referenced by ARMEmitUnwindInfo(), llvm::AMDGPU::MCKernelDescriptor::bits_set(), llvm::AMDGPUDisassembler::decodeVersionImm(), llvm::AMDGPU::AMDGPUMCKernelCodeT::EmitKernelCodeT(), llvm::SIProgramInfo::getComputePGMRSrc1(), llvm::SIProgramInfo::getComputePGMRSrc2(), llvm::SIProgramInfo::getPGMRSrc1(), and llvm::AMDGPUPALMetadata::setRegister().
|
inlinestatic |
Definition at line 607 of file MCExpr.h.
References create(), LHS, RHS, and Shl.
Referenced by llvm::AMDGPU::MCKernelDescriptor::bits_set(), MaskShift(), and llvm::AMDGPU::maskShiftSet().
|
inlinestatic |
Definition at line 622 of file MCExpr.h.
References create(), LHS, RHS, and Sub.
Referenced by llvm::CSKYConstantPool::addEntry(), addNegOperand(), computeAccumOffset(), createPCXRelExprOp(), 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::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::TargetLoweringObjectFileMachO::getIndirectSymViaGOTPCRel(), llvm::AArch64_MachoTargetObjectFile::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::lowerRelativeReference(), llvm::TargetLoweringObjectFileWasm::lowerRelativeReference(), llvm::FaultMaps::recordFaultingOp(), llvm::MCExternalSymbolizer::tryAddingSymbolicOperand(), and llvm::AArch64ExternalSymbolizer::tryAddingSymbolicOperand().
Get the left-hand side expression of the binary operator.
Definition at line 640 of file MCExpr.h.
References LHS.
Referenced by binaryOpKnownBitsMapHelper(), llvm::MCExpr::evaluateAsRelocatableImpl(), EvaluateCRExpr(), llvm::MCExpr::findAssociatedFragment(), fixELFSymbolsInTLSFixupsImpl(), llvm::PPCMCCodeEmitter::getDispRI34PCRelEncoding(), hasGOTReference(), isEvaluated(), llvm::MCExpr::isSymbolUsedInExpression(), llvm::MCExpr::print(), llvm::LoongArchAsmBackend::relaxDwarfCFA(), llvm::RISCVAsmBackend::relaxDwarfCFA(), llvm::LoongArchAsmBackend::relaxDwarfLineAddr(), llvm::RISCVAsmBackend::relaxDwarfLineAddr(), startsWithGlobalOffsetTable(), tryFoldHelper(), and llvm::MCStreamer::visitUsedExpr().
|
inline |
Get the kind of this binary expression.
Definition at line 637 of file MCExpr.h.
References llvm::MCExpr::getSubclassData().
Referenced by binaryOpKnownBitsMapHelper(), llvm::MCExpr::evaluateAsRelocatableImpl(), EvaluateCRExpr(), llvm::MCExpr::findAssociatedFragment(), llvm::PPCMCCodeEmitter::getDispRI34PCRelEncoding(), llvm::MCExpr::print(), and tryFoldHelper().
Get the right-hand side expression of the binary operator.
Definition at line 643 of file MCExpr.h.
References RHS.
Referenced by binaryOpKnownBitsMapHelper(), llvm::MCExpr::evaluateAsRelocatableImpl(), EvaluateCRExpr(), llvm::MCExpr::findAssociatedFragment(), fixELFSymbolsInTLSFixupsImpl(), llvm::PPCMCCodeEmitter::getDispRI34PCRelEncoding(), hasGOTReference(), isEvaluated(), llvm::MCExpr::isSymbolUsedInExpression(), llvm::MCExpr::print(), llvm::LoongArchAsmBackend::relaxDwarfCFA(), llvm::RISCVAsmBackend::relaxDwarfCFA(), llvm::LoongArchAsmBackend::relaxDwarfLineAddr(), llvm::RISCVAsmBackend::relaxDwarfLineAddr(), startsWithGlobalOffsetTable(), tryFoldHelper(), and llvm::MCStreamer::visitUsedExpr().