Lines Matching refs:VPBlockBase

388 class VPBlockBase {
401 SmallVector<VPBlockBase *, 1> Predecessors;
404 SmallVector<VPBlockBase *, 1> Successors;
421 void appendSuccessor(VPBlockBase *Successor) { in appendSuccessor()
427 void appendPredecessor(VPBlockBase *Predecessor) { in appendPredecessor()
433 void removePredecessor(VPBlockBase *Predecessor) { in removePredecessor()
440 void removeSuccessor(VPBlockBase *Successor) { in removeSuccessor()
447 VPBlockBase(const unsigned char SC, const std::string &N) in VPBlockBase() function
457 using VPBlocksTy = SmallVectorImpl<VPBlockBase *>;
459 virtual ~VPBlockBase() = default;
503 VPBlockBase *getSingleSuccessor() const { in getSingleSuccessor()
509 VPBlockBase *getSinglePredecessor() const { in getSinglePredecessor()
520 VPBlockBase *getEnclosingBlockWithSuccessors();
525 VPBlockBase *getEnclosingBlockWithPredecessors();
539 VPBlockBase *getSingleHierarchicalSuccessor() { in getSingleHierarchicalSuccessor()
555 VPBlockBase *getSingleHierarchicalPredecessor() { in getSingleHierarchicalPredecessor()
576 void setOneSuccessor(VPBlockBase *Successor) { in setOneSuccessor()
585 void setTwoSuccessors(VPBlockBase *IfTrue, VPBlockBase *IfFalse, in setTwoSuccessors()
597 void setPredecessors(ArrayRef<VPBlockBase *> NewPreds) { in setPredecessors()
617 static void deleteCFG(VPBlockBase *Entry);
1600 class VPBasicBlock : public VPBlockBase {
1610 : VPBlockBase(VPBasicBlockSC, Name.str()) {
1655 static inline bool classof(const VPBlockBase *V) { in classof()
1656 return V->getVPBlockID() == VPBlockBase::VPBasicBlockSC; in classof()
1697 using VPBlockBase::print; // Get the print(raw_stream &O) version.
1714 class VPRegionBlock : public VPBlockBase {
1716 VPBlockBase *Entry;
1719 VPBlockBase *Exit;
1726 VPRegionBlock(VPBlockBase *Entry, VPBlockBase *Exit,
1728 : VPBlockBase(VPRegionBlockSC, Name), Entry(Entry), Exit(Exit), in VPBlockBase() function
1736 : VPBlockBase(VPRegionBlockSC, Name), Entry(nullptr), Exit(nullptr), in VPBlockBase() function
1748 static inline bool classof(const VPBlockBase *V) { in classof()
1749 return V->getVPBlockID() == VPBlockBase::VPRegionBlockSC; in classof()
1752 const VPBlockBase *getEntry() const { return Entry; } in getEntry()
1753 VPBlockBase *getEntry() { return Entry; } in getEntry()
1757 void setEntry(VPBlockBase *EntryBlock) { in setEntry()
1768 VPBlockBase &front() const { return *Entry; } in front()
1770 const VPBlockBase *getExit() const { return Exit; } in getExit()
1771 VPBlockBase *getExit() { return Exit; } in getExit()
1775 void setExit(VPBlockBase *ExitBlock) { in setExit()
1801 using VPBlockBase::print; // Get the print(raw_stream &O) version.
1815 template <> struct GraphTraits<VPBlockBase *> {
1816 using NodeRef = VPBlockBase *;
1817 using ChildIteratorType = SmallVectorImpl<VPBlockBase *>::iterator;
1830 template <> struct GraphTraits<const VPBlockBase *> {
1831 using NodeRef = const VPBlockBase *;
1832 using ChildIteratorType = SmallVectorImpl<VPBlockBase *>::const_iterator;
1847 template <> struct GraphTraits<Inverse<VPBlockBase *>> {
1848 using NodeRef = VPBlockBase *;
1849 using ChildIteratorType = SmallVectorImpl<VPBlockBase *>::iterator;
1870 struct GraphTraits<VPRegionBlock *> : public GraphTraits<VPBlockBase *> {
1889 : public GraphTraits<const VPBlockBase *> {
1908 : public GraphTraits<Inverse<VPBlockBase *>> {
1935 std::forward_iterator_tag, VPBlockBase> {
1989 const VPBlockBase *operator*() const { return deref(Block, SuccessorIdx); }
2020 struct GraphTraits<VPBlockRecursiveTraversalWrapper<VPBlockBase *>> {
2021 using NodeRef = VPBlockBase *;
2022 using ChildIteratorType = VPAllSuccessorsIterator<VPBlockBase *>;
2025 getEntryNode(VPBlockRecursiveTraversalWrapper<VPBlockBase *> N) {
2039 struct GraphTraits<VPBlockRecursiveTraversalWrapper<const VPBlockBase *>> {
2040 using NodeRef = const VPBlockBase *;
2041 using ChildIteratorType = VPAllSuccessorsIterator<const VPBlockBase *>;
2044 getEntryNode(VPBlockRecursiveTraversalWrapper<const VPBlockBase *> N) {
2067 VPBlockBase *Entry;
2098 VPlan(VPBlockBase *Entry = nullptr) : Entry(Entry) {
2106 for (VPBlockBase *Block : depth_first(Entry))
2109 VPBlockBase::deleteCFG(Entry);
2122 VPBlockBase *getEntry() { return Entry; }
2123 const VPBlockBase *getEntry() const { return Entry; }
2125 VPBlockBase *setEntry(VPBlockBase *Block) {
2222 SmallDenseMap<const VPBlockBase *, unsigned> BlockID;
2230 void dumpBlock(const VPBlockBase *Block);
2234 void dumpEdges(const VPBlockBase *Block);
2243 unsigned getOrCreateBID(const VPBlockBase *Block) {
2247 const Twine getOrCreateName(const VPBlockBase *Block);
2249 const Twine getUID(const VPBlockBase *Block);
2252 void drawEdge(const VPBlockBase *From, const VPBlockBase *To, bool Hidden,
2295 static void insertBlockAfter(VPBlockBase *NewBlock, VPBlockBase *BlockPtr) {
2312 static void insertTwoBlocksAfter(VPBlockBase *IfTrue, VPBlockBase *IfFalse,
2313 VPValue *Condition, VPBlockBase *BlockPtr) {
2329 static void connectBlocks(VPBlockBase *From, VPBlockBase *To) {
2340 static void disconnectBlocks(VPBlockBase *From, VPBlockBase *To) {
2347 static bool isBackEdge(const VPBlockBase *FromBlock,
2348 const VPBlockBase *ToBlock, const VPLoopInfo *VPLI) {
2361 static bool blockIsLoopLatch(const VPBlockBase *Block,
2371 static unsigned countSuccessorsNoBE(VPBlockBase *PredBlock,
2374 for (VPBlockBase *SuccBlock : PredBlock->getSuccessors()) {
2388 const VPBlockBase, VPBlockBase>::type;
2417 void visitBlock(VPBlockBase *Block, Old2NewTy &Old2New,