Lines Matching refs:SrcBlock
773 for (const FlowBlock &SrcBlock : Func.Blocks) { in rebalanceUnknownSubgraphs() local
775 if (!canRebalanceAtRoot(&SrcBlock)) in rebalanceUnknownSubgraphs()
782 findUnknownSubgraph(&SrcBlock, KnownDstBlocks, UnknownBlocks); in rebalanceUnknownSubgraphs()
787 if (!canRebalanceSubgraph(&SrcBlock, KnownDstBlocks, UnknownBlocks, in rebalanceUnknownSubgraphs()
792 if (!isAcyclicSubgraph(&SrcBlock, DstBlock, UnknownBlocks)) in rebalanceUnknownSubgraphs()
796 rebalanceUnknownSubgraph(&SrcBlock, DstBlock, UnknownBlocks); in rebalanceUnknownSubgraphs()
801 bool canRebalanceAtRoot(const FlowBlock *SrcBlock) { in canRebalanceAtRoot() argument
804 if (SrcBlock->HasUnknownWeight || SrcBlock->Flow == 0) in canRebalanceAtRoot()
809 for (auto *Jump : SrcBlock->SuccJumps) { in canRebalanceAtRoot()
823 void findUnknownSubgraph(const FlowBlock *SrcBlock, in findUnknownSubgraph() argument
831 Queue.push(SrcBlock->Index); in findUnknownSubgraph()
832 Visited[SrcBlock->Index] = true; in findUnknownSubgraph()
839 if (ignoreJump(SrcBlock, nullptr, Jump)) in findUnknownSubgraph()
860 bool canRebalanceSubgraph(const FlowBlock *SrcBlock, in canRebalanceSubgraph() argument
883 if (ignoreJump(SrcBlock, DstBlock, Jump)) in canRebalanceSubgraph()
897 bool ignoreJump(const FlowBlock *SrcBlock, const FlowBlock *DstBlock, in ignoreJump() argument
911 if (!JumpTarget->HasUnknownWeight && JumpSource == SrcBlock) in ignoreJump()
923 bool isAcyclicSubgraph(const FlowBlock *SrcBlock, const FlowBlock *DstBlock, in isAcyclicSubgraph() argument
929 if (ignoreJump(SrcBlock, DstBlock, Jump)) in isAcyclicSubgraph()
934 fillInDegree(SrcBlock); in isAcyclicSubgraph()
939 if (LocalInDegree[SrcBlock->Index] > 0) in isAcyclicSubgraph()
944 Queue.push(SrcBlock->Index); in isAcyclicSubgraph()
953 if (Block->HasUnknownWeight && Block != SrcBlock) in isAcyclicSubgraph()
958 if (ignoreJump(SrcBlock, DstBlock, Jump)) in isAcyclicSubgraph()
978 void rebalanceUnknownSubgraph(const FlowBlock *SrcBlock, in rebalanceUnknownSubgraph() argument
981 assert(SrcBlock->Flow > 0 && "zero-flow block in unknown subgraph"); in rebalanceUnknownSubgraph()
986 for (auto *Jump : SrcBlock->SuccJumps) { in rebalanceUnknownSubgraph()
987 if (ignoreJump(SrcBlock, DstBlock, Jump)) in rebalanceUnknownSubgraph()
991 rebalanceBlock(SrcBlock, DstBlock, SrcBlock, BlockFlow); in rebalanceUnknownSubgraph()
1002 rebalanceBlock(SrcBlock, DstBlock, Block, BlockFlow); in rebalanceUnknownSubgraph()
1008 void rebalanceBlock(const FlowBlock *SrcBlock, const FlowBlock *DstBlock, in rebalanceBlock() argument
1013 if (ignoreJump(SrcBlock, DstBlock, Jump)) in rebalanceBlock()
1026 if (ignoreJump(SrcBlock, DstBlock, Jump)) in rebalanceBlock()