LLVM
8.0.1
|
#include "Target/Hexagon/RDFGraph.h"
Classes | |
struct | DefStack |
Public Types | |
using | DefStackMap = std::unordered_map< RegisterId, DefStack > |
Static Public Member Functions | |
template<uint16_t Kind> | |
static bool | IsRef (const NodeAddr< NodeBase *> BA) |
template<uint16_t Kind> | |
static bool | IsCode (const NodeAddr< NodeBase *> BA) |
static bool | IsDef (const NodeAddr< NodeBase *> BA) |
static bool | IsUse (const NodeAddr< NodeBase *> BA) |
static bool | IsPhi (const NodeAddr< NodeBase *> BA) |
static bool | IsPreservingDef (const NodeAddr< DefNode *> DA) |
Definition at line 645 of file RDFGraph.h.
using llvm::rdf::DataFlowGraph::DefStackMap = std::unordered_map<RegisterId, DefStack> |
Definition at line 734 of file RDFGraph.h.
DataFlowGraph::DataFlowGraph | ( | MachineFunction & | mf, |
const TargetInstrInfo & | tii, | ||
const TargetRegisterInfo & | tri, | ||
const MachineDominatorTree & | mdt, | ||
const MachineDominanceFrontier & | mdf, | ||
const TargetOperandInfo & | toi | ||
) |
Definition at line 670 of file RDFGraph.cpp.
References llvm::SIInstrFlags::DS.
Definition at line 657 of file RDFGraph.h.
References N.
Referenced by llvm::rdf::BlockNode::addPhi(), llvm::rdf::CodeNode::getFirstMember(), llvm::rdf::CodeNode::getLastMember(), llvm::rdf::RefNode::getNextRef(), llvm::rdf::RefNode::getOwner(), llvm::rdf::InstrNode::getOwner(), llvm::rdf::CodeNode::members_if(), llvm::rdf::CodeNode::removeMember(), and llvm::rdf::CopyPropagation::run().
void DataFlowGraph::build | ( | unsigned | Options = BuildOptions::None | ) |
Definition at line 885 of file RDFGraph.cpp.
References llvm::rdf::CodeNode::addMember(), llvm::rdf::NodeAddr< T >::Addr, assert(), E, llvm::MachineFunction::empty(), findBlock(), llvm::rdf::BlockNode::getCode(), I, llvm::rdf::RegisterAggr::insert(), llvm::MachineBasicBlock::isEHPad(), llvm::rdf::BuildOptions::KeepDeadPhis, llvm::MachineBasicBlock::liveins(), llvm::MachineRegisterInfo::liveins(), MRI, llvm::rdf::NodeAttrs::PhiRef, llvm::MachineBasicBlock::pred_empty(), llvm::MachineBasicBlock::predecessors(), llvm::rdf::NodeAttrs::Preserving, llvm::SmallVectorTemplateBase< T, bool >::push_back(), RA, llvm::rdf::RegisterAggr::rr_begin(), llvm::rdf::RegisterAggr::rr_end(), and llvm::MachineRegisterInfo::tracksLiveness().
|
inline |
Definition at line 769 of file RDFGraph.h.
Referenced by build(), getNextShadow(), and llvm::rdf::CopyPropagation::interpretAsCopy().
|
inline |
Definition at line 667 of file RDFGraph.h.
|
inline |
Definition at line 666 of file RDFGraph.h.
Definition at line 661 of file RDFGraph.h.
References llvm::rdf::NodeAttrs::Func.
|
inline |
Definition at line 668 of file RDFGraph.h.
|
inline |
Definition at line 662 of file RDFGraph.h.
Referenced by llvm::rdf::CopyPropagation::run().
NodeAddr<RefNode*> llvm::rdf::DataFlowGraph::getNextImp | ( | NodeAddr< InstrNode *> | IA, |
NodeAddr< RefNode *> | RA, | ||
bool | Create | ||
) |
NodeAddr<RefNode*> llvm::rdf::DataFlowGraph::getNextImp | ( | NodeAddr< InstrNode *> | IA, |
NodeAddr< RefNode *> | RA | ||
) | const |
NodeAddr< RefNode * > DataFlowGraph::getNextRelated | ( | NodeAddr< InstrNode *> | IA, |
NodeAddr< RefNode *> | RA | ||
) | const |
Definition at line 1173 of file RDFGraph.cpp.
References llvm::rdf::NodeAddr< T >::Addr, assert(), llvm::rdf::NodeBase::getKind(), llvm::rdf::RefNode::getNextRef(), llvm::rdf::RefNode::getOp(), llvm::rdf::PhiUseNode::getPredecessor(), llvm::rdf::RefNode::getRegRef(), llvm::rdf::NodeAddr< T >::Id, RA, llvm::rdf::NodeAttrs::Stmt, llvm::X86II::TA, and llvm::rdf::NodeAttrs::Use.
NodeAddr< RefNode * > DataFlowGraph::getNextShadow | ( | NodeAddr< InstrNode *> | IA, |
NodeAddr< RefNode *> | RA, | ||
bool | Create | ||
) |
Definition at line 1234 of file RDFGraph.cpp.
References llvm::rdf::CodeNode::addMemberAfter(), llvm::rdf::NodeAddr< T >::Addr, assert(), llvm::rdf::NodeBase::getFlags(), llvm::rdf::NodeAddr< T >::Id, llvm::rdf::NodeBase::setFlags(), llvm::rdf::NodeAttrs::Shadow, and llvm::X86II::TA.
Referenced by getNextShadow().
NodeAddr< RefNode * > DataFlowGraph::getNextShadow | ( | NodeAddr< InstrNode *> | IA, |
NodeAddr< RefNode *> | RA | ||
) | const |
Definition at line 1255 of file RDFGraph.cpp.
References llvm::rdf::CodeNode::addMember(), llvm::rdf::NodeAddr< T >::Addr, llvm::rdf::PhysicalRegisterInfo::alias(), assert(), llvm::rdf::DataFlowGraph::DefStack::bottom(), llvm::rdf::NodeAttrs::Clobbering, llvm::rdf::NodeAttrs::Dead, llvm::rdf::NodeAttrs::Def, llvm::SIInstrFlags::DS, E, llvm::SetVector< T, Vector, Set >::empty(), llvm::rdf::DataFlowGraph::DefStack::empty(), llvm::MachineDominanceFrontier::end(), F(), llvm::MachineDominanceFrontier::find(), findBlock(), llvm::rdf::NodeAttrs::Fixed, llvm::rdf::BlockNode::getCode(), llvm::rdf::CodeNode::getFirstMember(), llvm::rdf::NodeBase::getFlags(), llvm::rdf::NodeBase::getKind(), getNextShadow(), llvm::MachineDominatorTree::getNode(), llvm::MachineInstr::getNumOperands(), llvm::MCRegisterInfo::getNumRegs(), llvm::MachineInstr::getOperand(), llvm::rdf::DefNode::getReachedDef(), llvm::rdf::DefNode::getReachedUse(), llvm::rdf::RefNode::getReachingDef(), llvm::MachineOperand::getReg(), llvm::MachineOperand::getRegMask(), llvm::rdf::RefNode::getRegRef(), llvm::rdf::RefNode::getSibling(), llvm::rdf::RegisterAggr::hasAliasOf(), llvm::rdf::RegisterAggr::hasCoverOf(), I, llvm::rdf::NodeAddr< T >::Id, llvm::tgtok::In, llvm::SetVector< T, Vector, Set >::insert(), llvm::rdf::RegisterAggr::insert(), llvm::MachineInstr::isBranch(), llvm::MachineInstr::isCall(), llvm::rdf::TargetOperandInfo::isClobbering(), llvm::rdf::RegisterAggr::isCoverOf(), llvm::MachineOperand::isDead(), llvm::MachineOperand::isDef(), llvm::rdf::RefNode::isDef(), IsDef(), llvm::MachineBasicBlock::isEHPad(), llvm::rdf::TargetOperandInfo::isFixedReg(), llvm::MachineOperand::isGlobal(), llvm::MachineOperand::isImplicit(), llvm::MachineInstr::isIndirectBranch(), IsPhi(), llvm::TargetRegisterInfo::isPhysicalRegister(), llvm::rdf::TargetOperandInfo::isPreserving(), llvm::MachineOperand::isReg(), llvm::MachineOperand::isRegMask(), llvm::MachineOperand::isSymbol(), llvm::MachineOperand::isUndef(), llvm::MachineOperand::isUse(), IsUse(), Kind, llvm_unreachable, makeRegRef(), markBlock(), llvm::rdf::CodeNode::members(), llvm::rdf::CodeNode::members_if(), N, llvm::rdf::NodeAttrs::None, llvm::MachineInstr::operands(), llvm::rdf::NodeAttrs::PhiRef, llvm::MachineBasicBlock::predecessors(), llvm::rdf::NodeAttrs::Preserving, llvm::SmallVectorTemplateBase< T, bool >::push_back(), RA, llvm::rdf::RegisterRef::Reg, releaseBlock(), llvm::SetVector< T, Vector, Set >::remove(), llvm::rdf::CodeNode::removeMember(), llvm::NVPTX::PTXCvtMode::RM, llvm::rdf::NodeAttrs::Shadow, llvm::sort(), llvm::rdf::NodeAttrs::Stmt, llvm::MachineBasicBlock::successors(), llvm::X86II::TA, llvm::rdf::DataFlowGraph::DefStack::top(), llvm::rdf::NodeAttrs::Undef, unlinkDef(), unlinkUse(), llvm::rdf::NodeAttrs::Use, and X.
|
inline |
Definition at line 665 of file RDFGraph.h.
Definition at line 1147 of file RDFGraph.cpp.
References assert(), and llvm::rdf::NodeAddr< T >::Id.
Referenced by pushAllDefs().
|
inline |
Definition at line 663 of file RDFGraph.h.
References TII.
|
inline |
Definition at line 664 of file RDFGraph.h.
References TRI.
Referenced by llvm::rdf::CopyPropagation::interpretAsCopy(), and llvm::rdf::CopyPropagation::run().
Definition at line 790 of file RDFGraph.cpp.
References llvm::rdf::CodeNode::addMember(), llvm::rdf::BlockNode::addPhi(), llvm::rdf::NodeAddr< T >::Addr, assert(), llvm::AMDGPU::HSAMD::Kernel::Key::Attrs, B, llvm::rdf::NodeAttrs::Block, llvm::rdf::NodeAttrs::Code, llvm::rdf::NodeAttrs::Def, llvm::rdf::NodeAttrs::Func, llvm::rdf::NodeBase::getKind(), llvm::rdf::NodeBase::getType(), llvm::rdf::NodeAddr< T >::Id, llvm::rdf::NodeBase::init(), llvm::Intrinsic::memcpy, MI, P, llvm::rdf::NodeAttrs::Phi, llvm::rdf::NodeAttrs::PhiRef, RA, llvm::rdf::NodeAttrs::Ref, llvm::rdf::NodeBase::setAttrs(), llvm::rdf::CodeNode::setCode(), llvm::rdf::PhiUseNode::setPredecessor(), llvm::rdf::DefNode::setReachedDef(), llvm::rdf::DefNode::setReachedUse(), llvm::rdf::RefNode::setReachingDef(), llvm::rdf::RefNode::setRegRef(), llvm::rdf::RefNode::setSibling(), llvm::rdf::NodeAttrs::Stmt, and llvm::rdf::NodeAttrs::Use.
Referenced by llvm::rdf::CodeNode::addMember().
|
inlinestatic |
Definition at line 793 of file RDFGraph.h.
References llvm::rdf::NodeAddr< T >::Addr, llvm::rdf::NodeAttrs::Code, and Kind.
Referenced by llvm::rdf::CopyPropagation::interpretAsCopy(), and llvm::rdf::CopyPropagation::run().
Definition at line 798 of file RDFGraph.h.
References llvm::rdf::NodeAddr< T >::Addr, llvm::rdf::NodeAttrs::Def, and llvm::rdf::NodeAttrs::Ref.
Referenced by getNextShadow(), pushAllDefs(), and llvm::rdf::CopyPropagation::run().
Definition at line 808 of file RDFGraph.h.
References llvm::rdf::NodeAddr< T >::Addr, llvm::rdf::NodeAttrs::Code, and llvm::rdf::NodeAttrs::Phi.
Referenced by getNextShadow().
Definition at line 813 of file RDFGraph.h.
References llvm::rdf::NodeAddr< T >::Addr, llvm::AMDGPU::HSAMD::Kernel::Key::Attrs, B, llvm::SIInstrFlags::DS, llvm::rdf::NodeAttrs::Func, llvm::tgtok::In, MI, llvm::rdf::NodeAttrs::None, llvm::rdf::NodeAttrs::PhiRef, llvm::rdf::NodeAttrs::Preserving, llvm::X86II::TA, TII, TRI, and llvm::rdf::NodeAttrs::Undef.
|
inlinestatic |
Definition at line 787 of file RDFGraph.h.
References llvm::rdf::NodeAddr< T >::Addr, Kind, and llvm::rdf::NodeAttrs::Ref.
Definition at line 803 of file RDFGraph.h.
References llvm::rdf::NodeAddr< T >::Addr, llvm::rdf::NodeAttrs::Ref, and llvm::rdf::NodeAttrs::Use.
Referenced by getNextShadow().
RegisterRef DataFlowGraph::makeRegRef | ( | unsigned | Reg, |
unsigned | Sub | ||
) | const |
Definition at line 983 of file RDFGraph.cpp.
References assert(), llvm::MCRegisterInfo::getSubReg(), llvm::TargetRegisterInfo::isPhysicalRegister(), and llvm::rdf::PhysicalRegisterInfo::isRegMaskId().
Referenced by getNextShadow(), llvm::rdf::RefNode::getRegRef(), llvm::rdf::CopyPropagation::interpretAsCopy(), and makeRegRef().
RegisterRef DataFlowGraph::makeRegRef | ( | const MachineOperand & | Op | ) | const |
Definition at line 992 of file RDFGraph.cpp.
References assert(), llvm::LaneBitmask::getAll(), llvm::MachineOperand::getReg(), llvm::MachineOperand::getRegMask(), llvm::rdf::PhysicalRegisterInfo::getRegMaskId(), llvm::MachineOperand::getSubReg(), llvm::MachineOperand::isReg(), llvm::MachineOperand::isRegMask(), and makeRegRef().
void DataFlowGraph::markBlock | ( | NodeId | B, |
DefStackMap & | DefM | ||
) |
|
inline |
Definition at line 741 of file RDFGraph.h.
References llvm::rdf::RegisterRef::Mask, and llvm::rdf::RegisterRef::Reg.
Referenced by llvm::rdf::RefNode::setRegRef().
|
inline |
Definition at line 744 of file RDFGraph.h.
References llvm::rdf::RegisterRef::Mask, and llvm::rdf::RegisterRef::Reg.
Definition at line 783 of file RDFGraph.cpp.
Definition at line 651 of file RDFGraph.h.
References P.
void DataFlowGraph::pushAllDefs | ( | NodeAddr< InstrNode *> | IA, |
DefStackMap & | DM | ||
) |
Definition at line 1042 of file RDFGraph.cpp.
References llvm::rdf::NodeAddr< T >::Addr, assert(), llvm::rdf::NodeAttrs::Clobbering, llvm::dbgs(), llvm::SmallVectorTemplateCommon< T, typename >::front(), llvm::rdf::PhysicalRegisterInfo::getAliasSet(), llvm::MachineInstr::getParent(), llvm::rdf::RefNode::getRegRef(), getRelatedRefs(), IsDef(), llvm_unreachable, llvm::rdf::CodeNode::members_if(), llvm::printMBBReference(), and llvm::rdf::RegisterRef::Reg.
void DataFlowGraph::releaseBlock | ( | NodeId | B, |
DefStackMap & | DefM | ||
) |
RegisterRef DataFlowGraph::restrictRef | ( | RegisterRef | AR, |
RegisterRef | BR | ||
) | const |
Definition at line 999 of file RDFGraph.cpp.
References llvm::rdf::PhysicalRegisterInfo::alias(), llvm::LaneBitmask::any(), llvm::rdf::RegisterRef::Mask, and llvm::rdf::RegisterRef::Reg.
Definition at line 779 of file RDFGraph.h.
Referenced by getNextShadow().
Definition at line 773 of file RDFGraph.h.
Referenced by getNextShadow(), and llvm::rdf::CopyPropagation::run().
|
inline |
Definition at line 747 of file RDFGraph.h.
References llvm::ISD::BR, llvm::rdf::PackedRegisterRef::MaskId, RA, llvm::rdf::PackedRegisterRef::Reg, and Reg.
Referenced by llvm::rdf::RefNode::getRegRef().