|
LLVM 22.0.0git
|
MachineOperand class - Representation of each machine instruction operand. More...
#include "llvm/CodeGen/MachineOperand.h"
Public Types | |
| enum | MachineOperandType : unsigned char { MO_Register , MO_Immediate , MO_CImmediate , MO_FPImmediate , MO_MachineBasicBlock , MO_FrameIndex , MO_ConstantPoolIndex , MO_TargetIndex , MO_JumpTableIndex , MO_ExternalSymbol , MO_GlobalAddress , MO_BlockAddress , MO_RegisterMask , MO_RegisterLiveOut , MO_Metadata , MO_MCSymbol , MO_CFIIndex , MO_IntrinsicID , MO_Predicate , MO_ShuffleMask , MO_DbgInstrRef , MO_LaneMask , MO_Last = MO_LaneMask } |
Public Member Functions | |
| MachineOperandType | getType () const |
| getType - Returns the MachineOperandType for this operand. | |
| unsigned | getTargetFlags () const |
| void | setTargetFlags (unsigned F) |
| void | addTargetFlag (unsigned F) |
| MachineInstr * | getParent () |
| getParent - Return the instruction that this operand belongs to. | |
| const MachineInstr * | getParent () const |
| void | clearParent () |
| clearParent - Reset the parent pointer. | |
| LLVM_ABI unsigned | getOperandNo () const |
| Returns the index of this operand in the instruction that it belongs to. | |
| LLVM_ABI void | print (raw_ostream &os, const TargetRegisterInfo *TRI=nullptr) const |
Print the MachineOperand to os. | |
| LLVM_ABI void | print (raw_ostream &os, ModuleSlotTracker &MST, LLT TypeToPrint, std::optional< unsigned > OpIdx, bool PrintDef, bool IsStandalone, bool ShouldPrintRegisterTies, unsigned TiedOperandIdx, const TargetRegisterInfo *TRI) const |
| More complex way of printing a MachineOperand. | |
| LLVM_ABI void | print (raw_ostream &os, LLT TypeToPrint, const TargetRegisterInfo *TRI=nullptr) const |
| Same as print(os, TRI), but allows to specify the low-level type to be printed the same way the full version of print(...) does it. | |
| LLVM_ABI void | dump () const |
| bool | isReg () const |
| isReg - Tests if this is a MO_Register operand. | |
| bool | isImm () const |
| isImm - Tests if this is a MO_Immediate operand. | |
| bool | isCImm () const |
| isCImm - Test if this is a MO_CImmediate operand. | |
| bool | isFPImm () const |
| isFPImm - Tests if this is a MO_FPImmediate operand. | |
| bool | isMBB () const |
| isMBB - Tests if this is a MO_MachineBasicBlock operand. | |
| bool | isFI () const |
| isFI - Tests if this is a MO_FrameIndex operand. | |
| bool | isCPI () const |
| isCPI - Tests if this is a MO_ConstantPoolIndex operand. | |
| bool | isTargetIndex () const |
| isTargetIndex - Tests if this is a MO_TargetIndex operand. | |
| bool | isJTI () const |
| isJTI - Tests if this is a MO_JumpTableIndex operand. | |
| bool | isGlobal () const |
| isGlobal - Tests if this is a MO_GlobalAddress operand. | |
| bool | isSymbol () const |
| isSymbol - Tests if this is a MO_ExternalSymbol operand. | |
| bool | isBlockAddress () const |
| isBlockAddress - Tests if this is a MO_BlockAddress operand. | |
| bool | isRegMask () const |
| isRegMask - Tests if this is a MO_RegisterMask operand. | |
| bool | isRegLiveOut () const |
| isRegLiveOut - Tests if this is a MO_RegisterLiveOut operand. | |
| bool | isMetadata () const |
| isMetadata - Tests if this is a MO_Metadata operand. | |
| bool | isMCSymbol () const |
| bool | isDbgInstrRef () const |
| bool | isCFIIndex () const |
| bool | isIntrinsicID () const |
| bool | isPredicate () const |
| bool | isShuffleMask () const |
| bool | isLaneMask () const |
| Register | getReg () const |
| getReg - Returns the register number. | |
| unsigned | getSubReg () const |
| bool | isUse () const |
| bool | isDef () const |
| bool | isImplicit () const |
| bool | isDead () const |
| bool | isKill () const |
| bool | isUndef () const |
| LLVM_ABI bool | isRenamable () const |
| isRenamable - Returns true if this register may be renamed, i.e. | |
| bool | isInternalRead () const |
| bool | isEarlyClobber () const |
| bool | isTied () const |
| bool | isDebug () const |
| bool | readsReg () const |
| readsReg - Returns true if this operand reads the previous value of its register. | |
| bool | isValidExcessOperand () const |
| Return true if this operand can validly be appended to an arbitrary operand list. | |
| LLVM_ABI void | setReg (Register Reg) |
| Change the register this operand corresponds to. | |
| void | setSubReg (unsigned subReg) |
| LLVM_ABI void | substVirtReg (Register Reg, unsigned SubIdx, const TargetRegisterInfo &) |
| substVirtReg - Substitute the current register with the virtual subregister Reg:SubReg. | |
| LLVM_ABI void | substPhysReg (MCRegister Reg, const TargetRegisterInfo &) |
| substPhysReg - Substitute the current register with the physical register Reg, taking any existing SubReg into account. | |
| void | setIsUse (bool Val=true) |
| LLVM_ABI void | setIsDef (bool Val=true) |
| Change a def to a use, or a use to a def. | |
| void | setImplicit (bool Val=true) |
| void | setIsKill (bool Val=true) |
| void | setIsDead (bool Val=true) |
| void | setIsUndef (bool Val=true) |
| LLVM_ABI void | setIsRenamable (bool Val=true) |
| void | setIsInternalRead (bool Val=true) |
| void | setIsEarlyClobber (bool Val=true) |
| void | setIsDebug (bool Val=true) |
| int64_t | getImm () const |
| const ConstantInt * | getCImm () const |
| const ConstantFP * | getFPImm () const |
| MachineBasicBlock * | getMBB () const |
| int | getIndex () const |
| const GlobalValue * | getGlobal () const |
| const BlockAddress * | getBlockAddress () const |
| MCSymbol * | getMCSymbol () const |
| unsigned | getInstrRefInstrIndex () const |
| unsigned | getInstrRefOpIndex () const |
| unsigned | getCFIIndex () const |
| Intrinsic::ID | getIntrinsicID () const |
| unsigned | getPredicate () const |
| ArrayRef< int > | getShuffleMask () const |
| LaneBitmask | getLaneMask () const |
| int64_t | getOffset () const |
| Return the offset from the symbol in this operand. | |
| const char * | getSymbolName () const |
| bool | clobbersPhysReg (MCRegister PhysReg) const |
| clobbersPhysReg - Returns true if this RegMask operand clobbers PhysReg. | |
| const uint32_t * | getRegMask () const |
| getRegMask - Returns a bit mask of registers preserved by this RegMask operand. | |
| const uint32_t * | getRegLiveOut () const |
| getRegLiveOut - Returns a bit mask of live-out registers. | |
| const MDNode * | getMetadata () const |
| void | setImm (int64_t immVal) |
| void | setCImm (const ConstantInt *CI) |
| void | setFPImm (const ConstantFP *CFP) |
| void | setOffset (int64_t Offset) |
| void | setIndex (int Idx) |
| void | setMetadata (const MDNode *MD) |
| void | setInstrRefInstrIndex (unsigned InstrIdx) |
| void | setInstrRefOpIndex (unsigned OpIdx) |
| void | setMBB (MachineBasicBlock *MBB) |
| void | setRegMask (const uint32_t *RegMaskPtr) |
| Sets value of register mask operand referencing Mask. | |
| void | setIntrinsicID (Intrinsic::ID IID) |
| void | setPredicate (unsigned Predicate) |
| LLVM_ABI bool | isIdenticalTo (const MachineOperand &Other) const |
| Returns true if this operand is identical to the specified operand except for liveness related flags (isKill, isUndef and isDead). | |
| LLVM_ABI void | ChangeToImmediate (int64_t ImmVal, unsigned TargetFlags=0) |
| ChangeToImmediate - Replace this operand with a new immediate operand of the specified value. | |
| LLVM_ABI void | ChangeToFPImmediate (const ConstantFP *FPImm, unsigned TargetFlags=0) |
| ChangeToFPImmediate - Replace this operand with a new FP immediate operand of the specified value. | |
| LLVM_ABI void | ChangeToES (const char *SymName, unsigned TargetFlags=0) |
| ChangeToES - Replace this operand with a new external symbol operand. | |
| LLVM_ABI void | ChangeToGA (const GlobalValue *GV, int64_t Offset, unsigned TargetFlags=0) |
| ChangeToGA - Replace this operand with a new global address operand. | |
| LLVM_ABI void | ChangeToBA (const BlockAddress *BA, int64_t Offset, unsigned TargetFlags=0) |
| ChangeToBA - Replace this operand with a new block address operand. | |
| LLVM_ABI void | ChangeToCPI (unsigned Idx, int Offset, unsigned TargetFlags=0) |
| ChangeToCPI - Replace this operand with a new constant pool index operand. | |
| LLVM_ABI void | ChangeToMCSymbol (MCSymbol *Sym, unsigned TargetFlags=0) |
| ChangeToMCSymbol - Replace this operand with a new MC symbol operand. | |
| LLVM_ABI void | ChangeToFrameIndex (int Idx, unsigned TargetFlags=0) |
| Replace this operand with a frame index. | |
| LLVM_ABI void | ChangeToTargetIndex (unsigned Idx, int64_t Offset, unsigned TargetFlags=0) |
| Replace this operand with a target index. | |
| LLVM_ABI void | ChangeToDbgInstrRef (unsigned InstrIdx, unsigned OpIdx, unsigned TargetFlags=0) |
| Replace this operand with an Instruction Reference. | |
| LLVM_ABI void | ChangeToRegister (Register Reg, bool isDef, bool isImp=false, bool isKill=false, bool isDead=false, bool isUndef=false, bool isDebug=false) |
| ChangeToRegister - Replace this operand with a new register operand of the specified value. | |
| LLVM_ABI const char * | getTargetIndexName () const |
| getTargetIndexName - If this MachineOperand is a TargetIndex that has a name, attempt to get the name. | |
Friends | |
| class | MachineInstr |
| class | MachineRegisterInfo |
| struct | DenseMapInfo< MachineOperand > |
| LLVM_ABI friend hash_code | hash_value (const MachineOperand &MO) |
| MachineOperand hash_value overload. | |
MachineOperand class - Representation of each machine instruction operand.
This class isn't a POD type because it has a private constructor, but its destructor must be trivial. Functions like MachineInstr::addOperand(), MachineRegisterInfo::moveOperands(), and MF::DeleteMachineInstr() depend on not having to call the MachineOperand destructor.
Definition at line 49 of file MachineOperand.h.
| Enumerator | |
|---|---|
| MO_Register | Register operand. |
| MO_Immediate | Immediate operand. |
| MO_CImmediate | Immediate >64bit operand. |
| MO_FPImmediate | Floating-point immediate operand. |
| MO_MachineBasicBlock | MachineBasicBlock reference. |
| MO_FrameIndex | Abstract Stack Frame Index. |
| MO_ConstantPoolIndex | |
| MO_TargetIndex | Target-dependent index+offset operand. |
| MO_JumpTableIndex | Address of indexed Jump Table for switch. |
| MO_ExternalSymbol | Name of external global symbol. |
| MO_GlobalAddress | Address of a global value. |
| MO_BlockAddress | Address of a basic block. |
| MO_RegisterMask | Mask of preserved registers. |
| MO_RegisterLiveOut | Mask of live-out registers. |
| MO_Metadata | Metadata reference (for debug info) |
| MO_MCSymbol | MCSymbol reference (for debug/eh info) |
| MO_CFIIndex | MCCFIInstruction index. |
| MO_IntrinsicID | |
| MO_Predicate | Generic predicate for ISel. |
| MO_ShuffleMask | Other IR Constant for ISel (shuffle masks) |
| MO_DbgInstrRef | Integer indices referring to an instruction+operand. |
| MO_LaneMask | Mask to represent active parts of registers. |
| MO_Last | |
Definition at line 51 of file MachineOperand.h.
|
inline |
Definition at line 237 of file MachineOperand.h.
References assert(), F, and isReg().
Referenced by llvm::HexagonInstrInfo::immediateExtend().
| void MachineOperand::ChangeToBA | ( | const BlockAddress * | BA, |
| int64_t | Offset, | ||
| unsigned | TargetFlags = 0 ) |
ChangeToBA - Replace this operand with a new block address operand.
Definition at line 208 of file MachineOperand.cpp.
References assert(), isReg(), isTied(), MO_BlockAddress, llvm::Offset, setOffset(), and setTargetFlags().
ChangeToCPI - Replace this operand with a new constant pool index operand.
Definition at line 221 of file MachineOperand.cpp.
References assert(), isReg(), isTied(), MO_ConstantPoolIndex, llvm::Offset, setIndex(), setOffset(), and setTargetFlags().
| void MachineOperand::ChangeToDbgInstrRef | ( | unsigned | InstrIdx, |
| unsigned | OpIdx, | ||
| unsigned | TargetFlags = 0 ) |
Replace this operand with an Instruction Reference.
Definition at line 269 of file MachineOperand.cpp.
References assert(), isReg(), isTied(), MO_DbgInstrRef, OpIdx, setInstrRefInstrIndex(), setInstrRefOpIndex(), and setTargetFlags().
ChangeToES - Replace this operand with a new external symbol operand.
Definition at line 182 of file MachineOperand.cpp.
References assert(), isReg(), isTied(), MO_ExternalSymbol, setOffset(), and setTargetFlags().
| void MachineOperand::ChangeToFPImmediate | ( | const ConstantFP * | FPImm, |
| unsigned | TargetFlags = 0 ) |
ChangeToFPImmediate - Replace this operand with a new FP immediate operand of the specified value.
If an operand is known to be an FP immediate already, the setFPImm method should be used.
Definition at line 171 of file MachineOperand.cpp.
References assert(), isReg(), isTied(), MO_FPImmediate, and setTargetFlags().
| void MachineOperand::ChangeToFrameIndex | ( | int | Idx, |
| unsigned | TargetFlags = 0 ) |
Replace this operand with a frame index.
Definition at line 245 of file MachineOperand.cpp.
References assert(), isReg(), isTied(), MO_FrameIndex, setIndex(), and setTargetFlags().
Referenced by swapRegAndNonRegOperand().
| void MachineOperand::ChangeToGA | ( | const GlobalValue * | GV, |
| int64_t | Offset, | ||
| unsigned | TargetFlags = 0 ) |
ChangeToGA - Replace this operand with a new global address operand.
Definition at line 195 of file MachineOperand.cpp.
References assert(), isReg(), isTied(), MO_GlobalAddress, llvm::Offset, setOffset(), and setTargetFlags().
Referenced by swapRegAndNonRegOperand().
| void MachineOperand::ChangeToImmediate | ( | int64_t | ImmVal, |
| unsigned | TargetFlags = 0 ) |
ChangeToImmediate - Replace this operand with a new immediate operand of the specified value.
If an operand is known to be an immediate already, the setImm method should be used.
Definition at line 161 of file MachineOperand.cpp.
References assert(), isReg(), isTied(), MO_Immediate, and setTargetFlags().
Referenced by llvm::AArch64RegisterInfo::eliminateFrameIndex(), llvm::M68kRegisterInfo::eliminateFrameIndex(), llvm::SIRegisterInfo::eliminateFrameIndex(), llvm::X86RegisterInfo::eliminateFrameIndex(), llvm::X86RegisterInfo::eliminateFrameIndex(), llvm::SIInstrInfo::foldImmediate(), llvm::SIInstrInfo::legalizeOperandsVOP2(), llvm::rewriteARMFrameIndex(), llvm::ThumbRegisterInfo::rewriteFrameIndex(), llvm::rewriteT2FrameIndex(), swapRegAndNonRegOperand(), and llvm::updateDbgValueForSpill().
ChangeToMCSymbol - Replace this operand with a new MC symbol operand.
Definition at line 234 of file MachineOperand.cpp.
References assert(), isReg(), isTied(), MO_MCSymbol, and setTargetFlags().
| void MachineOperand::ChangeToRegister | ( | Register | Reg, |
| bool | isDef, | ||
| bool | isImp = false, | ||
| bool | isKill = false, | ||
| bool | isDead = false, | ||
| bool | isUndef = false, | ||
| bool | isDebug = false ) |
ChangeToRegister - Replace this operand with a new register operand of the specified value.
If an operand is known to be an register already, the setReg method should be used.
Definition at line 285 of file MachineOperand.cpp.
References assert(), getMFIfAvailable(), getParent(), isDead(), isDebug(), isDef(), isKill(), isReg(), isUndef(), MachineInstr, MachineRegisterInfo, MI, and MO_Register.
Referenced by llvm::SIRegisterInfo::eliminateFrameIndex(), llvm::SIInstrInfo::legalizeOperands(), llvm::SIInstrInfo::legalizeOperandsVOP2(), llvm::SIInstrInfo::legalizeOperandsVOP3(), llvm::SIInstrInfo::legalizeOpWithMove(), llvm::SIRegisterInfo::resolveFrameIndex(), swapRegAndNonRegOperand(), and llvm::X86InstrInfo::unfoldMemoryOperand().
Replace this operand with a target index.
Definition at line 256 of file MachineOperand.cpp.
References assert(), isReg(), isTied(), MO_TargetIndex, llvm::Offset, setIndex(), setOffset(), and setTargetFlags().
|
inline |
clearParent - Reset the parent pointer.
The MachineOperand copy constructor also copies ParentMI, expecting the original to be deleted. If a MachineOperand is ever stored outside a MachineInstr, the parent pointer must be cleared.
Never call clearParent() on an operand in a MachineInstr.
Definition at line 257 of file MachineOperand.h.
|
inlinestatic |
clobbersPhysReg - Returns true if this RegMask clobbers PhysReg.
It is sometimes necessary to detach the register mask pointer from its machine operand. This static method can be used for such detached bit mask pointers.
Definition at line 655 of file MachineOperand.h.
References assert(), llvm::MCRegister::id(), llvm::MCRegister::isPhysical(), and llvm::MCRegister::isValid().
Referenced by llvm::LiveRegUnits::addRegsInMask(), canClobberPhysRegDefs(), canClobberReachingPhysRegUse(), CheckForLiveRegDefMasked(), clobbersAllYmmAndZmmRegs(), clobbersPhysReg(), llvm::MachineInstr::findRegisterDefOperandIdx(), llvm::M68kRegisterInfo::getReservedRegs(), handleRegMaskClobber(), llvm::ARMBaseInstrInfo::optimizeCompareInstr(), llvm::LanaiInstrInfo::optimizeCompareInstr(), llvm::CallLowering::parametersInCSRMatch(), llvm::TargetLowering::parametersInCSRMatch(), llvm::PhysicalRegisterUsageInfo::print(), llvm::LivePhysRegs::removeRegsInMask(), llvm::LiveRegUnits::removeRegsNotPreserved(), llvm::LivePhysRegs::stepForward(), and LiveDebugValues::MLocTracker::writeRegMask().
|
inline |
clobbersPhysReg - Returns true if this RegMask operand clobbers PhysReg.
Definition at line 663 of file MachineOperand.h.
References clobbersPhysReg(), and getRegMask().
|
inlinestatic |
Definition at line 926 of file MachineOperand.h.
References MO_BlockAddress, and llvm::Offset.
Referenced by llvm::MachineInstrBuilder::addBlockAddress().
|
inlinestatic |
Definition at line 980 of file MachineOperand.h.
References MO_CFIIndex.
Referenced by llvm::MachineInstrBuilder::addCFIIndex().
|
inlinestatic |
Definition at line 839 of file MachineOperand.h.
References MO_CImmediate.
Referenced by llvm::MachineInstrBuilder::addCImm(), llvm::CSEMIRBuilder::buildConstant(), GetMOForConstDbgOp(), and processSwitchesConstants().
|
inlinestatic |
Definition at line 888 of file MachineOperand.h.
References MO_ConstantPoolIndex, and llvm::Offset.
Referenced by llvm::MachineInstrBuilder::addConstantPoolIndex(), llvm::X86InstrInfo::foldMemoryOperandImpl(), and llvm::XtensaInstrInfo::insertIndirectBranch().
|
inlinestatic |
Definition at line 973 of file MachineOperand.h.
References MO_DbgInstrRef, and OpIdx.
Referenced by llvm::InstrEmitter::EmitDbgInstrRef().
|
inlinestatic |
Definition at line 918 of file MachineOperand.h.
References MO_ExternalSymbol.
Referenced by llvm::MachineInstrBuilder::addExternalSymbol(), createAtomicLibcall(), llvm::createLibcall(), llvm::createMemLibcall(), and getMovOperand().
|
inlinestatic |
Definition at line 883 of file MachineOperand.h.
References MO_FrameIndex.
Referenced by llvm::MachineInstrBuilder::addFrameIndex(), llvm::X86InstrInfo::foldMemoryOperandImpl(), llvm::X86AddressMode::getFullAddress(), and llvm::FastISel::lowerDbgValue().
|
inlinestatic |
Definition at line 845 of file MachineOperand.h.
References MO_FPImmediate.
Referenced by llvm::MachineInstrBuilder::addFPImm(), llvm::CSEMIRBuilder::buildFConstant(), convertImplicitDefToConstZero(), GetMOForConstDbgOp(), and llvm::SPIRVInlineAsmLowering::lowerAsmOperandForConstraint().
|
inlinestatic |
Definition at line 910 of file MachineOperand.h.
References MO_GlobalAddress, and llvm::Offset.
Referenced by llvm::MachineInstrBuilder::addGlobalAddress(), llvm::X86AddressMode::getFullAddress(), getMovOperand(), llvm::AMDGPUCallLowering::lowerCall(), llvm::CallLowering::lowerCall(), llvm::AMDGPUCallLowering::lowerChainCall(), and llvm::FastISel::selectPatchpoint().
|
inlinestatic |
Definition at line 833 of file MachineOperand.h.
References MO_Immediate.
Referenced by llvm::MachineInstrBuilder::addImm(), llvm::ARMTargetLowering::AdjustInstrPostInstrSelection(), llvm::ARMBaseInstrInfo::analyzeBranch(), llvm::AVRInstrInfo::analyzeBranch(), llvm::HexagonInstrInfo::analyzeBranch(), llvm::LanaiInstrInfo::analyzeBranch(), llvm::MSP430InstrInfo::analyzeBranch(), llvm::PPCInstrInfo::analyzeBranch(), llvm::SystemZInstrInfo::analyzeBranch(), llvm::WebAssemblyInstrInfo::analyzeBranch(), llvm::XCoreInstrInfo::analyzeBranch(), llvm::XtensaInstrInfo::analyzeBranch(), llvm::M68kInstrInfo::AnalyzeBranchImpl(), llvm::SIInstrInfo::analyzeBranchImpl(), llvm::AArch64InstrInfo::analyzeBranchPredicate(), llvm::X86InstrInfo::analyzeBranchPredicate(), llvm::SIInstrInfo::buildExtractSubRegOrImm(), llvm::X86InstrInfo::commuteInstructionImpl(), convertImplicitDefToConstZero(), llvm::X86InstrInfo::describeLoadedValue(), llvm::PPCTargetLowering::EmitInstrWithCustomInserter(), llvm::SITargetLowering::EmitInstrWithCustomInserter(), emitVFROUND_NOEXCEPT_MASK(), llvm::SIInstrInfo::expandPostRAPseudo(), llvm::X86InstrInfo::foldMemoryOperandImpl(), llvm::X86AddressMode::getFullAddress(), GetMOForConstDbgOp(), getMovOperand(), llvm::RISCVLegalizerInfo::legalizeCustom(), llvm::AMDGPULegalizerInfo::legalizeImageIntrinsic(), llvm::InlineAsmLowering::lowerAsmOperandForConstraint(), parseCondBranch(), parseCondBranch(), parseCondBranch(), parseCondBranch(), parseCondBranch(), parseCondBranch(), llvm::predOps(), llvm::XtensaInstrInfo::removeBranch(), llvm::WebAssemblyInstrInfo::reverseBranchCondition(), llvm::FastISel::selectPatchpoint(), llvm::FastISel::selectStackmap(), llvm::HexagonInstrInfo::setBundleNoShuf(), and llvm::RISCVInstrInfo::simplifyInstruction().
|
inlinestatic |
Definition at line 986 of file MachineOperand.h.
References MO_IntrinsicID.
Referenced by llvm::MachineInstrBuilder::addIntrinsicID().
|
inlinestatic |
Definition at line 904 of file MachineOperand.h.
References MO_JumpTableIndex.
Referenced by llvm::MachineInstrBuilder::addJumpTableIndex(), and getMovOperand().
|
inlinestatic |
Definition at line 1004 of file MachineOperand.h.
References MO_LaneMask.
Referenced by llvm::MachineInstrBuilder::addLaneMask().
|
inlinestatic |
Definition at line 876 of file MachineOperand.h.
References MBB, and MO_MachineBasicBlock.
Referenced by llvm::MachineInstrBuilder::addMBB(), llvm::PeelingModuloScheduleExpander::peelPrologAndEpilogs(), processBlockAddr(), and splitEdge().
|
inlinestatic |
Definition at line 964 of file MachineOperand.h.
References MO_MCSymbol.
Referenced by llvm::MachineInstrBuilder::addSym(), and llvm::MipsTargetLowering::AdjustInstrPostInstrSelection().
|
inlinestatic |
Definition at line 958 of file MachineOperand.h.
References MO_Metadata.
Referenced by llvm::MachineInstrBuilder::addMetadata().
|
inlinestatic |
Definition at line 992 of file MachineOperand.h.
References MO_Predicate.
Referenced by llvm::MachineInstrBuilder::addPredicate().
|
inlinestatic |
Definition at line 851 of file MachineOperand.h.
References assert(), isDead(), isDebug(), isDef(), isEarlyClobber(), isInternalRead(), isKill(), isRenamable(), isUndef(), MO_Register, Reg, and SubReg.
Referenced by addConstantsToTrack(), llvm::MachineInstr::addImplicitDefUseOperands(), llvm::SITargetLowering::AddMemOpInit(), llvm::GISelInstProfileBuilder::addNodeIDRegType(), llvm::MachineInstrBuilder::addReg(), llvm::MachineInstr::addRegisterDead(), llvm::MachineInstr::addRegisterDefined(), llvm::MachineInstr::addRegisterKilled(), llvm::ARMTargetLowering::AdjustInstrPostInstrSelection(), llvm::RISCVTargetLowering::AdjustInstrPostInstrSelection(), llvm::PPCInstrInfo::analyzeBranch(), llvm::R600InstrInfo::analyzeBranch(), llvm::SIInstrInfo::buildExtractSubRegOrImm(), llvm::condCodeOp(), llvm::SIInstrInfo::convertToThreeAddress(), llvm::X86InstrInfo::convertToThreeAddress(), createCallWithOps(), llvm::MipsInstrInfo::describeLoadedValue(), llvm::TargetInstrInfo::describeLoadedValue(), describeMOVrrLoadedValue(), describeORRLoadedValue(), llvm::InstrEmitter::EmitDbgInstrRef(), llvm::AArch64TargetLowering::EmitInstrWithCustomInserter(), llvm::PPCTargetLowering::EmitInstrWithCustomInserter(), llvm::RISCVTargetLowering::EmitInstrWithCustomInserter(), LiveDebugValues::MLocTracker::emitLoc(), llvm::HexagonFrameLowering::emitPrologue(), emitVFROUND_NOEXCEPT_MASK(), llvm::SIInstrInfo::enforceOperandRCAlignment(), expandSGPRCopy(), llvm::X86InstrInfo::foldMemoryOperandImpl(), llvm::X86AddressMode::getFullAddress(), GetMOForConstDbgOp(), imposeStackOrdering(), INITIALIZE_PASS(), INITIALIZE_PASS(), llvm::AArch64CallLowering::lowerCall(), llvm::CallLowering::lowerCall(), llvm::AMDGPUCallLowering::lowerChainCall(), llvm::FastISel::lowerDbgDeclare(), llvm::FastISel::lowerDbgValue(), llvm::PPCInstrInfo::optimizeCompareInstr(), parseCondBranch(), llvm::PeelingModuloScheduleExpander::peelPrologAndEpilogs(), llvm::predOps(), TransferTracker::recoverAsEntryValue(), llvm::rewriteT2FrameIndex(), llvm::FastISel::selectPatchpoint(), llvm::FastISel::selectStackmap(), llvm::FastISel::selectXRayCustomEvent(), llvm::FastISel::selectXRayTypedEvent(), llvm::t1CondCodeOp(), and llvm::tryFoldSPUpdateIntoPushPop().
|
inlinestatic |
Definition at line 952 of file MachineOperand.h.
References assert(), and MO_RegisterLiveOut.
|
inlinestatic |
CreateRegMask - Creates a register mask operand referencing Mask.
The operand does not take ownership of the memory referenced by Mask, it must remain valid for the lifetime of the operand.
A RegMask operand represents a set of non-clobbered physical registers on an instruction that clobbers many registers, typically a call. The bit mask has a bit set for each physreg that is preserved by this instruction, as described in the documentation for TargetRegisterInfo::getCallPreservedMask().
Any physreg with a 0 bit in the mask is clobbered by the instruction.
Definition at line 946 of file MachineOperand.h.
References assert(), and MO_RegisterMask.
Referenced by llvm::MachineInstrBuilder::addRegMask(), and llvm::FastISel::selectPatchpoint().
|
inlinestatic |
Definition at line 998 of file MachineOperand.h.
References MO_ShuffleMask.
Referenced by llvm::MachineInstrBuilder::addShuffleMask().
|
inlinestatic |
Definition at line 896 of file MachineOperand.h.
References MO_TargetIndex, and llvm::Offset.
Referenced by llvm::MachineInstrBuilder::addTargetIndex().
| LLVM_DUMP_METHOD void MachineOperand::dump | ( | ) | const |
Definition at line 1057 of file MachineOperand.cpp.
References llvm::dbgs(), and LLVM_DUMP_METHOD.
Referenced by rescheduleCanonically().
|
inline |
Definition at line 591 of file MachineOperand.h.
References assert(), and isBlockAddress().
Referenced by llvm::MachineInstrBuilder::addDisp(), llvm::LanaiMCInstLower::GetBlockAddressSymbol(), llvm::MSP430MCInstLower::GetBlockAddressSymbol(), llvm::SystemZMCInstLower::getExpr(), llvm::DenseMapInfo< MemOpKey >::getHashValue(), getMCSymbolForTOCPseudoMO(), llvm::hash_value(), isIdenticalTo(), isSimilarDispOp(), llvm::lowerLoongArchMachineOperandToMCOperand(), llvm::M68kMCInstLower::LowerOperand(), LowerOperand(), llvm::AArch64MCInstLower::lowerOperand(), llvm::ARMAsmPrinter::lowerOperand(), llvm::CSKYMCInstLower::lowerOperand(), llvm::LowerPPCMachineOperandToMCOperand(), llvm::XtensaAsmPrinter::LowerSymbolOperand(), print(), llvm::M68kAsmPrinter::PrintAsmMemoryOperand(), llvm::CSKYAsmPrinter::PrintAsmOperand(), llvm::BPFAsmPrinter::printOperand(), llvm::MipsAsmPrinter::printOperand(), and processBlockAddr().
|
inline |
Definition at line 611 of file MachineOperand.h.
References assert(), and isCFIIndex().
Referenced by llvm::hash_value(), isIdenticalTo(), print(), and llvm::stableHashValue().
|
inline |
Definition at line 565 of file MachineOperand.h.
References assert(), and isCImm().
Referenced by llvm::GISelInstProfileBuilder::addNodeIDMachineOperand(), llvm::GIMatchTableExecutor::executeMatchTable(), generateAssignInstrs(), llvm::generateGroupUniformInst(), llvm::generateSpecConstantInst(), getImmedFromMO(), llvm::GVScale::getSrc(), llvm::GStepVector::getStep(), llvm::hash_value(), isIdenticalTo(), llvm::WebAssemblyMCInstLower::lower(), llvm::LegalizerHelper::lowerConstant(), llvm::CombinerHelper::matchCombineUnmergeConstant(), llvm::matchUnaryPredicate(), print(), processSwitchesConstants(), llvm::stableHashValue(), llvm::SPIRV::to_hash(), widenCImmType(), and llvm::LegalizerHelper::widenScalar().
|
inline |
Definition at line 570 of file MachineOperand.h.
References assert(), and isFPImm().
Referenced by llvm::GISelInstProfileBuilder::addNodeIDMachineOperand(), generateAssignInstrs(), llvm::generateSpecConstantInst(), llvm::hash_value(), isIdenticalTo(), isSameScalarConst(), llvm::SPIRVMCInstLower::lower(), llvm::WebAssemblyMCInstLower::lower(), llvm::LegalizerHelper::lowerFConstant(), llvm::ARMAsmPrinter::lowerOperand(), llvm::CombinerHelper::matchCombineUnmergeConstant(), print(), llvm::stableHashValue(), llvm::SPIRV::to_hash(), and llvm::LegalizerHelper::widenScalar().
|
inline |
Definition at line 586 of file MachineOperand.h.
References assert(), and isGlobal().
Referenced by llvm::MachineInstrBuilder::addDisp(), llvm::X86FrameLowering::adjustForHiPEPrologue(), llvm::BTFDebug::beginInstruction(), llvm::buildEnqueueKernel(), llvm::R600TargetLowering::EmitInstrWithCustomInserter(), llvm::getAddressFromInstr(), getCodeModel(), llvm::SystemZMCInstLower::getExpr(), llvm::AArch64MCInstLower::GetGlobalAddressSymbol(), llvm::BPFMCInstLower::GetGlobalAddressSymbol(), llvm::LanaiMCInstLower::GetGlobalAddressSymbol(), llvm::MSP430MCInstLower::GetGlobalAddressSymbol(), llvm::DenseMapInfo< MemOpKey >::getHashValue(), getMCSymbolForTOCPseudoMO(), getMovOperand(), GetSymbolFromOperand(), llvm::M68kMCInstLower::GetSymbolFromOperand(), GetSymbolRef(), getTOCEntryTypeForMO(), llvm::AsmPrinter::handleCallsiteForCallgraph(), llvm::hash_value(), INITIALIZE_PASS(), INITIALIZE_PASS(), llvm::BTFDebug::InstLower(), IsCallReturnTwice(), isCallToCFGuardFunction(), isIdenticalTo(), isSameScalarConst(), isSignExtendedW(), isSignExtendedW(), llvm::PPCInstrInfo::isSignOrZeroExtended(), isSimilarDispOp(), llvm::SPIRVMCInstLower::lower(), llvm::lowerLoongArchMachineOperandToMCOperand(), LowerOperand(), llvm::AMDGPUMCInstLower::lowerOperand(), llvm::ARMAsmPrinter::lowerOperand(), llvm::CSKYMCInstLower::lowerOperand(), llvm::XtensaAsmPrinter::LowerSymbolOperand(), llvm::AVRMCInstLower::lowerSymbolOperand(), llvm::AArch64MCInstLower::lowerSymbolOperandELF(), llvm::WebAssembly::mayThrow(), print(), llvm::BPFAsmPrinter::printOperand(), llvm::ARMAsmPrinter::PrintSymbolOperand(), llvm::AsmPrinter::PrintSymbolOperand(), llvm::ARMBaseInstrInfo::produceSameValue(), queryCallee(), llvm::DetectRoundChange::runOnMachineFunction(), smallData(), llvm::stableHashValue(), swapRegAndNonRegOperand(), and validateFunCall().
|
inline |
Definition at line 560 of file MachineOperand.h.
References assert(), and isImm().
Referenced by addConstantComments(), llvm::MachineInstrBuilder::addDisp(), llvm::R600InstrInfo::addFlag(), llvm::SITargetLowering::AddMemOpInit(), llvm::GISelInstProfileBuilder::addNodeIDMachineOperand(), llvm::HexagonInstrInfo::areMemAccessesTriviallyDisjoint(), llvm::buildBoolRegister(), llvm::buildEnqueueKernel(), llvm::R600InstrInfo::buildSlotOfVectorInstruction(), canCombineOpSel(), canCombineShiftIntoShXAdd(), canCompareBeNewValueJump(), llvm::AArch64InstrInfo::canFoldIntoAddrMode(), llvm::LoongArchInstrInfo::canFoldIntoAddrMode(), llvm::RISCVInstrInfo::canFoldIntoAddrMode(), canInstrSubstituteCmpInstr(), llvm::checkVOPDRegConstraints(), llvm::R600InstrInfo::clearFlag(), collectInlineAsmInstrOperands(), llvm::PPCInstrInfo::combineRLWINM(), compareMachineOp(), createPHIsForSelects(), llvm::ARCFrameLowering::eliminateCallFramePseudoInstr(), llvm::XCoreFrameLowering::eliminateCallFramePseudoInstr(), llvm::M68kRegisterInfo::eliminateFrameIndex(), llvm::SIRegisterInfo::eliminateFrameIndex(), llvm::WebAssemblyRegisterInfo::eliminateFrameIndex(), llvm::PPCFrameLowering::emitEpilogue(), llvm::LoongArchInstrInfo::emitLdStWithAddr(), llvm::GIMatchTableExecutor::executeMatchTable(), llvm::M68kInstrInfo::ExpandMOVEM(), llvm::M68kInstrInfo::ExpandMOVI(), ExpandMOVImmSExti8(), llvm::HexagonInstrInfo::expandPostRAPseudo(), expandSHXDROT(), llvm::RISCVInstrInfo::finalizeInsInstrs(), llvm::SPIRVTargetLowering::finalizeLowering(), llvm::MachineInstr::findInlineAsmFlagIdx(), findRedundantFlagInstr(), llvm::MachineInstr::findTiedOperandIdx(), llvm::AArch64PrologueEpilogueCommon::fixupCalleeSaveRestoreStackOffset(), llvm::AArch64TargetLowering::fixupPtrauthDiscriminator(), llvm::fixupSEHOpcode(), foldInlineAsmMemOperand(), llvm::generateImageSizeQueryInst(), genIndexedMultiply(), genShXAddAddShift(), llvm::getAddressFromInstr(), llvm::X86InstrInfo::getAddrModeFromMemoryOp(), getArgumentStackToRestore(), getAS(), llvm::HexagonInstrInfo::getBundleNoShuf(), llvm::ARMAsmPrinter::getCodeViewJumpTableInfo(), llvm::HexagonInstrInfo::getCompoundOpcode(), llvm::SIInstrInfo::getConstValDefinedInReg(), llvm::X86InstrInfo::getConstValDefinedInReg(), getEffectiveImm(), llvm::TargetInstrInfo::getExtractSubregInputs(), llvm::ARMBaseRegisterInfo::getFrameIndexInstrOffset(), llvm::SIRegisterInfo::getFrameIndexInstrOffset(), getGatherLanePattern(), getHWReg(), getImmedFromMO(), llvm::GExtractSubvector::getIndexImm(), llvm::GInsertSubvector::getIndexImm(), llvm::MachineInstr::getInlineAsmDialect(), llvm::TargetInstrInfo::getInsertSubregInputs(), llvm::ARMBaseInstrInfo::getInsertSubregLikeInputs(), getLoadStoreOffsetSizeInBits(), llvm::SIInstrInfo::getMemOperandsWithOffsetWidth(), llvm::X86InstrInfo::getMemOperandsWithOffsetWidth(), llvm::AArch64InstrInfo::getMemOperandWithOffsetWidth(), llvm::LanaiInstrInfo::getMemOperandWithOffsetWidth(), llvm::PPCInstrInfo::getMemOperandWithOffsetWidth(), llvm::RISCVInstrInfo::getMemOperandWithOffsetWidth(), getMinimumVLForVSLIDEDOWN_VX(), getMovOperand(), llvm::getNumSizeComponents(), llvm::SPIRVGlobalRegistry::getOrCreateConsIntVector(), llvm::SPIRVGlobalRegistry::getOrCreateConstVector(), llvm::SPIRVGlobalRegistry::getOrCreateConstVector(), getRegImmPairPreventingCompression(), llvm::TargetInstrInfo::getRegSequenceInputs(), llvm::SPIRVGlobalRegistry::getRegType(), getSingleUnwindDest(), llvm::R600InstrInfo::getSrcs(), getTag(), hasAllNBitUsers(), hasAllNBitUsers(), llvm::RISCV::hasEqualFRM(), llvm::hash_value(), llvm::SIInstrInfo::hasModifiersSet(), llvm::MachineInstr::hasUnmodeledSideEffects(), INITIALIZE_PASS(), INITIALIZE_PASS(), INITIALIZE_PASS(), INITIALIZE_PASS(), INITIALIZE_PASS(), llvm::SystemZELFFrameLowering::inlineStackProbe(), llvm::SPIRV::irhandle_sampled_image(), llvm::isAArch64FrameOffsetLegal(), llvm::PPCInstrInfo::isADDIInstrEligibleForFolding(), llvm::MipsInstrInfo::isAddImmediate(), isAddressLdStPair(), isAddSub2RegAndConstOnePair(), llvm::HexagonInstrInfo::isConstExtended(), llvm::MachineInstr::isConvergent(), isConvertibleLEA(), isIdenticalTo(), isIdentityValue(), llvm::PPCInstrInfo::isImmInstrEligibleForFolding(), llvm::SIInstrInfo::isImmOperandLegal(), llvm::SIInstrInfo::isInlineConstant(), llvm::SIInstrInfo::isInlineConstant(), isLdOffsetInRangeOfSt(), isLiteralsPair(), llvm::HexagonInstrInfo::isLoadFromStackSlot(), isLoadStoreThatCanHandleDisplacement(), isMatchingStartStopPair(), llvm::SIInstrInfo::isOperandLegal(), llvm::GIndexedLoad::isPre(), llvm::GIndexedStore::isPre(), isRedundantFlagInstr(), isRedundantFlagInstr(), isRelevantAddressingMode(), isSafeToFoldImmIntoCopy(), isSameScalarConst(), llvm::SPIRVGlobalRegistry::isScalarOrVectorSigned(), llvm::isScale(), llvm::MachineInstr::isStackAligningInlineAsm(), llvm::HexagonInstrInfo::isStoreToStackSlot(), knownBitsForSBFE(), llvm::RISCVLegalizerInfo::legalizeCustom(), llvm::SIInstrInfo::legalizeOperandsVOP2(), llvm::SPIRVMCInstLower::lower(), llvm::WebAssemblyMCInstLower::lower(), llvm::lowerLoongArchMachineOperandToMCOperand(), llvm::ARCMCInstLower::LowerOperand(), llvm::M68kMCInstLower::LowerOperand(), llvm::MipsMCInstLower::LowerOperand(), llvm::XCoreMCInstLower::LowerOperand(), LowerOperand(), llvm::AArch64MCInstLower::lowerOperand(), llvm::AMDGPUMCInstLower::lowerOperand(), llvm::ARMAsmPrinter::lowerOperand(), llvm::CSKYMCInstLower::lowerOperand(), llvm::SystemZMCInstLower::lowerOperand(), llvm::XtensaAsmPrinter::lowerOperand(), llvm::LowerPPCMachineOperandToMCOperand(), lowerRISCVVMachineInstrToMCInst(), llvm::LoongArchAsmPrinter::LowerSTATEPOINT(), llvm::CombinerHelper::matchRedundantSextInReg(), llvm::MachineInstr::mayFoldInlineAsmRegOp(), llvm::MachineInstr::mayLoad(), mayOverlapWrite(), llvm::MachineInstr::mayStore(), llvm::SIInstrInfo::moveFlatAddrToVGPR(), llvm::SIInstrInfo::moveToVALUImpl(), llvm::SIInstrInfo::optimizeCompareInstr(), parseCondBranch(), parseCondBranch(), llvm::SystemZInstrInfo::prepareCompareSwapOperands(), llvm::MachineInstr::print(), print(), llvm::BPFAsmPrinter::PrintAsmMemoryOperand(), llvm::LoongArchAsmPrinter::PrintAsmMemoryOperand(), llvm::M68kAsmPrinter::PrintAsmMemoryOperand(), llvm::MipsAsmPrinter::PrintAsmMemoryOperand(), llvm::AMDGPUAsmPrinter::PrintAsmOperand(), llvm::ARMAsmPrinter::PrintAsmOperand(), llvm::AsmPrinter::PrintAsmOperand(), llvm::CSKYAsmPrinter::PrintAsmOperand(), llvm::LoongArchAsmPrinter::PrintAsmOperand(), llvm::MipsAsmPrinter::PrintAsmOperand(), llvm::WebAssemblyAsmPrinter::PrintAsmOperand(), llvm::X86AsmPrinter::PrintAsmOperand(), llvm::MipsAsmPrinter::printFCCOperand(), llvm::ARMAsmPrinter::printOperand(), llvm::BPFAsmPrinter::printOperand(), llvm::HexagonAsmPrinter::printOperand(), llvm::MipsAsmPrinter::printOperand(), llvm::SIInstrInfo::reMaterialize(), llvm::SIRegisterInfo::resolveFrameIndex(), llvm::R600InstrInfo::reverseBranchCondition(), llvm::ARMBlockPlacement::revertWhileToDoLoop(), llvm::rewriteT2FrameIndex(), llvm::HexagonInstrInfo::setBundleNoShuf(), llvm::AArch64InstrInfo::shouldClusterMemOps(), llvm::stableHashValue(), swapImmOperands(), swapRegAndNonRegOperand(), llvm::SIInstrInfo::swapSourceModifiers(), llvm::X86InstrInfo::unfoldMemoryOperand(), updateOperandIfDifferent(), updateOperands(), validateLifetimeStart(), verifyInsExtInstruction(), llvm::RISCVInstrInfo::verifyInstruction(), and llvm::SIInstrInfo::verifyInstruction().
|
inline |
Definition at line 580 of file MachineOperand.h.
References assert(), isCPI(), isFI(), isJTI(), and isTargetIndex().
Referenced by llvm::MachineInstrBuilder::addDisp(), llvm::ARCRegisterInfo::eliminateFrameIndex(), llvm::XCoreRegisterInfo::eliminateFrameIndex(), llvm::ARMAsmPrinter::emitJumpTableAddrs(), llvm::ARMAsmPrinter::emitJumpTableInsts(), llvm::ARMAsmPrinter::emitJumpTableTBInst(), llvm::TargetLoweringBase::emitPatchPoint(), llvm::getAddressFromInstr(), llvm::X86::getConstantFromPool(), llvm::LanaiMCInstLower::GetConstantPoolIndexSymbol(), llvm::MSP430MCInstLower::GetConstantPoolIndexSymbol(), llvm::XtensaAsmPrinter::GetConstantPoolIndexSymbol(), llvm::SystemZMCInstLower::getExpr(), llvm::DenseMapInfo< MemOpKey >::getHashValue(), llvm::BPFInstrInfo::getJumpTableIndex(), getJumpTableIndexFromAddr(), llvm::LanaiMCInstLower::GetJumpTableSymbol(), llvm::MSP430MCInstLower::GetJumpTableSymbol(), llvm::XtensaAsmPrinter::GetJumpTableSymbol(), getMCSymbolForTOCPseudoMO(), getMovOperand(), getStartOrEndSlot(), getTargetIndexName(), llvm::hash_value(), hasSameBaseOpValue(), isIdenticalTo(), llvm::HexagonInstrInfo::isLoadFromStackSlot(), llvm::SIInstrInfo::isSGPRStackAccess(), isSimilarDispOp(), llvm::SIInstrInfo::isStackAccess(), llvm::HexagonInstrInfo::isStoreToStackSlot(), llvm::lowerLoongArchMachineOperandToMCOperand(), llvm::M68kMCInstLower::LowerOperand(), LowerOperand(), llvm::AArch64MCInstLower::lowerOperand(), llvm::ARMAsmPrinter::lowerOperand(), llvm::CSKYMCInstLower::lowerOperand(), llvm::LowerPPCMachineOperandToMCOperand(), llvm::AArch64FrameLowering::orderFrameObjects(), llvm::SystemZELFFrameLowering::orderFrameObjects(), print(), llvm::ARMAsmPrinter::printOperand(), llvm::HexagonAsmPrinter::printOperand(), llvm::MipsAsmPrinter::printOperand(), llvm::ARMBaseInstrInfo::produceSameValue(), llvm::ARMBaseInstrInfo::reMaterialize(), llvm::AArch64InstrInfo::shouldClusterMemOps(), llvm::PPCInstrInfo::shouldClusterMemOps(), smallData(), llvm::stableHashValue(), and swapRegAndNonRegOperand().
|
inline |
Definition at line 601 of file MachineOperand.h.
References assert(), and isDbgInstrRef().
Referenced by llvm::hash_value(), isIdenticalTo(), print(), and llvm::stableHashValue().
|
inline |
Definition at line 606 of file MachineOperand.h.
References assert(), and isDbgInstrRef().
Referenced by llvm::hash_value(), isIdenticalTo(), print(), and llvm::stableHashValue().
|
inline |
Definition at line 616 of file MachineOperand.h.
References assert(), and isIntrinsicID().
Referenced by llvm::GIMatchTableExecutor::executeMatchTable(), llvm::AArch64GISelUtils::extractPtrauthBlendDiscriminators(), llvm::GIntrinsic::getIntrinsicID(), llvm::hash_value(), isIdenticalTo(), print(), and llvm::stableHashValue().
|
inline |
Definition at line 631 of file MachineOperand.h.
References assert(), and isLaneMask().
Referenced by llvm::hash_value(), isIdenticalTo(), print(), and llvm::stableHashValue().
|
inline |
Definition at line 575 of file MachineOperand.h.
References assert(), and isMBB().
Referenced by addIncomingValuesToPHIs(), llvm::AArch64InstrInfo::analyzeBranch(), llvm::HexagonInstrInfo::analyzeBranch(), llvm::MipsInstrInfo::analyzeBranch(), llvm::NVPTXInstrInfo::analyzeBranch(), llvm::PPCInstrInfo::analyzeBranch(), llvm::R600InstrInfo::analyzeBranch(), llvm::SparcInstrInfo::analyzeBranch(), llvm::VEInstrInfo::analyzeBranch(), llvm::XCoreInstrInfo::analyzeBranch(), llvm::XtensaInstrInfo::analyzeBranch(), llvm::AArch64InstrInfo::analyzeBranchPredicate(), llvm::CombinerHelper::applyOptBrCondByInvertingCond(), BBIsJumpedOver(), BBIsJumpedOver(), bbIsJumpedOver(), llvm::HexagonEvaluator::evaluate(), findLoopComponents(), llvm::HexagonInstrInfo::getDotNewPredJumpOp(), llvm::SystemZMCInstLower::getExpr(), llvm::DenseMapInfo< MemOpKey >::getHashValue(), llvm::GPhi::getIncomingBlock(), llvm::PeelingModuloScheduleExpander::getPhiCanonicalReg(), getSingleUnwindDest(), llvm::M68kMCInstLower::GetSymbolFromOperand(), getTargetMBB(), llvm::hash_value(), INITIALIZE_PASS(), insertPHI(), isIdenticalTo(), isSimilarDispOp(), llvm::SPIRVMCInstLower::lower(), llvm::lowerLoongArchMachineOperandToMCOperand(), LowerOperand(), llvm::AArch64MCInstLower::lowerOperand(), llvm::AMDGPUMCInstLower::lowerOperand(), llvm::ARMAsmPrinter::lowerOperand(), llvm::CSKYMCInstLower::lowerOperand(), llvm::LowerPPCMachineOperandToMCOperand(), llvm::XtensaAsmPrinter::LowerSymbolOperand(), llvm::CombinerHelper::matchOptBrCondByInvertingCond(), parseCondBranch(), parseCondBranch(), parseCondBranch(), parseCondBranch(), parseCondBranch(), parseCondBranch(), print(), llvm::WebAssemblyAsmPrinter::PrintAsmOperand(), llvm::ARMAsmPrinter::printOperand(), llvm::BPFAsmPrinter::printOperand(), llvm::HexagonAsmPrinter::printOperand(), llvm::MipsAsmPrinter::printOperand(), llvm::MachineBasicBlock::replacePhiUsesWith(), llvm::ARMBlockPlacement::revertWhileToDoLoop(), splitBlock(), splitEdge(), splitMBB(), updatePHIs(), and verifyCFIntrinsic().
|
inline |
Definition at line 596 of file MachineOperand.h.
References assert(), and isMCSymbol().
Referenced by emitDirectiveRelocJalr(), llvm::MipsInstrInfo::genInstrWithNewOpc(), llvm::DenseMapInfo< MemOpKey >::getHashValue(), llvm::hash_value(), isIdenticalTo(), isSimilarDispOp(), llvm::WebAssemblyMCInstLower::lower(), llvm::M68kMCInstLower::LowerOperand(), llvm::AArch64MCInstLower::lowerOperand(), llvm::AMDGPUMCInstLower::lowerOperand(), llvm::CSKYMCInstLower::lowerOperand(), llvm::LowerPPCMachineOperandToMCOperand(), print(), and llvm::stableHashValue().
Definition at line 685 of file MachineOperand.h.
References assert(), and isMetadata().
Referenced by generateAssignInstrs(), llvm::getMachineInstrType(), llvm::hash_value(), isIdenticalTo(), llvm::MachineInstr::print(), and print().
|
inline |
Return the offset from the symbol in this operand.
This always returns 0 for ExternalSymbol operands.
Definition at line 638 of file MachineOperand.h.
References assert(), isBlockAddress(), isCPI(), isGlobal(), isMCSymbol(), isSymbol(), and isTargetIndex().
Referenced by llvm::MachineInstrBuilder::addDisp(), llvm::R600TargetLowering::EmitInstrWithCustomInserter(), llvm::SIInstrInfo::expandPostRAPseudo(), llvm::X86::getConstantFromPool(), llvm::SystemZMCInstLower::getExpr(), getMovOperand(), GetSymbolRef(), GetSymbolRef(), llvm::hash_value(), INITIALIZE_PASS(), isIdenticalTo(), llvm::AMDGPUMCInstLower::lowerOperand(), llvm::BPFMCInstLower::LowerSymbolOperand(), 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(), print(), llvm::WebAssemblyAsmPrinter::PrintAsmOperand(), llvm::MipsAsmPrinter::printOperand(), llvm::ARMAsmPrinter::PrintSymbolOperand(), llvm::AsmPrinter::PrintSymbolOperand(), llvm::ARMBaseInstrInfo::produceSameValue(), llvm::stableHashValue(), and swapRegAndNonRegOperand().
| unsigned MachineOperand::getOperandNo | ( | ) | const |
Returns the index of this operand in the instruction that it belongs to.
Definition at line 55 of file MachineOperand.cpp.
References assert(), llvm::MachineInstr::getOperandNo(), and getParent().
Referenced by getIntegerExtensionOperandEEW(), getMinimumVLForVSLIDEDOWN_VX(), getOperandInfo(), getOperandLog2EEW(), llvm::AArch64RegisterInfo::getRegAllocationHints(), isCandidateStore(), isCrossCopy(), llvm::SIInstrInfo::isInlineConstant(), llvm::SIInstrInfo::isInlineConstant(), llvm::M68kInstrInfo::isPCRelRegisterOperandLegal(), isVectorOpUsedAsScalarOp(), llvm::SIInstrInfo::legalizeOperandsFLAT(), producesFalseLanesZero(), llvm::DeadLaneDetector::transferUsedLanes(), and vectorPseudoHasAllNBitUsers().
|
inline |
getParent - Return the instruction that this operand belongs to.
Definition at line 246 of file MachineOperand.h.
References MachineInstr.
Referenced by llvm::AnalyzeVirtRegInBundle(), llvm::CombinerHelper::applyCombineExtendingLoads(), canRenameMOP(), llvm::MachineInstr::changeDebugValuesDefReg(), ChangeToRegister(), llvm::constrainOperandRegClass(), createDeadDef(), findUseBetween(), llvm::getDefSrcRegIgnoringCopies(), getEffectiveImm(), getFoldableImm(), getImmedFromMO(), getLoadStoreOffsetSizeInBits(), getMFIfAvailable(), getMinimumVLForVSLIDEDOWN_VX(), getOperandInfo(), getOperandLog2EEW(), getOperandNo(), GetSymbolRef(), llvm::MachineInstr::insert(), llvm::SIInstrInfo::isIgnorableUse(), llvm::SIInstrInfo::isInlineConstant(), llvm::SIInstrInfo::isInlineConstant(), llvm::SIInstrInfo::isLegalRegOperand(), isNoReturnDef(), llvm::M68kInstrInfo::isPCRelRegisterOperandLegal(), isRenamable(), isTiedToNotUndef(), isVectorOpUsedAsScalarOp(), llvm::AArch64MCInstLower::lowerSymbolOperandELF(), oneUseDominatesOtherUses(), print(), printAsmMRegister(), printAsmVRegister(), llvm::SPIRVGlobalRegistry::recordFunctionDefinition(), llvm::CombinerHelper::replaceRegOpWith(), scavengeVReg(), llvm::AArch64InstrInfo::shouldClusterMemOps(), llvm::PPCInstrInfo::shouldClusterMemOps(), llvm::stableHashValue(), llvm::RegBankSelect::tryAvoidingSplit(), llvm::FastISel::tryToFoldLoad(), vectorPseudoHasAllNBitUsers(), and llvm::MachineRegisterInfo::verifyUseList().
|
inline |
Definition at line 247 of file MachineOperand.h.
References MachineInstr.
|
inline |
Definition at line 621 of file MachineOperand.h.
References assert(), and isPredicate().
Referenced by llvm::GISelInstProfileBuilder::addNodeIDMachineOperand(), llvm::CombinerHelper::applyNotCmp(), llvm::GIMatchTableExecutor::executeMatchTable(), llvm::GAnyCmp::getCond(), llvm::hash_value(), isIdenticalTo(), print(), and llvm::stableHashValue().
|
inline |
getReg - Returns the register number.
Definition at line 372 of file MachineOperand.h.
References assert(), isReg(), and Register.
Referenced by addDebugSubstitutionsToTable(), addMemoryOperands(), llvm::GISelInstProfileBuilder::addNodeIDMachineOperand(), llvm::ScheduleDAGInstrs::addPhysRegDataDeps(), llvm::ScheduleDAGInstrs::addPhysRegDeps(), llvm::MachineInstr::addRegisterDead(), llvm::MachineInstr::addRegisterDefined(), llvm::MachineInstr::addRegisterKilled(), llvm::MachineRegisterInfo::addRegOperandToUseList(), llvm::ScheduleDAGInstrs::addVRegDefDeps(), llvm::ScheduleDAGInstrs::addVRegUseDeps(), llvm::ARMTargetLowering::AdjustInstrPostInstrSelection(), llvm::HexagonSubtarget::adjustSchedDependency(), allPhiOperandsUndefined(), llvm::AArch64InstrInfo::analyzeLoopForPipelining(), llvm::AMDGPUResourceUsageAnalysisImpl::analyzeResourceUsage(), llvm::AnalyzeVirtRegInBundle(), llvm::HexagonSubtarget::BankConflictMutation::apply(), llvm::CombinerHelper::applyBuildFnMO(), llvm::CombinerHelper::applyCombineDivRem(), llvm::CombinerHelper::applyCombineExtendingLoads(), llvm::CombinerHelper::applyCombineTruncOfShift(), llvm::CombinerHelper::applyCombineUnmergeZExtToZExt(), llvm::RegisterBankInfo::applyDefaultMapping(), llvm::CombinerHelper::applyExtendThroughPhis(), llvm::AMDGPUCombinerHelper::applyFoldableFneg(), llvm::RegBankSelect::applyMapping(), llvm::CombinerHelper::applyOptBrCondByInvertingCond(), llvm::CombinerHelper::applyShiftOfShiftedLogic(), llvm::SPIRVCombinerHelper::applySPIRVDistance(), llvm::SPIRVCombinerHelper::applySPIRVFaceForward(), areCandidatesToMergeOrPair(), llvm::HexagonInstrInfo::areMemAccessesTriviallyDisjoint(), attemptDebugCopyProp(), llvm::CriticalAntiDepBreaker::BreakAntiDependencies(), llvm::ARMBaseInstrInfo::breakPartialRegDependency(), llvm::buildEnqueueKernel(), llvm::SIInstrInfo::buildExtractSubReg(), llvm::SPIRVGlobalRegistry::buildGlobalVariable(), llvm::SPIRVGlobalRegistry::buildMemAliasingOpDecorate(), llvm::BuildMI(), llvm::buildNDRange(), buildRegSequence(), llvm::ScheduleDAGInstrs::buildSchedGraph(), llvm::R600InstrInfo::buildSlotOfVectorInstruction(), llvm::ModuloScheduleExpanderMVE::canApply(), canCombine(), canCombine(), canCombine(), canCombineFPFusedMultiply(), canCreateUndefOrPoison(), canEmitConjunction(), llvm::HexagonInstrInfo::canExecuteInBundle(), canFoldCopy(), llvm::AArch64InstrInfo::canFoldIntoAddrMode(), llvm::LoongArchInstrInfo::canFoldIntoAddrMode(), llvm::RISCVInstrInfo::canFoldIntoAddrMode(), llvm::HexagonPacketizerList::canPromoteToNewValueStore(), canRenameMOP(), canRenameUntilSecondLoad(), canRenameUpToDef(), llvm::SIInstrInfo::canShrink(), castBufferRsrcArgToV4I32(), castBufferRsrcFromV4I32(), llvm::MachineInstr::changeDebugValuesDefReg(), llvm::checkVOPDRegConstraints(), clearKillFlags(), llvm::MachineInstr::clearRegisterDeads(), llvm::MachineInstr::clearRegisterKills(), cloneInstr(), collectInlineAsmInstrOperands(), collectRegDefs(), CombineCVTAToLocal(), combineFPFusedMultiply(), llvm::PPCInstrInfo::combineRLWINM(), compareMachineOp(), CompressEVEXImpl(), llvm::RegBankSelect::computeMapping(), llvm::GISelValueTracking::computeNumSignBits(), ConsecutiveInstr(), llvm::constrainOperandRegClass(), llvm::constrainOperandRegClass(), RegBankSelectHelper::constrainRegBankUse(), llvm::constrainSelectedInstRegOperands(), llvm::PPCInstrInfo::convertToImmediateForm(), llvm::X86InstrInfo::convertToThreeAddress(), copyRegOperand(), createCallWithOps(), llvm::ScheduleDAGInstrs::deadDefHasNoUse(), llvm::X86InstrInfo::describeLoadedValue(), llvm::HexagonRegisterInfo::eliminateFrameIndex(), llvm::SIRegisterInfo::eliminateFrameIndex(), llvm::WebAssemblyRegisterInfo::eliminateFrameIndex(), eliminateMove(), emitIndirectDst(), emitIndirectSrc(), llvm::HexagonHazardRecognizer::EmitInstruction(), llvm::SITargetLowering::EmitInstrWithCustomInserter(), llvm::XtensaTargetLowering::EmitInstrWithCustomInserter(), llvm::ARMTargetLowering::EmitKCFICheck(), llvm::AArch64InstrInfo::emitLdStWithAddr(), llvm::LoongArchInstrInfo::emitLdStWithAddr(), llvm::RISCVInstrInfo::emitLdStWithAddr(), emitLoadM0FromVGPRLoop(), EmitLoweredCascadedSelect(), eraseGPOpnd(), llvm::GIMatchTableExecutor::executeMatchTable(), Expand2AddrUndef(), Expand64BitScalarArithmetic(), llvm::M68kInstrInfo::ExpandCCR(), llvm::M68kInstrInfo::ExpandMOVEM(), llvm::M68kInstrInfo::ExpandMOVI(), llvm::M68kInstrInfo::ExpandMOVSZX_RM(), llvm::M68kInstrInfo::ExpandMOVSZX_RR(), llvm::M68kInstrInfo::ExpandMOVX_RR(), llvm::HexagonInstrInfo::expandPostRAPseudo(), llvm::X86InstrInfo::expandPostRAPseudo(), llvm::M68kInstrInfo::ExpandPUSH_POP(), llvm::AArch64GISelUtils::extractPtrauthBlendDiscriminators(), llvm::finalizeBundle(), llvm::PPCInstrInfo::finalizeInsInstrs(), findDeadCallerSavedReg(), findLoopComponents(), findLoopIncrementValue(), findNextInsertLocation(), findRedundantFlagInstr(), llvm::MachineInstr::findRegisterDefOperandIdx(), llvm::MachineInstr::findRegisterUseOperandIdx(), findStartOfTree(), llvm::ScheduleDAGInstrs::fixupKills(), llvm::AArch64TargetLowering::fixupPtrauthDiscriminator(), llvm::SwingSchedulerDAG::fixupRegisterOverlaps(), llvm::PPCInstrInfo::foldFrameOffset(), llvm::ARMBaseInstrInfo::foldImmediate(), llvm::SIInstrInfo::foldImmediate(), llvm::TargetInstrInfo::foldMemoryOperand(), llvm::AArch64InstrInfo::foldMemoryOperandImpl(), llvm::SystemZInstrInfo::foldMemoryOperandImpl(), llvm::X86InstrInfo::foldMemoryOperandImpl(), llvm::X86InstrInfo::foldMemoryOperandImpl(), foldPatchpoint(), foldVGPRCopyIntoRegSequence(), llvm::RISCVInstrInfo::genAlternativeCodeSequence(), llvm::TargetInstrInfo::genAlternativeCodeSequence(), genAlternativeDpCodeSequence(), generateAssignInstrs(), llvm::generateCoopMatrInst(), generateGatherLanePattern(), llvm::generateImageSizeQueryInst(), genFNegatedMAD(), genFusedMultiply(), genIndexedMultiply(), genMaddR(), genShXAddAddShift(), genSubAdd2SubSub(), llvm::TargetInstrInfo::getAccumulatorChain(), llvm::TargetInstrInfo::getAccumulatorReassociationPatterns(), llvm::getAddressFromInstr(), llvm::X86InstrInfo::getAddrModeFromMemoryOp(), llvm::GIndexedLoad::getBaseReg(), llvm::GIndexedStore::getBaseReg(), llvm::GInsertSubvector::getBigVec(), llvm::getBlockStructInstr(), getCallTargetRegOpnd(), llvm::HexagonInstrInfo::getCompoundOpcode(), llvm::SIRegisterInfo::getConstrainedRegClassForOperand(), llvm::X86InstrInfo::getConstValDefinedInReg(), llvm::getDef(), llvm::getDefInstrMaybeConstant(), getDefRegMask(), llvm::getDefSrcRegIgnoringCopies(), llvm::GAnyLoad::getDstReg(), llvm::GIndexedLoad::getDstReg(), getEffectiveImm(), llvm::GInsertVectorElement::getElementReg(), llvm::mir2vec::MIRVocabulary::getEntityIDForMachineOperand(), llvm::TargetInstrInfo::getExtractSubregInputs(), llvm::ARMBaseInstrInfo::getExtractSubregLikeInputs(), llvm::MachineInstr::getFirst2RegLLTs(), llvm::MachineInstr::getFirst3RegLLTs(), llvm::MachineInstr::getFirst4RegLLTs(), llvm::MachineInstr::getFirst5RegLLTs(), llvm::PPCInstrInfo::getFMAPatterns(), getFMULPatterns(), getFNEGPatterns(), getFoldableImm(), getFPReg(), getGatherLanePattern(), llvm::MachineInstrExpressionTrait::getHashValue(), llvm::ARMBankConflictHazardRecognizer::getHazardType(), getImmedFromMO(), llvm::GPhi::getIncomingValue(), llvm::GExtractVectorElement::getIndexReg(), llvm::GInsertVectorElement::getIndexReg(), getIndirectSGPRIdx(), llvm::TargetInstrInfo::getInsertSubregInputs(), llvm::ARMBaseInstrInfo::getInsertSubregLikeInputs(), getInstReadLaneMask(), llvm::ARMRegisterBankInfo::getInstrMapping(), llvm::RISCVRegisterBankInfo::getInstrMapping(), llvm::RegisterBankInfo::getInstrMappingImpl(), llvm::SIInstrInfo::getInstructionUniformity(), llvm::BPFInstrInfo::getJumpTableIndex(), llvm::ScheduleDAGInstrs::getLaneMaskForMO(), getLegalRegBank(), llvm::GBinOpCarryOut::getLHSReg(), llvm::GSUCmp::getLHSReg(), llvm::getMachineInstrType(), getMinimumVLForVSLIDEDOWN_VX(), llvm::ReachingDefInfo::getMIOperand(), getMopState(), getNewSource(), llvm::GIndexedLoad::getOffsetReg(), llvm::GIndexedStore::getOffsetReg(), llvm::ARMBaseInstrInfo::getOperandLatency(), llvm::HexagonInstrInfo::getOperandLatency(), llvm::PPCInstrInfo::getOperandLatency(), llvm::SPIRVGlobalRegistry::getOrCreateConstIntArray(), llvm::SPIRVGlobalRegistry::getOrCreateOpTypeSampledImage(), llvm::ARMBaseInstrInfo::getPartialRegUpdateClearance(), llvm::X86InstrInfo::getPartialRegUpdateClearance(), llvm::PeelingModuloScheduleExpander::getPhiCanonicalReg(), llvm::SPIRVGlobalRegistry::getPointeeType(), llvm::GLoadStore::getPointerReg(), llvm::SSAUpdaterTraits< MachineSSAUpdater >::GetPoisonVal(), getRC32(), llvm::GenericMachineInstr::getReg(), llvm::AArch64RegisterInfo::getRegAllocationHints(), llvm::PPCRegisterInfo::getRegAllocationHints(), llvm::SystemZRegisterInfo::getRegAllocationHints(), llvm::SPIRVGlobalRegistry::getRegClass(), llvm::SIRegisterInfo::getRegClassForOperandReg(), llvm::TargetInstrInfo::getRegSequenceInputs(), llvm::ARMBaseInstrInfo::getRegSequenceLikeInputs(), llvm::getRegState(), llvm::SPIRVGlobalRegistry::getRegType(), llvm::RegBankSelect::getRepairCost(), llvm::GBinOpCarryOut::getRHSReg(), llvm::GSUCmp::getRHSReg(), getSalvageOpsForTrunc(), llvm::GSplatVector::getScalarReg(), llvm::GShl::getShiftReg(), getShuffleComment(), llvm::GFreeze::getSourceReg(), llvm::GUnmerge::getSourceReg(), llvm::GShuffleVector::getSrc1Reg(), llvm::GShuffleVector::getSrc2Reg(), llvm::GCastOp::getSrcReg(), llvm::GShl::getSrcReg(), llvm::R600InstrInfo::getSrcs(), llvm::GExtractSubvector::getSrcVec(), llvm::GInsertSubvector::getSubVec(), getTag(), getTypeReg(), llvm::X86InstrInfo::getUndefRegClearance(), llvm::MachineSSAUpdater::GetValueInMiddleOfBlock(), llvm::GIndexedStore::getValueReg(), llvm::GStore::getValueReg(), llvm::GExtractVectorElement::getVectorReg(), llvm::GInsertVectorElement::getVectorReg(), llvm::getVRegDef(), llvm::getVRegSubRegDef(), llvm::GIndexedLoad::getWritebackReg(), llvm::GIndexedStore::getWritebackReg(), handleADRP(), llvm::hash_value(), hasLiveThroughUse(), hasMoreUses(), llvm::RISCVInstrInfo::hasReassociableOperands(), llvm::TargetInstrInfo::hasReassociableOperands(), llvm::RISCVInstrInfo::hasReassociableSibling(), llvm::TargetInstrInfo::hasReassociableSibling(), hasRegisterDependency(), llvm::MachineInstr::hasRegisterImplicitUseOperand(), hasSameBaseOpValue(), indirectCopyToAGPR(), INITIALIZE_PASS(), INITIALIZE_PASS(), INITIALIZE_PASS(), INITIALIZE_PASS(), llvm::insertAssignInstr(), llvm::HexagonInstrInfo::insertBranch(), insertDivByZeroTrap(), insertDivByZeroTrap(), llvm::SPIRVTargetLowering::insertLogicalCopyOnResult(), insertSEH(), llvm::ARMBaseInstrInfo::isAddImmediate(), llvm::MipsInstrInfo::isAddImmediate(), llvm::RISCVInstrInfo::isAddImmediate(), isAGPRCopy(), isArithmeticBccPair(), isBackwardPropagatableCopy(), llvm::GIMatchTableExecutor::isBaseWithConstantOffset(), isCandidate(), llvm::WebAssembly::isChild(), llvm::AArch64GISelUtils::isCMN(), isCmpCSetPair(), llvm::MachineInstr::isConstantValuePHI(), isConstReg(), isConvertibleLEA(), isCrossCopy(), llvm::MachineInstr::isDead(), isExtractHiElt(), isFIPlusImmOrVGPR(), isIdenticalOp(), llvm::MachineInstr::isIdenticalTo(), isIdenticalTo(), llvm::MachineInstr::isIdentityCopy(), llvm::SIInstrInfo::isIgnorableUse(), llvm::PPCInstrInfo::isImmInstrEligibleForFolding(), isInvariantStore(), isLdStSafeToCluster(), llvm::RISCVInstrInfo::isLdStSafeToPair(), llvm::SIInstrInfo::isLegalGFX12PlusPackedMathFP32Operand(), llvm::SIInstrInfo::isLegalRegOperand(), llvm::SIInstrInfo::isLegalRegOperand(), llvm::HexagonPacketizerList::isLegalToPacketizeTogether(), isLogicalOpOnExec(), llvm::SMSchedule::isLoopCarriedDefOfUse(), isMatchingStartStopPair(), isMMSourceRegister(), isMMThreeBitGPRegister(), isNonFoldablePartialRegisterLoad(), llvm::GIMatchTableExecutor::isOperandImmEqual(), isOperandKill(), llvm::SIInstrInfo::isOperandLegal(), isPhysical(), isPromotableZeroStoreInst(), isRedundantFlagInstr(), isRedundantFlagInstr(), isRegInClass(), isRegisterLiveInCall(), isRelevantAddressingMode(), isRenamable(), IsSafeAndProfitableToMove(), llvm::SIInstrInfo::isSGPRStackAccess(), llvm::SIInstrInfo::isStackAccess(), isSubRegOf(), isSVERegOp(), isTileDef(), isTileDef(), isTileRegDef(), llvm::HexagonInstrInfo::isToBeScheduledASAP(), isTwoAddrUse(), isValidReg(), isValidRegDefOf(), isValidRegUseOf(), llvm::PPCInstrInfo::isValidToBeChangedReg(), isVirtualRegisterOperand(), isWaitInstr(), knownBitsForSBFE(), llvm::AArch64LegalizerInfo::legalizeIntrinsic(), llvm::SIInstrInfo::legalizeOperands(), llvm::SIInstrInfo::legalizeOperandsFLAT(), llvm::SIInstrInfo::legalizeOperandsSMRD(), llvm::SIInstrInfo::legalizeOperandsVOP2(), llvm::SIInstrInfo::legalizeOperandsVOP3(), llvm::SPIRVMCInstLower::lower(), llvm::WebAssemblyMCInstLower::lower(), LowerCallResults(), llvm::TargetInstrInfo::lowerCopy(), llvm::lowerLoongArchMachineOperandToMCOperand(), llvm::ARCMCInstLower::LowerOperand(), llvm::M68kMCInstLower::LowerOperand(), llvm::MipsMCInstLower::LowerOperand(), llvm::XCoreMCInstLower::LowerOperand(), LowerOperand(), llvm::AArch64MCInstLower::lowerOperand(), llvm::AMDGPUMCInstLower::lowerOperand(), llvm::ARMAsmPrinter::lowerOperand(), llvm::CSKYMCInstLower::lowerOperand(), llvm::SystemZMCInstLower::lowerOperand(), llvm::XtensaAsmPrinter::lowerOperand(), llvm::LowerPPCMachineOperandToMCOperand(), lowerRISCVVMachineInstrToMCInst(), llvm::LoongArchAsmPrinter::LowerSTATEPOINT(), llvm::AMDGPUMCInstLower::lowerT16D16Helper(), llvm::AMDGPUMCInstLower::lowerT16FmaMixFP16(), llvm::MIPatternMatch::BinaryOp_match< LHS_P, RHS_P, Opcode, Commutable, Flags >::match(), llvm::MIPatternMatch::BinaryOpc_match< LHS_P, RHS_P, Commutable >::match(), llvm::MIPatternMatch::ClassifyOp_match< LHS_P, Test_P, Opcode >::match(), llvm::MIPatternMatch::CompareOp_match< Pred_P, LHS_P, RHS_P, Opcode, Commutable >::match(), llvm::MIPatternMatch::TernaryOp_match< Src0Ty, Src1Ty, Src2Ty, Opcode >::match(), llvm::MIPatternMatch::UnaryOp_match< SrcTy, Opcode >::match(), llvm::CombinerHelper::matchAddOfVScale(), llvm::CombinerHelper::matchCombineExtractedVectorLoad(), llvm::CombinerHelper::matchCombineFAddFMAFMulToFMadOrFMA(), llvm::CombinerHelper::matchCombineFAddFpExtFMulToFMadOrFMA(), llvm::CombinerHelper::matchCombineFAddFpExtFMulToFMadOrFMAAggressive(), llvm::AMDGPUCombinerHelper::matchCombineFmulWithSelectToFldexp(), llvm::CombinerHelper::matchCombineFSubFNegFMulToFMadOrFMA(), llvm::CombinerHelper::matchCombineFSubFpExtFMulToFMadOrFMA(), llvm::CombinerHelper::matchCombineFSubFpExtFNegFMulToFMadOrFMA(), llvm::CombinerHelper::matchCombineInsertVecElts(), llvm::CombinerHelper::matchCombineTruncOfShift(), llvm::CombinerHelper::matchConstantFPOp(), llvm::CombinerHelper::matchConstantOp(), llvm::CombinerHelper::matchEqualDefs(), llvm::CombinerHelper::matchExtractVecEltBuildVec(), llvm::CombinerHelper::matchExtractVectorElementWithBuildVectorTrunc(), llvm::CombinerHelper::matchExtractVectorElementWithDifferentIndices(), llvm::AMDGPUCombinerHelper::matchFoldableFneg(), llvm::CombinerHelper::matchFreezeOfSingleMaybePoisonOperand(), llvm::CombinerHelper::matchHoistLogicOpWithSameOpcodeHands(), llvm::CombinerHelper::matchLshrOfTruncOfLshr(), llvm::CombinerHelper::matchMulOfVScale(), llvm::CombinerHelper::matchNarrowBinopFeedingAnd(), llvm::CombinerHelper::matchNonNegZext(), llvm::CombinerHelper::matchOperandIsKnownToBeAPowerOfTwo(), llvm::CombinerHelper::matchOperandIsUndef(), llvm::CombinerHelper::matchPtrAddImmedChain(), llvm::CombinerHelper::matchRedundantSextInReg(), llvm::CombinerHelper::matchSelectIMinMax(), llvm::SPIRVCombinerHelper::matchSelectToFaceForward(), llvm::CombinerHelper::matchSextOfTrunc(), llvm::CombinerHelper::matchShiftImmedChain(), llvm::CombinerHelper::matchShiftOfShiftedLogic(), llvm::CombinerHelper::matchShlOfVScale(), llvm::CombinerHelper::matchSubOfVScale(), llvm::CombinerHelper::matchTruncUSatU(), llvm::CombinerHelper::matchTruncUSatUToFPTOUISat(), llvm::CombinerHelper::matchUnmergeValuesAnyExtBuildVector(), llvm::CombinerHelper::matchUseVectorTruncate(), llvm::CombinerHelper::matchZextOfTrunc(), llvm::SwingSchedulerDAG::mayOverlapInLaterIter(), MIIsInTerminatorSequence(), llvm::LegalizerHelper::moreElementsVectorDst(), llvm::SIInstrInfo::moveFlatAddrToVGPR(), llvm::PeelingModuloScheduleExpander::moveStageBetweenBlocks(), llvm::SIInstrInfo::moveToVALUImpl(), MoveVPNOTBeforeFirstUser(), oneUseDominatesOtherUses(), llvm::mir2vec::MIRVocabulary::operator[](), llvm::PPCInstrInfo::optimizeCmpPostRA(), llvm::AArch64InstrInfo::optimizeCompareInstr(), llvm::ARMBaseInstrInfo::optimizeCompareInstr(), llvm::LanaiInstrInfo::optimizeCompareInstr(), llvm::PPCInstrInfo::optimizeCompareInstr(), llvm::SIInstrInfo::optimizeCompareInstr(), llvm::X86InstrInfo::optimizeCompareInstr(), llvm::AArch64InstrInfo::optimizeCondBranch(), llvm::TargetInstrInfo::optimizeLoadInstr(), llvm::ARMBaseInstrInfo::optimizeSelect(), llvm::LanaiInstrInfo::optimizeSelect(), llvm::RISCVInstrInfo::optimizeSelect(), llvm::CallLowering::parametersInCSRMatch(), parseCondBranch(), llvm::PeelSingleBlockLoop(), llvm::SIInstrInfo::physRegUsesConstantBus(), print(), llvm::ARMAsmPrinter::PrintAsmMemoryOperand(), llvm::BPFAsmPrinter::PrintAsmMemoryOperand(), llvm::CSKYAsmPrinter::PrintAsmMemoryOperand(), llvm::LoongArchAsmPrinter::PrintAsmMemoryOperand(), llvm::M68kAsmPrinter::PrintAsmMemoryOperand(), llvm::MipsAsmPrinter::PrintAsmMemoryOperand(), printAsmMRegister(), llvm::AMDGPUAsmPrinter::PrintAsmOperand(), llvm::ARMAsmPrinter::PrintAsmOperand(), llvm::CSKYAsmPrinter::PrintAsmOperand(), llvm::HexagonAsmPrinter::PrintAsmOperand(), llvm::LoongArchAsmPrinter::PrintAsmOperand(), llvm::MipsAsmPrinter::PrintAsmOperand(), llvm::SystemZAsmPrinter::PrintAsmOperand(), printAsmVRegister(), printDstRegisterName(), llvm::ARMAsmPrinter::printOperand(), llvm::BPFAsmPrinter::printOperand(), llvm::HexagonAsmPrinter::printOperand(), llvm::MipsAsmPrinter::printOperand(), llvm::ARMBaseInstrInfo::produceSameValue(), producesFalseLanesZero(), llvm::PPCInstrInfo::promoteInstr32To64ForElimEXTSW(), llvm::MachineInstr::readsWritesVirtualRegister(), RegBankSelectHelper::reAssignRegBankOnDef(), llvm::TargetInstrInfo::reassociateOps(), TransferTracker::redefVar(), llvm::TargetInstrInfo::reduceAccumulatorTree(), llvm::WebAssemblyAsmPrinter::regToString(), llvm::SIInstrInfo::regUsesConstantBus(), reinsertVectorIndexAdd(), llvm::ARMBaseInstrInfo::reMaterialize(), llvm::SIInstrInfo::reMaterialize(), llvm::X86InstrInfo::reMaterialize(), RemoveDeadAddBetweenLEAAndJT(), llvm::MachineRegisterInfo::removeRegOperandFromUseList(), llvm::LiveVariables::removeVirtualRegistersKilled(), llvm::RegBankSelect::RepairingPlacement::RepairingPlacement(), llvm::RegBankSelect::repairReg(), rescheduleCanonically(), llvm::R600InstrInfo::reverseBranchCondition(), llvm::MachineSSAUpdater::RewriteUse(), llvm::SelectionDAGISel::runOnMachineFunction(), llvm::MachineFunction::salvageCopySSAImpl(), llvm::R600SchedStrategy::schedNode(), setIsRenamable(), setM0ToIndexFromSGPR(), llvm::MachineInstr::setPhysRegsDeadExcept(), setReg(), llvm::MachineInstr::setRegisterDefReadUndef(), llvm::AArch64InstrInfo::shouldClusterMemOps(), llvm::PPCInstrInfo::shouldClusterMemOps(), SinkingPreventsImplicitNullCheck(), llvm::MachineBasicBlock::SplitCriticalEdge(), splitMBB(), llvm::stableHashValue(), llvm::MachineInstr::substituteRegister(), swapRegAndNonRegOperand(), llvm::RegBankSelect::tryAvoidingSplit(), llvm::LegalizationArtifactCombiner::tryCombineExtract(), AMDGPURegBankLegalizeCombiner::tryEliminateReadAnyLane(), llvm::tryFoldSPUpdateIntoPushPop(), llvm::LegalizationArtifactCombiner::tryFoldUnmergeCast(), AMDGPURegBankLegalizeCombiner::tryMatch(), AMDGPURegBankLegalizeCombiner::tryMatchRALFromUnmerge(), llvm::CombinerHelper::tryReassocBinOp(), typesLogicallyMatch(), llvm::X86InstrInfo::unfoldMemoryOperand(), UpdateCPSRDef(), UpdateCPSRUse(), llvm::HexagonPacketizerList::updateOffset(), UpdateOperandRegClass(), updateOperandRegConstraints(), UseReg(), llvm::SIInstrInfo::usesConstantBus(), validateAccessChain(), validateFunCallMachineDef(), validatePtrUnwrapStructField(), llvm::RegisterBankInfo::InstructionMapping::verify(), llvm::SIInstrInfo::verifyInstruction(), VerifyLowRegs(), llvm::MachineRegisterInfo::verifyUseList(), and llvm::VirtRegAuxInfo::weightCalcHelper().
getRegLiveOut - Returns a bit mask of live-out registers.
Definition at line 680 of file MachineOperand.h.
References assert(), and isRegLiveOut().
Referenced by llvm::hash_value(), isIdenticalTo(), print(), and llvm::stableHashValue().
getRegMask - Returns a bit mask of registers preserved by this RegMask operand.
Definition at line 669 of file MachineOperand.h.
References assert(), and isRegMask().
Referenced by clobbersPhysReg(), llvm::ScheduleDAGInstrs::fixupKills(), llvm::hash_value(), isIdenticalTo(), isMatchingStartStopPair(), print(), llvm::MIRParserImpl::setupRegisterInfo(), and llvm::stableHashValue().
Returns number of elements needed for a regmask array.
Definition at line 675 of file MachineOperand.h.
Referenced by llvm::MachineFunction::allocateRegMask(), llvm::hash_value(), isIdenticalTo(), regMaskFromTemplate(), llvm::stableHashValue(), and llvm::AArch64RegisterInfo::UpdateCustomCallPreservedMask().
|
inline |
Definition at line 626 of file MachineOperand.h.
References assert(), and isShuffleMask().
Referenced by llvm::GShuffleVector::getMask(), llvm::hash_value(), isExtractHiElt(), isIdenticalTo(), print(), and llvm::stableHashValue().
|
inline |
Definition at line 377 of file MachineOperand.h.
References assert(), and isReg().
Referenced by llvm::MachineInstr::addRegisterDefined(), llvm::ScheduleDAGInstrs::addVRegDefDeps(), llvm::HexagonInstrInfo::areMemAccessesTriviallyDisjoint(), attemptDebugCopyProp(), llvm::SIInstrInfo::buildExtractSubReg(), canFoldCopy(), copyRegOperand(), emitLoadM0FromVGPRLoop(), llvm::HexagonInstrInfo::expandPostRAPseudo(), findUseBetween(), llvm::SIInstrInfo::foldImmediate(), llvm::AArch64InstrInfo::foldMemoryOperandImpl(), llvm::X86InstrInfo::foldMemoryOperandImpl(), llvm::X86InstrInfo::foldMemoryOperandImpl(), foldPatchpoint(), foldVGPRCopyIntoRegSequence(), llvm::HexagonInstrInfo::getBaseAndOffset(), getDefRegMask(), llvm::TargetInstrInfo::getExtractSubregInputs(), llvm::ARMBaseInstrInfo::getExtractSubregLikeInputs(), llvm::TargetInstrInfo::getInsertSubregInputs(), llvm::ARMBaseInstrInfo::getInsertSubregLikeInputs(), getInstReadLaneMask(), llvm::ScheduleDAGInstrs::getLaneMaskForMO(), getNewSource(), llvm::SIInstrInfo::getOpSize(), llvm::ARMBaseInstrInfo::getPartialRegUpdateClearance(), getRC32(), llvm::PPCRegisterInfo::getRegAllocationHints(), llvm::RISCVRegisterInfo::getRegAllocationHints(), llvm::SystemZRegisterInfo::getRegAllocationHints(), llvm::MachineInstr::getRegClassConstraintEffect(), llvm::SIRegisterInfo::getRegClassForOperandReg(), llvm::TargetInstrInfo::getRegSequenceInputs(), llvm::ARMBaseInstrInfo::getRegSequenceLikeInputs(), llvm::hash_value(), INITIALIZE_PASS(), isAGPRCopy(), isCrossCopy(), llvm::MachineInstr::isFullCopy(), llvm::TargetInstrInfo::isFullCopyInstr(), isIdenticalTo(), llvm::MachineInstr::isIdentityCopy(), llvm::SIInstrInfo::isLegalRegOperand(), llvm::SIInstrInfo::isOperandLegal(), isSSA(), llvm::SIInstrInfo::legalizeOperandsVOP2(), llvm::ARMAsmPrinter::lowerOperand(), llvm::LowerPPCMachineOperandToMCOperand(), llvm::SIInstrInfo::optimizeCompareInstr(), llvm::TargetInstrInfo::optimizeLoadInstr(), print(), llvm::ARMAsmPrinter::printOperand(), readsReg(), llvm::MachineInstr::readsWritesVirtualRegister(), llvm::TargetInstrInfo::reassociateOps(), llvm::SIInstrInfo::reMaterialize(), llvm::MachineInstr::setRegisterDefReadUndef(), llvm::stableHashValue(), substPhysReg(), substVirtReg(), swapRegAndNonRegOperand(), llvm::SIInstrInfo::verifyInstruction(), and llvm::VirtRegAuxInfo::weightCalcHelper().
Definition at line 646 of file MachineOperand.h.
References assert(), and isSymbol().
Referenced by llvm::BTFDebug::beginInstruction(), eliminateMove(), llvm::SystemZMCInstLower::getExpr(), llvm::AArch64MCInstLower::GetExternalSymbolSymbol(), llvm::BPFMCInstLower::GetExternalSymbolSymbol(), llvm::LanaiMCInstLower::GetExternalSymbolSymbol(), llvm::MSP430MCInstLower::GetExternalSymbolSymbol(), llvm::DenseMapInfo< MemOpKey >::getHashValue(), getMovOperand(), GetSymbolFromOperand(), llvm::M68kMCInstLower::GetSymbolFromOperand(), llvm::AsmPrinter::handleCallsiteForCallgraph(), llvm::hash_value(), isIdenticalTo(), isSimilarDispOp(), llvm::lowerLoongArchMachineOperandToMCOperand(), LowerOperand(), llvm::AMDGPUMCInstLower::lowerOperand(), llvm::ARMAsmPrinter::lowerOperand(), llvm::CSKYMCInstLower::lowerOperand(), llvm::XtensaAsmPrinter::LowerSymbolOperand(), llvm::AArch64MCInstLower::lowerSymbolOperandELF(), llvm::matchLibcall(), llvm::WebAssembly::mayThrow(), optimizeCall(), print(), llvm::WebAssemblyAsmPrinter::PrintAsmOperand(), llvm::BPFAsmPrinter::printOperand(), and llvm::stableHashValue().
|
inline |
Definition at line 229 of file MachineOperand.h.
References isReg().
Referenced by llvm::MachineInstrBuilder::addDisp(), emitDirectiveRelocJalr(), llvm::R600TargetLowering::EmitInstrWithCustomInserter(), llvm::MipsInstrInfo::genInstrWithNewOpc(), llvm::MSP430MCInstLower::GetBlockAddressSymbol(), llvm::MSP430MCInstLower::GetConstantPoolIndexSymbol(), llvm::LoongArchII::getDirectFlags(), llvm::MSP430MCInstLower::GetExternalSymbolSymbol(), llvm::AArch64MCInstLower::GetGlobalAddressSymbol(), llvm::MSP430MCInstLower::GetGlobalAddressSymbol(), llvm::MSP430MCInstLower::GetJumpTableSymbol(), getMovOperand(), GetSymbolRef(), GetSymbolRef(), getTOCEntryTypeForMO(), handleInstructionWithEGPR(), handleNDDOrNFInstructions(), llvm::hash_value(), llvm::LoongArchII::hasRelaxFlag(), INITIALIZE_PASS(), llvm::isAddMemInstrWithRelocation(), isCallToCFGuardFunction(), llvm::HexagonInstrInfo::isConstExtended(), isIdenticalTo(), isImportedFunction(), llvm::isMemInstrWithGOTPCREL(), llvm::WebAssemblyMCInstLower::lower(), llvm::AMDGPUMCInstLower::lowerOperand(), llvm::ARMAsmPrinter::lowerOperand(), llvm::SystemZMCInstLower::lowerOperand(), llvm::LanaiMCInstLower::LowerSymbolOperand(), llvm::M68kMCInstLower::LowerSymbolOperand(), llvm::MSP430MCInstLower::LowerSymbolOperand(), LowerSymbolOperand(), llvm::AVRMCInstLower::lowerSymbolOperand(), llvm::CSKYMCInstLower::lowerSymbolOperand(), lowerSymbolOperand(), llvm::AArch64MCInstLower::lowerSymbolOperandCOFF(), llvm::AArch64MCInstLower::lowerSymbolOperandELF(), llvm::AArch64MCInstLower::lowerSymbolOperandMachO(), llvm::ARMAsmPrinter::printOperand(), llvm::MipsAsmPrinter::printOperand(), llvm::ARMAsmPrinter::PrintSymbolOperand(), llvm::stableHashValue(), swapImmOperands(), and swapRegAndNonRegOperand().
getTargetIndexName - If this MachineOperand is a TargetIndex that has a name, attempt to get the name.
Returns nullptr if the TargetIndex does not have a name. Asserts if MO is not a TargetIndex.
Definition at line 492 of file MachineOperand.cpp.
References getIndex(), getMFIfAvailable(), and getTargetIndexName().
Referenced by getTargetIndexName(), print(), and llvm::stableHashValue().
|
inline |
getType - Returns the MachineOperandType for this operand.
Definition at line 227 of file MachineOperand.h.
Referenced by llvm::MachineInstrBuilder::addDisp(), compareMachineOp(), getCodeModel(), llvm::mir2vec::MIRVocabulary::getEntityIDForMachineOperand(), llvm::SystemZMCInstLower::getExpr(), llvm::DenseMapInfo< MemOpKey >::getHashValue(), getMCSymbolForTOCPseudoMO(), getMovOperand(), getTOCEntryTypeForMO(), llvm::AsmPrinter::handleCallsiteForCallgraph(), llvm::hash_value(), INITIALIZE_PASS(), IsAnAddressOperand(), isIdenticalTo(), llvm::SPIRVMCInstLower::lower(), llvm::WebAssemblyMCInstLower::lower(), llvm::lowerLoongArchMachineOperandToMCOperand(), llvm::ARCMCInstLower::LowerOperand(), llvm::M68kMCInstLower::LowerOperand(), llvm::MipsMCInstLower::LowerOperand(), llvm::XCoreMCInstLower::LowerOperand(), LowerOperand(), llvm::AArch64MCInstLower::lowerOperand(), llvm::AMDGPUMCInstLower::lowerOperand(), llvm::ARMAsmPrinter::lowerOperand(), llvm::CSKYMCInstLower::lowerOperand(), llvm::SystemZMCInstLower::lowerOperand(), llvm::XtensaAsmPrinter::lowerOperand(), llvm::LowerPPCMachineOperandToMCOperand(), lowerRISCVVMachineInstrToMCInst(), llvm::LoongArchAsmPrinter::LowerSTATEPOINT(), llvm::mir2vec::MIRVocabulary::operator[](), print(), llvm::M68kAsmPrinter::PrintAsmMemoryOperand(), llvm::CSKYAsmPrinter::PrintAsmOperand(), llvm::LoongArchAsmPrinter::PrintAsmOperand(), llvm::WebAssemblyAsmPrinter::PrintAsmOperand(), llvm::X86AsmPrinter::PrintAsmOperand(), llvm::ARMAsmPrinter::printOperand(), llvm::BPFAsmPrinter::printOperand(), llvm::HexagonAsmPrinter::printOperand(), llvm::MipsAsmPrinter::printOperand(), llvm::XtensaAsmPrinter::printOperand(), llvm::AArch64InstrInfo::shouldClusterMemOps(), llvm::stableHashValue(), and llvm::SPIRV::to_hash().
|
inline |
isBlockAddress - Tests if this is a MO_BlockAddress operand.
Definition at line 353 of file MachineOperand.h.
References MO_BlockAddress.
Referenced by getBlockAddress(), getOffset(), llvm::HexagonInstrInfo::isConstExtended(), isSimilarDispOp(), isValidDispOp(), llvm::LoongArchAsmPrinter::PrintAsmMemoryOperand(), processBlockAddr(), and setOffset().
|
inline |
Definition at line 362 of file MachineOperand.h.
References MO_CFIIndex.
Referenced by getCFIIndex().
|
inline |
isCImm - Test if this is a MO_CImmediate operand.
Definition at line 335 of file MachineOperand.h.
References MO_CImmediate.
Referenced by llvm::GISelInstProfileBuilder::addNodeIDMachineOperand(), llvm::GIMatchTableExecutor::executeMatchTable(), llvm::generateGroupUniformInst(), llvm::generateSpecConstantInst(), getCImm(), getImmedFromMO(), isCandidate(), setCImm(), and llvm::stableHashValue().
|
inline |
isCPI - Tests if this is a MO_ConstantPoolIndex operand.
Definition at line 343 of file MachineOperand.h.
References MO_ConstantPoolIndex.
Referenced by llvm::X86::getConstantFromPool(), getIndex(), getOffset(), getTag(), isAnImmediateOperand(), isCandidate(), llvm::HexagonInstrInfo::isConstExtended(), isSimilarDispOp(), isValidDispOp(), llvm::LoongArchAsmPrinter::PrintAsmMemoryOperand(), setIndex(), setOffset(), and smallData().
|
inline |
Definition at line 361 of file MachineOperand.h.
References MO_DbgInstrRef.
Referenced by getInstrRefInstrIndex(), getInstrRefOpIndex(), setInstrRefInstrIndex(), and setInstrRefOpIndex().
|
inline |
Definition at line 397 of file MachineOperand.h.
References assert(), and isReg().
Referenced by llvm::ScheduleDAGInstrs::addPhysRegDeps(), llvm::MachineInstr::addRegisterDead(), llvm::ScheduleDAGInstrs::addVRegDefDeps(), llvm::ARMTargetLowering::AdjustInstrPostInstrSelection(), llvm::MachineInstr::allDefsAreDead(), llvm::MachineInstr::allImplicitDefsAreDead(), ChangeToRegister(), copyRegOperand(), CreateReg(), doesInstructionSetFPSW(), llvm::SIRegisterInfo::eliminateFrameIndex(), llvm::MachineInstr::findRegisterDefOperandIdx(), llvm::ARMBaseInstrInfo::foldImmediate(), getClobberType(), getMopState(), llvm::getRegState(), handleNDDOrNFInstructions(), hash_value, llvm::X86InstrInfo::hasReassociableOperands(), isCandidate(), llvm::MachineInstr::isDead(), llvm::MachineInstr::isIdenticalTo(), moveAndTeeForMultiUse(), print(), llvm::X86InstrInfo::setSpecialOperandAttr(), swapRegAndNonRegOperand(), and UpdateCPSRDef().
|
inline |
Definition at line 458 of file MachineOperand.h.
References assert(), and isReg().
Referenced by llvm::MachineInstr::addRegisterKilled(), canRenameUpToDef(), ChangeToRegister(), CreateReg(), llvm::getRegState(), hash_value, setIsDef(), setIsKill(), and swapRegAndNonRegOperand().
|
inline |
Definition at line 387 of file MachineOperand.h.
References assert(), and isReg().
Referenced by llvm::GISelInstProfileBuilder::addNodeIDMachineOperand(), llvm::ScheduleDAGInstrs::addPhysRegDataDeps(), llvm::MachineInstr::addRegisterDead(), llvm::MachineRegisterInfo::addRegOperandToUseList(), llvm::ARMTargetLowering::AdjustInstrPostInstrSelection(), llvm::AnalyzeVirtRegInBundle(), llvm::BTFDebug::beginInstruction(), llvm::CriticalAntiDepBreaker::BreakAntiDependencies(), llvm::ScheduleDAGInstrs::buildSchedGraph(), canRenameMOP(), canRenameUpToDef(), ChangeToRegister(), collectInlineAsmInstrOperands(), llvm::constrainOperandRegClass(), llvm::PPCInstrInfo::convertToImmediateForm(), CreateReg(), llvm::HexagonHazardRecognizer::EmitInstruction(), findDeadCallerSavedReg(), findDefIdx(), llvm::MachineInstr::findRegisterDefOperandIdx(), findUseIdx(), llvm::ScheduleDAGInstrs::fixupKills(), llvm::X86InstrInfo::foldMemoryOperandImpl(), getDefRegMask(), llvm::MachineInstrExpressionTrait::getHashValue(), getInstReadLaneMask(), llvm::PPCInstrInfo::getInstrLatency(), llvm::getRegState(), llvm::RegBankSelect::getRepairCost(), llvm::hash_value(), hash_value, hasRegisterDependency(), INITIALIZE_PASS(), isCandidate(), llvm::WebAssembly::isChild(), llvm::MachineInstr::isIdenticalTo(), isIdenticalTo(), llvm::MachineInstr::isRegTiedToUseOperand(), isRenamable(), IsSafeAndProfitableToMove(), isValidRegDef(), MIIsInTerminatorSequence(), llvm::ARMBaseInstrInfo::optimizeCompareInstr(), llvm::LanaiInstrInfo::optimizeCompareInstr(), llvm::TargetInstrInfo::optimizeLoadInstr(), llvm::MachineInstr::print(), print(), printImplicitRegisterFlag(), printMI(), llvm::RegBankSelect::RepairingPlacement::RepairingPlacement(), llvm::RegBankSelect::repairReg(), rescheduleCanonically(), llvm::MachineInstr::setPhysRegsDeadExcept(), llvm::stableHashValue(), substPhysReg(), llvm::MachineInstr::tieOperands(), llvm::RegBankSelect::tryAvoidingSplit(), and UpdateCPSRUse().
|
inline |
Definition at line 448 of file MachineOperand.h.
References assert(), and isReg().
Referenced by canRenameMOP(), createDeadDef(), CreateReg(), dumpMachineInstrRangeWithSlotIndex(), getMopState(), and print().
|
inline |
isFI - Tests if this is a MO_FrameIndex operand.
Definition at line 341 of file MachineOperand.h.
References MO_FrameIndex.
Referenced by llvm::X86InstrInfo::describeLoadedValue(), llvm::SIRegisterInfo::eliminateFrameIndex(), llvm::TargetLoweringBase::emitPatchPoint(), getIndex(), llvm::SIInstrInfo::getMemOperandsWithOffsetWidth(), llvm::AArch64InstrInfo::getMemOperandWithOffsetWidth(), llvm::PPCInstrInfo::getMemOperandWithOffsetWidth(), llvm::RISCVInstrInfo::getMemOperandWithOffsetWidth(), isFIPlusImmOrVGPR(), llvm::SIInstrInfo::isImmOperandLegal(), isLdStSafeToCluster(), llvm::RISCVInstrInfo::isLdStSafeToPair(), llvm::SIInstrInfo::isLegalVSrcOperand(), llvm::HexagonInstrInfo::isLoadFromStackSlot(), llvm::SIInstrInfo::isOperandLegal(), isRegOrFI(), llvm::SIInstrInfo::isSGPRStackAccess(), llvm::SIInstrInfo::isStackAccess(), llvm::HexagonInstrInfo::isStoreToStackSlot(), LowerCallResults(), llvm::AArch64FrameLowering::orderFrameObjects(), llvm::SystemZELFFrameLowering::orderFrameObjects(), llvm::SIRegisterInfo::resolveFrameIndex(), setIndex(), llvm::AArch64InstrInfo::shouldClusterMemOps(), llvm::PPCInstrInfo::shouldClusterMemOps(), swapRegAndNonRegOperand(), UpdateOperandRegClass(), and llvm::SIInstrInfo::verifyInstruction().
|
inline |
isFPImm - Tests if this is a MO_FPImmediate operand.
Definition at line 337 of file MachineOperand.h.
References MO_FPImmediate.
Referenced by llvm::GISelInstProfileBuilder::addNodeIDMachineOperand(), getFPImm(), isCandidate(), llvm::HexagonInstrInfo::isConstExtended(), isSameScalarConst(), setFPImm(), and llvm::SIInstrInfo::verifyInstruction().
|
inline |
isGlobal - Tests if this is a MO_GlobalAddress operand.
Definition at line 349 of file MachineOperand.h.
References MO_GlobalAddress.
Referenced by llvm::X86FrameLowering::adjustForHiPEPrologue(), llvm::BTFDebug::beginInstruction(), createCall(), llvm::SIInstrInfo::expandPostRAPseudo(), llvm::getAddressFromInstr(), getGlobal(), getOffset(), llvm::R600InstrInfo::getSrcs(), GetSymbolFromOperand(), llvm::M68kMCInstLower::GetSymbolFromOperand(), GetSymbolRef(), getTag(), llvm::AsmPrinter::handleCallsiteForCallgraph(), llvm::BTFDebug::InstLower(), isAnImmediateOperand(), IsCallReturnTwice(), isCallToCFGuardFunction(), isCandidate(), llvm::HexagonInstrInfo::isConstExtended(), llvm::SIInstrInfo::isImmOperandLegal(), isImportedFunction(), llvm::SIInstrInfo::isLegalVSrcOperand(), llvm::SIInstrInfo::isOperandLegal(), isSameScalarConst(), isSignExtendedW(), isSignExtendedW(), llvm::PPCInstrInfo::isSignOrZeroExtended(), isSimilarDispOp(), isValidDispOp(), llvm::AVRMCInstLower::lowerSymbolOperand(), llvm::AArch64MCInstLower::lowerSymbolOperandELF(), llvm::WebAssembly::mayThrow(), llvm::LoongArchAsmPrinter::PrintAsmMemoryOperand(), llvm::AsmPrinter::PrintAsmOperand(), llvm::ARMAsmPrinter::PrintSymbolOperand(), llvm::AsmPrinter::PrintSymbolOperand(), queryCallee(), llvm::DetectRoundChange::runOnMachineFunction(), setOffset(), smallData(), and swapRegAndNonRegOperand().
| bool MachineOperand::isIdenticalTo | ( | const MachineOperand & | Other | ) | const |
Returns true if this operand is identical to the specified operand except for liveness related flags (isKill, isUndef and isDead).
isIdenticalTo - Return true if this operand is identical to the specified operand.
Note that this should stay in sync with the hash_value overload below.
Definition at line 331 of file MachineOperand.cpp.
References getBlockAddress(), getCFIIndex(), getCImm(), getFPImm(), getGlobal(), getImm(), getIndex(), getInstrRefInstrIndex(), getInstrRefOpIndex(), getIntrinsicID(), getLaneMask(), getMBB(), getMCSymbol(), getMetadata(), getMFIfAvailable(), getOffset(), getPredicate(), getReg(), getRegLiveOut(), getRegMask(), getRegMaskSize(), getShuffleMask(), getSubReg(), getSymbolName(), getTargetFlags(), getType(), isDef(), isRegMask(), llvm_unreachable, MO_BlockAddress, MO_CFIIndex, MO_CImmediate, MO_ConstantPoolIndex, MO_DbgInstrRef, MO_ExternalSymbol, MO_FPImmediate, MO_FrameIndex, MO_GlobalAddress, MO_Immediate, MO_IntrinsicID, MO_JumpTableIndex, MO_LaneMask, MO_MachineBasicBlock, MO_MCSymbol, MO_Metadata, MO_Predicate, MO_Register, MO_RegisterLiveOut, MO_RegisterMask, MO_ShuffleMask, MO_TargetIndex, llvm::Other, and TRI.
Referenced by llvm::X86InstrInfo::analyzeBranchPredicate(), llvm::AArch64InstrInfo::areMemAccessesTriviallyDisjoint(), llvm::LanaiInstrInfo::areMemAccessesTriviallyDisjoint(), llvm::PPCInstrInfo::areMemAccessesTriviallyDisjoint(), llvm::RISCVInstrInfo::areMemAccessesTriviallyDisjoint(), hasLoopCarriedMemDep(), isIdenticalOp(), llvm::MachineInstr::isIdenticalTo(), isImplicitOperandIn(), llvm::SIInstrInfo::isOperandLegal(), IsVPNOTEquivalent(), llvm::SwingSchedulerDAG::mayOverlapInLaterIter(), mayOverlapWrite(), llvm::ARMBaseInstrInfo::produceSameValue(), llvm::AArch64InstrInfo::shouldClusterMemOps(), and llvm::SIInstrInfo::verifyInstruction().
|
inline |
isImm - Tests if this is a MO_Immediate operand.
Definition at line 333 of file MachineOperand.h.
References MO_Immediate.
Referenced by addConstantComments(), llvm::GISelInstProfileBuilder::addNodeIDMachineOperand(), llvm::HexagonInstrInfo::analyzeCompare(), areCombinableOperations(), llvm::HexagonInstrInfo::areMemAccessesTriviallyDisjoint(), llvm::R600InstrInfo::buildSlotOfVectorInstruction(), canCompareBeNewValueJump(), llvm::LoongArchInstrInfo::canFoldIntoAddrMode(), llvm::RISCVInstrInfo::canFoldIntoAddrMode(), canInstrSubstituteCmpInstr(), llvm::checkVOPDRegConstraints(), collectInlineAsmInstrOperands(), llvm::PPCInstrInfo::combineRLWINM(), llvm::SIInstrInfo::commuteInstructionImpl(), llvm::SIRegisterInfo::eliminateFrameIndex(), llvm::WebAssemblyRegisterInfo::eliminateFrameIndex(), llvm::PPCFrameLowering::emitEpilogue(), llvm::GIMatchTableExecutor::executeMatchTable(), llvm::MachineInstr::findInlineAsmFlagIdx(), llvm::MachineInstr::findTiedOperandIdx(), llvm::AArch64TargetLowering::fixupPtrauthDiscriminator(), llvm::X86InstrInfo::getAddrModeFromMemoryOp(), llvm::HexagonInstrInfo::getBundleNoShuf(), llvm::HexagonInstrInfo::getCompoundOpcode(), llvm::SIInstrInfo::getConstValDefinedInReg(), llvm::X86InstrInfo::getConstValDefinedInReg(), getEffectiveImm(), llvm::TargetInstrInfo::getExtractSubregInputs(), llvm::R600InstrInfo::getFlagOp(), llvm::SIRegisterInfo::getFrameIndexInstrOffset(), getImm(), getImmedFromMO(), llvm::TargetInstrInfo::getInsertSubregInputs(), llvm::AArch64InstrInfo::getMemOpBaseRegImmOfsOffsetOperand(), llvm::X86InstrInfo::getMemOperandsWithOffsetWidth(), llvm::AArch64InstrInfo::getMemOperandWithOffsetWidth(), llvm::LanaiInstrInfo::getMemOperandWithOffsetWidth(), llvm::PPCInstrInfo::getMemOperandWithOffsetWidth(), llvm::RISCVInstrInfo::getMemOperandWithOffsetWidth(), getMinimumVLForVSLIDEDOWN_VX(), getRegImmPairPreventingCompression(), llvm::TargetInstrInfo::getRegSequenceInputs(), llvm::R600InstrInfo::getSrcs(), llvm::HexagonInstrInfo::immediateExtend(), indirectCopyToAGPR(), INITIALIZE_PASS(), llvm::PPCInstrInfo::isADDIInstrEligibleForFolding(), llvm::MipsInstrInfo::isAddImmediate(), isAddSub2RegAndConstOnePair(), isAnImmediateOperand(), isCandidate(), llvm::HexagonInstrInfo::isConstExtended(), isConvertibleLEA(), llvm::MachineInstr::isDebugOffsetImm(), isFIPlusImmOrVGPR(), isIdentityValue(), llvm::PPCInstrInfo::isImmInstrEligibleForFolding(), llvm::SIInstrInfo::isImmOperandLegal(), llvm::SIInstrInfo::isInlineConstant(), isInvariantStore(), llvm::RISCVInstrInfo::isLdStSafeToPair(), llvm::SIInstrInfo::isLegalVSrcOperand(), llvm::HexagonInstrInfo::isLoadFromStackSlot(), isLoadStoreThatCanHandleDisplacement(), llvm::SIInstrInfo::isOperandLegal(), isRelevantAddressingMode(), isSafeToFoldImmIntoCopy(), isSameScalarConst(), llvm::isScale(), isSimilarDispOp(), llvm::HexagonInstrInfo::isStoreToStackSlot(), isValidDispOp(), knownBitsForSBFE(), llvm::SIInstrInfo::legalizeOperandsVOP2(), llvm::MachineInstr::mayFoldInlineAsmRegOp(), llvm::SIInstrInfo::moveFlatAddrToVGPR(), llvm::SIInstrInfo::moveToVALUImpl(), needReorderStoreMI(), llvm::SIInstrInfo::optimizeCompareInstr(), llvm::TargetInstrInfo::PredicateInstruction(), llvm::MachineInstr::print(), llvm::BPFAsmPrinter::PrintAsmMemoryOperand(), llvm::LoongArchAsmPrinter::PrintAsmMemoryOperand(), llvm::MipsAsmPrinter::PrintAsmMemoryOperand(), llvm::AMDGPUAsmPrinter::PrintAsmOperand(), llvm::ARMAsmPrinter::PrintAsmOperand(), llvm::AsmPrinter::PrintAsmOperand(), llvm::LoongArchAsmPrinter::PrintAsmOperand(), llvm::MipsAsmPrinter::PrintAsmOperand(), llvm::X86AsmPrinter::PrintAsmOperand(), llvm::recomputeVPTBlockMask(), llvm::SIRegisterInfo::resolveFrameIndex(), llvm::HexagonInstrInfo::setBundleNoShuf(), setImm(), swapRegAndNonRegOperand(), llvm::X86InstrInfo::unfoldMemoryOperand(), verifyInsExtInstruction(), llvm::RISCVInstrInfo::verifyInstruction(), and llvm::SIInstrInfo::verifyInstruction().
|
inline |
Definition at line 392 of file MachineOperand.h.
References assert(), and isReg().
Referenced by llvm::GISelInstProfileBuilder::addNodeIDMachineOperand(), llvm::AggressiveAntiDepBreaker::BreakAntiDependencies(), canRenameMOP(), llvm::MachineInstr::copyImplicitOps(), llvm::HexagonHazardRecognizer::EmitInstruction(), llvm::PPCInstrInfo::getInstrLatency(), getMopState(), llvm::HexagonInstrInfo::getOperandLatency(), llvm::getRegState(), insertSEH(), isCandidate(), llvm::WebAssembly::isChild(), llvm::SIInstrInfo::isIgnorableUse(), isValidExcessOperand(), llvm::WebAssemblyMCInstLower::lower(), llvm::lowerLoongArchMachineOperandToMCOperand(), llvm::ARCMCInstLower::LowerOperand(), llvm::M68kMCInstLower::LowerOperand(), llvm::MipsMCInstLower::LowerOperand(), llvm::XCoreMCInstLower::LowerOperand(), LowerOperand(), llvm::AArch64MCInstLower::lowerOperand(), llvm::ARMAsmPrinter::lowerOperand(), llvm::CSKYMCInstLower::lowerOperand(), llvm::XtensaAsmPrinter::lowerOperand(), llvm::LowerPPCMachineOperandToMCOperand(), llvm::SIInstrInfo::physRegUsesConstantBus(), llvm::MachineInstr::print(), print(), printImplicitRegisterFlag(), printMI(), llvm::PPCInstrInfo::replaceInstrOperandWithImm(), llvm::tryFoldSPUpdateIntoPushPop(), llvm::SIInstrInfo::verifyInstruction(), and VerifyLowRegs().
|
inline |
Definition at line 443 of file MachineOperand.h.
References assert(), and isReg().
Referenced by CreateReg(), llvm::getRegState(), print(), and readsReg().
|
inline |
Definition at line 363 of file MachineOperand.h.
References MO_IntrinsicID.
Referenced by llvm::GIMatchTableExecutor::executeMatchTable(), getIntrinsicID(), and setIntrinsicID().
|
inline |
isJTI - Tests if this is a MO_JumpTableIndex operand.
Definition at line 347 of file MachineOperand.h.
References MO_JumpTableIndex.
Referenced by getIndex(), llvm::BPFInstrInfo::getJumpTableIndex(), getJumpTableIndexFromAddr(), GetSymbolRef(), GetSymbolRef(), llvm::HexagonInstrInfo::isConstExtended(), isSimilarDispOp(), isValidDispOp(), llvm::BPFMCInstLower::LowerSymbolOperand(), llvm::LanaiMCInstLower::LowerSymbolOperand(), llvm::M68kMCInstLower::LowerSymbolOperand(), llvm::MSP430MCInstLower::LowerSymbolOperand(), LowerSymbolOperand(), llvm::AVRMCInstLower::lowerSymbolOperand(), lowerSymbolOperand(), lowerSymbolOperand(), llvm::AArch64MCInstLower::lowerSymbolOperandCOFF(), llvm::AArch64MCInstLower::lowerSymbolOperandELF(), llvm::AArch64MCInstLower::lowerSymbolOperandMachO(), setIndex(), and smallData().
|
inline |
Definition at line 402 of file MachineOperand.h.
References assert(), and isReg().
Referenced by llvm::MachineInstr::addRegisterKilled(), ChangeToRegister(), llvm::MachineInstr::clearRegisterKills(), combineFPFusedMultiply(), llvm::PPCInstrInfo::combineRLWINM(), copyFlagsToImplicitVCC(), copyRegOperand(), CreateReg(), llvm::SIRegisterInfo::eliminateFrameIndex(), llvm::HexagonInstrInfo::expandPostRAPseudo(), llvm::MachineInstr::findRegisterUseOperandIdx(), llvm::PPCInstrInfo::foldFrameOffset(), llvm::SIInstrInfo::foldImmediate(), llvm::TargetInstrInfo::foldMemoryOperand(), llvm::AArch64InstrInfo::foldMemoryOperandImpl(), genAlternativeDpCodeSequence(), generateGatherLanePattern(), genFNegatedMAD(), genFusedMultiply(), genSubAdd2SubSub(), getMopState(), llvm::getRegState(), hash_value, insertDivByZeroTrap(), insertDivByZeroTrap(), isBackwardPropagatableCopy(), llvm::MachineInstr::isIdenticalTo(), llvm::PPCInstrInfo::isImmInstrEligibleForFolding(), isOperandKill(), llvm::PPCInstrInfo::isValidToBeChangedReg(), llvm::SIInstrInfo::legalizeOperandsVOP2(), llvm::TargetInstrInfo::lowerCopy(), preserveCondRegFlags(), print(), llvm::TargetInstrInfo::reassociateOps(), llvm::LiveVariables::removeVirtualRegistersKilled(), swapRegAndNonRegOperand(), UpdateCPSRUse(), and updateKillStatus().
|
inline |
Definition at line 366 of file MachineOperand.h.
References MO_LaneMask.
Referenced by getLaneMask().
|
inline |
isMBB - Tests if this is a MO_MachineBasicBlock operand.
Definition at line 339 of file MachineOperand.h.
References MO_MachineBasicBlock.
Referenced by llvm::HexagonInstrInfo::analyzeBranch(), llvm::PPCInstrInfo::analyzeBranch(), llvm::XtensaInstrInfo::analyzeBranch(), llvm::HexagonInstrInfo::getDotNewPredJumpOp(), getMBB(), llvm::M68kMCInstLower::GetSymbolFromOperand(), getTargetMBB(), llvm::HexagonInstrInfo::immediateExtend(), llvm::HexagonInstrInfo::isConstExtended(), isSimilarDispOp(), isValidDispOp(), llvm::M68kMCInstLower::LowerSymbolOperand(), LowerSymbolOperand(), lowerSymbolOperand(), lowerSymbolOperand(), llvm::TargetInstrInfo::PredicateInstruction(), setMBB(), and splitEdge().
|
inline |
Definition at line 360 of file MachineOperand.h.
References MO_MCSymbol.
Referenced by emitDirectiveRelocJalr(), llvm::MipsInstrInfo::genInstrWithNewOpc(), getMCSymbol(), getOffset(), isSimilarDispOp(), isValidDispOp(), isValidExcessOperand(), llvm::LoongArchAsmPrinter::PrintAsmMemoryOperand(), and setOffset().
|
inline |
isMetadata - Tests if this is a MO_Metadata operand.
Definition at line 359 of file MachineOperand.h.
References MO_Metadata.
Referenced by collectInlineAsmInstrOperands(), getMetadata(), isValidExcessOperand(), llvm::MachineInstr::print(), and setMetadata().
|
inline |
Definition at line 364 of file MachineOperand.h.
References MO_Predicate.
Referenced by llvm::GISelInstProfileBuilder::addNodeIDMachineOperand(), llvm::GIMatchTableExecutor::executeMatchTable(), getPredicate(), and setPredicate().
|
inline |
isReg - Tests if this is a MO_Register operand.
Definition at line 331 of file MachineOperand.h.
References MO_Register.
Referenced by llvm::GISelInstProfileBuilder::addNodeIDMachineOperand(), llvm::MachineInstr::addOperand(), llvm::MachineInstr::addRegisterDead(), llvm::MachineInstr::addRegisterKilled(), addTargetFlag(), llvm::ARMTargetLowering::AdjustInstrPostInstrSelection(), llvm::HexagonSubtarget::adjustSchedDependency(), llvm::MachineInstr::allDefsAreDead(), llvm::MachineInstr::allImplicitDefsAreDead(), llvm::AMDGPUResourceUsageAnalysisImpl::analyzeResourceUsage(), llvm::AnalyzeVirtRegInBundle(), llvm::HexagonSubtarget::BankConflictMutation::apply(), llvm::RegisterBankInfo::applyDefaultMapping(), llvm::BTFDebug::beginInstruction(), llvm::CriticalAntiDepBreaker::BreakAntiDependencies(), llvm::buildAtomicCompareExchangeInst(), llvm::buildEnqueueKernel(), llvm::BuildMI(), llvm::buildNDRange(), llvm::ScheduleDAGInstrs::buildSchedGraph(), llvm::ModuloScheduleExpanderMVE::canApply(), canCombine(), canCombine(), canCombine(), canCombineFPFusedMultiply(), llvm::HexagonInstrInfo::canExecuteInBundle(), llvm::AArch64InstrInfo::canFoldIntoAddrMode(), llvm::LoongArchInstrInfo::canFoldIntoAddrMode(), llvm::RISCVInstrInfo::canFoldIntoAddrMode(), llvm::HexagonPacketizerList::canPromoteToNewValueStore(), canRenameMOP(), canRenameUpToDef(), llvm::SIInstrInfo::canShrink(), ChangeToBA(), ChangeToCPI(), ChangeToDbgInstrRef(), ChangeToES(), ChangeToFPImmediate(), ChangeToFrameIndex(), ChangeToGA(), ChangeToImmediate(), ChangeToMCSymbol(), ChangeToRegister(), ChangeToTargetIndex(), llvm::checkVOPDRegConstraints(), llvm::MachineInstr::clearKillInfo(), llvm::MachineInstr::clearRegisterKills(), collectInlineAsmInstrOperands(), llvm::SIInstrInfo::commuteInstructionImpl(), CompressEVEXImpl(), llvm::RegBankSelect::computeMapping(), llvm::constrainSelectedInstRegOperands(), llvm::PPCInstrInfo::convertToImmediateForm(), llvm::MachineInstr::copyImplicitOps(), copyRegOperand(), createCall(), createCallWithOps(), llvm::X86InstrInfo::describeLoadedValue(), llvm::SIRegisterInfo::eliminateFrameIndex(), llvm::WebAssemblyRegisterInfo::eliminateFrameIndex(), emitIndirectDst(), llvm::HexagonHazardRecognizer::EmitInstruction(), llvm::SITargetLowering::EmitInstrWithCustomInserter(), llvm::ARMTargetLowering::EmitKCFICheck(), llvm::TargetLoweringBase::emitPatchPoint(), eraseGPOpnd(), llvm::GIMatchTableExecutor::executeMatchTable(), findDeadCallerSavedReg(), findDefIdx(), findNextInsertLocation(), llvm::MachineInstr::findRegisterDefOperandIdx(), llvm::MachineInstr::findRegisterUseOperandIdx(), llvm::MachineInstr::findTiedOperandIdx(), findUseIdx(), llvm::ScheduleDAGInstrs::fixupKills(), llvm::SwingSchedulerDAG::fixupRegisterOverlaps(), llvm::SIInstrInfo::foldImmediate(), llvm::X86InstrInfo::foldMemoryOperandImpl(), fuseInst(), llvm::getAddressFromInstr(), llvm::getBlockStructInstr(), getCallTargetRegOpnd(), getDefRegMask(), getFMAPatterns(), getFMULPatterns(), getFoldableImm(), getFPReg(), llvm::MachineInstrExpressionTrait::getHashValue(), getImmedFromMO(), getInstReadLaneMask(), llvm::PPCInstrInfo::getInstrLatency(), llvm::ARMRegisterBankInfo::getInstrMapping(), llvm::RISCVRegisterBankInfo::getInstrMapping(), llvm::RegisterBankInfo::getInstrMappingImpl(), llvm::SIInstrInfo::getInstructionUniformity(), getMaddPatterns(), llvm::HexagonInstrInfo::getMemOperandsWithOffsetWidth(), llvm::SIInstrInfo::getMemOperandsWithOffsetWidth(), llvm::X86InstrInfo::getMemOperandsWithOffsetWidth(), llvm::AArch64InstrInfo::getMemOperandWithOffsetWidth(), llvm::LanaiInstrInfo::getMemOperandWithOffsetWidth(), llvm::PPCInstrInfo::getMemOperandWithOffsetWidth(), llvm::RISCVInstrInfo::getMemOperandWithOffsetWidth(), llvm::ReachingDefInfo::getMIOperand(), llvm::HexagonInstrInfo::getOperandLatency(), llvm::SIInstrInfo::getOpSize(), getPostIncrementOperand(), getReg(), llvm::MachineInstr::getRegClassConstraintEffect(), getRegOrUndef(), llvm::getRegState(), llvm::RegBankSelect::getRepairCost(), getShuffleComment(), getSubReg(), getTag(), getTargetFlags(), llvm::getVRegSubRegDef(), hasLiveThroughUse(), llvm::RISCVInstrInfo::hasReassociableOperands(), llvm::TargetInstrInfo::hasReassociableOperands(), hasRegisterDependency(), llvm::MachineInstr::hasRegisterImplicitUseOperand(), hasSameBaseOpValue(), indirectCopyToAGPR(), INITIALIZE_PASS(), INITIALIZE_PASS(), INITIALIZE_PASS(), llvm::MachineInstr::insert(), insertSEH(), llvm::ARMBaseInstrInfo::isAddImmediate(), llvm::MipsInstrInfo::isAddImmediate(), llvm::RISCVInstrInfo::isAddImmediate(), isArithmeticBccPair(), llvm::GIMatchTableExecutor::isBaseWithConstantOffset(), isCandidate(), llvm::WebAssembly::isChild(), isConstReg(), isDead(), isDebug(), isDef(), isEarlyClobber(), isFIPlusImmOrVGPR(), isIdenticalOp(), llvm::MachineInstr::isIdenticalTo(), llvm::PPCInstrInfo::isImmInstrEligibleForFolding(), isImplicit(), llvm::MachineInstr::isIndirectDebugValue(), isInternalRead(), isInvariantStore(), isKill(), isLdStSafeToCluster(), llvm::RISCVInstrInfo::isLdStSafeToPair(), llvm::SIInstrInfo::isLegalGFX12PlusPackedMathFP32Operand(), llvm::SIInstrInfo::isLegalRegOperand(), llvm::SIInstrInfo::isLegalRegOperand(), llvm::HexagonPacketizerList::isLegalToPacketizeTogether(), llvm::SIInstrInfo::isLegalToSwap(), llvm::SIInstrInfo::isLegalVSrcOperand(), isLogicalOpOnExec(), llvm::SMSchedule::isLoopCarriedDefOfUse(), isMatchingStartStopPair(), isMMSourceRegister(), isMMThreeBitGPRegister(), llvm::GIMatchTableExecutor::isOperandImmEqual(), llvm::SIInstrInfo::isOperandLegal(), llvm::M68kInstrInfo::isPCRelRegisterOperandLegal(), isPhysical(), isRedundantFlagInstr(), isRegInClass(), isRegisterLiveInCall(), isRegOrFI(), llvm::MachineInstr::isRegTiedToDefOperand(), llvm::MachineInstr::isRegTiedToUseOperand(), isRelevantAddressingMode(), isRenamable(), IsSafeAndProfitableToMove(), isSVERegOp(), isTied(), isTileDef(), isTileDef(), isTileRegDef(), llvm::HexagonInstrInfo::isToBeScheduledASAP(), isTwoAddrUse(), isUndef(), isUse(), isValidExcessOperand(), isValidReg(), isVirtualRegisterOperand(), knownBitsForSBFE(), llvm::SIInstrInfo::legalizeOperands(), llvm::SIInstrInfo::legalizeOperandsVOP2(), llvm::SIInstrInfo::legalizeOperandsVOP3(), llvm::SIInstrInfo::legalizeOpWithMove(), llvm::WebAssemblyMCInstLower::lower(), LowerCallResults(), lowerRISCVVMachineInstrToMCInst(), llvm::MIPatternMatch::operand_type_match::match(), llvm::CombinerHelper::matchConstantFPOp(), llvm::CombinerHelper::matchConstantOp(), llvm::CombinerHelper::matchEqualDefs(), llvm::CombinerHelper::matchHoistLogicOpWithSameOpcodeHands(), llvm::CombinerHelper::matchOperandIsUndef(), llvm::SwingSchedulerDAG::mayOverlapInLaterIter(), mergeOperations(), MIIsInTerminatorSequence(), llvm::PeelingModuloScheduleExpander::moveStageBetweenBlocks(), oneUseDominatesOtherUses(), llvm::ARMBaseInstrInfo::optimizeCompareInstr(), llvm::LanaiInstrInfo::optimizeCompareInstr(), llvm::SIInstrInfo::optimizeCompareInstr(), llvm::TargetInstrInfo::optimizeLoadInstr(), llvm::TargetInstrInfo::PredicateInstruction(), llvm::MachineInstr::print(), llvm::ARMAsmPrinter::PrintAsmMemoryOperand(), llvm::BPFAsmPrinter::PrintAsmMemoryOperand(), llvm::CSKYAsmPrinter::PrintAsmMemoryOperand(), llvm::LoongArchAsmPrinter::PrintAsmMemoryOperand(), llvm::MipsAsmPrinter::PrintAsmMemoryOperand(), llvm::AMDGPUAsmPrinter::PrintAsmOperand(), llvm::ARMAsmPrinter::PrintAsmOperand(), llvm::AsmPrinter::PrintAsmOperand(), llvm::HexagonAsmPrinter::PrintAsmOperand(), llvm::MipsAsmPrinter::PrintAsmOperand(), llvm::SystemZAsmPrinter::PrintAsmOperand(), llvm::X86AsmPrinter::PrintAsmOperand(), printMI(), producesFalseLanesZero(), llvm::PPCInstrInfo::promoteInstr32To64ForElimEXTSW(), readsReg(), llvm::MachineInstr::readsWritesVirtualRegister(), TransferTracker::redefVar(), removeRegisterOperands(), llvm::LiveVariables::removeVirtualRegistersKilled(), llvm::RegBankSelect::RepairingPlacement::RepairingPlacement(), rescheduleCanonically(), llvm::R600SchedStrategy::schedNode(), setImplicit(), setIsDead(), setIsDebug(), setIsDef(), setIsEarlyClobber(), setIsInternalRead(), setIsKill(), setIsRenamable(), setIsUndef(), llvm::MachineInstr::setPhysRegsDeadExcept(), setSubReg(), setTargetFlags(), llvm::AArch64InstrInfo::shouldClusterMemOps(), llvm::PPCInstrInfo::shouldClusterMemOps(), SinkingPreventsImplicitNullCheck(), llvm::MachineInstr::substituteRegister(), llvm::tryFoldSPUpdateIntoPushPop(), llvm::X86InstrInfo::unfoldMemoryOperand(), llvm::MachineInstr::untieRegOperand(), UpdateCPSRDef(), UpdateCPSRUse(), updateKillStatus(), UpdateOperandRegClass(), updateOperandRegConstraints(), UseReg(), llvm::SIInstrInfo::usesConstantBus(), llvm::RegisterBankInfo::InstructionMapping::verify(), llvm::RISCVInstrInfo::verifyInstruction(), llvm::SIInstrInfo::verifyInstruction(), VerifyLowRegs(), and llvm::MachineRegisterInfo::verifyUseList().
|
inline |
isRegLiveOut - Tests if this is a MO_RegisterLiveOut operand.
Definition at line 357 of file MachineOperand.h.
References MO_RegisterLiveOut.
Referenced by getRegLiveOut().
|
inline |
isRegMask - Tests if this is a MO_RegisterMask operand.
Definition at line 355 of file MachineOperand.h.
References MO_RegisterMask.
Referenced by llvm::MachineInstr::copyImplicitOps(), llvm::MachineInstr::findRegisterDefOperandIdx(), llvm::ScheduleDAGInstrs::fixupKills(), getRegMask(), llvm::hash_value(), isIdenticalTo(), isValidExcessOperand(), llvm::ARMBaseInstrInfo::optimizeCompareInstr(), llvm::LanaiInstrInfo::optimizeCompareInstr(), llvm::MachineInstr::setPhysRegsDeadExcept(), setRegMask(), llvm::MIRParserImpl::setupRegisterInfo(), and llvm::stableHashValue().
| bool MachineOperand::isRenamable | ( | ) | const |
isRenamable - Returns true if this register may be renamed, i.e.
it does not generate a value that is somehow read in a way that is not represented by the Machine IR (e.g. to meet an ABI or ISA requirement). This is only valid on physical register operands. Virtual registers are assumed to always be renamable regardless of the value of this field.
Operands that are renamable can freely be changed to any other register that is a member of the register class returned by MI->getRegClassConstraint().
isRenamable can return false for several different reasons:
Definition at line 123 of file MachineOperand.cpp.
References assert(), getParent(), getReg(), llvm::MachineInstr::IgnoreBundle, isDef(), isPhysical(), isReg(), isUse(), MachineInstr, and MI.
Referenced by canRenameMOP(), CreateReg(), getMopState(), llvm::getRegState(), isBackwardPropagatableCopy(), llvm::TargetInstrInfo::lowerCopy(), and print().
|
inline |
Definition at line 365 of file MachineOperand.h.
References MO_ShuffleMask.
Referenced by getShuffleMask().
|
inline |
isSymbol - Tests if this is a MO_ExternalSymbol operand.
Definition at line 351 of file MachineOperand.h.
References MO_ExternalSymbol.
Referenced by eliminateMove(), getOffset(), GetSymbolFromOperand(), llvm::M68kMCInstLower::GetSymbolFromOperand(), getSymbolName(), getTag(), llvm::AsmPrinter::handleCallsiteForCallgraph(), isCandidate(), llvm::HexagonInstrInfo::isConstExtended(), isSimilarDispOp(), isValidDispOp(), llvm::AArch64MCInstLower::lowerSymbolOperandELF(), llvm::matchLibcall(), llvm::WebAssembly::mayThrow(), optimizeCall(), and setOffset().
|
inline |
isTargetIndex - Tests if this is a MO_TargetIndex operand.
Definition at line 345 of file MachineOperand.h.
References MO_TargetIndex.
Referenced by getIndex(), getOffset(), llvm::SIInstrInfo::isImmOperandLegal(), llvm::SIInstrInfo::isLegalVSrcOperand(), llvm::SIInstrInfo::isOperandLegal(), setIndex(), and setOffset().
|
inline |
Definition at line 453 of file MachineOperand.h.
References assert(), and isReg().
Referenced by canRenameMOP(), ChangeToBA(), ChangeToCPI(), ChangeToDbgInstrRef(), ChangeToES(), ChangeToFPImmediate(), ChangeToFrameIndex(), ChangeToGA(), ChangeToImmediate(), ChangeToMCSymbol(), ChangeToTargetIndex(), llvm::TargetLoweringBase::emitPatchPoint(), llvm::MachineInstr::findTiedOperandIdx(), llvm::MachineInstr::insert(), llvm::MachineInstr::isRegTiedToDefOperand(), llvm::MachineInstr::isRegTiedToUseOperand(), isTiedToNotUndef(), lowerRISCVVMachineInstrToMCInst(), llvm::MachineInstr::print(), print(), llvm::MachineInstr::tieOperands(), and llvm::MachineInstr::untieRegOperand().
|
inline |
Definition at line 407 of file MachineOperand.h.
References assert(), and isReg().
Referenced by llvm::MachineInstr::addRegisterKilled(), llvm::ScheduleDAGInstrs::addVRegDefDeps(), allPhiOperandsUndefined(), ChangeToRegister(), copyFlagsToImplicitVCC(), copyRegOperand(), createCallWithOps(), CreateReg(), llvm::SIRegisterInfo::eliminateFrameIndex(), emitLoadM0FromVGPRLoop(), llvm::HexagonInstrInfo::expandPostRAPseudo(), expandSHXDROT(), findUseBetween(), llvm::TargetInstrInfo::foldMemoryOperand(), llvm::AArch64InstrInfo::foldMemoryOperandImpl(), llvm::TargetInstrInfo::getExtractSubregInputs(), llvm::ARMBaseInstrInfo::getExtractSubregLikeInputs(), llvm::TargetInstrInfo::getInsertSubregInputs(), llvm::ARMBaseInstrInfo::getInsertSubregLikeInputs(), getInstReadLaneMask(), getMopState(), getRegOrUndef(), llvm::TargetInstrInfo::getRegSequenceInputs(), llvm::ARMBaseInstrInfo::getRegSequenceLikeInputs(), llvm::getRegState(), llvm::getVRegSubRegDef(), hash_value, llvm::HexagonInstrInfo::insertBranch(), isTiedToNotUndef(), llvm::TargetInstrInfo::lowerCopy(), mergeOperations(), preserveCondRegFlags(), print(), readsReg(), llvm::MachineInstr::readsWritesVirtualRegister(), llvm::MachineBasicBlock::SplitCriticalEdge(), swapRegAndNonRegOperand(), UpdateCPSRDef(), and UpdateCPSRUse().
|
inline |
Definition at line 382 of file MachineOperand.h.
References assert(), and isReg().
Referenced by llvm::MachineInstr::addOperand(), llvm::ScheduleDAGInstrs::addPhysRegDeps(), llvm::MachineInstr::addRegisterKilled(), llvm::HexagonSubtarget::adjustSchedDependency(), llvm::MachineInstr::allDefsAreDead(), llvm::MachineInstr::allImplicitDefsAreDead(), llvm::CriticalAntiDepBreaker::BreakAntiDependencies(), llvm::ScheduleDAGInstrs::buildSchedGraph(), llvm::MachineInstr::clearKillInfo(), llvm::MachineInstr::clearRegisterKills(), llvm::constrainOperandRegClass(), llvm::constrainOperandRegClass(), llvm::constrainSelectedInstRegOperands(), copyRegOperand(), llvm::MachineInstr::findRegisterUseOperandIdx(), llvm::MachineInstr::findTiedOperandIdx(), llvm::SwingSchedulerDAG::fixupRegisterOverlaps(), getCallTargetRegOpnd(), getInstReadLaneMask(), hasRegisterDependency(), llvm::MachineInstr::hasRegisterImplicitUseOperand(), isRegisterLiveInCall(), llvm::MachineInstr::isRegTiedToDefOperand(), isRenamable(), isTwoAddrUse(), isValidRegUse(), producesFalseLanesZero(), readsReg(), llvm::MachineInstr::readsWritesVirtualRegister(), llvm::MachineInstr::tieOperands(), UpdateCPSRDef(), and llvm::SIInstrInfo::verifyInstruction().
|
inline |
Return true if this operand can validly be appended to an arbitrary operand list.
i.e. this behaves like an implicit operand.
Definition at line 477 of file MachineOperand.h.
References isImplicit(), isMCSymbol(), isMetadata(), isReg(), and isRegMask().
| void MachineOperand::print | ( | raw_ostream & | os, |
| const TargetRegisterInfo * | TRI = nullptr ) const |
Print the MachineOperand to os.
Providing a valid TRI results in a more target-specific printing. If TRI is null, the function will try to pick it up from the parent.
Definition at line 800 of file MachineOperand.cpp.
Referenced by llvm::operator<<(), llvm::MachineInstr::print(), print(), and print().
| void MachineOperand::print | ( | raw_ostream & | os, |
| LLT | TypeToPrint, | ||
| const TargetRegisterInfo * | TRI = nullptr ) const |
Same as print(os, TRI), but allows to specify the low-level type to be printed the same way the full version of print(...) does it.
Definition at line 805 of file MachineOperand.cpp.
References print(), TRI, and tryToGetTargetInfo().
| void MachineOperand::print | ( | raw_ostream & | os, |
| ModuleSlotTracker & | MST, | ||
| LLT | TypeToPrint, | ||
| std::optional< unsigned > | OpIdx, | ||
| bool | PrintDef, | ||
| bool | IsStandalone, | ||
| bool | ShouldPrintRegisterTies, | ||
| unsigned | TiedOperandIdx, | ||
| const TargetRegisterInfo * | TRI ) const |
More complex way of printing a MachineOperand.
| TypeToPrint | specifies the generic type to be printed on uses and defs. It can be determined using MachineInstr::getTypeToPrint. |
| OpIdx | - specifies the index of the operand in machine instruction. This will be used by target dependent MIR formatter. Could be std::nullopt if the index is unknown, e.g. called by dump(). |
| PrintDef | - whether we want to print def on an operand which isDef. Sometimes, if the operand is printed before '=', we don't print def. |
| IsStandalone | - whether we want a verbose output of the MO. This prints extra information that can be easily inferred when printing the whole function, but not when printing only a fragment of it. |
| ShouldPrintRegisterTies | - whether we want to print register ties. Sometimes they are easily determined by the instruction's descriptor (MachineInstr::hasComplexRegiterTies can determine if it's needed). |
| TiedOperandIdx | - if we need to print register ties this needs to provide the index of the tied register. If not, it will be ignored. |
| TRI | - provide more target-specific information to the printer. Unlike the previous function, this one will not try and get the information from it's parent. |
Definition at line 815 of file MachineOperand.cpp.
References assert(), llvm::Intrinsic::getBaseName(), getBlockAddress(), getCFIIndex(), getCImm(), getFPImm(), llvm::BlockAddress::getFunction(), getGlobal(), getImm(), getIndex(), getInstrRefInstrIndex(), getInstrRefOpIndex(), getIntrinsicID(), getLaneMask(), getMBB(), getMCSymbol(), getMetadata(), getMFIfAvailable(), getOffset(), getParent(), getPredicate(), getReg(), getRegLiveOut(), getRegMask(), getShuffleMask(), getSubReg(), getSymbolName(), getTargetIndexName(), getType(), isDead(), isDef(), isEarlyClobber(), isImplicit(), isInternalRead(), llvm::CmpInst::isIntPredicate(), isKill(), isPhysical(), isRenamable(), isTied(), isUndef(), llvm::LLT::isValid(), MachineRegisterInfo, MO_BlockAddress, MO_CFIIndex, MO_CImmediate, MO_ConstantPoolIndex, MO_DbgInstrRef, MO_ExternalSymbol, MO_FPImmediate, MO_FrameIndex, MO_GlobalAddress, MO_Immediate, MO_IntrinsicID, MO_JumpTableIndex, MO_LaneMask, MO_MachineBasicBlock, MO_MCSymbol, MO_Metadata, MO_Predicate, MO_Register, MO_RegisterLiveOut, MO_RegisterMask, MO_ShuffleMask, MO_TargetIndex, MRI, OpIdx, llvm::Metadata::printAsOperand(), llvm::Value::printAsOperand(), printCFI(), printFrameIndex(), llvm::MIRFormatter::printImm(), printIRBlockReference(), llvm::printJumpTableEntryReference(), llvm::PrintLaneMask(), llvm::printLLVMNameWithoutPrefix(), llvm::printMBBReference(), printOperandOffset(), llvm::printReg(), llvm::printRegClassOrBank(), PrintRegMaskNumRegs, printSymbol(), printTargetFlags(), SubReg, TII, and TRI.
|
static |
Print an IRSlotNumber.
Definition at line 673 of file MachineOperand.cpp.
Referenced by printIRBlockReference(), and llvm::MIRFormatter::printIRValue().
|
static |
Print the offset with explicit +/- signs.
Definition at line 663 of file MachineOperand.cpp.
References llvm::Offset.
Referenced by llvm::MachineMemOperand::print(), and print().
|
static |
Print a stack object reference.
Definition at line 650 of file MachineOperand.cpp.
Referenced by llvm::yaml::ScalarTraits< FrameIndex >::output(), printFrameIndex(), and printStackObjectReference().
|
static |
Print a subreg index operand.
MO_Immediate operands can also be subreg idices. If it's the case, the subreg index name will be printed. MachineInstr::isOperandSubregIdx can be called to check this.
Definition at line 585 of file MachineOperand.cpp.
References TRI.
Referenced by llvm::MachineInstr::print(), and printMIOperand().
|
static |
Print a MCSymbol as an operand.
Definition at line 646 of file MachineOperand.cpp.
Referenced by llvm::MachineInstr::print(), print(), printCFI(), and printMI().
|
static |
Print operand target flags.
Definition at line 594 of file MachineOperand.cpp.
References assert(), llvm::TargetSubtargetInfo::getInstrInfo(), getMFIfAvailable(), llvm::MachineFunction::getSubtarget(), getTargetFlagName(), and TII.
Referenced by print(), and printMIOperand().
|
inline |
readsReg - Returns true if this operand reads the previous value of its register.
A use operand with the <undef> flag set doesn't read its register. A sub-register def implicitly reads the other parts of the register being redefined unless the <undef> flag is set.
This refers to reading the register value from before the current instruction or bundle. Internal bundle reads are not included.
Definition at line 470 of file MachineOperand.h.
References assert(), getSubReg(), isInternalRead(), isReg(), isUndef(), and isUse().
Referenced by llvm::AnalyzeVirtRegInBundle(), llvm::ScheduleDAGInstrs::buildSchedGraph(), findUseIdx(), llvm::ARMBaseInstrInfo::getPartialRegUpdateClearance(), and llvm::X86InstrInfo::getPartialRegUpdateClearance().
|
inline |
Definition at line 699 of file MachineOperand.h.
References assert(), and isCImm().
Referenced by widenCImmType(), and llvm::LegalizerHelper::widenScalar().
|
inline |
Definition at line 704 of file MachineOperand.h.
|
inline |
Definition at line 694 of file MachineOperand.h.
References assert(), and isImm().
Referenced by llvm::R600InstrInfo::addFlag(), llvm::SwingSchedulerDAG::applyInstrChange(), llvm::R600InstrInfo::buildSlotOfVectorInstruction(), llvm::R600InstrInfo::clearFlag(), llvm::ARMBaseInstrInfo::commuteInstructionImpl(), llvm::X86InstrInfo::commuteInstructionImpl(), llvm::SIRegisterInfo::eliminateFrameIndex(), llvm::WebAssemblyRegisterInfo::eliminateFrameIndex(), llvm::AArch64PrologueEpilogueCommon::fixupCalleeSaveRestoreStackOffset(), llvm::AArch64TargetLowering::fixupPtrauthDiscriminator(), llvm::SwingSchedulerDAG::fixupRegisterOverlaps(), llvm::fixupSEHOpcode(), llvm::PPCInstrInfo::foldFrameOffset(), foldInlineAsmMemOperand(), foldInlineAsmMemOperand(), llvm::R600InstrInfo::insertBranch(), llvm::PPCInstrInfo::optimizeCompareInstr(), llvm::ARMBaseInstrInfo::PredicateInstruction(), llvm::TargetInstrInfo::PredicateInstruction(), llvm::SystemZInstrInfo::prepareCompareSwapOperands(), llvm::recomputeVPTBlockMask(), llvm::SIInstrInfo::reMaterialize(), llvm::SIRegisterInfo::resolveFrameIndex(), llvm::R600InstrInfo::reverseBranchCondition(), llvm::HexagonInstrInfo::setBundleNoShuf(), swapImmOperands(), llvm::SIInstrInfo::swapSourceModifiers(), updateOperandIfDifferent(), and updateOperands().
|
inline |
Definition at line 518 of file MachineOperand.h.
References assert(), and isReg().
Referenced by llvm::X86InstrInfo::classifyLEAReg(), llvm::SIInstrInfo::insertVectorSelect(), makeImplicit(), llvm::ARMBaseInstrInfo::optimizeSelect(), and llvm::LanaiInstrInfo::optimizeSelect().
|
inline |
Definition at line 717 of file MachineOperand.h.
References assert(), isCPI(), isFI(), isJTI(), and isTargetIndex().
Referenced by ChangeToCPI(), ChangeToFrameIndex(), and ChangeToTargetIndex().
|
inline |
Definition at line 728 of file MachineOperand.h.
References assert(), and isDbgInstrRef().
Referenced by ChangeToDbgInstrRef().
|
inline |
Definition at line 732 of file MachineOperand.h.
References assert(), isDbgInstrRef(), and OpIdx.
Referenced by ChangeToDbgInstrRef().
|
inline |
Definition at line 751 of file MachineOperand.h.
References assert(), and isIntrinsicID().
|
inline |
Definition at line 529 of file MachineOperand.h.
References assert(), and isReg().
Referenced by llvm::MachineInstr::addRegisterDead(), buildScratchExecCopy(), llvm::MachineInstr::clearRegisterDeads(), copyRegOperand(), llvm::SystemZInstrInfo::foldMemoryOperandImpl(), handleNDDOrNFInstructions(), llvm::SIInstrInfo::insertScratchExecCopy(), maybeRewriteToDrop(), llvm::X86InstrInfo::optimizeCompareInstr(), llvm::SGPRSpillBuilder::readWriteTmpVGPR(), llvm::X86FrameLowering::restoreWin32EHStackPointers(), llvm::MachineInstrBuilder::setOperandDead(), llvm::MachineInstr::setPhysRegsDeadExcept(), llvm::X86InstrInfo::setSpecialOperandAttr(), and transferDeadCC().
|
inline |
Definition at line 551 of file MachineOperand.h.
References assert(), and isReg().
Referenced by llvm::MachineInstr::addOperand().
| void MachineOperand::setIsDef | ( | bool | Val = true | ) |
Change a def to a use, or a use to a def.
Definition at line 106 of file MachineOperand.cpp.
References assert(), getMFIfAvailable(), isDebug(), isReg(), MachineRegisterInfo, and MRI.
Referenced by llvm::ARMTargetLowering::AdjustInstrPostInstrSelection(), llvm::RevertLoopDec(), and setIsUse().
|
inline |
Definition at line 546 of file MachineOperand.h.
References assert(), and isReg().
Referenced by llvm::MachineInstr::addOperand().
|
inline |
Definition at line 541 of file MachineOperand.h.
References assert(), and isReg().
Referenced by llvm::TargetInstrInfo::commuteInstructionImpl().
|
inline |
Definition at line 523 of file MachineOperand.h.
References assert(), isDebug(), and isReg().
Referenced by llvm::ScheduleDAGInstrs::addPhysRegDeps(), llvm::MachineInstr::addRegisterKilled(), clearKillFlags(), llvm::MachineInstr::clearKillInfo(), llvm::MachineInstr::clearRegisterKills(), llvm::PPCInstrInfo::combineRLWINM(), llvm::TargetInstrInfo::commuteInstructionImpl(), llvm::R600InstrInfo::copyPhysReg(), copyRegOperand(), llvm::SIRegisterInfo::eliminateFrameIndex(), llvm::SIInstrInfo::foldImmediate(), llvm::SIInstrInfo::insertBranch(), insertDivByZeroTrap(), insertDivByZeroTrap(), llvm::X86InstrInfo::loadStoreTileReg(), LowerMemcpy(), LowerMemset(), MoveVPNOTBeforeFirstUser(), llvm::AArch64InstrInfo::optimizeCondBranch(), preserveCondRegFlags(), llvm::LiveVariables::removeVirtualRegistersKilled(), llvm::ARMBlockPlacement::revertWhileToDoLoop(), llvm::X86InstrInfo::unfoldMemoryOperand(), and updateKillStatus().
| void MachineOperand::setIsRenamable | ( | bool | Val = true | ) |
Definition at line 141 of file MachineOperand.cpp.
References assert(), getReg(), isPhysical(), and isReg().
Referenced by llvm::TargetInstrInfo::commuteInstructionImpl(), llvm::SIRegisterInfo::eliminateFrameIndex(), and llvm::ARMTargetLowering::EmitKCFICheck().
|
inline |
Definition at line 534 of file MachineOperand.h.
References assert(), and isReg().
Referenced by llvm::ScheduleDAGInstrs::addVRegDefDeps(), llvm::TargetInstrInfo::commuteInstructionImpl(), copyRegOperand(), llvm::SITargetLowering::EmitInstrWithCustomInserter(), llvm::SIInstrInfo::expandPostRAPseudo(), llvm::X86InstrInfo::expandPostRAPseudo(), llvm::AArch64InstrInfo::foldMemoryOperandImpl(), llvm::SIInstrInfo::insertBranch(), mergeOperations(), preserveCondRegFlags(), llvm::MachineInstr::setRegisterDefReadUndef(), and substPhysReg().
|
inline |
Definition at line 513 of file MachineOperand.h.
References setIsDef().
|
inline |
Definition at line 737 of file MachineOperand.h.
References assert(), isMBB(), and MBB.
Referenced by llvm::CombinerHelper::applyOptBrCondByInvertingCond(), llvm::LoongArchInstrInfo::insertIndirectBranch(), llvm::AMDGPULegalizerInfo::legalizeIntrinsic(), llvm::PeelingModuloScheduleExpander::moveStageBetweenBlocks(), llvm::TargetInstrInfo::PredicateInstruction(), llvm::MachineBasicBlock::replacePhiUsesWith(), splitEdge(), and updatePHIs().
Definition at line 723 of file MachineOperand.h.
References assert(), and isMetadata().
Referenced by llvm::salvageDebugInfoForDbgValue(), and llvm::updateDbgValueForSpill().
|
inline |
Definition at line 709 of file MachineOperand.h.
References assert(), isBlockAddress(), isCPI(), isGlobal(), isMCSymbol(), isSymbol(), isTargetIndex(), and llvm::Offset.
Referenced by ChangeToBA(), ChangeToCPI(), ChangeToES(), ChangeToGA(), ChangeToTargetIndex(), and llvm::SIInstrInfo::expandPostRAPseudo().
|
inline |
Definition at line 756 of file MachineOperand.h.
References assert(), and isPredicate().
Referenced by llvm::CombinerHelper::applyNotCmp().
| void MachineOperand::setReg | ( | Register | Reg | ) |
Change the register this operand corresponds to.
Definition at line 60 of file MachineOperand.cpp.
References getMFIfAvailable(), getReg(), MachineRegisterInfo, and MRI.
Referenced by llvm::ARMTargetLowering::AdjustInstrPostInstrSelection(), llvm::CombinerHelper::applyCombineExtendingLoads(), llvm::RegisterBankInfo::applyDefaultMapping(), llvm::SwingSchedulerDAG::applyInstrChange(), llvm::CombinerHelper::applyOptBrCondByInvertingCond(), llvm::LegalizerHelper::bitcastDst(), llvm::R600InstrInfo::buildSlotOfVectorInstruction(), castBufferRsrcArgToV4I32(), castBufferRsrcFromV4I32(), cloneInstr(), llvm::WebAssemblyDebugValueManager::cloneSink(), llvm::TargetInstrInfo::commuteInstructionImpl(), llvm::constrainOperandRegClass(), RegBankSelectHelper::constrainRegBankUse(), copyRegOperand(), copySubReg(), llvm::SIRegisterInfo::eliminateFrameIndex(), llvm::SITargetLowering::EmitInstrWithCustomInserter(), llvm::M68kInstrInfo::ExpandCCR(), llvm::M68kInstrInfo::ExpandMOVI(), ExpandMOVImmSExti8(), llvm::M68kInstrInfo::ExpandMOVSZX_RM(), llvm::M68kInstrInfo::ExpandMOVX_RR(), expandNOVLXLoad(), expandNOVLXStore(), llvm::X86InstrInfo::expandPostRAPseudo(), llvm::AArch64TargetLowering::fixupPtrauthDiscriminator(), llvm::SwingSchedulerDAG::fixupRegisterOverlaps(), llvm::SIInstrInfo::foldImmediate(), llvm::X86InstrInfo::foldMemoryOperandImpl(), genAlternativeDpCodeSequence(), llvm::insertAssignInstr(), llvm::SPIRVTargetLowering::insertLogicalCopyOnResult(), llvm::RISCVLegalizerInfo::legalizeCustom(), llvm::SIInstrInfo::legalizeOperands(), llvm::SIInstrInfo::legalizeOperandsFLAT(), llvm::SIInstrInfo::legalizeOperandsSMRD(), llvm::X86InstrInfo::loadStoreTileReg(), llvm::X86CallLowering::lowerCall(), maybeRewriteToDrop(), llvm::LegalizerHelper::moreElementsVector(), llvm::LegalizerHelper::moreElementsVectorDst(), llvm::LegalizerHelper::moreElementsVectorSrc(), llvm::PeelingModuloScheduleExpander::moveStageBetweenBlocks(), llvm::SIInstrInfo::moveToVALUImpl(), llvm::LegalizerHelper::narrowScalar(), llvm::LegalizerHelper::narrowScalarDst(), llvm::LegalizerHelper::narrowScalarSrc(), llvm::PeelSingleBlockLoop(), llvm::R600InstrInfo::PredicateInstruction(), llvm::TargetInstrInfo::PredicateInstruction(), RegBankSelectHelper::reAssignRegBankOnDef(), reinsertVectorIndexAdd(), llvm::SIInstrInfo::reMaterialize(), llvm::CombinerHelper::replaceRegOpWith(), llvm::R600InstrInfo::reverseBranchCondition(), llvm::salvageDebugInfoForDbgValue(), selectCopy(), substituteSimpleCopyRegs(), substPhysReg(), substVirtReg(), llvm::LegalizerHelper::widenScalarDst(), and llvm::LegalizerHelper::widenScalarSrc().
Sets value of register mask operand referencing Mask.
The operand does not take ownership of the memory referenced by Mask, it must remain valid for the lifetime of the operand. See CreateRegMask(). Any physreg with a 0 bit in the mask is clobbered by the instruction.
Definition at line 746 of file MachineOperand.h.
References assert(), and isRegMask().
|
inline |
Definition at line 493 of file MachineOperand.h.
References assert(), and isReg().
Referenced by llvm::TargetInstrInfo::commuteInstructionImpl(), copyRegOperand(), llvm::SIInstrInfo::foldImmediate(), llvm::AArch64InstrInfo::foldMemoryOperandImpl(), llvm::X86InstrInfo::foldMemoryOperandImpl(), INITIALIZE_PASS(), insertDivByZeroTrap(), llvm::SIInstrInfo::legalizeOperandsVOP2(), llvm::SIInstrInfo::moveToVALUImpl(), llvm::AArch64InstrInfo::optimizeCondBranch(), llvm::SIInstrInfo::reMaterialize(), substPhysReg(), substVirtReg(), and swapRegAndNonRegOperand().
|
inline |
Definition at line 232 of file MachineOperand.h.
References assert(), F, and isReg().
Referenced by ChangeToBA(), ChangeToCPI(), ChangeToDbgInstrRef(), ChangeToES(), ChangeToFPImmediate(), ChangeToFrameIndex(), ChangeToGA(), ChangeToImmediate(), ChangeToMCSymbol(), ChangeToTargetIndex(), llvm::MipsCallLowering::lowerCall(), swapImmOperands(), and swapRegAndNonRegOperand().
| void MachineOperand::substPhysReg | ( | MCRegister | Reg, |
| const TargetRegisterInfo & | TRI ) |
substPhysReg - Substitute the current register with the physical register Reg, taking any existing SubReg into account.
For instance, substPhysReg(eax) will change reg1024:sub_8bit to al.
Definition at line 92 of file MachineOperand.cpp.
References assert(), getSubReg(), isDef(), setIsUndef(), setReg(), setSubReg(), and TRI.
Referenced by llvm::MachineInstr::substituteRegister().
| void MachineOperand::substVirtReg | ( | Register | Reg, |
| unsigned | SubIdx, | ||
| const TargetRegisterInfo & | TRI ) |
substVirtReg - Substitute the current register with the virtual subregister Reg:SubReg.
Take any existing SubReg index into account, using TargetRegisterInfo to compose the subreg indices if necessary. Reg must be a virtual register, SubIdx can be 0.
Definition at line 82 of file MachineOperand.cpp.
References assert(), getSubReg(), setReg(), setSubReg(), and TRI.
Referenced by llvm::MachineInstr::substituteRegister().
|
friend |
Definition at line 1016 of file MachineOperand.h.
References MO_Last.
|
friend |
MachineOperand hash_value overload.
Note that this includes the same information in the hash that isIdenticalTo uses for comparison. It is thus suited for use in hash tables which use that function for equality comparisons only. This must stay exactly in sync with isIdenticalTo above.
References isDead(), isDebug(), isDef(), isKill(), isUndef(), LLVM_ABI, llvm::Offset, OpIdx, and Reg.
|
friend |
Definition at line 1010 of file MachineOperand.h.
References MachineInstr.
Referenced by ChangeToRegister(), getParent(), getParent(), isRenamable(), and MachineInstr.
|
friend |
Definition at line 1011 of file MachineOperand.h.
References MachineRegisterInfo.
Referenced by ChangeToRegister(), MachineRegisterInfo, print(), setIsDef(), and setReg().
| unsigned llvm::MachineOperand::OffsetLo |
Definition at line 162 of file MachineOperand.h.
| unsigned llvm::MachineOperand::RegNo |
Definition at line 161 of file MachineOperand.h.