LLVM 20.0.0git
Classes | Public Types | Public Member Functions | Static Public Member Functions | List of all members
llvm::rdf::DataFlowGraph Struct Reference

#include "llvm/CodeGen/RDFGraph.h"

Classes

struct  Config
 
struct  DefStack
 

Public Types

using DefStackMap = std::unordered_map< RegisterId, DefStack >
 

Public Member Functions

 DataFlowGraph (MachineFunction &mf, const TargetInstrInfo &tii, const TargetRegisterInfo &tri, const MachineDominatorTree &mdt, const MachineDominanceFrontier &mdf)
 
 DataFlowGraph (MachineFunction &mf, const TargetInstrInfo &tii, const TargetRegisterInfo &tri, const MachineDominatorTree &mdt, const MachineDominanceFrontier &mdf, const TargetOperandInfo &toi)
 
NodeBaseptr (NodeId N) const
 
template<typename T >
T ptr (NodeId N) const
 
NodeId id (const NodeBase *P) const
 
template<typename T >
NodeAddr< Taddr (NodeId N) const
 
Func getFunc () const
 
MachineFunctiongetMF () const
 
const TargetInstrInfogetTII () const
 
const TargetRegisterInfogetTRI () const
 
const PhysicalRegisterInfogetPRI () const
 
const MachineDominatorTreegetDT () const
 
const MachineDominanceFrontiergetDF () const
 
const RegisterAggrgetLiveIns () const
 
void build (const Config &config)
 
void build ()
 
void pushAllDefs (Instr IA, DefStackMap &DM)
 
void markBlock (NodeId B, DefStackMap &DefM)
 
void releaseBlock (NodeId B, DefStackMap &DefM)
 
PackedRegisterRef pack (RegisterRef RR)
 
PackedRegisterRef pack (RegisterRef RR) const
 
RegisterRef unpack (PackedRegisterRef PR) const
 
RegisterRef makeRegRef (unsigned Reg, unsigned Sub) const
 
RegisterRef makeRegRef (const MachineOperand &Op) const
 
Ref getNextRelated (Instr IA, Ref RA) const
 
Ref getNextShadow (Instr IA, Ref RA, bool Create)
 
NodeList getRelatedRefs (Instr IA, Ref RA) const
 
Block findBlock (MachineBasicBlock *BB) const
 
void unlinkUse (Use UA, bool RemoveFromOwner)
 
void unlinkDef (Def DA, bool RemoveFromOwner)
 
bool isTracked (RegisterRef RR) const
 
bool hasUntrackedRef (Stmt S, bool IgnoreReserved=true) const
 

Static Public Member Functions

template<uint16_t Kind>
static bool IsRef (const Node BA)
 
template<uint16_t Kind>
static bool IsCode (const Node BA)
 
static bool IsDef (const Node BA)
 
static bool IsUse (const Node BA)
 
static bool IsPhi (const Node BA)
 
static bool IsPreservingDef (const Def DA)
 

Detailed Description

Definition at line 660 of file RDFGraph.h.

Member Typedef Documentation

◆ DefStackMap

Definition at line 772 of file RDFGraph.h.

Constructor & Destructor Documentation

◆ DataFlowGraph() [1/2]

llvm::rdf::DataFlowGraph::DataFlowGraph ( MachineFunction mf,
const TargetInstrInfo tii,
const TargetRegisterInfo tri,
const MachineDominatorTree mdt,
const MachineDominanceFrontier mdf 
)

Definition at line 636 of file RDFGraph.cpp.

◆ DataFlowGraph() [2/2]

llvm::rdf::DataFlowGraph::DataFlowGraph ( MachineFunction mf,
const TargetInstrInfo tii,
const TargetRegisterInfo tri,
const MachineDominatorTree mdt,
const MachineDominanceFrontier mdf,
const TargetOperandInfo toi 
)

Definition at line 644 of file RDFGraph.cpp.

Member Function Documentation

◆ addr()

template<typename T >
NodeAddr< T > llvm::rdf::DataFlowGraph::addr ( NodeId  N) const
inline

◆ build() [1/2]

void llvm::rdf::DataFlowGraph::build ( )
inline

Definition at line 775 of file RDFGraph.h.

References build(), and Config.

Referenced by build().

◆ build() [2/2]

void llvm::rdf::DataFlowGraph::build ( const Config config)

◆ findBlock()

Block llvm::rdf::DataFlowGraph::findBlock ( MachineBasicBlock BB) const
inline

Definition at line 799 of file RDFGraph.h.

Referenced by build(), and llvm::rdf::Liveness::getNearestAliasedRef().

◆ getDF()

const MachineDominanceFrontier & llvm::rdf::DataFlowGraph::getDF ( ) const
inline

Definition at line 699 of file RDFGraph.h.

◆ getDT()

const MachineDominatorTree & llvm::rdf::DataFlowGraph::getDT ( ) const
inline

Definition at line 698 of file RDFGraph.h.

◆ getFunc()

Func llvm::rdf::DataFlowGraph::getFunc ( ) const
inline

◆ getLiveIns()

const RegisterAggr & llvm::rdf::DataFlowGraph::getLiveIns ( ) const
inline

Definition at line 700 of file RDFGraph.h.

Referenced by llvm::rdf::Liveness::computeLiveIns().

◆ getMF()

MachineFunction & llvm::rdf::DataFlowGraph::getMF ( ) const
inline

◆ getNextRelated()

Ref llvm::rdf::DataFlowGraph::getNextRelated ( Instr  IA,
Ref  RA 
) const

◆ getNextShadow()

Ref llvm::rdf::DataFlowGraph::getNextShadow ( Instr  IA,
Ref  RA,
bool  Create 
)

◆ getPRI()

const PhysicalRegisterInfo & llvm::rdf::DataFlowGraph::getPRI ( ) const
inline

Definition at line 697 of file RDFGraph.h.

Referenced by build(), getNextRelated(), isTracked(), and makeRegRef().

◆ getRelatedRefs()

NodeList llvm::rdf::DataFlowGraph::getRelatedRefs ( Instr  IA,
Ref  RA 
) const

◆ getTII()

const TargetInstrInfo & llvm::rdf::DataFlowGraph::getTII ( ) const
inline

Definition at line 695 of file RDFGraph.h.

◆ getTRI()

const TargetRegisterInfo & llvm::rdf::DataFlowGraph::getTRI ( ) const
inline

Definition at line 696 of file RDFGraph.h.

◆ hasUntrackedRef()

bool llvm::rdf::DataFlowGraph::hasUntrackedRef ( Stmt  S,
bool  IgnoreReserved = true 
) const

◆ id()

NodeId llvm::rdf::DataFlowGraph::id ( const NodeBase P) const

Definition at line 767 of file RDFGraph.cpp.

References P.

◆ IsCode()

template<uint16_t Kind>
static bool llvm::rdf::DataFlowGraph::IsCode ( const Node  BA)
inlinestatic

◆ IsDef()

static bool llvm::rdf::DataFlowGraph::IsDef ( const Node  BA)
inlinestatic

◆ IsPhi()

static bool llvm::rdf::DataFlowGraph::IsPhi ( const Node  BA)
inlinestatic

◆ IsPreservingDef()

static bool llvm::rdf::DataFlowGraph::IsPreservingDef ( const Def  DA)
inlinestatic

◆ IsRef()

template<uint16_t Kind>
static bool llvm::rdf::DataFlowGraph::IsRef ( const Node  BA)
inlinestatic

◆ isTracked()

bool llvm::rdf::DataFlowGraph::isTracked ( RegisterRef  RR) const

Definition at line 1772 of file RDFGraph.cpp.

References llvm::rdf::disjoint(), and getPRI().

Referenced by build(), and hasUntrackedRef().

◆ IsUse()

static bool llvm::rdf::DataFlowGraph::IsUse ( const Node  BA)
inlinestatic

◆ makeRegRef() [1/2]

RegisterRef llvm::rdf::DataFlowGraph::makeRegRef ( const MachineOperand Op) const

Definition at line 992 of file RDFGraph.cpp.

References assert(), llvm::LaneBitmask::getAll(), getPRI(), and makeRegRef().

◆ makeRegRef() [2/2]

RegisterRef llvm::rdf::DataFlowGraph::makeRegRef ( unsigned  Reg,
unsigned  Sub 
) const

◆ markBlock()

void llvm::rdf::DataFlowGraph::markBlock ( NodeId  B,
DefStackMap DefM 
)

Definition at line 1001 of file RDFGraph.cpp.

References B, and P.

◆ pack() [1/2]

PackedRegisterRef llvm::rdf::DataFlowGraph::pack ( RegisterRef  RR)
inline

◆ pack() [2/2]

PackedRegisterRef llvm::rdf::DataFlowGraph::pack ( RegisterRef  RR) const
inline

◆ ptr() [1/2]

NodeBase * llvm::rdf::DataFlowGraph::ptr ( NodeId  N) const

Definition at line 760 of file RDFGraph.cpp.

References N.

Referenced by ptr().

◆ ptr() [2/2]

template<typename T >
T llvm::rdf::DataFlowGraph::ptr ( NodeId  N) const
inline

Definition at line 683 of file RDFGraph.h.

References N, and ptr().

◆ pushAllDefs()

void llvm::rdf::DataFlowGraph::pushAllDefs ( Instr  IA,
DefStackMap DM 
)

Definition at line 1026 of file RDFGraph.cpp.

◆ releaseBlock()

void llvm::rdf::DataFlowGraph::releaseBlock ( NodeId  B,
DefStackMap DefM 
)

Definition at line 1008 of file RDFGraph.cpp.

References B, E, I, and P.

◆ unlinkDef()

void llvm::rdf::DataFlowGraph::unlinkDef ( Def  DA,
bool  RemoveFromOwner 
)
inline

Definition at line 807 of file RDFGraph.h.

◆ unlinkUse()

void llvm::rdf::DataFlowGraph::unlinkUse ( Use  UA,
bool  RemoveFromOwner 
)
inline

Definition at line 801 of file RDFGraph.h.

◆ unpack()

RegisterRef llvm::rdf::DataFlowGraph::unpack ( PackedRegisterRef  PR) const
inline

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