Lines Matching refs:Func
592 FlowAdjuster(FlowFunction &Func) : Func(Func) { in FlowAdjuster() argument
593 assert(Func.Blocks[Func.Entry].isEntry() && in FlowAdjuster()
610 findReachable(Func.Entry, Visited); in joinIsolatedComponents()
614 auto &Block = Func.Blocks[I]; in joinIsolatedComponents()
619 assert(Path.size() > 0 && Path[0]->Source == Func.Entry && in joinIsolatedComponents()
621 Func.Blocks[Func.Entry].Flow += 1; in joinIsolatedComponents()
624 Func.Blocks[Jump->Target].Flow += 1; in joinIsolatedComponents()
643 for (auto Jump : Func.Blocks[Src].SuccJumps) { in findReachable()
657 auto ForwardPath = findShortestPath(Func.Entry, BlockIdx); in findShortestPath()
675 if (Func.Blocks[Source].isExit() && Target == AnyExitBlock) in findShortestPath()
691 (Func.Blocks[Src].isExit() && Target == AnyExitBlock)) in findShortestPath()
694 for (auto Jump : Func.Blocks[Src].SuccJumps) { in findShortestPath()
710 if (Func.Blocks[I].isExit() && Parent[I] != nullptr) { in findShortestPath()
744 std::min(Func.Blocks[Func.Entry].Flow, in jumpDistance()
753 uint64_t NumBlocks() const { return Func.Blocks.size(); } in NumBlocks()
761 for (uint64_t I = 0; I < Func.Blocks.size(); I++) { in rebalanceUnknownSubgraphs()
762 auto SrcBlock = &Func.Blocks[I]; in rebalanceUnknownSubgraphs()
799 if (Func.Blocks[Jump->Target].UnknownWeight) { in canRebalanceAtRoot()
823 auto &Block = Func.Blocks[Queue.front()]; in findUnknownSubgraph()
837 if (!Func.Blocks[Dst].UnknownWeight) { in findUnknownSubgraph()
838 KnownDstBlocks.push_back(&Func.Blocks[Dst]); in findUnknownSubgraph()
841 UnknownBlocks.push_back(&Func.Blocks[Dst]); in findUnknownSubgraph()
892 auto JumpSource = &Func.Blocks[Jump->Source]; in ignoreJump()
893 auto JumpTarget = &Func.Blocks[Jump->Target]; in ignoreJump()
935 FlowBlock *Block = &Func.Blocks[Queue.front()]; in isAcyclicSubgraph()
1028 FlowFunction &Func; member in __anon646eb3200111::FlowAdjuster
1036 void initializeNetwork(MinCostMaxFlow &Network, FlowFunction &Func) { in initializeNetwork() argument
1037 uint64_t NumBlocks = Func.Blocks.size(); in initializeNetwork()
1042 if (Func.Blocks[Func.Entry].Weight == 0) { in initializeNetwork()
1043 Func.Blocks[Func.Entry].Weight = 1; in initializeNetwork()
1057 auto &Block = Func.Blocks[B]; in initializeNetwork()
1116 for (auto &Jump : Func.Jumps) { in initializeNetwork()
1132 void extractWeights(MinCostMaxFlow &Network, FlowFunction &Func) { in extractWeights() argument
1133 uint64_t NumBlocks = Func.Blocks.size(); in extractWeights()
1137 auto &Block = Func.Blocks[Src]; in extractWeights()
1153 for (auto &Jump : Func.Jumps) { in extractWeights()
1175 void verifyWeights(const FlowFunction &Func) { in verifyWeights() argument
1176 const uint64_t NumBlocks = Func.Blocks.size(); in verifyWeights()
1179 for (auto &Jump : Func.Jumps) { in verifyWeights()
1187 auto &Block = Func.Blocks[I]; in verifyWeights()
1205 for (auto &Jump : Func.Jumps) { in verifyWeights()
1214 Queue.push(Func.Entry); in verifyWeights()
1215 Visited[Func.Entry] = true; in verifyWeights()
1230 auto &Block = Func.Blocks[I]; in verifyWeights()
1239 void llvm::applyFlowInference(FlowFunction &Func) { in applyFlowInference() argument
1242 initializeNetwork(InferenceNetwork, Func); in applyFlowInference()
1246 extractWeights(InferenceNetwork, Func); in applyFlowInference()
1249 auto Adjuster = FlowAdjuster(Func); in applyFlowInference()
1254 verifyWeights(Func); in applyFlowInference()