LLVM 22.0.0git
llvm::AggressiveAntiDepBreaker Class Reference

#include "CodeGen/AggressiveAntiDepBreaker.h"

Inheritance diagram for llvm::AggressiveAntiDepBreaker:
[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 ()
void UpdateDbgValue (MachineInstr &MI, MCRegister OldReg, MCRegister 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, MCRegister OldReg, MCRegister 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

Detailed Description

Definition at line 117 of file AggressiveAntiDepBreaker.h.

Constructor & Destructor Documentation

◆ AggressiveAntiDepBreaker() [1/2]

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

Definition at line 119 of file AggressiveAntiDepBreaker.cpp.

References llvm::dbgs(), LLVM_DEBUG, and llvm::printReg().

Referenced by AggressiveAntiDepBreaker(), and operator=().

◆ AggressiveAntiDepBreaker() [2/2]

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

◆ ~AggressiveAntiDepBreaker()

AggressiveAntiDepBreaker::~AggressiveAntiDepBreaker ( )
override

Definition at line 141 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

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 734 of file AggressiveAntiDepBreaker.cpp.

References llvm::SDep::Anti, AntiDepEdges(), assert(), llvm::Count, CriticalPathStep(), llvm::SDep::Data, llvm::dbgs(), llvm::SUnit::getDepth(), llvm::SUnit::getInstr(), I, llvm::MCRegister::id(), llvm::MachineOperand::isImplicit(), llvm::SUnit::Latency, LLVM_DEBUG, llvm::make_range(), MI, llvm::SDep::Output, P, llvm::SUnit::Preds, llvm::printReg(), llvm::BitVector::test(), and llvm::AntiDepBreaker::UpdateDbgValues().

Referenced by AggressiveAntiDepBreaker().

◆ FinishBlock()

void AggressiveAntiDepBreaker::FinishBlock ( )
overridevirtual

Finish anti-dep breaking for a basic block.

Implements llvm::AntiDepBreaker.

Definition at line 183 of file AggressiveAntiDepBreaker.cpp.

Referenced by AggressiveAntiDepBreaker().

◆ Observe()

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

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

Implements llvm::AntiDepBreaker.

Definition at line 188 of file AggressiveAntiDepBreaker.cpp.

References assert(), llvm::Count, llvm::dbgs(), LLVM_DEBUG, MI, and llvm::printReg().

Referenced by AggressiveAntiDepBreaker().

◆ operator=()

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

◆ StartBlock()


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