LLVM 20.0.0git
Public Member Functions | List of all members
llvm::AggressiveAntiDepBreaker Class Reference

#include "CodeGen/AggressiveAntiDepBreaker.h"

Inheritance diagram for llvm::AggressiveAntiDepBreaker:
Inheritance graph
[legend]

Public Member Functions

 AggressiveAntiDepBreaker (MachineFunction &MFi, const RegisterClassInfo &RCI, TargetSubtargetInfo::RegClassVector &CriticalPathRCs)
 
AggressiveAntiDepBreakeroperator= (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 * > >
 

Detailed Description

Definition at line 116 of file AggressiveAntiDepBreaker.h.

Constructor & Destructor Documentation

◆ AggressiveAntiDepBreaker() [1/2]

AggressiveAntiDepBreaker::AggressiveAntiDepBreaker ( MachineFunction MFi,
const RegisterClassInfo RCI,
TargetSubtargetInfo::RegClassVector CriticalPathRCs 
)

◆ AggressiveAntiDepBreaker() [2/2]

llvm::AggressiveAntiDepBreaker::AggressiveAntiDepBreaker ( const AggressiveAntiDepBreaker other)
delete

◆ ~AggressiveAntiDepBreaker()

AggressiveAntiDepBreaker::~AggressiveAntiDepBreaker ( )
override

Definition at line 142 of file AggressiveAntiDepBreaker.cpp.

Member Function Documentation

◆ BreakAntiDependencies()

unsigned AggressiveAntiDepBreaker::BreakAntiDependencies ( const std::vector< SUnit > &  SUnits,
MachineBasicBlock::iterator  Begin,
MachineBasicBlock::iterator  End,
unsigned  InsertPosIndex,
DbgValueVector DbgValues 
)
overridevirtual

◆ FinishBlock()

void AggressiveAntiDepBreaker::FinishBlock ( )
overridevirtual

Finish anti-dep breaking for a basic block.

Implements llvm::AntiDepBreaker.

Definition at line 184 of file AggressiveAntiDepBreaker.cpp.

◆ Observe()

void AggressiveAntiDepBreaker::Observe ( MachineInstr MI,
unsigned  Count,
unsigned  InsertPosIndex 
)
overridevirtual

◆ operator=()

AggressiveAntiDepBreaker & llvm::AggressiveAntiDepBreaker::operator= ( const AggressiveAntiDepBreaker other)
delete

◆ StartBlock()

void AggressiveAntiDepBreaker::StartBlock ( MachineBasicBlock BB)
overridevirtual

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