Lines Matching +full:de +full:- +full:assert

1 //===--------------------- BottleneckAnalysis.cpp ---------------*- C++ -*-===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
13 //===----------------------------------------------------------------------===//
23 #define DEBUG_TYPE "llvm-mca"
80 uint64_t Current = CumulativeMask & (-CumulativeMask); in updateResourcePressureDistribution()
93 uint64_t SubUnit = Mask & (-Mask); in updateResourcePressureDistribution()
105 assert(Event.Reason != HWPressureEvent::INVALID && in handlePressureEvent()
149 assert(FromIID < ToIID && "Graph should be acyclic!"); in dumpDependencyEdge()
151 const DependencyEdge::Dependency &DE = DepEdge.Dep; in dumpDependencyEdge() local
152 assert(DE.Type != DependencyEdge::DT_INVALID && "Unexpected invalid edge!"); in dumpDependencyEdge()
155 if (DE.Type == DependencyEdge::DT_REGISTER) { in dumpDependencyEdge()
156 OS << " - REGISTER: "; in dumpDependencyEdge()
157 MCIP.printRegName(OS, DE.ResourceOrRegID); in dumpDependencyEdge()
158 } else if (DE.Type == DependencyEdge::DT_MEMORY) { in dumpDependencyEdge()
159 OS << " - MEMORY"; in dumpDependencyEdge()
161 assert(DE.Type == DependencyEdge::DT_RESOURCE && in dumpDependencyEdge()
163 OS << " - RESOURCE MASK: " << DE.ResourceOrRegID; in dumpDependencyEdge()
165 OS << " - COST: " << DE.Cost << '\n'; in dumpDependencyEdge()
173 // Use a cut-off threshold to prune edges with a low frequency. in pruneEdges()
181 Nodes[Edge.ToIID].NumPredecessors--; in pruneEdges()
182 std::swap(Edge, N.OutgoingEdges[E - 1]); in pruneEdges()
183 --E; in pruneEdges()
188 N.OutgoingEdges.resize(Size - NumPruned); in pruneEdges()
279 for (const DependencyEdge *&DE : llvm::reverse(Seq)) { in getCriticalSequence() local
281 DE = &N.CriticalPredecessor; in getCriticalSequence()
325 FOS << "\n +----< " << FromIID << "."; in printCriticalSequence()
335 FOS << "\n +----< " << CurrentIID << "."; in printCriticalSequence()
340 for (const DependencyEdge *&DE : Seq) { in printCriticalSequence() local
341 ToIID = DE->ToIID % Source.size(); in printCriticalSequence()
351 FOS << "\n +----> " << ToIID << "."; in printCriticalSequence()
355 << "\n +----> " << ToIID << "."; in printCriticalSequence()
360 const DependencyEdge::Dependency &Dep = DE->Dep; in printCriticalSequence()
372 assert(Dep.Type == DependencyEdge::DT_RESOURCE && in printCriticalSequence()
382 FOS << " [ probability: " << ((DE->Frequency * 100) / Iterations) in printCriticalSequence()
404 for (const DependencyEdge &DE : Node.OutgoingEdges) in dump() local
405 if (DE.Dep.Type == DependencyEdge::DT_REGISTER) in dump()
406 dumpDependencyEdge(OS, DE, MCIP); in dump()
410 for (const DependencyEdge &DE : Node.OutgoingEdges) in dump() local
411 if (DE.Dep.Type == DependencyEdge::DT_MEMORY) in dump()
412 dumpDependencyEdge(OS, DE, MCIP); in dump()
416 for (const DependencyEdge &DE : Node.OutgoingEdges) in dump() local
417 if (DE.Dep.Type == DependencyEdge::DT_RESOURCE) in dump()
418 dumpDependencyEdge(OS, DE, MCIP); in dump()
428 auto It = find_if(Vec, [To, Dep](DependencyEdge &DE) { in addDependency() argument
429 return DE.ToIID == To && DE.Dep.ResourceOrRegID == Dep.ResourceOrRegID; in addDependency()
433 It->Dep.Cost += Dep.Cost; in addDependency()
434 It->Frequency++; in addDependency()
438 DependencyEdge DE = {Dep, From, To, 1}; in addDependency() local
439 Vec.emplace_back(DE); in addDependency()
511 uint64_t Current = ResourceMask & (-ResourceMask); in onEvent()
537 if (IID == ((Iterations * Source.size()) - 1)) in onEvent()
542 assert(Event.Reason != HWPressureEvent::INVALID && in onEvent()
619 OS << "\n - " << PRDesc.Name << " [ " in printBottleneckHints()
627 OS << "\n - Register Dependencies [ " in printBottleneckHints()
630 OS << "\n - Memory Dependencies [ " in printBottleneckHints()