Lines Matching refs:SUnit
709 for (SUnit *SU : Schedule.getInstructions(Cycle)) { in schedule()
785 static bool isSuccOrder(SUnit *SUa, SUnit *SUb) { in isSuccOrder()
786 SmallPtrSet<SUnit *, 8> Visited; in isSuccOrder()
787 SmallVector<SUnit *, 8> Worklist; in isSuccOrder()
790 const SUnit *SU = Worklist.pop_back_val(); in isSuccOrder()
792 SUnit *SuccSU = SI.getSUnit(); in isSuccOrder()
839 MapVector<const Value *, SmallVector<SUnit *, 4>> PendingLoads; in addLoopCarriedDependences()
852 SmallVector<SUnit *, 4> &SUs = PendingLoads[V]; in addLoopCarriedDependences()
861 MapVector<const Value *, SmallVector<SUnit *, 4>>::iterator I = in addLoopCarriedDependences()
939 for (SUnit &I : SUnits) { in updatePhiDependences()
957 SUnit *SU = getSUnit(UseMI); in updatePhiDependences()
977 SUnit *SU = getSUnit(DefMI); in updatePhiDependences()
1021 for (SUnit &I : SUnits) { in changeDependences()
1033 SUnit *DefSU = getSUnit(DefMI); in changeDependences()
1040 SUnit *LastSU = getSUnit(LastMI); in changeDependences()
1087 DenseMap<int, std::deque<SUnit *>> Instrs; in computeScheduledInsts()
1094 for (SUnit *SU : llvm::reverse(Schedule.getInstructions( in computeScheduledInsts()
1103 std::deque<SUnit *> &CycleInstrs = Instrs[Cycle]; in computeScheduledInsts()
1105 for (SUnit *SU : CycleInstrs) { in computeScheduledInsts()
1630 static void swapAntiDependences(std::vector<SUnit> &SUnits) { in swapAntiDependences()
1631 SmallVector<std::pair<SUnit *, SDep>, 8> DepsAdded; in swapAntiDependences()
1632 for (SUnit &SU : SUnits) { in swapAntiDependences()
1637 for (std::pair<SUnit *, SDep> &P : DepsAdded) { in swapAntiDependences()
1639 SUnit *SU = P.first; in swapAntiDependences()
1641 SUnit *TargetSU = D.getSUnit(); in swapAntiDependences()
1710 SUnit *SV = &SUnits[V]; in circuit()
1749 SmallPtrSet<SUnit *, 4> &BU = B[U]; in unblock()
1751 SmallPtrSet<SUnit *, 4>::iterator SI = BU.begin(); in unblock()
1753 SUnit *W = *SI; in unblock()
1798 for (SUnit &SU : DAG->SUnits) { in apply()
1804 SmallVector<SUnit *, 4> PHISUs; in apply()
1806 SmallVector<SUnit *, 4> SrcSUs; in apply()
1809 SUnit *TmpSU = Dep.getSUnit(); in apply()
1826 SmallVector<SUnit *, 8> UseSUs; in apply()
1833 SUnit *TmpSU = Dep.getSUnit(); in apply()
1879 const SUnit &SU = SUnits[I]; in computeNodeFunctions()
1889 SUnit *SU = &SUnits[I]; in computeNodeFunctions()
1891 SUnit *pred = P.getSUnit(); in computeNodeFunctions()
1909 SUnit *SU = &SUnits[I]; in computeNodeFunctions()
1911 SUnit *succ = S.getSUnit(); in computeNodeFunctions()
1948 static bool pred_L(SetVector<SUnit *> &NodeOrder, in pred_L()
1949 SmallSetVector<SUnit *, 8> &Preds, in pred_L() argument
1952 for (const SUnit *SU : NodeOrder) { in pred_L()
1977 static bool succ_L(SetVector<SUnit *> &NodeOrder, in succ_L()
1978 SmallSetVector<SUnit *, 8> &Succs, in succ_L() argument
1981 for (const SUnit *SU : NodeOrder) { in succ_L()
2004 static bool computePath(SUnit *Cur, SetVector<SUnit *> &Path, in computePath()
2005 SetVector<SUnit *> &DestNodes, in computePath()
2006 SetVector<SUnit *> &Exclude, in computePath()
2007 SmallPtrSet<SUnit *, 8> &Visited) { in computePath() argument
2039 for (SUnit *SU : NS) { in computeLiveOuts()
2052 for (SUnit *SU : NS) in computeLiveOuts()
2083 std::vector<SUnit *> SUnits(NS.begin(), NS.end()); in registerPressureFilter()
2084 llvm::sort(SUnits, [](const SUnit *A, const SUnit *B) { in registerPressureFilter()
2120 SmallSetVector<SUnit *, 8> S1; in colocateNodeSets()
2127 SmallSetVector<SUnit *, 8> S2; in colocateNodeSets()
2162 SetVector<SUnit *> NodesAdded; in groupRemainingNodes()
2163 SmallPtrSet<SUnit *, 8> Visited; in groupRemainingNodes()
2167 SmallSetVector<SUnit *, 8> N; in groupRemainingNodes()
2170 SetVector<SUnit *> Path; in groupRemainingNodes()
2171 for (SUnit *NI : N) { in groupRemainingNodes()
2181 SetVector<SUnit *> Path; in groupRemainingNodes()
2182 for (SUnit *NI : N) { in groupRemainingNodes()
2195 SmallSetVector<SUnit *, 8> N; in groupRemainingNodes()
2197 for (SUnit *I : N) in groupRemainingNodes()
2206 for (SUnit *I : N) in groupRemainingNodes()
2213 for (SUnit &SU : SUnits) { in groupRemainingNodes()
2224 void SwingSchedulerDAG::addConnectedNodes(SUnit *SU, NodeSet &NewSet, in addConnectedNodes()
2225 SetVector<SUnit *> &NodesAdded) { in addConnectedNodes()
2229 SUnit *Successor = SI.getSUnit(); in addConnectedNodes()
2235 SUnit *Predecessor = PI.getSUnit(); in addConnectedNodes()
2243 static bool isIntersect(SmallSetVector<SUnit *, 8> &Set1, const NodeSet &Set2, in isIntersect() argument
2244 SmallSetVector<SUnit *, 8> &Result) { in isIntersect()
2246 for (SUnit *SU : Set1) { in isIntersect()
2263 for (SUnit *SU : *J) in fuseRecs()
2279 J->remove_if([&](SUnit *SUJ) { return I->count(SUJ); }); in removeDuplicateNodes()
2295 SmallSetVector<SUnit *, 8> R; in computeNodeOrder()
2301 SmallSetVector<SUnit *, 8> N; in computeNodeOrder()
2323 SUnit *maxASAP = nullptr; in computeNodeOrder()
2324 for (SUnit *SU : Nodes) { in computeNodeOrder()
2340 SUnit *maxHeight = nullptr; in computeNodeOrder()
2341 for (SUnit *I : R) { in computeNodeOrder()
2378 SmallSetVector<SUnit *, 8> N; in computeNodeOrder()
2386 SUnit *maxDepth = nullptr; in computeNodeOrder()
2387 for (SUnit *I : R) { in computeNodeOrder()
2427 SmallSetVector<SUnit *, 8> N; in computeNodeOrder()
2437 for (SUnit *I : NodeOrder) in computeNodeOrder()
2465 SetVector<SUnit *>::iterator NI = NodeOrder.begin(); in schedulePipeline()
2466 SetVector<SUnit *>::iterator NE = NodeOrder.end(); in schedulePipeline()
2468 SUnit *SU = *NI; in schedulePipeline()
2668 SUnit *SU = getSUnit(MI); in applyInstrChange()
2669 DenseMap<SUnit *, std::pair<unsigned, int64_t>>::iterator It = in applyInstrChange()
2721 bool SwingSchedulerDAG::isLoopCarriedDep(SUnit *Source, const SDep &Dep, in isLoopCarriedDep()
2818 bool SMSchedule::insert(SUnit *SU, int StartCycle, int EndCycle, int II) { in insert()
2859 SmallPtrSet<SUnit *, 8> Visited; in earliestCycleInChain()
2865 SUnit *PrevSU = Cur.getSUnit(); in earliestCycleInChain()
2868 std::map<SUnit *, int>::const_iterator it = InstrToCycle.find(PrevSU); in earliestCycleInChain()
2882 SmallPtrSet<SUnit *, 8> Visited; in latestCycleInChain()
2888 SUnit *SuccSU = Cur.getSUnit(); in latestCycleInChain()
2891 std::map<SUnit *, int>::const_iterator it = InstrToCycle.find(SuccSU); in latestCycleInChain()
2906 static SUnit *multipleIterations(SUnit *SU, SwingSchedulerDAG *DAG) { in multipleIterations()
2917 void SMSchedule::computeStart(SUnit *SU, int *MaxEarlyStart, int *MinLateStart, in computeStart()
2925 for (SUnit *I : getInstructions(cycle)) { in computeStart()
2947 SUnit *BE = multipleIterations(I, DAG); in computeStart()
2977 void SMSchedule::orderDependence(const SwingSchedulerDAG *SSD, SUnit *SU, in orderDependence()
2978 std::deque<SUnit *> &Insts) const { in orderDependence()
2988 for (std::deque<SUnit *>::iterator I = Insts.begin(), E = Insts.end(); I != E; in orderDependence()
3082 SUnit *UseSU = Insts.at(MoveUse); in orderDependence()
3083 SUnit *DefSU = Insts.at(MoveDef); in orderDependence()
3110 SUnit *DefSU = SSD->getSUnit(&Phi); in isLoopCarried()
3117 SUnit *UseSU = SSD->getSUnit(MRI.getVRegDef(LoopVal)); in isLoopCarried()
3157 SUnit *SU, SwingSchedulerDAG *DAG) const { in onlyHasLoopCarriedOutputOrOrderPreds()
3168 SmallSet<SUnit *, 8> SMSchedule::computeUnpipelineableNodes( in computeUnpipelineableNodes()
3170 SmallSet<SUnit *, 8> DoNotPipeline; in computeUnpipelineableNodes()
3171 SmallVector<SUnit *, 8> Worklist; in computeUnpipelineableNodes()
3197 SmallSet<SUnit *, 8> DNP = computeUnpipelineableNodes(SSD, PLI); in normalizeNonPipelinedInstructions()
3200 for (SUnit &SU : SSD->SUnits) { in normalizeNonPipelinedInstructions()
3238 for (SUnit &SU : SSD->SUnits) { in isValidSchedule()
3269 typedef std::pair<SUnit *, unsigned> UnitIndex; in checkValidNodeOrder()
3290 SUnit *SU = NodeOrder[i]; in checkValidNodeOrder()
3296 SUnit *Succ; in checkValidNodeOrder()
3297 SUnit *Pred; in checkValidNodeOrder()
3302 SUnit *PredSU = PredEdge.getSUnit(); in checkValidNodeOrder()
3313 SUnit *SuccSU = SuccEdge.getSUnit(); in checkValidNodeOrder()
3358 void SwingSchedulerDAG::fixupRegisterOverlaps(std::deque<SUnit *> &Instrs) { in fixupRegisterOverlaps()
3361 for (SUnit *SU : Instrs) { in fixupRegisterOverlaps()
3370 DenseMap<SUnit *, std::pair<unsigned, int64_t>>::iterator It = in fixupRegisterOverlaps()
3404 std::deque<SUnit *>
3406 const std::deque<SUnit *> &Instrs) const { in reorderInstructions()
3407 std::deque<SUnit *> NewOrderPhi; in reorderInstructions()
3408 for (SUnit *SU : Instrs) { in reorderInstructions()
3412 std::deque<SUnit *> NewOrderI; in reorderInstructions()
3413 for (SUnit *SU : Instrs) { in reorderInstructions()
3429 std::deque<SUnit *> &cycleInstrs = in finalizeSchedule()
3431 for (SUnit *SU : llvm::reverse(cycleInstrs)) in finalizeSchedule()
3443 for (const SUnit &SU : SSD->SUnits) in finalizeSchedule()
3449 std::deque<SUnit *> &cycleInstrs = ScheduledInstrs[Cycle]; in finalizeSchedule()
3472 for (SUnit *CI : cycleInstrs->second) { in print()
3549 bool ResourceManager::canReserveResources(SUnit &SU, int Cycle) { in canReserveResources()
3575 void ResourceManager::reserveResources(SUnit &SU, int Cycle) { in reserveResources()
3647 for (SUnit &SU : DAG->SUnits) in calculateResMIIDFA()
3652 for (SUnit &SU : DAG->SUnits) in calculateResMIIDFA()
3713 for (SUnit &SU : DAG->SUnits) { in calculateResMII()