Lines Matching defs:Cand

197 void GCNSchedStrategy::initCandidate(SchedCandidate &Cand, SUnit *SU,
203 Cand.SU = SU;
204 Cand.AtTop = AtTop;
288 Cand.RPDelta.Excess = PressureChange(AMDGPU::RegisterPressureSets::VGPR_32);
289 Cand.RPDelta.Excess.setUnitInc(NewVGPRPressure - VGPRExcessLimit);
294 Cand.RPDelta.Excess = PressureChange(AMDGPU::RegisterPressureSets::SReg_32);
295 Cand.RPDelta.Excess.setUnitInc(NewSGPRPressure - SGPRExcessLimit);
309 Cand.RPDelta.CriticalMax =
311 Cand.RPDelta.CriticalMax.setUnitInc(SGPRDelta);
313 Cand.RPDelta.CriticalMax =
315 Cand.RPDelta.CriticalMax.setUnitInc(VGPRDelta);
325 SchedCandidate &Cand,
350 SchedBoundary *ZoneArg = Cand.AtTop == TryCand.AtTop ? &Zone : nullptr;
351 tryCandidate(Cand, TryCand, ZoneArg);
356 Cand.setBest(TryCand);
357 LLVM_DEBUG(traceCandidate(Cand));
429 LLVM_DEBUG(dbgs() << "Top Cand: "; traceCandidate(TopCand);
430 dbgs() << "Bot Cand: "; traceCandidate(BotCand););
431 SchedCandidate Cand = BotCand;
433 tryCandidate(Cand, TopCand, nullptr);
435 Cand.setBest(TopCand);
437 LLVM_DEBUG(dbgs() << "Picking: "; traceCandidate(Cand););
439 IsTopNode = Cand.AtTop;
440 return Cand.SU;
540 bool GCNMaxILPSchedStrategy::tryCandidate(SchedCandidate &Cand,
544 if (!Cand.isValid()) {
551 tryPressure(TryCand.RPDelta.Excess, Cand.RPDelta.Excess, TryCand, Cand,
557 biasPhysReg(Cand.SU, Cand.AtTop), TryCand, Cand, PhysReg))
564 Zone->getLatencyStallCycles(Cand.SU), TryCand, Cand, Stall))
569 if (tryLess(TryCand.ResDelta.CritResources, Cand.ResDelta.CritResources,
570 TryCand, Cand, ResourceReduce))
573 Cand.ResDelta.DemandedResources, TryCand, Cand,
578 if (tryLatency(TryCand, Cand, *Zone))
583 getWeakLeft(Cand.SU, Cand.AtTop), TryCand, Cand, Weak))
594 Cand.AtTop ? DAG->getNextClusterSucc() : DAG->getNextClusterPred();
598 Cand.SU == CandNextClusterSU, TryCand, Cand, Cluster))
603 tryPressure(TryCand.RPDelta.CriticalMax, Cand.RPDelta.CriticalMax,
604 TryCand, Cand, RegCritical, TRI, DAG->MF))
609 tryPressure(TryCand.RPDelta.CurrentMax, Cand.RPDelta.CurrentMax, TryCand,
610 Cand, RegMax, TRI, DAG->MF))
615 if ((Zone->isTop() && TryCand.SU->NodeNum < Cand.SU->NodeNum) ||
616 (!Zone->isTop() && TryCand.SU->NodeNum > Cand.SU->NodeNum)) {
635 /// \param Cand provides the policy and current best candidate.
638 /// if Cand is from a different zone than TryCand.
639 /// \return \c true if TryCand is better than Cand (Reason is NOT NoCand)
640 bool GCNMaxMemoryClauseSchedStrategy::tryCandidate(SchedCandidate &Cand,
644 if (!Cand.isValid()) {
651 biasPhysReg(Cand.SU, Cand.AtTop), TryCand, Cand, PhysReg))
656 if (tryPressure(TryCand.RPDelta.Excess, Cand.RPDelta.Excess, TryCand, Cand,
661 if (tryPressure(TryCand.RPDelta.CriticalMax, Cand.RPDelta.CriticalMax,
662 TryCand, Cand, RegCritical, TRI, DAG->MF))
669 Cand.AtTop ? DAG->getNextClusterSucc() : DAG->getNextClusterPred();
673 Cand.SU == CandNextClusterSU, TryCand, Cand, Cluster))
687 tryLatency(TryCand, Cand, *Zone))
696 bool CandMayLoad = Cand.SU->isInstr() && Cand.SU->getInstr()->mayLoad();
700 TryCand.SU->Latency > 10 * Cand.SU->Latency && TryMayLoad;
702 10 * TryCand.SU->Latency < Cand.SU->Latency && CandMayLoad;
706 Cand, Stall))
711 Zone->getLatencyStallCycles(Cand.SU), TryCand, Cand, Stall))
718 getWeakLeft(Cand.SU, Cand.AtTop), TryCand, Cand, Weak))
724 tryPressure(TryCand.RPDelta.CurrentMax, Cand.RPDelta.CurrentMax, TryCand,
725 Cand, RegMax, TRI, DAG->MF))
731 if (tryLess(TryCand.ResDelta.CritResources, Cand.ResDelta.CritResources,
732 TryCand, Cand, ResourceReduce))
735 Cand.ResDelta.DemandedResources, TryCand, Cand,
742 !Rem.IsAcyclicLatencyLimited && tryLatency(TryCand, Cand, *Zone))
746 if (Zone->isTop() == (TryCand.SU->NodeNum < Cand.SU->NodeNum)) {
747 assert(TryCand.SU->NodeNum != Cand.SU->NodeNum);