Lines Matching refs:SUnit
654 for (SUnit *SU : Schedule.getInstructions(Cycle)) { in schedule()
725 static bool isSuccOrder(SUnit *SUa, SUnit *SUb) { in isSuccOrder()
726 SmallPtrSet<SUnit *, 8> Visited; in isSuccOrder()
727 SmallVector<SUnit *, 8> Worklist; in isSuccOrder()
730 const SUnit *SU = Worklist.pop_back_val(); in isSuccOrder()
732 SUnit *SuccSU = SI.getSUnit(); in isSuccOrder()
780 MapVector<const Value *, SmallVector<SUnit *, 4>> PendingLoads; in addLoopCarriedDependences()
793 SmallVector<SUnit *, 4> &SUs = PendingLoads[V]; in addLoopCarriedDependences()
802 MapVector<const Value *, SmallVector<SUnit *, 4>>::iterator I = in addLoopCarriedDependences()
880 for (SUnit &I : SUnits) { in updatePhiDependences()
898 SUnit *SU = getSUnit(UseMI); in updatePhiDependences()
918 SUnit *SU = getSUnit(DefMI); in updatePhiDependences()
961 for (SUnit &I : SUnits) { in changeDependences()
973 SUnit *DefSU = getSUnit(DefMI); in changeDependences()
980 SUnit *LastSU = getSUnit(LastMI); in changeDependences()
1027 DenseMap<int, std::deque<SUnit *>> Instrs; in computeScheduledInsts()
1034 for (SUnit *SU : llvm::reverse(Schedule.getInstructions( in computeScheduledInsts()
1043 std::deque<SUnit *> &CycleInstrs = Instrs[Cycle]; in computeScheduledInsts()
1045 for (SUnit *SU : CycleInstrs) { in computeScheduledInsts()
1570 static void swapAntiDependences(std::vector<SUnit> &SUnits) { in swapAntiDependences()
1571 SmallVector<std::pair<SUnit *, SDep>, 8> DepsAdded; in swapAntiDependences()
1572 for (SUnit &SU : SUnits) { in swapAntiDependences()
1577 for (std::pair<SUnit *, SDep> &P : DepsAdded) { in swapAntiDependences()
1579 SUnit *SU = P.first; in swapAntiDependences()
1581 SUnit *TargetSU = D.getSUnit(); in swapAntiDependences()
1650 SUnit *SV = &SUnits[V]; in circuit()
1689 SmallPtrSet<SUnit *, 4> &BU = B[U]; in unblock()
1691 SmallPtrSet<SUnit *, 4>::iterator SI = BU.begin(); in unblock()
1693 SUnit *W = *SI; in unblock()
1738 for (SUnit &SU : DAG->SUnits) { in apply()
1744 SmallVector<SUnit *, 4> PHISUs; in apply()
1746 SmallVector<SUnit *, 4> SrcSUs; in apply()
1749 SUnit *TmpSU = Dep.getSUnit(); in apply()
1766 SmallVector<SUnit *, 8> UseSUs; in apply()
1773 SUnit *TmpSU = Dep.getSUnit(); in apply()
1819 const SUnit &SU = SUnits[I]; in computeNodeFunctions()
1829 SUnit *SU = &SUnits[I]; in computeNodeFunctions()
1831 SUnit *pred = P.getSUnit(); in computeNodeFunctions()
1849 SUnit *SU = &SUnits[I]; in computeNodeFunctions()
1851 SUnit *succ = S.getSUnit(); in computeNodeFunctions()
1888 static bool pred_L(SetVector<SUnit *> &NodeOrder, in pred_L()
1889 SmallSetVector<SUnit *, 8> &Preds, in pred_L() argument
1892 for (const SUnit *SU : NodeOrder) { in pred_L()
1917 static bool succ_L(SetVector<SUnit *> &NodeOrder, in succ_L()
1918 SmallSetVector<SUnit *, 8> &Succs, in succ_L() argument
1921 for (const SUnit *SU : NodeOrder) { in succ_L()
1944 static bool computePath(SUnit *Cur, SetVector<SUnit *> &Path, in computePath()
1945 SetVector<SUnit *> &DestNodes, in computePath()
1946 SetVector<SUnit *> &Exclude, in computePath()
1947 SmallPtrSet<SUnit *, 8> &Visited) { in computePath() argument
1979 for (SUnit *SU : NS) { in computeLiveOuts()
1992 for (SUnit *SU : NS) in computeLiveOuts()
2023 std::vector<SUnit *> SUnits(NS.begin(), NS.end()); in registerPressureFilter()
2024 llvm::sort(SUnits, [](const SUnit *A, const SUnit *B) { in registerPressureFilter()
2060 SmallSetVector<SUnit *, 8> S1; in colocateNodeSets()
2067 SmallSetVector<SUnit *, 8> S2; in colocateNodeSets()
2102 SetVector<SUnit *> NodesAdded; in groupRemainingNodes()
2103 SmallPtrSet<SUnit *, 8> Visited; in groupRemainingNodes()
2107 SmallSetVector<SUnit *, 8> N; in groupRemainingNodes()
2110 SetVector<SUnit *> Path; in groupRemainingNodes()
2111 for (SUnit *NI : N) { in groupRemainingNodes()
2121 SetVector<SUnit *> Path; in groupRemainingNodes()
2122 for (SUnit *NI : N) { in groupRemainingNodes()
2135 SmallSetVector<SUnit *, 8> N; in groupRemainingNodes()
2137 for (SUnit *I : N) in groupRemainingNodes()
2146 for (SUnit *I : N) in groupRemainingNodes()
2153 for (SUnit &SU : SUnits) { in groupRemainingNodes()
2164 void SwingSchedulerDAG::addConnectedNodes(SUnit *SU, NodeSet &NewSet, in addConnectedNodes()
2165 SetVector<SUnit *> &NodesAdded) { in addConnectedNodes()
2169 SUnit *Successor = SI.getSUnit(); in addConnectedNodes()
2175 SUnit *Predecessor = PI.getSUnit(); in addConnectedNodes()
2183 static bool isIntersect(SmallSetVector<SUnit *, 8> &Set1, const NodeSet &Set2, in isIntersect() argument
2184 SmallSetVector<SUnit *, 8> &Result) { in isIntersect()
2186 for (SUnit *SU : Set1) { in isIntersect()
2203 for (SUnit *SU : *J) in fuseRecs()
2219 J->remove_if([&](SUnit *SUJ) { return I->count(SUJ); }); in removeDuplicateNodes()
2235 SmallSetVector<SUnit *, 8> R; in computeNodeOrder()
2241 SmallSetVector<SUnit *, 8> N; in computeNodeOrder()
2263 SUnit *maxASAP = nullptr; in computeNodeOrder()
2264 for (SUnit *SU : Nodes) { in computeNodeOrder()
2280 SUnit *maxHeight = nullptr; in computeNodeOrder()
2281 for (SUnit *I : R) { in computeNodeOrder()
2318 SmallSetVector<SUnit *, 8> N; in computeNodeOrder()
2326 SUnit *maxDepth = nullptr; in computeNodeOrder()
2327 for (SUnit *I : R) { in computeNodeOrder()
2367 SmallSetVector<SUnit *, 8> N; in computeNodeOrder()
2377 for (SUnit *I : NodeOrder) in computeNodeOrder()
2405 SetVector<SUnit *>::iterator NI = NodeOrder.begin(); in schedulePipeline()
2406 SetVector<SUnit *>::iterator NE = NodeOrder.end(); in schedulePipeline()
2408 SUnit *SU = *NI; in schedulePipeline()
2612 SUnit *SU = getSUnit(MI); in applyInstrChange()
2613 DenseMap<SUnit *, std::pair<unsigned, int64_t>>::iterator It = in applyInstrChange()
2665 bool SwingSchedulerDAG::isLoopCarriedDep(SUnit *Source, const SDep &Dep, in isLoopCarriedDep()
2761 bool SMSchedule::insert(SUnit *SU, int StartCycle, int EndCycle, int II) { in insert()
2802 SmallPtrSet<SUnit *, 8> Visited; in earliestCycleInChain()
2808 SUnit *PrevSU = Cur.getSUnit(); in earliestCycleInChain()
2811 std::map<SUnit *, int>::const_iterator it = InstrToCycle.find(PrevSU); in earliestCycleInChain()
2825 SmallPtrSet<SUnit *, 8> Visited; in latestCycleInChain()
2831 SUnit *SuccSU = Cur.getSUnit(); in latestCycleInChain()
2834 std::map<SUnit *, int>::const_iterator it = InstrToCycle.find(SuccSU); in latestCycleInChain()
2849 static SUnit *multipleIterations(SUnit *SU, SwingSchedulerDAG *DAG) { in multipleIterations()
2860 void SMSchedule::computeStart(SUnit *SU, int *MaxEarlyStart, int *MinLateStart, in computeStart()
2869 for (SUnit *I : getInstructions(cycle)) { in computeStart()
2891 SUnit *BE = multipleIterations(I, DAG); in computeStart()
2921 void SMSchedule::orderDependence(const SwingSchedulerDAG *SSD, SUnit *SU, in orderDependence()
2922 std::deque<SUnit *> &Insts) const { in orderDependence()
2932 for (std::deque<SUnit *>::iterator I = Insts.begin(), E = Insts.end(); I != E; in orderDependence()
3026 SUnit *UseSU = Insts.at(MoveUse); in orderDependence()
3027 SUnit *DefSU = Insts.at(MoveDef); in orderDependence()
3054 SUnit *DefSU = SSD->getSUnit(&Phi); in isLoopCarried()
3061 SUnit *UseSU = SSD->getSUnit(MRI.getVRegDef(LoopVal)); in isLoopCarried()
3099 SmallSet<SUnit *, 8> SMSchedule::computeUnpipelineableNodes( in computeUnpipelineableNodes()
3101 SmallSet<SUnit *, 8> DoNotPipeline; in computeUnpipelineableNodes()
3102 SmallVector<SUnit *, 8> Worklist; in computeUnpipelineableNodes()
3128 SmallSet<SUnit *, 8> DNP = computeUnpipelineableNodes(SSD, PLI); in normalizeNonPipelinedInstructions()
3131 for (SUnit &SU : SSD->SUnits) { in normalizeNonPipelinedInstructions()
3169 for (SUnit &SU : SSD->SUnits) { in isValidSchedule()
3200 typedef std::pair<SUnit *, unsigned> UnitIndex; in checkValidNodeOrder()
3221 SUnit *SU = NodeOrder[i]; in checkValidNodeOrder()
3227 SUnit *Succ; in checkValidNodeOrder()
3228 SUnit *Pred; in checkValidNodeOrder()
3233 SUnit *PredSU = PredEdge.getSUnit(); in checkValidNodeOrder()
3244 SUnit *SuccSU = SuccEdge.getSUnit(); in checkValidNodeOrder()
3289 void SwingSchedulerDAG::fixupRegisterOverlaps(std::deque<SUnit *> &Instrs) { in fixupRegisterOverlaps()
3292 for (SUnit *SU : Instrs) { in fixupRegisterOverlaps()
3301 DenseMap<SUnit *, std::pair<unsigned, int64_t>>::iterator It = in fixupRegisterOverlaps()
3335 std::deque<SUnit *>
3337 const std::deque<SUnit *> &Instrs) const { in reorderInstructions()
3338 std::deque<SUnit *> NewOrderPhi; in reorderInstructions()
3339 for (SUnit *SU : Instrs) { in reorderInstructions()
3343 std::deque<SUnit *> NewOrderI; in reorderInstructions()
3344 for (SUnit *SU : Instrs) { in reorderInstructions()
3360 std::deque<SUnit *> &cycleInstrs = in finalizeSchedule()
3362 for (SUnit *SU : llvm::reverse(cycleInstrs)) in finalizeSchedule()
3374 for (const SUnit &SU : SSD->SUnits) in finalizeSchedule()
3380 std::deque<SUnit *> &cycleInstrs = ScheduledInstrs[Cycle]; in finalizeSchedule()
3403 for (SUnit *CI : cycleInstrs->second) { in print()
3480 bool ResourceManager::canReserveResources(SUnit &SU, int Cycle) { in canReserveResources()
3506 void ResourceManager::reserveResources(SUnit &SU, int Cycle) { in reserveResources()
3578 for (SUnit &SU : DAG->SUnits) in calculateResMIIDFA()
3583 for (SUnit &SU : DAG->SUnits) in calculateResMIIDFA()
3644 for (SUnit &SU : DAG->SUnits) { in calculateResMII()