LLVM 20.0.0git
|
#include "CodeGen/AggressiveAntiDepBreaker.h"
Public Member Functions | |
AggressiveAntiDepBreaker (MachineFunction &MFi, const RegisterClassInfo &RCI, TargetSubtargetInfo::RegClassVector &CriticalPathRCs) | |
AggressiveAntiDepBreaker & | operator= (const AggressiveAntiDepBreaker &other)=delete |
AggressiveAntiDepBreaker (const AggressiveAntiDepBreaker &other)=delete | |
~AggressiveAntiDepBreaker () override | |
void | StartBlock (MachineBasicBlock *BB) override |
Initialize anti-dep breaking for a new basic block. | |
unsigned | BreakAntiDependencies (const std::vector< SUnit > &SUnits, MachineBasicBlock::iterator Begin, MachineBasicBlock::iterator End, unsigned InsertPosIndex, DbgValueVector &DbgValues) override |
Identifiy anti-dependencies along the critical path of the ScheduleDAG and break them by renaming registers. | |
void | Observe (MachineInstr &MI, unsigned Count, unsigned InsertPosIndex) override |
Update liveness information to account for the current instruction, which will not be scheduled. | |
void | FinishBlock () override |
Finish anti-dep breaking for a basic block. | |
Public Member Functions inherited from llvm::AntiDepBreaker | |
virtual | ~AntiDepBreaker () |
virtual void | StartBlock (MachineBasicBlock *BB)=0 |
Initialize anti-dep breaking for a new basic block. | |
virtual unsigned | BreakAntiDependencies (const std::vector< SUnit > &SUnits, MachineBasicBlock::iterator Begin, MachineBasicBlock::iterator End, unsigned InsertPosIndex, DbgValueVector &DbgValues)=0 |
Identifiy anti-dependencies within a basic-block region and break them by renaming registers. | |
virtual void | Observe (MachineInstr &MI, unsigned Count, unsigned InsertPosIndex)=0 |
Update liveness information to account for the current instruction, which will not be scheduled. | |
virtual void | FinishBlock ()=0 |
Finish anti-dep breaking for a basic block. | |
void | UpdateDbgValue (MachineInstr &MI, unsigned OldReg, unsigned NewReg) |
Update DBG_VALUE or DBG_PHI if dependency breaker is updating other machine instruction to use NewReg. | |
void | UpdateDbgValues (const DbgValueVector &DbgValues, MachineInstr *ParentMI, unsigned OldReg, unsigned NewReg) |
Update all DBG_VALUE instructions that may be affected by the dependency breaker's update of ParentMI to use NewReg. | |
Additional Inherited Members | |
Public Types inherited from llvm::AntiDepBreaker | |
using | DbgValueVector = std::vector< std::pair< MachineInstr *, MachineInstr * > > |
Definition at line 116 of file AggressiveAntiDepBreaker.h.
AggressiveAntiDepBreaker::AggressiveAntiDepBreaker | ( | MachineFunction & | MFi, |
const RegisterClassInfo & | RCI, | ||
TargetSubtargetInfo::RegClassVector & | CriticalPathRCs | ||
) |
Definition at line 120 of file AggressiveAntiDepBreaker.cpp.
References llvm::dbgs(), llvm::TargetRegisterInfo::getAllocatableSet(), LLVM_DEBUG, llvm::BitVector::none(), llvm::printReg(), and llvm::BitVector::set_bits().
|
delete |
|
override |
Definition at line 142 of file AggressiveAntiDepBreaker.cpp.
|
overridevirtual |
Identifiy anti-dependencies along the critical path of the ScheduleDAG and break them by renaming registers.
BreakAntiDependencies - Identifiy anti-dependencies within the ScheduleDAG and break them by renaming registers.
Implements llvm::AntiDepBreaker.
Definition at line 729 of file AggressiveAntiDepBreaker.cpp.
References llvm::SDep::Anti, AntiDepEdges(), llvm::BitVector::any(), assert(), CriticalPathStep(), llvm::SDep::Data, llvm::dbgs(), llvm::Pass::dump(), End, llvm::AggressiveAntiDepState::GetDefIndices(), llvm::SUnit::getDepth(), llvm::AggressiveAntiDepState::GetGroup(), llvm::SUnit::getInstr(), llvm::AggressiveAntiDepState::GetKillIndices(), llvm::SDep::getKind(), llvm::MCRegisterInfo::getNumRegs(), llvm::SDep::getReg(), llvm::AggressiveAntiDepState::GetRegRefs(), llvm::SDep::getSUnit(), I, llvm::MachineRegisterInfo::isAllocatable(), llvm::MachineOperand::isImplicit(), llvm::AggressiveAntiDepState::IsLive(), llvm::SUnit::Latency, LLVM_DEBUG, llvm::make_range(), MI, llvm::SDep::Output, P, llvm::SUnit::Preds, llvm::printReg(), llvm::BitVector::test(), llvm::AggressiveAntiDepState::UnionGroups(), and llvm::AntiDepBreaker::UpdateDbgValues().
|
overridevirtual |
Finish anti-dep breaking for a basic block.
Implements llvm::AntiDepBreaker.
Definition at line 184 of file AggressiveAntiDepBreaker.cpp.
|
overridevirtual |
Update liveness information to account for the current instruction, which will not be scheduled.
Implements llvm::AntiDepBreaker.
Definition at line 189 of file AggressiveAntiDepBreaker.cpp.
References assert(), llvm::dbgs(), llvm::Pass::dump(), llvm::AggressiveAntiDepState::GetDefIndices(), llvm::AggressiveAntiDepState::GetGroup(), llvm::MCRegisterInfo::getNumRegs(), llvm::AggressiveAntiDepState::IsLive(), LLVM_DEBUG, MI, llvm::printReg(), and llvm::AggressiveAntiDepState::UnionGroups().
|
delete |
|
overridevirtual |
Initialize anti-dep breaking for a new basic block.
Implements llvm::AntiDepBreaker.
Definition at line 146 of file AggressiveAntiDepBreaker.cpp.
References assert(), llvm::MachineRegisterInfo::getCalleeSavedRegs(), llvm::AggressiveAntiDepState::GetDefIndices(), llvm::MachineFunction::getFrameInfo(), llvm::AggressiveAntiDepState::GetKillIndices(), llvm::MCRegisterInfo::getNumRegs(), llvm::MachineFrameInfo::getPristineRegs(), llvm::MachineFunction::getRegInfo(), I, llvm::MachineBasicBlock::isReturnBlock(), llvm::MCRegAliasIterator::isValid(), llvm::MachineBasicBlock::size(), llvm::MachineBasicBlock::successors(), llvm::BitVector::test(), and llvm::AggressiveAntiDepState::UnionGroups().