class AggressiveAntiDepState

Declaration

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

Description

Contains all the state necessary for anti-dep breaking.

Declared at: llvm/lib/CodeGen/AggressiveAntiDepBreaker.h:40

Member Variables

private const unsigned int NumTargetRegs
Number of non-virtual target registers (i.e. TRI->getNumRegs()).
private std::vector<unsigned int> GroupNodes
Implements a disjoint-union data structure to form register groups. A node is represented by an index into the vector. A node can "point to" itself to indicate that it is the parent of a group, or point to another node to indicate that it is a member of the same group as that node.
private std::vector<unsigned int> GroupNodeIndices
For each register, the index of the GroupNode currently representing the group that the register belongs to. Register 0 is always represented by the 0 group, a group composed of registers that are not eligible for anti-aliasing.
private std::multimap<unsigned int, RegisterReference> RegRefs
Map registers to all their references within a live range.
private std::vector<unsigned int> KillIndices
The index of the most recent kill (proceeding bottom-up), or ~0u if the register is not live.
private std::vector<unsigned int> DefIndices
The index of the most recent complete def (proceeding bottom up), or ~0u if the register is live.

Method Overview

  • public AggressiveAntiDepState(const unsigned int TargetRegs, llvm::MachineBasicBlock * BB)
  • public std::vector<unsigned int> & GetDefIndices()
  • public unsigned int GetGroup(unsigned int Reg)
  • public void GetGroupRegs(unsigned int Group, std::vector<unsigned int> & Regs, std::multimap<unsigned int, AggressiveAntiDepState::RegisterReference> * RegRefs)
  • public std::vector<unsigned int> & GetKillIndices()
  • public std::multimap<unsigned int, RegisterReference> & GetRegRefs()
  • public bool IsLive(unsigned int Reg)
  • public unsigned int LeaveGroup(unsigned int Reg)
  • public unsigned int UnionGroups(unsigned int Reg1, unsigned int Reg2)

Methods

AggressiveAntiDepState(
    const unsigned int TargetRegs,
    llvm::MachineBasicBlock* BB)

Declared at: llvm/lib/CodeGen/AggressiveAntiDepBreaker.h:80

Parameters

const unsigned int TargetRegs
llvm::MachineBasicBlock* BB

std::vector<unsigned int>& GetDefIndices()

Description

Return the define indices.

Declared at: llvm/lib/CodeGen/AggressiveAntiDepBreaker.h:86

unsigned int GetGroup(unsigned int Reg)

Declared at: llvm/lib/CodeGen/AggressiveAntiDepBreaker.h:93

Parameters

unsigned int Reg

void GetGroupRegs(
    unsigned int Group,
    std::vector<unsigned int>& Regs,
    std::multimap<unsigned int,
                  AggressiveAntiDepState::
                      RegisterReference>* RegRefs)

Declared at: llvm/lib/CodeGen/AggressiveAntiDepBreaker.h:97

Parameters

unsigned int Group
std::vector<unsigned int>& Regs
std::multimap< unsigned int, AggressiveAntiDepState::RegisterReference>* RegRefs

std::vector<unsigned int>& GetKillIndices()

Description

Return the kill indices.

Declared at: llvm/lib/CodeGen/AggressiveAntiDepBreaker.h:83

std::multimap<unsigned int, RegisterReference>&
GetRegRefs()

Description

Return the RegRefs map.

Declared at: llvm/lib/CodeGen/AggressiveAntiDepBreaker.h:89

bool IsLive(unsigned int Reg)

Description

Return true if Reg is live.

Declared at: llvm/lib/CodeGen/AggressiveAntiDepBreaker.h:113

Parameters

unsigned int Reg

unsigned int LeaveGroup(unsigned int Reg)

Declared at: llvm/lib/CodeGen/AggressiveAntiDepBreaker.h:110

Parameters

unsigned int Reg

unsigned int UnionGroups(unsigned int Reg1,
                         unsigned int Reg2)

Declared at: llvm/lib/CodeGen/AggressiveAntiDepBreaker.h:105

Parameters

unsigned int Reg1
unsigned int Reg2