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. |
| 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:
- include/llvm/MC/MCExpr.h
- lib/MC/MCExpr.cpp