|
LLVM
8.0.1
|
This class works in conjunction with the post-RA scheduler to rename registers to break register anti-dependencies (WAR hazards). More...
#include "CodeGen/AntiDepBreaker.h"

Public Types | |
| using | DbgValueVector = std::vector< std::pair< MachineInstr *, MachineInstr * > > |
Public Member Functions | |
| virtual | ~AntiDepBreaker () |
| virtual void | StartBlock (MachineBasicBlock *BB)=0 |
| Initialize anti-dep breaking for a new basic block. More... | |
| 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. More... | |
| virtual void | Observe (MachineInstr &MI, unsigned Count, unsigned InsertPosIndex)=0 |
| Update liveness information to account for the current instruction, which will not be scheduled. More... | |
| virtual void | FinishBlock ()=0 |
| Finish anti-dep breaking for a basic block. More... | |
| void | UpdateDbgValue (MachineInstr &MI, unsigned OldReg, unsigned NewReg) |
| Update DBG_VALUE if dependency breaker is updating other machine instruction to use NewReg. More... | |
| 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. More... | |
This class works in conjunction with the post-RA scheduler to rename registers to break register anti-dependencies (WAR hazards).
Definition at line 32 of file AntiDepBreaker.h.
| using llvm::AntiDepBreaker::DbgValueVector = std::vector<std::pair<MachineInstr *, MachineInstr *> > |
Definition at line 35 of file AntiDepBreaker.h.
|
virtual |
Definition at line 77 of file PostRASchedulerList.cpp.
References llvm::AnalysisUsage::addPreserved(), llvm::AnalysisUsage::addRequired(), llvm::sys::path::begin(), llvm::sys::path::end(), llvm::MachineFunctionPass::getAnalysisUsage(), MI, Mode, llvm::MachineFunctionProperties::NoVRegs, Observe(), llvm::MachineFunctionProperties::set(), llvm::AnalysisUsage::setPreservesCFG(), llvm::ARM_MB::ST, and TII.
|
pure virtual |
Identifiy anti-dependencies within a basic-block region and break them by renaming registers.
Return the number of anti-dependencies broken.
Implemented in llvm::AggressiveAntiDepBreaker, and llvm::CriticalAntiDepBreaker.
|
pure virtual |
Finish anti-dep breaking for a basic block.
Implemented in llvm::AggressiveAntiDepBreaker, and llvm::CriticalAntiDepBreaker.
|
pure virtual |
Update liveness information to account for the current instruction, which will not be scheduled.
Implemented in llvm::AggressiveAntiDepBreaker, and llvm::CriticalAntiDepBreaker.
Referenced by ~AntiDepBreaker().
|
pure virtual |
Initialize anti-dep breaking for a new basic block.
Implemented in llvm::AggressiveAntiDepBreaker, and llvm::CriticalAntiDepBreaker.
|
inline |
Update DBG_VALUE if dependency breaker is updating other machine instruction to use NewReg.
Definition at line 60 of file AntiDepBreaker.h.
References assert(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::MachineInstr::isDebugValue(), llvm::MachineOperand::isReg(), and llvm::MachineOperand::setReg().
|
inline |
Update all DBG_VALUE instructions that may be affected by the dependency breaker's update of ParentMI to use NewReg.
Definition at line 68 of file AntiDepBreaker.h.
References llvm::make_range().
1.8.13