LLVM  3.7.0
Public Types | Public Member Functions | List of all members
llvm::AntiDepBreaker Class Referenceabstract

This class works in conjunction with the post-RA scheduler to rename registers to break register anti-dependencies (WAR hazards). More...

#include <AntiDepBreaker.h>

Inheritance diagram for llvm::AntiDepBreaker:
[legend]

Public Types

typedef std::vector< std::pair
< MachineInstr *, MachineInstr * > > 
DbgValueVector
 

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...
 

Detailed Description

This class works in conjunction with the post-RA scheduler to rename registers to break register anti-dependencies (WAR hazards).

Definition at line 30 of file AntiDepBreaker.h.

Member Typedef Documentation

typedef std::vector<std::pair<MachineInstr *, MachineInstr *> > llvm::AntiDepBreaker::DbgValueVector

Definition at line 33 of file AntiDepBreaker.h.

Constructor & Destructor Documentation

AntiDepBreaker::~AntiDepBreaker ( )
virtual

Definition at line 77 of file PostRASchedulerList.cpp.

Member Function Documentation

virtual unsigned llvm::AntiDepBreaker::BreakAntiDependencies ( const std::vector< SUnit > &  SUnits,
MachineBasicBlock::iterator  Begin,
MachineBasicBlock::iterator  End,
unsigned  InsertPosIndex,
DbgValueVector DbgValues 
)
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.

virtual void llvm::AntiDepBreaker::FinishBlock ( )
pure virtual

Finish anti-dep breaking for a basic block.

Implemented in llvm::AggressiveAntiDepBreaker, and llvm::CriticalAntiDepBreaker.

virtual void llvm::AntiDepBreaker::Observe ( MachineInstr MI,
unsigned  Count,
unsigned  InsertPosIndex 
)
pure virtual

Update liveness information to account for the current instruction, which will not be scheduled.

Implemented in llvm::AggressiveAntiDepBreaker, and llvm::CriticalAntiDepBreaker.

virtual void llvm::AntiDepBreaker::StartBlock ( MachineBasicBlock BB)
pure virtual

Initialize anti-dep breaking for a new basic block.

Implemented in llvm::AggressiveAntiDepBreaker, and llvm::CriticalAntiDepBreaker.

void llvm::AntiDepBreaker::UpdateDbgValue ( MachineInstr MI,
unsigned  OldReg,
unsigned  NewReg 
)
inline

The documentation for this class was generated from the following files: