LLVM 23.0.0git
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

LLVM_ABI DataFlowGraph (MachineFunction &mf, const TargetInstrInfo &tii, const TargetRegisterInfo &tri, const MachineDominatorTree &mdt, const MachineDominanceFrontier &mdf)
LLVM_ABI DataFlowGraph (MachineFunction &mf, const TargetInstrInfo &tii, const TargetRegisterInfo &tri, const MachineDominatorTree &mdt, const MachineDominanceFrontier &mdf, const TargetOperandInfo &toi)
LLVM_ABI NodeBaseptr (NodeId N) const
template<typename T>
T ptr (NodeId N) const
LLVM_ABI 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
LLVM_ABI void build (const Config &config)
void build ()
LLVM_ABI void pushAllDefs (Instr IA, DefStackMap &DM)
LLVM_ABI void markBlock (NodeId B, DefStackMap &DefM)
LLVM_ABI void releaseBlock (NodeId B, DefStackMap &DefM)
PackedRegisterRef pack (RegisterRef RR)
PackedRegisterRef pack (RegisterRef RR) const
RegisterRef unpack (PackedRegisterRef PR) const
LLVM_ABI RegisterRef makeRegRef (unsigned Reg, unsigned Sub) const
LLVM_ABI RegisterRef makeRegRef (const MachineOperand &Op) const
LLVM_ABI Ref getNextRelated (Instr IA, Ref RA) const
LLVM_ABI Ref getNextShadow (Instr IA, Ref RA, bool Create)
LLVM_ABI NodeList getRelatedRefs (Instr IA, Ref RA) const
Block findBlock (MachineBasicBlock *BB) const
void unlinkUse (Use UA, bool RemoveFromOwner)
void unlinkDef (Def DA, bool RemoveFromOwner)
LLVM_ABI bool isTracked (RegisterRef RR) const
LLVM_ABI 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 661 of file RDFGraph.h.

Member Typedef Documentation

◆ DefStackMap

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

Definition at line 692 of file RDFGraph.h.

References N, and ptr().

◆ build() [1/2]

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

Definition at line 778 of file RDFGraph.h.

References build().

Referenced by build().

◆ build() [2/2]

◆ findBlock()

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

Definition at line 802 of file RDFGraph.h.

Referenced by build().

◆ getDF()

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

Definition at line 702 of file RDFGraph.h.

◆ getDT()

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

Definition at line 701 of file RDFGraph.h.

◆ getFunc()

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

Definition at line 696 of file RDFGraph.h.

◆ getLiveIns()

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

Definition at line 703 of file RDFGraph.h.

◆ getMF()

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

Definition at line 697 of file RDFGraph.h.

◆ getNextRelated()

◆ getNextShadow()

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

◆ getPRI()

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

Definition at line 700 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 698 of file RDFGraph.h.

◆ getTRI()

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

Definition at line 699 of file RDFGraph.h.

Referenced by build().

◆ hasUntrackedRef()

◆ 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>
bool llvm::rdf::DataFlowGraph::IsCode ( const Node BA)
inlinestatic

◆ IsDef()

◆ IsPhi()

◆ IsPreservingDef()

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

Definition at line 843 of file RDFGraph.h.

References llvm::rdf::NodeAttrs::Preserving, and llvm::rdf::NodeAttrs::Undef.

◆ IsRef()

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

◆ isTracked()

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

Definition at line 1820 of file RDFGraph.cpp.

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

Referenced by build(), and hasUntrackedRef().

◆ IsUse()

◆ makeRegRef() [1/2]

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

Definition at line 995 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 1004 of file RDFGraph.cpp.

References B(), and P.

◆ pack() [1/2]

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

Definition at line 784 of file RDFGraph.h.

References llvm::rdf::RegisterRef::Id, and llvm::rdf::RegisterRef::Mask.

◆ pack() [2/2]

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

Definition at line 787 of file RDFGraph.h.

References llvm::rdf::RegisterRef::Id, and llvm::rdf::RegisterRef::Mask.

◆ ptr() [1/2]

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

Definition at line 760 of file RDFGraph.cpp.

References N.

Referenced by addr(), and ptr().

◆ ptr() [2/2]

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

Definition at line 686 of file RDFGraph.h.

References N, ptr(), and T.

◆ pushAllDefs()

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

Definition at line 1029 of file RDFGraph.cpp.

◆ releaseBlock()

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

Definition at line 1011 of file RDFGraph.cpp.

References B(), E(), I, and P.

◆ unlinkDef()

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

Definition at line 810 of file RDFGraph.h.

◆ unlinkUse()

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

Definition at line 804 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: