diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2023-07-26 19:03:47 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2023-07-26 19:04:23 +0000 |
commit | 7fa27ce4a07f19b07799a767fc29416f3b625afb (patch) | |
tree | 27825c83636c4de341eb09a74f49f5d38a15d165 /llvm/lib/CodeGen/MachinePipeliner.cpp | |
parent | e3b557809604d036af6e00c60f012c2025b59a5e (diff) |
Diffstat (limited to 'llvm/lib/CodeGen/MachinePipeliner.cpp')
-rw-r--r-- | llvm/lib/CodeGen/MachinePipeliner.cpp | 54 |
1 files changed, 23 insertions, 31 deletions
diff --git a/llvm/lib/CodeGen/MachinePipeliner.cpp b/llvm/lib/CodeGen/MachinePipeliner.cpp index adb630469003..c7e7497dab36 100644 --- a/llvm/lib/CodeGen/MachinePipeliner.cpp +++ b/llvm/lib/CodeGen/MachinePipeliner.cpp @@ -496,7 +496,7 @@ void SwingSchedulerDAG::schedule() { updatePhiDependences(); Topo.InitDAGTopologicalSorting(); changeDependences(); - postprocessDAG(); + postProcessDAG(); LLVM_DEBUG(dump()); NodeSetType NodeSets; @@ -865,13 +865,11 @@ void SwingSchedulerDAG::updatePhiDependences() { unsigned HasPhiDef = 0; MachineInstr *MI = I.getInstr(); // Iterate over each operand, and we process the definitions. - for (MachineInstr::mop_iterator MOI = MI->operands_begin(), - MOE = MI->operands_end(); - MOI != MOE; ++MOI) { - if (!MOI->isReg()) + for (const MachineOperand &MO : MI->operands()) { + if (!MO.isReg()) continue; - Register Reg = MOI->getReg(); - if (MOI->isDef()) { + Register Reg = MO.getReg(); + if (MO.isDef()) { // If the register is used by a Phi, then create an anti dependence. for (MachineRegisterInfo::use_instr_iterator UI = MRI.use_instr_begin(Reg), @@ -893,7 +891,7 @@ void SwingSchedulerDAG::updatePhiDependences() { } } } - } else if (MOI->isUse()) { + } else if (MO.isUse()) { // If the register is defined by a Phi, then create a true dependence. MachineInstr *DefMI = MRI.getUniqueVRegDef(Reg); if (DefMI == nullptr) @@ -903,7 +901,7 @@ void SwingSchedulerDAG::updatePhiDependences() { if (!MI->isPHI()) { SDep Dep(SU, SDep::Data, Reg); Dep.setLatency(0); - ST.adjustSchedDependency(SU, 0, &I, MI->getOperandNo(MOI), Dep); + ST.adjustSchedDependency(SU, 0, &I, MO.getOperandNo(), Dep); I.addPred(Dep); } else { HasPhiUse = Reg; @@ -1559,31 +1557,28 @@ static void computeLiveOuts(MachineFunction &MF, RegPressureTracker &RPTracker, const MachineInstr *MI = SU->getInstr(); if (MI->isPHI()) continue; - for (const MachineOperand &MO : MI->operands()) - if (MO.isReg() && MO.isUse()) { - Register Reg = MO.getReg(); - if (Reg.isVirtual()) - Uses.insert(Reg); - else if (MRI.isAllocatable(Reg)) - for (MCRegUnitIterator Units(Reg.asMCReg(), TRI); Units.isValid(); - ++Units) - Uses.insert(*Units); - } + for (const MachineOperand &MO : MI->all_uses()) { + Register Reg = MO.getReg(); + if (Reg.isVirtual()) + Uses.insert(Reg); + else if (MRI.isAllocatable(Reg)) + for (MCRegUnit Unit : TRI->regunits(Reg.asMCReg())) + Uses.insert(Unit); + } } for (SUnit *SU : NS) - for (const MachineOperand &MO : SU->getInstr()->operands()) - if (MO.isReg() && MO.isDef() && !MO.isDead()) { + for (const MachineOperand &MO : SU->getInstr()->all_defs()) + if (!MO.isDead()) { Register Reg = MO.getReg(); if (Reg.isVirtual()) { if (!Uses.count(Reg)) LiveOutRegs.push_back(RegisterMaskPair(Reg, LaneBitmask::getNone())); } else if (MRI.isAllocatable(Reg)) { - for (MCRegUnitIterator Units(Reg.asMCReg(), TRI); Units.isValid(); - ++Units) - if (!Uses.count(*Units)) - LiveOutRegs.push_back(RegisterMaskPair(*Units, - LaneBitmask::getNone())); + for (MCRegUnit Unit : TRI->regunits(Reg.asMCReg())) + if (!Uses.count(Unit)) + LiveOutRegs.push_back( + RegisterMaskPair(Unit, LaneBitmask::getNone())); } } RPTracker.addLiveRegs(LiveOutRegs); @@ -2316,7 +2311,7 @@ bool SwingSchedulerDAG::isLoopCarriedDep(SUnit *Source, const SDep &Dep, return (OffsetS + (int64_t)AccessSizeS < OffsetD + (int64_t)AccessSizeD); } -void SwingSchedulerDAG::postprocessDAG() { +void SwingSchedulerDAG::postProcessDAG() { for (auto &M : Mutations) M->apply(this); } @@ -2654,10 +2649,7 @@ bool SMSchedule::isLoopCarriedDefOfUse(SwingSchedulerDAG *SSD, if (!isLoopCarried(SSD, *Phi)) return false; unsigned LoopReg = getLoopPhiReg(*Phi, Phi->getParent()); - for (unsigned i = 0, e = Def->getNumOperands(); i != e; ++i) { - MachineOperand &DMO = Def->getOperand(i); - if (!DMO.isReg() || !DMO.isDef()) - continue; + for (MachineOperand &DMO : Def->all_defs()) { if (DMO.getReg() == LoopReg) return true; } |