Lines Matching defs:SUnit

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