class AntiDepBreaker

Declaration

class AntiDepBreaker { /* full declaration omitted */ };

Description

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

Declared at: llvm/lib/CodeGen/AntiDepBreaker.h:31

Method Overview

  • public virtual unsigned int BreakAntiDependencies(const std::vector<SUnit> & SUnits, MachineBasicBlock::iterator Begin, MachineBasicBlock::iterator End, unsigned int InsertPosIndex, llvm::AntiDepBreaker::DbgValueVector & DbgValues)
  • public virtual void FinishBlock()
  • public virtual void Observe(llvm::MachineInstr & MI, unsigned int Count, unsigned int InsertPosIndex)
  • public virtual void StartBlock(llvm::MachineBasicBlock * BB)
  • public void UpdateDbgValue(llvm::MachineInstr & MI, unsigned int OldReg, unsigned int NewReg)
  • public void UpdateDbgValues(const llvm::AntiDepBreaker::DbgValueVector & DbgValues, llvm::MachineInstr * ParentMI, unsigned int OldReg, unsigned int NewReg)
  • public virtual ~AntiDepBreaker()

Methods

virtual unsigned int BreakAntiDependencies(
    const std::vector<SUnit>& SUnits,
    MachineBasicBlock::iterator Begin,
    MachineBasicBlock::iterator End,
    unsigned int InsertPosIndex,
    llvm::AntiDepBreaker::DbgValueVector&
        DbgValues)

Description

Identifiy anti-dependencies within a basic-block region and break them by renaming registers. Return the number of anti-dependencies broken.

Declared at: llvm/lib/CodeGen/AntiDepBreaker.h:43

Parameters

const std::vector<SUnit>& SUnits
MachineBasicBlock::iterator Begin
MachineBasicBlock::iterator End
unsigned int InsertPosIndex
llvm::AntiDepBreaker::DbgValueVector& DbgValues

virtual void FinishBlock()

Description

Finish anti-dep breaking for a basic block.

Declared at: llvm/lib/CodeGen/AntiDepBreaker.h:55

virtual void Observe(llvm::MachineInstr& MI,
                     unsigned int Count,
                     unsigned int InsertPosIndex)

Description

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

Declared at: llvm/lib/CodeGen/AntiDepBreaker.h:51

Parameters

llvm::MachineInstr& MI
unsigned int Count
unsigned int InsertPosIndex

virtual void StartBlock(
    llvm::MachineBasicBlock* BB)

Description

Initialize anti-dep breaking for a new basic block.

Declared at: llvm/lib/CodeGen/AntiDepBreaker.h:39

Parameters

llvm::MachineBasicBlock* BB

void UpdateDbgValue(llvm::MachineInstr& MI,
                    unsigned int OldReg,
                    unsigned int NewReg)

Description

Update DBG_VALUE if dependency breaker is updating other machine instruction to use NewReg.

Declared at: llvm/lib/CodeGen/AntiDepBreaker.h:59

Parameters

llvm::MachineInstr& MI
unsigned int OldReg
unsigned int NewReg

void UpdateDbgValues(
    const llvm::AntiDepBreaker::DbgValueVector&
        DbgValues,
    llvm::MachineInstr* ParentMI,
    unsigned int OldReg,
    unsigned int NewReg)

Description

Update all DBG_VALUE instructions that may be affected by the dependency breaker's update of ParentMI to use NewReg.

Declared at: llvm/lib/CodeGen/AntiDepBreaker.h:67

Parameters

const llvm::AntiDepBreaker::DbgValueVector& DbgValues
llvm::MachineInstr* ParentMI
unsigned int OldReg
unsigned int NewReg

virtual ~AntiDepBreaker()

Declared at: llvm/lib/CodeGen/AntiDepBreaker.h:36