Lines Matching refs:SU

78   SUnit *SU = &SUnits.back();
83 SU->SchedulingPref = Sched::None;
85 SU->SchedulingPref = TLI.getSchedulingPreference(N);
86 return SU;
90 SUnit *SU = newSUnit(Old->getNode());
91 SU->OrigNode = Old->OrigNode;
92 SU->Latency = Old->Latency;
93 SU->isVRegCycle = Old->isVRegCycle;
94 SU->isCall = Old->isCall;
95 SU->isCallOp = Old->isCallOp;
96 SU->isTwoAddress = Old->isTwoAddress;
97 SU->isCommutable = Old->isCommutable;
98 SU->hasPhysRegDefs = Old->hasPhysRegDefs;
99 SU->hasPhysRegClobbers = Old->hasPhysRegClobbers;
100 SU->isScheduleHigh = Old->isScheduleHigh;
101 SU->isScheduleLow = Old->isScheduleLow;
102 SU->SchedulingPref = Old->SchedulingPref;
104 return SU;
413 SUnit *SU = CallSUnits.pop_back_val();
414 for (const SDNode *SUNode = SU->getNode(); SUNode;
434 SUnit *SU = &SUnits[su];
435 SDNode *MainNode = SU->getNode();
442 SU->isTwoAddress = true;
447 SU->isCommutable = true;
451 for (SDNode *N = SU->getNode(); N; N = N->getGluedNode()) {
454 SU->hasPhysRegClobbers = true;
459 SU->hasPhysRegDefs = true;
467 if (OpSU == SU) continue; // In the same group.
498 ST.adjustSchedDependency(OpSU, SU, Dep);
501 if (!SU->addPred(Dep) && !Dep.isCtrl() && OpSU->NumRegDefsLeft > 1) {
557 ScheduleDAGSDNodes::RegDefIter::RegDefIter(const SUnit *SU,
559 : SchedDAG(SD), Node(SU->getNode()), DefIdx(0), NodeNumDefs(0) {
582 void ScheduleDAGSDNodes::InitNumRegDefsLeft(SUnit *SU) {
583 assert(SU->NumRegDefsLeft == 0 && "expect a new node");
584 for (RegDefIter I(SU, this); I.IsValid(); I.Advance()) {
585 assert(SU->NumRegDefsLeft < USHRT_MAX && "overflow is ok but unexpected");
586 ++SU->NumRegDefsLeft;
590 void ScheduleDAGSDNodes::computeLatency(SUnit *SU) {
591 SDNode *N = SU->getNode();
597 SU->Latency = 0;
603 SU->Latency = 1;
610 SU->Latency = HighLatencyCycles;
612 SU->Latency = 1;
618 SU->Latency = 0;
619 for (SDNode *N = SU->getNode(); N; N = N->getGluedNode())
621 SU->Latency += TII->getInstrLatency(InstrItins, N);
651 void ScheduleDAGSDNodes::dumpNode(const SUnit *SU) const {
653 if (!SU->getNode()) {
658 SU->getNode()->dump(DAG);
661 for (SDNode *N = SU->getNode()->getGluedNode(); N; N = N->getGluedNode())
675 if (SUnit *SU = Sequence[i])
676 SU->dump(this);
757 EmitPhysRegCopy(SUnit *SU, DenseMap<SUnit*, unsigned> &VRBaseMap,
759 for (SUnit::const_pred_iterator I = SU->Preds.begin(), E = SU->Preds.end();
768 for (SUnit::const_succ_iterator II = SU->Succs.begin(),
769 EE = SU->Succs.end(); II != EE; ++II) {
781 unsigned VRBase = MRI.createVirtualRegister(SU->CopyDstRC);
782 bool isNew = VRBaseMap.insert(std::make_pair(SU, VRBase)).second;
817 SUnit *SU = Sequence[i];
818 if (!SU) {
826 if (!SU->getNode()) {
828 EmitPhysRegCopy(SU, CopyVRBaseMap, InsertPos);
833 for (SDNode *N = SU->getNode()->getGluedNode(); N; N = N->getGluedNode())
837 Emitter.EmitNode(GluedNodes.back(), SU->OrigNode != SU, SU->isCloned,
844 Emitter.EmitNode(SU->getNode(), SU->OrigNode != SU, SU->isCloned,
848 ProcessSourceNode(SU->getNode(), DAG, Emitter, VRBaseMap, Orders,