LLVM
8.0.1
|
#include "Target/Hexagon/RDFLiveness.h"
Classes | |
struct | LiveMapType |
Public Types | |
using | NodeRef = std::pair< NodeId, LaneBitmask > |
using | NodeRefSet = std::set< NodeRef > |
using | RefMap = std::map< RegisterId, NodeRefSet > |
Definition at line 34 of file RDFLiveness.h.
using llvm::rdf::Liveness::NodeRef = std::pair<NodeId, LaneBitmask> |
Definition at line 50 of file RDFLiveness.h.
using llvm::rdf::Liveness::NodeRefSet = std::set<NodeRef> |
Definition at line 51 of file RDFLiveness.h.
using llvm::rdf::Liveness::RefMap = std::map<RegisterId, NodeRefSet> |
Definition at line 53 of file RDFLiveness.h.
|
inline |
Definition at line 55 of file RDFLiveness.h.
References getAllReachingDefs(), and TRI.
void Liveness::computeLiveIns | ( | ) |
Definition at line 684 of file RDFLiveness.cpp.
References llvm::rdf::NodeAddr< T >::Addr, B, D, llvm::dbgs(), E, llvm::rdf::PhiUseNode::getPredecessor(), llvm::rdf::RefNode::getReachingDef(), I, llvm::SetVector< T, Vector, Set >::insert(), llvm::rdf::RegisterAggr::insert(), llvm::MachineBasicBlock::insert(), intersect(), llvm::rdf::RegisterAggr::makeRegRef(), llvm::rdf::RegisterRef::Mask, llvm::rdf::CodeNode::members(), P, llvm::rdf::NodeAttrs::Phi, llvm::printMBBReference(), RA, llvm::rdf::RegisterRef::Reg, llvm::rdf::RegisterAggr::rr_begin(), llvm::rdf::RegisterAggr::rr_end(), llvm::sort(), llvm::X86II::TA, llvm::SystemZISD::TM, and llvm::rdf::NodeAttrs::Use.
Referenced by getRealUses().
void Liveness::computePhiInfo | ( | ) |
Definition at line 427 of file RDFLiveness.cpp.
References llvm::rdf::NodeAddr< T >::Addr, assert(), llvm::rdf::RegisterAggr::clearIn(), D, llvm::dbgs(), llvm::rdf::NodeAttrs::Dead, llvm::rdf::NodeAttrs::Def, llvm::SmallVectorTemplateCommon< T, typename >::end(), F(), llvm::rdf::NodeBase::getFlags(), llvm::rdf::RefNode::getOwner(), llvm::rdf::DefNode::getReachedDef(), llvm::rdf::DefNode::getReachedUse(), llvm::rdf::RefNode::getReachingDef(), llvm::rdf::RefNode::getRegRef(), llvm::rdf::RefNode::getSibling(), llvm::rdf::RegisterAggr::hasAliasOf(), llvm::rdf::RegisterAggr::hasCoverOf(), I, llvm::rdf::NodeAddr< T >::Id, llvm::SetVector< T, Vector, Set >::insert(), llvm::rdf::RegisterAggr::insert(), llvm::SmallVectorImpl< T >::insert(), llvm::rdf::RegisterAggr::intersectWith(), IsDead, llvm::rdf::RegisterRef::Mask, llvm::rdf::CodeNode::members(), llvm::LaneBitmask::none(), P, llvm::rdf::NodeAttrs::Phi, llvm::rdf::NodeAttrs::PhiRef, llvm::rdf::RegisterRef::Reg, llvm::NVPTX::PTXCvtMode::RP, second, llvm::SetVector< T, Vector, Set >::size(), T, llvm::rdf::NodeAttrs::Undef, and llvm::rdf::NodeAttrs::Use.
Referenced by getRealUses().
NodeSet Liveness::getAllReachedUses | ( | RegisterRef | RefRR, |
NodeAddr< DefNode *> | DefA, | ||
const RegisterAggr & | DefRRs | ||
) |
Definition at line 381 of file RDFLiveness.cpp.
References llvm::rdf::NodeAddr< T >::Addr, D, llvm::rdf::NodeAttrs::Dead, llvm::rdf::NodeBase::getFlags(), llvm::rdf::DefNode::getReachedDef(), llvm::rdf::DefNode::getReachedUse(), llvm::rdf::RefNode::getSibling(), llvm::rdf::RegisterAggr::hasCoverOf(), llvm::rdf::RegisterAggr::insert(), IsDead, T, and llvm::rdf::NodeAttrs::Undef.
Referenced by getAllReachedUses(), and getAllReachingDefs().
|
inline |
Definition at line 74 of file RDFLiveness.h.
References getAllReachedUses(), getAllReachingDefsRec(), and getNearestAliasedRef().
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::NodeBase::getFlags(), and llvm::rdf::NodeAttrs::Undef.
Referenced by getAllReachingDefs(), and Liveness().
Definition at line 62 of file RDFLiveness.h.
References llvm::rdf::NodeAddr< T >::Addr, and getAllReachingDefs().
|
inline |
Definition at line 67 of file RDFLiveness.h.
References getAllReachedUses(), and getAllReachingDefs().
std::pair< NodeSet, bool > Liveness::getAllReachingDefsRec | ( | RegisterRef | RefRR, |
NodeAddr< RefNode *> | RefA, | ||
NodeSet & | Visited, | ||
const NodeSet & | Defs | ||
) |
Definition at line 271 of file RDFLiveness.cpp.
References llvm::rdf::NodeAddr< T >::Addr, D, llvm::SmallVectorBase::empty(), llvm::rdf::NodeAddr< T >::Id, llvm::rdf::RegisterAggr::insert(), MaxRecNest, llvm::rdf::CodeNode::members_if(), llvm::rdf::NodeAttrs::PhiRef, and llvm::rdf::NodeAttrs::Use.
Referenced by getAllReachedUses().
|
inline |
Definition at line 84 of file RDFLiveness.h.
|
inline |
Definition at line 85 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 324 of file RDFLiveness.cpp.
References llvm::rdf::NodeAddr< T >::Addr, B, llvm::rdf::NodeAttrs::Clobbering, E, llvm::find_if(), llvm::rdf::BlockNode::getCode(), llvm::rdf::InstrNode::getOwner(), I, llvm::rdf::NodeAddr< T >::Id, llvm::MipsISD::Ins, llvm::make_range(), llvm::rdf::CodeNode::members(), N, llvm::SmallVectorTemplateCommon< T, typename >::rbegin(), llvm::SmallVectorTemplateCommon< T, typename >::rend(), and T.
Referenced by getAllReachedUses(), and llvm::rdf::CopyPropagation::interpretAsCopy().
Definition at line 87 of file RDFLiveness.h.
References B, computeLiveIns(), computePhiInfo(), F(), resetKills(), and resetLiveIns().
void Liveness::resetKills | ( | ) |
void Liveness::resetKills | ( | MachineBasicBlock * | B | ) |
Definition at line 859 of file RDFLiveness.cpp.
References llvm::rdf::NodeAddr< T >::Addr, assert(), B, C, llvm::rdf::RegisterAggr::clearIn(), llvm::MachineInstr::clearKillInfo(), D, llvm::dbgs(), E, F(), llvm::rdf::BlockNode::getCode(), llvm::rdf::NodeBase::getKind(), llvm::rdf::InstrNode::getOwner(), llvm::MCSubRegIndexIterator::getSubReg(), llvm::MCSubRegIndexIterator::getSubRegIndex(), llvm::rdf::RegisterAggr::hasCoverOf(), I, llvm::rdf::RegisterAggr::insert(), llvm::MachineInstr::isDebugInstr(), llvm::TargetRegisterInfo::isPhysicalRegister(), llvm::MCRegisterInfo::DiffListIterator::isValid(), llvm::MCSubRegIndexIterator::isValid(), llvm::MCRegAliasIterator::isValid(), llvm::AArch64CC::LE, llvm::MachineBasicBlock::liveins(), llvm_unreachable, llvm::rdf::RegisterRef::Mask, llvm::rdf::CodeNode::members_if(), MI, N, llvm::MachineInstr::operands(), OR, P, llvm::rdf::NodeAttrs::Phi, llvm::rdf::NodeAttrs::Preserving, llvm::printMBBReference(), llvm::MachineBasicBlock::rbegin(), llvm::rdf::RegisterRef::Reg, llvm::MachineBasicBlock::rend(), llvm::NVPTX::PTXCvtMode::RN, SI, llvm::rdf::NodeAttrs::Stmt, llvm::MachineBasicBlock::successors(), llvm::X86II::TA, TRI, and llvm::rdf::NodeAttrs::Undef.
void Liveness::resetLiveIns | ( | ) |
Definition at line 837 of file RDFLiveness.cpp.
References B, E, I, llvm::rdf::RegisterRef::Mask, llvm::rdf::RegisterRef::Reg, llvm::rdf::RegisterAggr::rr_begin(), llvm::rdf::RegisterAggr::rr_end(), and T.
Referenced by getRealUses().
|
inline |
Definition at line 98 of file RDFLiveness.h.
References llvm::NVPTX::PTXCvtMode::RN, T, and TRI.