Lines Matching refs:MachineInstr
1 //===- lib/CodeGen/MachineInstr.cpp ---------------------------------------===//
13 #include "llvm/CodeGen/MachineInstr.h"
65 static const MachineFunction *getMFIfAvailable(const MachineInstr &MI) {
74 static void tryToGetTargetInfo(const MachineInstr &MI,
88 void MachineInstr::addImplicitDefUseOperands(MachineFunction &MF) {
95 /// MachineInstr ctor - This constructor creates a MachineInstr and adds the
98 MachineInstr::MachineInstr(MachineFunction &MF, const MCInstrDesc &TID,
115 /// MachineInstr ctor - Copies MachineInstr arg exactly.
118 MachineInstr::MachineInstr(MachineFunction &MF, const MachineInstr &MI)
143 void MachineInstr::setDesc(const MCInstrDesc &TID) {
150 void MachineInstr::moveBefore(MachineInstr *MovePos) {
157 MachineRegisterInfo *MachineInstr::getRegInfo() {
163 const MachineRegisterInfo *MachineInstr::getRegInfo() const {
169 void MachineInstr::removeRegOperandsFromUseLists(MachineRegisterInfo &MRI) {
175 void MachineInstr::addRegOperandsToUseLists(MachineRegisterInfo &MRI) {
181 void MachineInstr::addOperand(const MachineOperand &Op) {
204 void MachineInstr::addOperand(MachineFunction &MF, const MachineOperand &Op) {
294 void MachineInstr::removeOperand(unsigned OpNo) {
318 void MachineInstr::setExtraInfo(MachineFunction &MF,
360 void MachineInstr::dropMemRefs(MachineFunction &MF) {
369 void MachineInstr::setMemRefs(MachineFunction &MF,
381 void MachineInstr::addMemOperand(MachineFunction &MF,
389 void MachineInstr::cloneMemRefs(MachineFunction &MF, const MachineInstr &MI) {
425 void MachineInstr::cloneMergedMemRefs(MachineFunction &MF,
426 ArrayRef<const MachineInstr *> MIs) {
451 for (const MachineInstr &MI : make_pointee_range(MIs.slice(1))) {
476 void MachineInstr::setPreInstrSymbol(MachineFunction &MF, MCSymbol *Symbol) {
492 void MachineInstr::setPostInstrSymbol(MachineFunction &MF, MCSymbol *Symbol) {
508 void MachineInstr::setHeapAllocMarker(MachineFunction &MF, MDNode *Marker) {
517 void MachineInstr::setPCSections(MachineFunction &MF, MDNode *PCSections) {
527 void MachineInstr::setCFIType(MachineFunction &MF, uint32_t Type) {
536 void MachineInstr::setMMRAMetadata(MachineFunction &MF, MDNode *MMRAs) {
545 void MachineInstr::cloneInstrSymbols(MachineFunction &MF,
546 const MachineInstr &MI) {
561 uint32_t MachineInstr::mergeFlagsWith(const MachineInstr &Other) const {
567 uint32_t MachineInstr::copyFlagsFromInstruction(const Instruction &I) {
573 MIFlags |= MachineInstr::MIFlag::NoSWrap;
575 MIFlags |= MachineInstr::MIFlag::NoUWrap;
578 MIFlags |= MachineInstr::MIFlag::NoSWrap;
580 MIFlags |= MachineInstr::MIFlag::NoUWrap;
583 MIFlags |= MachineInstr::MIFlag::NoUSWrap;
585 MIFlags |= MachineInstr::MIFlag::NoUWrap;
591 MIFlags |= MachineInstr::MIFlag::NonNeg;
596 MIFlags |= MachineInstr::MIFlag::Disjoint;
602 MIFlags |= MachineInstr::MIFlag::IsExact;
608 MIFlags |= MachineInstr::MIFlag::FmNoNans;
610 MIFlags |= MachineInstr::MIFlag::FmNoInfs;
612 MIFlags |= MachineInstr::MIFlag::FmNsz;
614 MIFlags |= MachineInstr::MIFlag::FmArcp;
616 MIFlags |= MachineInstr::MIFlag::FmContract;
618 MIFlags |= MachineInstr::MIFlag::FmAfn;
620 MIFlags |= MachineInstr::MIFlag::FmReassoc;
624 MIFlags |= MachineInstr::MIFlag::Unpredictable;
629 void MachineInstr::copyIRFlags(const Instruction &I) {
633 bool MachineInstr::hasPropertyInBundle(uint64_t Mask, QueryType Type) const {
649 bool MachineInstr::isIdenticalTo(const MachineInstr &Other,
728 bool MachineInstr::isEquivalentDbgInstr(const MachineInstr &Other) const {
747 const MachineFunction *MachineInstr::getMF() const {
751 MachineInstr *MachineInstr::removeFromParent() {
756 MachineInstr *MachineInstr::removeFromBundle() {
761 void MachineInstr::eraseFromParent() {
766 void MachineInstr::eraseFromBundle() {
771 bool MachineInstr::isCandidateForCallSiteEntry(QueryType Type) const {
784 bool MachineInstr::shouldUpdateCallSiteInfo() const {
786 return isCandidateForCallSiteEntry(MachineInstr::AnyInBundle);
790 unsigned MachineInstr::getNumExplicitOperands() const {
809 unsigned MachineInstr::getNumExplicitDefs() const {
823 void MachineInstr::bundleWithPred() {
832 void MachineInstr::bundleWithSucc() {
841 void MachineInstr::unbundleFromPred() {
850 void MachineInstr::unbundleFromSucc() {
859 bool MachineInstr::isStackAligningInlineAsm() const {
868 InlineAsm::AsmDialect MachineInstr::getInlineAsmDialect() const {
874 int MachineInstr::findInlineAsmFlagIdx(unsigned OpIdx,
903 const DILabel *MachineInstr::getDebugLabel() const {
908 const MachineOperand &MachineInstr::getDebugVariableOp() const {
914 MachineOperand &MachineInstr::getDebugVariableOp() {
920 const DILocalVariable *MachineInstr::getDebugVariable() const {
924 const MachineOperand &MachineInstr::getDebugExpressionOp() const {
930 MachineOperand &MachineInstr::getDebugExpressionOp() {
936 const DIExpression *MachineInstr::getDebugExpression() const {
940 bool MachineInstr::isDebugEntryValue() const {
945 MachineInstr::getRegClassConstraint(unsigned OpIdx,
982 const TargetRegisterClass *MachineInstr::getRegClassConstraintEffectForVReg(
999 const TargetRegisterClass *MachineInstr::getRegClassConstraintEffectForVRegImpl(
1011 const TargetRegisterClass *MachineInstr::getRegClassConstraintEffect(
1031 unsigned MachineInstr::getBundleSize() const {
1041 /// Returns true if the MachineInstr has an implicit-use operand of exactly
1043 bool MachineInstr::hasRegisterImplicitUseOperand(Register Reg) const {
1054 int MachineInstr::findRegisterUseOperandIdx(Register Reg,
1075 MachineInstr::readsWritesVirtualRegister(Register Reg,
1103 int MachineInstr::findRegisterDefOperandIdx(Register Reg,
1132 int MachineInstr::findFirstPredOperandIdx() const {
1162 void MachineInstr::tieOperands(unsigned DefIdx, unsigned UseIdx) {
1189 unsigned MachineInstr::findTiedOperandIdx(unsigned OpIdx) const {
1266 void MachineInstr::clearKillInfo() {
1273 void MachineInstr::substituteRegister(Register FromReg, Register ToReg,
1296 bool MachineInstr::isSafeToMove(AAResults *AA, bool &SawStore) const {
1410 bool MachineInstr::mayAlias(AAResults *AA, const MachineInstr &Other,
1458 bool MachineInstr::hasOrderedMemoryRef() const {
1480 bool MachineInstr::isDereferenceableInvariantLoad() const {
1519 unsigned MachineInstr::isConstantValuePHI() const {
1532 bool MachineInstr::hasUnmodeledSideEffects() const {
1544 bool MachineInstr::isLoadFoldBarrier() const {
1551 bool MachineInstr::allDefsAreDead() const {
1561 bool MachineInstr::allImplicitDefsAreDead() const {
1573 void MachineInstr::copyImplicitOps(MachineFunction &MF,
1574 const MachineInstr &MI) {
1581 bool MachineInstr::hasComplexRegisterTies() const {
1598 LLT MachineInstr::getTypeToPrint(unsigned OpIdx, SmallBitVector &PrintedTypes,
1623 LLVM_DUMP_METHOD void MachineInstr::dump() const {
1628 LLVM_DUMP_METHOD void MachineInstr::dumprImpl(
1630 SmallPtrSetImpl<const MachineInstr *> &AlreadySeenInstrs) const {
1646 const MachineInstr *NewMI = MRI.getUniqueVRegDef(Reg);
1653 LLVM_DUMP_METHOD void MachineInstr::dumpr(const MachineRegisterInfo &MRI,
1655 SmallPtrSet<const MachineInstr *, 16> AlreadySeenInstrs;
1660 void MachineInstr::print(raw_ostream &OS, bool IsStandalone, bool SkipOpers,
1678 void MachineInstr::print(raw_ostream &OS, ModuleSlotTracker &MST,
1722 if (getFlag(MachineInstr::FrameSetup))
1724 if (getFlag(MachineInstr::FrameDestroy))
1726 if (getFlag(MachineInstr::FmNoNans))
1728 if (getFlag(MachineInstr::FmNoInfs))
1730 if (getFlag(MachineInstr::FmNsz))
1732 if (getFlag(MachineInstr::FmArcp))
1734 if (getFlag(MachineInstr::FmContract))
1736 if (getFlag(MachineInstr::FmAfn))
1738 if (getFlag(MachineInstr::FmReassoc))
1740 if (getFlag(MachineInstr::NoUWrap))
1742 if (getFlag(MachineInstr::NoSWrap))
1744 if (getFlag(MachineInstr::IsExact))
1746 if (getFlag(MachineInstr::NoFPExcept))
1748 if (getFlag(MachineInstr::NoMerge))
1750 if (getFlag(MachineInstr::NonNeg))
1752 if (getFlag(MachineInstr::Disjoint))
1996 bool MachineInstr::addRegisterKilled(Register IncomingReg,
2062 void MachineInstr::clearRegisterKills(Register Reg,
2075 bool MachineInstr::addRegisterDead(Register Reg,
2127 void MachineInstr::clearRegisterDeads(Register Reg) {
2135 void MachineInstr::setRegisterDefReadUndef(Register Reg, bool IsUndef) {
2143 void MachineInstr::addRegisterDefined(Register Reg,
2161 void MachineInstr::setPhysRegsDeadExcept(ArrayRef<Register> UsedRegs,
2187 MachineInstrExpressionTrait::getHashValue(const MachineInstr* const &MI) {
2201 void MachineInstr::emitError(StringRef Msg) const {
2279 MachineInstr *MI = BuildMI(MF, DL, MCID, IsIndirect, Reg, Variable, Expr);
2291 MachineInstr *MI =
2300 computeExprForSpill(const MachineInstr &MI,
2321 static const DIExpression *computeExprForSpill(const MachineInstr &MI,
2330 MachineInstr *llvm::buildDbgValueForSpill(MachineBasicBlock &BB,
2332 const MachineInstr &Orig,
2353 MachineInstr *llvm::buildDbgValueForSpill(
2355 const MachineInstr &Orig, int FrameIndex,
2375 void llvm::updateDbgValueForSpill(MachineInstr &Orig, int FrameIndex,
2385 void MachineInstr::collectDebugValues(
2386 SmallVectorImpl<MachineInstr *> &DbgValues) {
2387 MachineInstr &MI = *this;
2401 void MachineInstr::changeDebugValuesDefReg(Register Reg) {
2403 SmallVector<MachineInstr *, 2> DbgValues;
2444 MachineInstr::getSpillSize(const TargetInstrInfo *TII) const {
2455 MachineInstr::getFoldedSpillSize(const TargetInstrInfo *TII) const {
2463 MachineInstr::getRestoreSize(const TargetInstrInfo *TII) const {
2474 MachineInstr::getFoldedRestoreSize(const TargetInstrInfo *TII) const {
2481 unsigned MachineInstr::getDebugInstrNum() {
2487 unsigned MachineInstr::getDebugInstrNum(MachineFunction &MF) {
2493 std::tuple<LLT, LLT> MachineInstr::getFirst2LLTs() const {
2498 std::tuple<LLT, LLT, LLT> MachineInstr::getFirst3LLTs() const {
2504 std::tuple<LLT, LLT, LLT, LLT> MachineInstr::getFirst4LLTs() const {
2511 std::tuple<LLT, LLT, LLT, LLT, LLT> MachineInstr::getFirst5LLTs() const {
2520 MachineInstr::getFirst2RegLLTs() const {
2528 MachineInstr::getFirst3RegLLTs() const {
2538 MachineInstr::getFirst4RegLLTs() const {
2550 MachineInstr::getFirst5RegLLTs() const {
2562 void MachineInstr::insert(mop_iterator InsertBefore,
2607 bool MachineInstr::mayFoldInlineAsmRegOp(unsigned OpId) const {