Lines Matching refs:Func

602   FlowAdjuster(const ProfiParams &Params, FlowFunction &Func)  in FlowAdjuster()  argument
603 : Params(Params), Func(Func) {} in FlowAdjuster()
622 findReachable(Func.Entry, Visited); in joinIsolatedComponents()
626 auto &Block = Func.Blocks[I]; in joinIsolatedComponents()
631 assert(Path.size() > 0 && Path[0]->Source == Func.Entry && in joinIsolatedComponents()
633 Func.Blocks[Func.Entry].Flow += 1; in joinIsolatedComponents()
636 Func.Blocks[Jump->Target].Flow += 1; in joinIsolatedComponents()
655 for (auto *Jump : Func.Blocks[Src].SuccJumps) { in findReachable()
669 auto ForwardPath = findShortestPath(Func.Entry, BlockIdx); in findShortestPath()
687 if (Func.Blocks[Source].isExit() && Target == AnyExitBlock) in findShortestPath()
703 (Func.Blocks[Src].isExit() && Target == AnyExitBlock)) in findShortestPath()
706 for (auto *Jump : Func.Blocks[Src].SuccJumps) { in findShortestPath()
722 if (Func.Blocks[I].isExit() && Parent[I] != nullptr) { in findShortestPath()
758 std::min(Func.Blocks[Func.Entry].Flow, in jumpDistance()
765 uint64_t NumBlocks() const { return Func.Blocks.size(); } in NumBlocks()
773 for (const FlowBlock &SrcBlock : Func.Blocks) { in rebalanceUnknownSubgraphs()
810 if (Func.Blocks[Jump->Target].HasUnknownWeight) { in canRebalanceAtRoot()
834 auto &Block = Func.Blocks[Queue.front()]; in findUnknownSubgraph()
848 if (!Func.Blocks[Dst].HasUnknownWeight) { in findUnknownSubgraph()
849 KnownDstBlocks.push_back(&Func.Blocks[Dst]); in findUnknownSubgraph()
852 UnknownBlocks.push_back(&Func.Blocks[Dst]); in findUnknownSubgraph()
903 auto JumpSource = &Func.Blocks[Jump->Source]; in ignoreJump()
904 auto JumpTarget = &Func.Blocks[Jump->Target]; in ignoreJump()
946 FlowBlock *Block = &Func.Blocks[Queue.front()]; in isAcyclicSubgraph()
1043 FlowFunction &Func; member in __anon5aecd1f00111::FlowAdjuster
1057 FlowFunction &Func) { in initializeNetwork() argument
1058 uint64_t NumBlocks = Func.Blocks.size(); in initializeNetwork()
1060 uint64_t NumJumps = Func.Jumps.size(); in initializeNetwork()
1076 auto &Block = Func.Blocks[B]; in initializeNetwork()
1104 auto &Jump = Func.Jumps[J]; in initializeNetwork()
1185 FlowFunction &Func) { in extractWeights() argument
1186 uint64_t NumBlocks = Func.Blocks.size(); in extractWeights()
1187 uint64_t NumJumps = Func.Jumps.size(); in extractWeights()
1191 auto &Jump = Func.Jumps[J]; in extractWeights()
1209 for (auto &Jump : Func.Jumps) { in extractWeights()
1214 auto &Block = Func.Blocks[B]; in extractWeights()
1221 void verifyInput(const FlowFunction &Func) { in verifyInput() argument
1223 assert(Func.Entry == 0 && Func.Blocks[0].isEntry()); in verifyInput()
1225 for (size_t I = 1; I < Func.Blocks.size(); I++) { in verifyInput()
1226 assert(!Func.Blocks[I].isEntry() && "multiple entry blocks"); in verifyInput()
1227 if (Func.Blocks[I].isExit()) in verifyInput()
1233 for (auto &Block : Func.Blocks) { in verifyInput()
1241 for (auto &Block : Func.Blocks) { in verifyInput()
1246 for (auto &Block : Func.Blocks) { in verifyInput()
1251 for (auto &Jump : Func.Jumps) { in verifyInput()
1258 void verifyOutput(const FlowFunction &Func) { in verifyOutput() argument
1259 const uint64_t NumBlocks = Func.Blocks.size(); in verifyOutput()
1262 for (const auto &Jump : Func.Jumps) { in verifyOutput()
1270 auto &Block = Func.Blocks[I]; in verifyOutput()
1288 for (const auto &Jump : Func.Jumps) { in verifyOutput()
1297 Queue.push(Func.Entry); in verifyOutput()
1298 Visited[Func.Entry] = true; in verifyOutput()
1313 auto &Block = Func.Blocks[I]; in verifyOutput()
1323 void llvm::applyFlowInference(const ProfiParams &Params, FlowFunction &Func) { in applyFlowInference() argument
1326 for (FlowBlock &Block : Func.Blocks) { in applyFlowInference()
1331 for (FlowJump &Jump : Func.Jumps) { in applyFlowInference()
1338 if (Func.Blocks.size() <= 1 || !HasSamples) in applyFlowInference()
1343 verifyInput(Func); in applyFlowInference()
1348 initializeNetwork(Params, InferenceNetwork, Func); in applyFlowInference()
1352 extractWeights(Params, InferenceNetwork, Func); in applyFlowInference()
1355 auto Adjuster = FlowAdjuster(Params, Func); in applyFlowInference()
1360 verifyOutput(Func); in applyFlowInference()
1365 void llvm::applyFlowInference(FlowFunction &Func) { in applyFlowInference() argument
1378 applyFlowInference(Params, Func); in applyFlowInference()