LLVM
15.0.0git
|
#include "llvm/CodeGen/RDFLiveness.h"
Classes | |
struct | LiveMapType |
Public Types | |
using | NodeRef = detail::NodeRef |
using | NodeRefSet = std::unordered_set< NodeRef > |
using | RefMap = std::unordered_map< RegisterId, NodeRefSet > |
Definition at line 59 of file RDFLiveness.h.
Definition at line 75 of file RDFLiveness.h.
using llvm::rdf::Liveness::NodeRefSet = std::unordered_set<NodeRef> |
Definition at line 76 of file RDFLiveness.h.
using llvm::rdf::Liveness::RefMap = std::unordered_map<RegisterId, NodeRefSet> |
Definition at line 77 of file RDFLiveness.h.
|
inline |
Definition at line 79 of file RDFLiveness.h.
void Liveness::computeLiveIns | ( | ) |
Definition at line 737 of file RDFLiveness.cpp.
References llvm::rdf::NodeAddr< T >::Addr, llvm::rdf::DataFlowGraph::addr(), B, BB, llvm::SetVector< T, Vector, Set >::begin(), computePhiInfo(), D, llvm::dbgs(), E, llvm::MachineDominanceFrontier::end(), llvm::SetVector< T, Vector, Set >::end(), llvm::MachineDominanceFrontier::find(), getAllReachingDefs(), llvm::rdf::DataFlowGraph::getFunc(), llvm::rdf::DataFlowGraph::getLiveIns(), llvm::rdf::DataFlowGraph::getMF(), llvm::rdf::PhiUseNode::getPredecessor(), llvm::rdf::RefNode::getReachingDef(), llvm::rdf::DataFlowGraph::getRelatedRefs(), i, I, llvm::rdf::NodeAddr< T >::Id, llvm::SetVector< T, Vector, Set >::insert(), llvm::rdf::DataFlowGraph::IsCode(), llvm::rdf::DataFlowGraph::IsRef(), llvm::rdf::CodeNode::members(), llvm::rdf::CodeNode::members_if(), P, llvm::rdf::NodeAttrs::Phi, llvm::printMBBReference(), RA, llvm::rdf::RegisterAggr::rr_begin(), llvm::rdf::RegisterAggr::rr_end(), S, llvm::SetVector< T, Vector, Set >::size(), llvm::sort(), llvm::X86II::TA, TM, and llvm::rdf::NodeAttrs::Use.
void Liveness::computePhiInfo | ( | ) |
Definition at line 463 of file RDFLiveness.cpp.
References llvm::rdf::NodeAddr< T >::Addr, llvm::rdf::DataFlowGraph::addr(), llvm::append_range(), assert(), llvm::rdf::RegisterAggr::clearIn(), D, llvm::M68kBeads::DA, llvm::dbgs(), llvm::rdf::NodeAttrs::Dead, llvm::rdf::NodeAttrs::Def, F, getAllReachingDefs(), llvm::rdf::DataFlowGraph::getFunc(), llvm::rdf::RefNode::getReachingDef(), llvm::rdf::RefNode::getRegRef(), llvm::rdf::DataFlowGraph::getRelatedRefs(), llvm::rdf::RegisterAggr::hasAliasOf(), llvm::rdf::RegisterAggr::hasCoverOf(), i, I, llvm::rdf::NodeAddr< T >::Id, llvm::SetVector< T, Vector, Set >::insert(), llvm::rdf::RegisterAggr::insert(), llvm::rdf::RegisterAggr::intersectWith(), llvm::rdf::DataFlowGraph::IsCode(), IsDead, llvm::rdf::DataFlowGraph::IsRef(), M, llvm::rdf::PhysicalRegisterInfo::mapTo(), llvm::rdf::CodeNode::members(), llvm::rdf::CodeNode::members_if(), P, llvm::rdf::NodeAttrs::Phi, llvm::rdf::NodeAttrs::PhiRef, llvm::AArch64::RP, S, llvm::SetVector< T, Vector, Set >::size(), llvm::X86AS::SS, llvm::rdf::NodeAttrs::Undef, llvm::rdf::NodeAttrs::Use, and Uses.
Referenced by computeLiveIns().
|
inline |
Definition at line 98 of file RDFLiveness.h.
References getAllReachedUses().
NodeSet Liveness::getAllReachedUses | ( | RegisterRef | RefRR, |
NodeAddr< DefNode * > | DefA, | ||
const RegisterAggr & | DefRRs | ||
) |
Definition at line 417 of file RDFLiveness.cpp.
References llvm::rdf::NodeAddr< T >::Addr, llvm::rdf::DataFlowGraph::addr(), llvm::rdf::PhysicalRegisterInfo::alias(), D, llvm::M68kBeads::DA, llvm::rdf::NodeAttrs::Dead, llvm::rdf::NodeBase::getFlags(), llvm::rdf::DefNode::getReachedDef(), llvm::rdf::DefNode::getReachedUse(), llvm::rdf::RegisterAggr::hasCoverOf(), llvm::rdf::RegisterAggr::insert(), IsDead, llvm::rdf::DataFlowGraph::IsPreservingDef(), llvm::rdf::NodeAttrs::Undef, and Uses.
Referenced by getAllReachedUses().
Definition at line 86 of file RDFLiveness.h.
References llvm::rdf::NodeAddr< T >::Addr, and getAllReachingDefs().
|
inline |
Definition at line 91 of file RDFLiveness.h.
References getAllReachingDefs().
NodeList Liveness::getAllReachingDefs | ( | RegisterRef | RefRR, |
NodeAddr< RefNode * > | RefA, | ||
bool | TopShadows, | ||
bool | FullChain, | ||
const RegisterAggr & | DefRRs | ||
) |
Definition at line 108 of file RDFLiveness.cpp.
References llvm::rdf::NodeAddr< T >::Addr, llvm::rdf::DataFlowGraph::addr(), llvm::rdf::PhysicalRegisterInfo::alias(), llvm::append_range(), assert(), B, BB, llvm::SmallSet< T, N, C >::count(), llvm::M68kBeads::DA, llvm::rdf::NodeAttrs::Dead, llvm::rdf::NodeAttrs::Def, E, llvm::DenseMapBase< DenseMap< KeyT, ValueT, DenseMapInfo< KeyT >, llvm::detail::DenseMapPair< KeyT, ValueT > >, KeyT, ValueT, DenseMapInfo< KeyT >, llvm::detail::DenseMapPair< KeyT, ValueT > >::end(), llvm::erase_if(), llvm::DenseMapBase< DenseMap< KeyT, ValueT, DenseMapInfo< KeyT >, llvm::detail::DenseMapPair< KeyT, ValueT > >, KeyT, ValueT, DenseMapInfo< KeyT >, llvm::detail::DenseMapPair< KeyT, ValueT > >::find(), llvm::rdf::BlockNode::getCode(), llvm::rdf::NodeBase::getFlags(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::rdf::NodeBase::getKind(), llvm::rdf::RefNode::getOwner(), llvm::rdf::InstrNode::getOwner(), llvm::MachineInstr::getParent(), llvm::rdf::DataFlowGraph::getRelatedRefs(), llvm::rdf::RegisterAggr::hasCoverOf(), i, llvm::rdf::NodeAddr< T >::Id, llvm::tgtok::In, llvm::SetVector< T, Vector, Set >::insert(), llvm::SmallSet< T, N, C >::insert(), llvm::rdf::RegisterAggr::insert(), llvm::DenseMapBase< DenseMap< KeyT, ValueT, DenseMapInfo< KeyT >, llvm::detail::DenseMapPair< KeyT, ValueT > >, KeyT, ValueT, DenseMapInfo< KeyT >, llvm::detail::DenseMapPair< KeyT, ValueT > >::insert(), llvm::rdf::DataFlowGraph::IsCode(), llvm::rdf::RegisterAggr::isCoverOf(), llvm::rdf::DataFlowGraph::IsPreservingDef(), llvm_unreachable, MBB, N, llvm::X86II::OB, llvm::rdf::NodeAttrs::Phi, llvm::rdf::NodeAttrs::PhiRef, llvm::rdf::NodeAttrs::Preserving, llvm::MachineDominatorTree::properlyDominates(), llvm::reverse(), S, llvm::SetVector< T, Vector, Set >::size(), llvm::sort(), llvm::rdf::NodeAttrs::Stmt, llvm::X86II::TA, and llvm::rdf::NodeAttrs::Undef.
Referenced by computeLiveIns(), computePhiInfo(), and getAllReachingDefs().
std::pair< NodeSet, bool > Liveness::getAllReachingDefsRec | ( | RegisterRef | RefRR, |
NodeAddr< RefNode * > | RefA, | ||
NodeSet & | Visited, | ||
const NodeSet & | Defs | ||
) |
Definition at line 308 of file RDFLiveness.cpp.
References MaxRecNest.
|
inline |
Definition at line 108 of file RDFLiveness.h.
|
inline |
Definition at line 109 of file RDFLiveness.h.
NodeAddr< RefNode * > Liveness::getNearestAliasedRef | ( | RegisterRef | RefRR, |
NodeAddr< InstrNode * > | IA | ||
) |
Find the nearest ref node aliased to RefRR, going upwards in the data flow, starting from the instruction immediately preceding Inst.
Definition at line 360 of file RDFLiveness.cpp.
References llvm::rdf::NodeAddr< T >::Addr, llvm::rdf::PhysicalRegisterInfo::alias(), B, BB, llvm::rdf::NodeAttrs::Clobbering, E, llvm::find_if(), llvm::rdf::DataFlowGraph::findBlock(), llvm::rdf::BlockNode::getCode(), llvm::MachineDominatorTree::getNode(), llvm::rdf::InstrNode::getOwner(), I, llvm::rdf::NodeAddr< T >::Id, llvm::MipsISD::Ins, llvm::rdf::DataFlowGraph::IsDef(), llvm::make_range(), llvm::rdf::CodeNode::members(), and N.
Definition at line 111 of file RDFLiveness.h.
void Liveness::resetKills | ( | ) |
Definition at line 905 of file RDFLiveness.cpp.
References B, and llvm::rdf::DataFlowGraph::getMF().
void Liveness::resetKills | ( | MachineBasicBlock * | B | ) |
Definition at line 910 of file RDFLiveness.cpp.
References B, llvm::MCRegisterInfo::getNumRegs(), llvm::TargetRegisterInfo::getSubRegIndexLaneMask(), I, llvm::Register::isPhysicalRegister(), llvm::MCRegisterInfo::DiffListIterator::isValid(), llvm::MCRegAliasIterator::isValid(), M, MI, llvm::BitVector::reset(), llvm::reverse(), S, llvm::BitVector::set(), and SI.
void Liveness::resetLiveIns | ( | ) |
Definition at line 890 of file RDFLiveness.cpp.
References B, llvm::rdf::DataFlowGraph::getMF(), I, llvm::make_range(), llvm::rdf::RegisterAggr::rr_begin(), and llvm::rdf::RegisterAggr::rr_end().
|
inline |
Definition at line 122 of file RDFLiveness.h.
References T.