LLVM API Documentation
#include <CriticalAntiDepBreaker.h>
Public Member Functions | |
CriticalAntiDepBreaker (MachineFunction &MFi, const RegisterClassInfo &) | |
~CriticalAntiDepBreaker () | |
void | StartBlock (MachineBasicBlock *BB) override |
Start - 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 |
void | Observe (MachineInstr *MI, unsigned Count, unsigned InsertPosIndex) override |
void | FinishBlock () override |
Finish - Finish anti-dep breaking for a basic block. |
Definition at line 34 of file CriticalAntiDepBreaker.h.
CriticalAntiDepBreaker::CriticalAntiDepBreaker | ( | MachineFunction & | MFi, |
const RegisterClassInfo & | RCI | ||
) |
Definition at line 31 of file CriticalAntiDepBreaker.cpp.
Definition at line 39 of file CriticalAntiDepBreaker.cpp.
unsigned CriticalAntiDepBreaker::BreakAntiDependencies | ( | const std::vector< SUnit > & | SUnits, |
MachineBasicBlock::iterator | Begin, | ||
MachineBasicBlock::iterator | End, | ||
unsigned | InsertPosIndex, | ||
DbgValueVector & | DbgValues | ||
) | [override, virtual] |
BreakAntiDependencies - Identifiy anti-dependencies along the critical path of the ScheduleDAG and break them by renaming registers.
Implements llvm::AntiDepBreaker.
Definition at line 424 of file CriticalAntiDepBreaker.cpp.
References llvm::SDep::Anti, llvm::SmallVectorTemplateCommon< T, typename >::begin(), CriticalPathStep(), llvm::SDep::Data, llvm::dbgs(), DEBUG, llvm::SmallVectorTemplateCommon< T, typename >::end(), llvm::SUnit::getDepth(), llvm::SUnit::getInstr(), llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::MachineInstr::hasExtraDefRegAllocReq(), I, llvm::MachineRegisterInfo::isAllocatable(), llvm::MachineInstr::isCall(), llvm::MachineInstr::isDebugValue(), llvm::MachineOperand::isDef(), llvm::MachineInstr::isKill(), llvm::TargetInstrInfo::isPredicated(), llvm::MachineOperand::isReg(), llvm::MachineOperand::isUse(), llvm::SUnit::Latency, P, llvm::SUnit::Preds, llvm::SmallVectorTemplateBase< T, isPodLike< T >::value >::push_back(), llvm::BitVector::test(), and llvm::AntiDepBreaker::UpdateDbgValue().
void CriticalAntiDepBreaker::FinishBlock | ( | ) | [override, virtual] |
Finish - Finish anti-dep breaking for a basic block.
Implements llvm::AntiDepBreaker.
Definition at line 87 of file CriticalAntiDepBreaker.cpp.
References llvm::BitVector::reset().
void CriticalAntiDepBreaker::Observe | ( | MachineInstr * | MI, |
unsigned | Count, | ||
unsigned | InsertPosIndex | ||
) | [override, virtual] |
Observe - Update liveness information to account for the current instruction, which will not be scheduled.
Implements llvm::AntiDepBreaker.
Definition at line 92 of file CriticalAntiDepBreaker.cpp.
References llvm::MCRegisterInfo::getNumRegs(), llvm::MachineInstr::isDebugValue(), and llvm::MachineInstr::isKill().
void CriticalAntiDepBreaker::StartBlock | ( | MachineBasicBlock * | BB | ) | [override, virtual] |
Start - Initialize anti-dep breaking for a new basic block.
Implements llvm::AntiDepBreaker.
Definition at line 42 of file CriticalAntiDepBreaker.cpp.
References llvm::MachineBasicBlock::back(), llvm::TargetRegisterInfo::getCalleeSavedRegs(), llvm::MachineFunction::getFrameInfo(), llvm::MCRegisterInfo::getNumRegs(), llvm::MachineFrameInfo::getPristineRegs(), I, llvm::MachineInstr::isReturn(), llvm::MCRegAliasIterator::isValid(), llvm::BitVector::reset(), llvm::MachineBasicBlock::size(), llvm::MachineBasicBlock::succ_begin(), llvm::MachineBasicBlock::succ_end(), and llvm::BitVector::test().