Lines Matching refs:Fn
229 for (auto &Fn : M) { in calculateFunctionCosts() local
230 if (Fn.isDeclaration()) in calculateFunctionCosts()
234 const auto &TTI = GetTTI(Fn); in calculateFunctionCosts()
235 for (const auto &BB : Fn) { in calculateFunctionCosts()
250 CostMap[&Fn] = FnCost; in calculateFunctionCosts()
254 if (isEntryPoint(&Fn)) in calculateFunctionCosts()
292 for (const auto &Fn : M) { in addAllIndirectCallDependencies() local
293 if (canBeIndirectlyCalled(Fn)) in addAllIndirectCallDependencies()
294 Fns.insert(&Fn); in addAllIndirectCallDependencies()
311 const Function &Fn, in addAllDependencies() argument
314 assert(!Fn.isDeclaration()); in addAllDependencies()
316 const Module &M = *Fn.getParent(); in addAllDependencies()
317 SmallVector<const Function *> WorkList({&Fn}); in addAllDependencies()
367 const Function *Fn) in FunctionWithDependencies()
368 : Fn(Fn) { in FunctionWithDependencies()
372 addAllDependencies(SML, CG, *Fn, Dependencies, in FunctionWithDependencies()
373 /*OnlyDirect*/ !isEntryPoint(Fn), HasIndirectCall); in FunctionWithDependencies()
374 TotalCost = FnCosts.at(Fn); in FunctionWithDependencies()
385 const Function *Fn = nullptr; member
490 FnsInPart.insert(FWD.Fn); in doPartitioning()
493 SML << "assign " << getName(*FWD.Fn) << " to P" << PID << "\n -> "; in doPartitioning()
503 for (auto *Fn : Partitions[PID]) in doPartitioning() local
504 NewCost += FnCosts.at(Fn); in doPartitioning()
525 SML << "Function with indirect call(s): " << getName(*CurFn.Fn) in doPartitioning()
537 << getName(*CurFn.Fn) << " defaulting to P0\n"; in doPartitioning()
545 SML << "Large Function: " << getName(*CurFn.Fn) in doPartitioning()
573 for (auto *Fn : Part) in doPartitioning() local
574 Cost += FnCosts.at(Fn); in doPartitioning()
589 for (auto &Fn : M) { in doPartitioning() local
590 if (!Fn.isDeclaration() && !AllFunctions.contains(&Fn)) { in doPartitioning()
591 assert(AllFunctions.contains(&Fn) && "Missed a function?!"); in doPartitioning()
611 static bool hasDirectCaller(const Function &Fn) { in hasDirectCaller() argument
612 for (auto &U : Fn.uses()) { in hasDirectCaller()
638 for (auto &Fn : M) { in splitAMDGPUModule() local
639 if (Fn.hasAddressTaken()) { in splitAMDGPUModule()
640 if (Fn.hasLocalLinkage()) { in splitAMDGPUModule()
641 SML << "[externalize] " << Fn.getName() in splitAMDGPUModule()
644 externalize(Fn); in splitAMDGPUModule()
665 for (auto &Fn : M) { in splitAMDGPUModule() local
666 if (isEntryPoint(&Fn) && !Fn.isDeclaration()) in splitAMDGPUModule()
667 WorkList.emplace_back(SML, CG, FnCosts, &Fn); in splitAMDGPUModule()
676 SeenFunctions.insert(FWD.Fn); in splitAMDGPUModule()
680 for (auto &Fn : M) { in splitAMDGPUModule() local
683 if (!Fn.isDeclaration() && !isEntryPoint(&Fn) && in splitAMDGPUModule()
684 !SeenFunctions.count(&Fn) && !hasDirectCaller(Fn)) { in splitAMDGPUModule()
685 WorkList.emplace_back(SML, CG, FnCosts, &Fn); in splitAMDGPUModule()
695 return A.Fn->getName() < B.Fn->getName(); in splitAMDGPUModule()
702 SML << "[root] " << getName(*FWD.Fn) << " (totalCost:" << FWD.TotalCost in splitAMDGPUModule()
741 if (const auto *Fn = dyn_cast<Function>(GV)) in splitAMDGPUModule() local
742 return FnsInPart.contains(Fn); in splitAMDGPUModule()