Lines Matching defs:Chain
305 void merge(MachineBasicBlock *BB, BlockChain *Chain) {
310 if (!Chain) {
318 assert(BB == *Chain->begin() && "Passed BB is not head of Chain.");
319 assert(Chain->begin() != Chain->end());
323 for (MachineBasicBlock *ChainBB : *Chain) {
325 assert(BlockToChain[ChainBB] == Chain && "Incoming blocks not in chain.");
461 const BlockChain &Chain, const MachineBasicBlock *LoopHeaderBB,
467 const BlockChain &Chain, const MachineBasicBlock *BB,
473 const MachineBasicBlock *BB, const BlockChain &Chain,
483 const MachineBasicBlock *LoopHeaderBB, BlockChain &Chain,
489 BlockChain &Chain, BlockFilterSet *BlockFilter,
496 BranchProbability RealSuccProb, const BlockChain &Chain,
499 const MachineBasicBlock *BB, const BlockChain &Chain,
502 const BlockChain &Chain, SmallVectorImpl<MachineBasicBlock *> &WorkList);
520 void buildChain(const MachineBasicBlock *BB, BlockChain &Chain,
558 const BlockChain &Chain, const BlockFilterSet *BlockFilter);
563 const BlockChain &Chain, const BlockFilterSet *BlockFilter);
569 BranchProbability AdjustedSumProb, const BlockChain &Chain,
581 const BlockChain &Chain, const BlockFilterSet *BlockFilter);
659 const BlockChain &Chain, const MachineBasicBlock *LoopHeaderBB,
663 for (MachineBasicBlock *MBB : Chain) {
664 markBlockSuccessors(Chain, MBB, LoopHeaderBB, BlockFilter);
675 const BlockChain &Chain, const MachineBasicBlock *MBB,
686 if (&Chain == &SuccChain || Succ == LoopHeaderBB)
708 const MachineBasicBlock *BB, const BlockChain &Chain,
734 if (SuccChain == &Chain) {
817 const BlockChain &Chain, const BlockFilterSet *BlockFilter) {
845 collectViableSuccessors(Succ, Chain, BlockFilter, SuccSuccs);
874 || BlockToChain[SuccPred] == &Chain
949 Chain, BlockFilter))
971 const BlockChain &Chain, const BlockFilterSet *BlockFilter) {
995 PredChain == &Chain || PredChain == BlockToChain[Succ])
1066 BranchProbability AdjustedSumProb, const BlockChain &Chain,
1087 BlockToChain[SuccPred] == &Chain ||
1119 canTailDuplicateUnplacedPreds(BB, Succ2, Chain, BlockFilter) &&
1121 Chain, BlockFilter)) {
1150 const BlockChain &Chain, const BlockFilterSet *BlockFilter) {
1167 || (BlockToChain[Pred] == &Chain && !Succ->succ_empty()))
1344 TriangleChain Chain = std::move(Found->second);
1346 Chain.append(PDom);
1347 TriangleChainMap.insert(std::make_pair(Chain.getKey(), std::move(Chain)));
1359 TriangleChain &Chain = ChainPair.second;
1363 if (Chain.count() < TriangleChainCount)
1365 MachineBasicBlock *dst = Chain.Edges.back();
1366 Chain.Edges.pop_back();
1367 for (MachineBasicBlock *src : reverse(Chain.Edges)) {
1412 /// \p Chain: The chain that BB belongs to and Succ is being considered for.
1418 BranchProbability RealSuccProb, const BlockChain &Chain,
1549 PredChain == &Chain || Pred != *std::prev(PredChain->end()) ||
1597 const MachineBasicBlock *BB, const BlockChain &Chain,
1606 collectViableSuccessors(BB, Chain, BlockFilter, Successors);
1619 SuccChain != &Chain && Succ == *SuccChain->begin())
1625 if (isTrellis(BB, Successors, Chain, BlockFilter))
1626 return getBestTrellisSuccessor(BB, Successors, AdjustedSumProb, Chain,
1643 Chain, BlockFilter)) {
1681 if (canTailDuplicateUnplacedPreds(BB, Succ, Chain, BlockFilter)
1682 && (isProfitableToTailDup(BB, Succ, BestProb, Chain, BlockFilter))) {
1709 const BlockChain &Chain, SmallVectorImpl<MachineBasicBlock *> &WorkList) {
1715 return BlockToChain.lookup(BB) == &Chain;
1730 if (&SuccChain == &Chain)
1822 BlockChain &Chain = *BlockToChain[MBB];
1823 if (!UpdatedPreds.insert(&Chain).second)
1827 Chain.UnscheduledPredecessors == 0 &&
1829 for (MachineBasicBlock *ChainBB : Chain) {
1830 assert(BlockToChain[ChainBB] == &Chain &&
1835 if (BlockToChain[Pred] == &Chain)
1837 ++Chain.UnscheduledPredecessors;
1841 if (Chain.UnscheduledPredecessors != 0)
1844 MachineBasicBlock *BB = *Chain.begin();
1852 const MachineBasicBlock *HeadBB, BlockChain &Chain,
1855 assert(BlockToChain[HeadBB] == &Chain && "BlockToChainMap mis-match.\n");
1862 markChainSuccessors(Chain, LoopHeaderBB, BlockFilter);
1863 MachineBasicBlock *BB = *std::prev(Chain.end());
1866 assert(BlockToChain[BB] == &Chain && "BlockToChainMap mis-match in loop.");
1867 assert(*std::prev(Chain.end()) == BB && "BB Not found at end of chain.");
1872 auto Result = selectBestSuccessor(BB, Chain, BlockFilter);
1877 Chain,
1884 BestSucc = selectBestCandidateBlock(Chain, BlockWorkList);
1886 BestSucc = selectBestCandidateBlock(Chain, EHPadWorkList);
1890 BestSucc = getFirstUnplacedBlock(Chain, PrevUnplacedBlockInFilterIt,
1893 BestSucc = getFirstUnplacedBlock(Chain, PrevUnplacedBlockIt);
1904 repeatedlyTailDuplicateBlock(BestSucc, BB, LoopHeaderBB, Chain,
1921 Chain.merge(BestSucc, &SuccChain);
1922 BB = *std::prev(Chain.end());
1926 << getBlockName(*Chain.begin()) << "\n");
2238 BlockChain &Chain = *BlockToChain[MBB];
2241 if (MBB != *std::prev(Chain.end()))
2258 if (&Chain == &SuccChain) {
2623 BlockChain *Chain = BlockToChain[LoopBB];
2624 for (MachineBasicBlock *ChainBB : *Chain)
2702 << " Chain header: " << getBlockName(*LoopChain.begin()) << "\n";
2712 << " Chain header: " << getBlockName(*LoopChain.begin()) << "\n"
2722 << " Chain header: " << getBlockName(*LoopChain.begin()) << "\n"
2739 BlockChain *Chain =
2757 Chain->merge(NextBB, nullptr);
3045 /// \p Chain - Chain to which \p LPred belongs, and \p BB will belong.
3056 const MachineBasicBlock *LoopHeaderBB, BlockChain &Chain,
3062 BB, LPred, Chain, BlockFilter, PrevUnplacedBlockIt,
3073 // The removal callback causes Chain.end() to be updated when a block is
3078 BlockChain::iterator ChainEnd = Chain.end();
3081 if (ChainEnd == Chain.begin())
3085 DupBB, DupPred, Chain, BlockFilter, PrevUnplacedBlockIt,
3093 LPred = *std::prev(Chain.end());
3095 markBlockSuccessors(Chain, LPred, LoopHeaderBB, BlockFilter);
3102 /// \p Chain - Chain to which \p LPred belongs, and \p BB will belong.
3113 MachineBasicBlock *BB, MachineBasicBlock *LPred, BlockChain &Chain,
3134 // Remove from the Chain and Chain Map
3136 BlockChain *Chain = BlockToChain[RemBB];
3137 InWorkList = Chain->UnscheduledPredecessors == 0;
3138 Chain->remove(RemBB);
3212 || PredChain == &Chain)
3218 if (NewChain != &Chain && NewChain != PredChain)