Lines Matching defs:SUnit
65 EntrySU = SUnit();
66 ExitSU = SUnit();
106 bool SUnit::addPred(const SDep &D, bool Required) {
117 SUnit *PredSU = PredDep.getSUnit();
135 SUnit *N = D.getSUnit();
174 void SUnit::removePred(const SDep &D) {
182 SUnit *N = D.getSUnit();
218 void SUnit::setDepthDirty() {
220 SmallVector<SUnit*, 8> WorkList;
223 SUnit *SU = WorkList.pop_back_val();
226 SUnit *SuccSU = SuccDep.getSUnit();
233 void SUnit::setHeightDirty() {
235 SmallVector<SUnit*, 8> WorkList;
238 SUnit *SU = WorkList.pop_back_val();
241 SUnit *PredSU = PredDep.getSUnit();
248 void SUnit::setDepthToAtLeast(unsigned NewDepth) {
256 void SUnit::setHeightToAtLeast(unsigned NewHeight) {
265 void SUnit::ComputeDepth() {
266 SmallVector<SUnit*, 8> WorkList;
269 SUnit *Cur = WorkList.back();
274 SUnit *PredSU = PredDep.getSUnit();
296 void SUnit::ComputeHeight() {
297 SmallVector<SUnit*, 8> WorkList;
300 SUnit *Cur = WorkList.back();
305 SUnit *SuccSU = SuccDep.getSUnit();
326 void SUnit::biasCriticalPath() {
330 SUnit::pred_iterator BestI = Preds.begin();
332 for (SUnit::pred_iterator I = std::next(BestI), E = Preds.end(); I != E;
344 LLVM_DUMP_METHOD void SUnit::dumpAttributes() const {
357 LLVM_DUMP_METHOD void ScheduleDAG::dumpNodeName(const SUnit &SU) const {
366 LLVM_DUMP_METHOD void ScheduleDAG::dumpNodeAll(const SUnit &SU) const {
396 for (const SUnit &SUnit : SUnits) {
397 if (!SUnit.isScheduled) {
398 if (SUnit.NumPreds == 0 && SUnit.NumSuccs == 0) {
404 dumpNode(SUnit);
408 if (SUnit.isScheduled &&
409 (isBottomUp ? SUnit.getHeight() : SUnit.getDepth()) >
413 dumpNode(SUnit);
419 if (SUnit.NumSuccsLeft != 0) {
422 dumpNode(SUnit);
427 if (SUnit.NumPredsLeft != 0) {
430 dumpNode(SUnit);
474 std::vector<SUnit*> WorkList;
483 for (SUnit &SU : SUnits) {
491 assert(SU.Succs.empty() && "SUnit should have no successors");
499 SUnit *SU = WorkList.back();
504 SUnit *SU = PredDep.getSUnit();
517 for (SUnit &SU : SUnits) {
539 void ScheduleDAGTopologicalSort::AddPredQueued(SUnit *Y, SUnit *X) {
551 void ScheduleDAGTopologicalSort::AddPred(SUnit *Y, SUnit *X) {
569 void ScheduleDAGTopologicalSort::RemovePred(SUnit *M, SUnit *N) {
573 void ScheduleDAGTopologicalSort::DFS(const SUnit *SU, int UpperBound,
575 std::vector<const SUnit*> WorkList;
600 std::vector<int> ScheduleDAGTopologicalSort::GetSubGraph(const SUnit &StartSU,
601 const SUnit &TargetSU,
603 std::vector<const SUnit*> WorkList;
622 const SUnit *SU = WorkList.back();
625 const SUnit *Succ = SD.getSUnit();
656 const SUnit *SU = WorkList.back();
659 const SUnit *Pred = SD.getSUnit();
676 assert(Found && "Error in SUnit Graph!");
706 bool ScheduleDAGTopologicalSort::WillCreateCycle(SUnit *TargetSU, SUnit *SU) {
718 void ScheduleDAGTopologicalSort::AddSUnitWithoutPredecessors(const SUnit *SU) {
726 bool ScheduleDAGTopologicalSort::IsReachable(const SUnit *SU,
727 const SUnit *TargetSU) {
728 assert(TargetSU != nullptr && "Invalid target SUnit");
729 assert(SU != nullptr && "Invalid SUnit");
752 ScheduleDAGTopologicalSort(std::vector<SUnit> &sunits, SUnit *exitsu)