Lines Matching refs:SUnit
446 static bool isSuccOrder(SUnit *SUa, SUnit *SUb) { in isSuccOrder()
447 SmallPtrSet<SUnit *, 8> Visited; in isSuccOrder()
448 SmallVector<SUnit *, 8> Worklist; in isSuccOrder()
451 const SUnit *SU = Worklist.pop_back_val(); in isSuccOrder()
453 SUnit *SuccSU = SI.getSUnit(); in isSuccOrder()
501 MapVector<Value *, SmallVector<SUnit *, 4>> PendingLoads; in addLoopCarriedDependences()
514 SmallVector<SUnit *, 4> &SUs = PendingLoads[V]; in addLoopCarriedDependences()
523 MapVector<Value *, SmallVector<SUnit *, 4>>::iterator I = in addLoopCarriedDependences()
600 for (SUnit &I : SUnits) { in updatePhiDependences()
620 SUnit *SU = getSUnit(UseMI); in updatePhiDependences()
640 SUnit *SU = getSUnit(DefMI); in updatePhiDependences()
683 for (SUnit &I : SUnits) { in changeDependences()
695 SUnit *DefSU = getSUnit(DefMI); in changeDependences()
702 SUnit *LastSU = getSUnit(LastMI); in changeDependences()
711 for (SUnit::pred_iterator P = I.Preds.begin(), E = I.Preds.end(); P != E; in changeDependences()
896 static void swapAntiDependences(std::vector<SUnit> &SUnits) { in swapAntiDependences()
897 SmallVector<std::pair<SUnit *, SDep>, 8> DepsAdded; in swapAntiDependences()
899 SUnit *SU = &SUnits[i]; in swapAntiDependences()
900 for (SUnit::pred_iterator IP = SU->Preds.begin(), EP = SU->Preds.end(); in swapAntiDependences()
907 for (SmallVector<std::pair<SUnit *, SDep>, 8>::iterator I = DepsAdded.begin(), in swapAntiDependences()
911 SUnit *SU = I->first; in swapAntiDependences()
913 SUnit *TargetSU = D.getSUnit(); in swapAntiDependences()
982 SUnit *SV = &SUnits[V]; in circuit()
1022 SmallPtrSet<SUnit *, 4> &BU = B[U]; in unblock()
1024 SmallPtrSet<SUnit *, 4>::iterator SI = BU.begin(); in unblock()
1026 SUnit *W = *SI; in unblock()
1071 for (SUnit &SU : DAG->SUnits) { in apply()
1077 SmallVector<SUnit *, 4> PHISUs; in apply()
1079 SmallVector<SUnit *, 4> SrcSUs; in apply()
1082 SUnit *TmpSU = Dep.getSUnit(); in apply()
1099 SmallVector<SUnit *, 8> UseSUs; in apply()
1105 SUnit *TmpSU = Dep.getSUnit(); in apply()
1153 const SUnit &SU = SUnits[*I]; in computeNodeFunctions()
1165 SUnit *SU = &SUnits[*I]; in computeNodeFunctions()
1166 for (SUnit::const_pred_iterator IP = SU->Preds.begin(), in computeNodeFunctions()
1169 SUnit *pred = IP->getSUnit(); in computeNodeFunctions()
1189 SUnit *SU = &SUnits[*I]; in computeNodeFunctions()
1190 for (SUnit::const_succ_iterator IS = SU->Succs.begin(), in computeNodeFunctions()
1193 SUnit *succ = IS->getSUnit(); in computeNodeFunctions()
1228 static bool pred_L(SetVector<SUnit *> &NodeOrder, in pred_L()
1229 SmallSetVector<SUnit *, 8> &Preds, in pred_L() argument
1232 for (SetVector<SUnit *>::iterator I = NodeOrder.begin(), E = NodeOrder.end(); in pred_L()
1234 for (SUnit::pred_iterator PI = (*I)->Preds.begin(), PE = (*I)->Preds.end(); in pred_L()
1244 for (SUnit::const_succ_iterator IS = (*I)->Succs.begin(), in pred_L()
1261 static bool succ_L(SetVector<SUnit *> &NodeOrder, in succ_L()
1262 SmallSetVector<SUnit *, 8> &Succs, in succ_L() argument
1265 for (SetVector<SUnit *>::iterator I = NodeOrder.begin(), E = NodeOrder.end(); in succ_L()
1267 for (SUnit::succ_iterator SI = (*I)->Succs.begin(), SE = (*I)->Succs.end(); in succ_L()
1276 for (SUnit::const_pred_iterator PI = (*I)->Preds.begin(), in succ_L()
1292 static bool computePath(SUnit *Cur, SetVector<SUnit *> &Path, in computePath()
1293 SetVector<SUnit *> &DestNodes, in computePath()
1294 SetVector<SUnit *> &Exclude, in computePath()
1295 SmallPtrSet<SUnit *, 8> &Visited) { in computePath() argument
1333 for (SUnit *SU : NS) { in computeLiveOuts()
1347 for (SUnit *SU : NS) in computeLiveOuts()
1378 std::vector<SUnit *> SUnits(NS.begin(), NS.end()); in registerPressureFilter()
1379 llvm::sort(SUnits, [](const SUnit *A, const SUnit *B) { in registerPressureFilter()
1415 SmallSetVector<SUnit *, 8> S1; in colocateNodeSets()
1422 SmallSetVector<SUnit *, 8> S2; in colocateNodeSets()
1458 SetVector<SUnit *> NodesAdded; in groupRemainingNodes()
1459 SmallPtrSet<SUnit *, 8> Visited; in groupRemainingNodes()
1463 SmallSetVector<SUnit *, 8> N; in groupRemainingNodes()
1466 SetVector<SUnit *> Path; in groupRemainingNodes()
1467 for (SUnit *NI : N) { in groupRemainingNodes()
1477 SetVector<SUnit *> Path; in groupRemainingNodes()
1478 for (SUnit *NI : N) { in groupRemainingNodes()
1491 SmallSetVector<SUnit *, 8> N; in groupRemainingNodes()
1493 for (SUnit *I : N) in groupRemainingNodes()
1502 for (SUnit *I : N) in groupRemainingNodes()
1510 SUnit *SU = &SUnits[i]; in groupRemainingNodes()
1521 void SwingSchedulerDAG::addConnectedNodes(SUnit *SU, NodeSet &NewSet, in addConnectedNodes()
1522 SetVector<SUnit *> &NodesAdded) { in addConnectedNodes()
1526 SUnit *Successor = SI.getSUnit(); in addConnectedNodes()
1531 SUnit *Predecessor = PI.getSUnit(); in addConnectedNodes()
1539 static bool isIntersect(SmallSetVector<SUnit *, 8> &Set1, const NodeSet &Set2, in isIntersect() argument
1540 SmallSetVector<SUnit *, 8> &Result) { in isIntersect()
1543 SUnit *SU = Set1[i]; in isIntersect()
1577 J->remove_if([&](SUnit *SUJ) { return I->count(SUJ); }); in removeDuplicateNodes()
1593 SmallSetVector<SUnit *, 8> R; in computeNodeOrder()
1599 SmallSetVector<SUnit *, 8> N; in computeNodeOrder()
1621 SUnit *maxASAP = nullptr; in computeNodeOrder()
1622 for (SUnit *SU : Nodes) { in computeNodeOrder()
1638 SUnit *maxHeight = nullptr; in computeNodeOrder()
1639 for (SUnit *I : R) { in computeNodeOrder()
1676 SmallSetVector<SUnit *, 8> N; in computeNodeOrder()
1684 SUnit *maxDepth = nullptr; in computeNodeOrder()
1685 for (SUnit *I : R) { in computeNodeOrder()
1725 SmallSetVector<SUnit *, 8> N; in computeNodeOrder()
1735 for (SUnit *I : NodeOrder) in computeNodeOrder()
1754 SetVector<SUnit *>::iterator NI = NodeOrder.begin(); in schedulePipeline()
1755 SetVector<SUnit *>::iterator NE = NodeOrder.end(); in schedulePipeline()
1757 SUnit *SU = *NI; in schedulePipeline()
1859 std::deque<SUnit *> &CycleInstrs = Schedule.getInstructions(Cycle); in generatePipelinedLoop()
1861 for (SUnit *CI : CycleInstrs) { in generatePipelinedLoop()
2748 DenseMap<SUnit *, std::pair<unsigned, int64_t>>::iterator It = in cloneAndChangeInstr()
2910 SUnit *OrigMISU = getSUnit(OrigInstr->second); in rewriteScheduledInstr()
3006 SUnit *SU = getSUnit(MI); in applyInstrChange()
3007 DenseMap<SUnit *, std::pair<unsigned, int64_t>>::iterator It = in applyInstrChange()
3041 bool SwingSchedulerDAG::isLoopCarriedDep(SUnit *Source, const SDep &Dep, in isLoopCarriedDep()
3118 bool SMSchedule::insert(SUnit *SU, int StartCycle, int EndCycle, int II) { in insert()
3132 std::deque<SUnit *> &cycleInstrs = ScheduledInstrs[checkCycle]; in insert()
3134 for (std::deque<SUnit *>::iterator I = cycleInstrs.begin(), in insert()
3169 SmallPtrSet<SUnit *, 8> Visited; in earliestCycleInChain()
3175 SUnit *PrevSU = Cur.getSUnit(); in earliestCycleInChain()
3178 std::map<SUnit *, int>::const_iterator it = InstrToCycle.find(PrevSU); in earliestCycleInChain()
3192 SmallPtrSet<SUnit *, 8> Visited; in latestCycleInChain()
3198 SUnit *SuccSU = Cur.getSUnit(); in latestCycleInChain()
3201 std::map<SUnit *, int>::const_iterator it = InstrToCycle.find(SuccSU); in latestCycleInChain()
3216 static SUnit *multipleIterations(SUnit *SU, SwingSchedulerDAG *DAG) { in multipleIterations()
3227 void SMSchedule::computeStart(SUnit *SU, int *MaxEarlyStart, int *MinLateStart, in computeStart()
3236 for (SUnit *I : getInstructions(cycle)) { in computeStart()
3258 SUnit *BE = multipleIterations(I, DAG); in computeStart()
3288 void SMSchedule::orderDependence(SwingSchedulerDAG *SSD, SUnit *SU, in orderDependence()
3289 std::deque<SUnit *> &Insts) { in orderDependence()
3299 for (std::deque<SUnit *>::iterator I = Insts.begin(), E = Insts.end(); I != E; in orderDependence()
3386 SUnit *UseSU = Insts.at(MoveUse); in orderDependence()
3387 SUnit *DefSU = Insts.at(MoveDef); in orderDependence()
3413 SUnit *DefSU = SSD->getSUnit(&Phi); in isLoopCarried()
3420 SUnit *UseSU = SSD->getSUnit(MRI.getVRegDef(LoopVal)); in isLoopCarried()
3465 SUnit &SU = SSD->SUnits[i]; in isValidSchedule()
3492 typedef std::pair<SUnit *, unsigned> UnitIndex; in checkValidNodeOrder()
3513 SUnit *SU = NodeOrder[i]; in checkValidNodeOrder()
3519 SUnit *Succ; in checkValidNodeOrder()
3520 SUnit *Pred; in checkValidNodeOrder()
3525 SUnit *PredSU = PredEdge.getSUnit(); in checkValidNodeOrder()
3537 SUnit *SuccSU = SuccEdge.getSUnit(); in checkValidNodeOrder()
3579 void SwingSchedulerDAG::fixupRegisterOverlaps(std::deque<SUnit *> &Instrs) { in fixupRegisterOverlaps()
3582 for (SUnit *SU : Instrs) { in fixupRegisterOverlaps()
3591 DenseMap<SUnit *, std::pair<unsigned, int64_t>>::iterator It = in fixupRegisterOverlaps()
3633 std::deque<SUnit *> &cycleInstrs = in finalizeSchedule()
3635 for (std::deque<SUnit *>::reverse_iterator I = cycleInstrs.rbegin(), in finalizeSchedule()
3659 SUnit *SUnitUse = SSD->getSUnit(UseMI); in finalizeSchedule()
3684 SUnit *SU = &SSD->SUnits[i]; in finalizeSchedule()
3691 std::deque<SUnit *> &cycleInstrs = ScheduledInstrs[Cycle]; in finalizeSchedule()
3692 std::deque<SUnit *> newOrderPhi; in finalizeSchedule()
3694 SUnit *SU = cycleInstrs[i]; in finalizeSchedule()
3698 std::deque<SUnit *> newOrderI; in finalizeSchedule()
3700 SUnit *SU = cycleInstrs[i]; in finalizeSchedule()
3728 for (SUnit *CI : cycleInstrs->second) { in print()