@@ -505,9 +505,7 @@ SUnit *GCNSchedStrategy::pickNode(bool &IsTopNode) {
505505#endif
506506
507507 const SIInstrInfo *TII = static_cast <const SIInstrInfo *>(DAG->TII );
508- MachineInstr *MI = SU->getInstr ();
509- bool IsXDL = MI ? TII->isXDL (*SU->getInstr ()) : false ;
510- bool IsALU = MI ? TII->isVALU (*SU->getInstr ()) || TII->isSALU (*SU->getInstr ()) : false ;
508+ bool IsXDL = TII->isXDL (*SU->getInstr ());
511509 unsigned Cycles = SU->Latency ;
512510 if (IsXDL) {
513511 // FIXME: Hack since XDL is only actually occupying for 24 cycles with 8
@@ -516,10 +514,8 @@ SUnit *GCNSchedStrategy::pickNode(bool &IsTopNode) {
516514 Cycles -= 2 ;
517515 XDLProcRes.reset ();
518516 XDLProcRes.reserve (Cycles);
519- } else if (IsALU) {
520- XDLProcRes.release (Cycles);
521517 } else {
522- XDLProcRes.release (1 );
518+ XDLProcRes.release (Cycles );
523519 }
524520
525521 LLVM_DEBUG (dbgs () << " OldXDLProcRes: " << XDLCyclesBefore
@@ -780,11 +776,7 @@ bool GCNSchedStrategy::tryXDL(SchedCandidate &Cand, SchedCandidate &TryCand,
780776 SchedBoundary *Zone) const {
781777 assert (Zone->isTop ());
782778 MachineInstr *CInst = Cand.SU ->getInstr ();
783- if (!CInst)
784- return false ;
785779 MachineInstr *TCInst = TryCand.SU ->getInstr ();
786- if (!TCInst)
787- return false ;
788780 const SIInstrInfo *TII = DAG->MF .getSubtarget <GCNSubtarget>().getInstrInfo ();
789781
790782 bool CandIsXDL = TII->isXDL (*CInst);
@@ -821,10 +813,7 @@ bool GCNSchedStrategy::tryXDL(SchedCandidate &Cand, SchedCandidate &TryCand,
821813 if (!CandSeenSuccs.insert (SuccSU).second )
822814 continue ;
823815
824- MachineInstr *SuccMI = SuccSU->getInstr ();
825- if (!SuccMI)
826- continue ;
827- if (TII->isVALU (*SuccMI) && SuccSU->NumPredsLeft == 1 ) {
816+ if (TII->isVALU (*SuccSU->getInstr ()) && SuccSU->NumPredsLeft == 1 ) {
828817 ++CandReadyVALUSuccs;
829818 }
830819 }
@@ -835,10 +824,7 @@ bool GCNSchedStrategy::tryXDL(SchedCandidate &Cand, SchedCandidate &TryCand,
835824 if (!TrySeenSuccs.insert (SuccSU).second )
836825 continue ;
837826
838- MachineInstr *SuccMI = SuccSU->getInstr ();
839- if (!SuccMI)
840- continue ;
841- if (TII->isVALU (*SuccMI) && SuccSU->NumPredsLeft == 1 ) {
827+ if (TII->isVALU (*SuccSU->getInstr ()) && SuccSU->NumPredsLeft == 1 ) {
842828 ++TryReadyVALUSuccs;
843829 }
844830 }
@@ -874,21 +860,15 @@ bool GCNSchedStrategy::tryXDL(SchedCandidate &Cand, SchedCandidate &TryCand,
874860 SUnit *SuccSU = Succ.getSUnit ();
875861 if (!CandSeenSuccs.insert (SuccSU).second )
876862 continue ;
877- MachineInstr *SuccMI = SuccSU->getInstr ();
878- if (!SuccMI)
879- continue ;
880- if (TII->isVALU (*SuccMI))
863+ if (TII->isVALU (*SuccSU->getInstr ()))
881864 ++CandVALUSuccs;
882865 }
883866
884867 for (SDep &Succ : TryCand.SU ->Succs ) {
885868 SUnit *SuccSU = Succ.getSUnit ();
886869 if (!TrySeenSuccs.insert (SuccSU).second )
887870 continue ;
888- MachineInstr *SuccMI = SuccSU->getInstr ();
889- if (!SuccMI)
890- continue ;
891- if (TII->isVALU (*SuccMI))
871+ if (TII->isVALU (*SuccSU->getInstr ()))
892872 ++TryVALUSuccs;
893873 }
894874
@@ -930,10 +910,7 @@ bool GCNSchedStrategy::tryXDL(SchedCandidate &Cand, SchedCandidate &TryCand,
930910 if (!CandSeenSuccs.insert (SuccSU).second )
931911 continue ;
932912
933- MachineInstr *SuccMI = SuccSU->getInstr ();
934- if (!SuccMI)
935- continue ;
936- if (TII->isVALU (*SuccMI) && SuccSU->NumPredsLeft == 1 ) {
913+ if (TII->isVALU (*SuccSU->getInstr ()) && SuccSU->NumPredsLeft == 1 ) {
937914 ++CandReadyVALUSuccs;
938915 }
939916 }
@@ -944,10 +921,7 @@ bool GCNSchedStrategy::tryXDL(SchedCandidate &Cand, SchedCandidate &TryCand,
944921 if (!TrySeenSuccs.insert (SuccSU).second )
945922 continue ;
946923
947- MachineInstr *SuccMI = SuccSU->getInstr ();
948- if (!SuccMI)
949- continue ;
950- if (TII->isVALU (*SuccMI) && SuccSU->NumPredsLeft == 1 ) {
924+ if (TII->isVALU (*SuccSU->getInstr ()) && SuccSU->NumPredsLeft == 1 ) {
951925 ++TryReadyVALUSuccs;
952926 }
953927 }
@@ -986,10 +960,7 @@ bool GCNSchedStrategy::tryXDL(SchedCandidate &Cand, SchedCandidate &TryCand,
986960 if (!CandSeenSuccs.insert (SuccSU).second )
987961 continue ;
988962
989- MachineInstr *SuccMI = SuccSU->getInstr ();
990- if (!SuccMI)
991- continue ;
992- if (TII->isVALU (*SuccMI) && SuccSU->NumPredsLeft == 1 ) {
963+ if (TII->isVALU (*SuccSU->getInstr ()) && SuccSU->NumPredsLeft == 1 ) {
993964 ++CandReadyVALUSuccs;
994965 }
995966 }
@@ -1000,10 +971,7 @@ bool GCNSchedStrategy::tryXDL(SchedCandidate &Cand, SchedCandidate &TryCand,
1000971 if (!TrySeenSuccs.insert (SuccSU).second )
1001972 continue ;
1002973
1003- MachineInstr *SuccMI = SuccSU->getInstr ();
1004- if (!SuccMI)
1005- continue ;
1006- if (TII->isVALU (*SuccMI) && SuccSU->NumPredsLeft == 1 ) {
974+ if (TII->isVALU (*SuccSU->getInstr ()) && SuccSU->NumPredsLeft == 1 ) {
1007975 ++TryReadyVALUSuccs;
1008976 }
1009977 }
@@ -2828,9 +2796,7 @@ SUnit *GCNPostSchedStrategy::pickNode(bool &IsTopNode) {
28282796#endif
28292797
28302798 const SIInstrInfo *TII = static_cast <const SIInstrInfo *>(DAG->TII );
2831- MachineInstr *MI = SU->getInstr ();
2832- bool IsXDL = MI ? TII->isXDL (*SU->getInstr ()) : false ;
2833- bool IsALU = MI ? TII->isVALU (*SU->getInstr ()) || TII->isSALU (*SU->getInstr ()) : false ;
2799+ bool IsXDL = TII->isXDL (*SU->getInstr ());
28342800 unsigned Cycles = SU->Latency ;
28352801 if (IsXDL) {
28362802 // FIXME: Hack since XDL is only actually occupying for 24 cycles with 8
@@ -2839,10 +2805,8 @@ SUnit *GCNPostSchedStrategy::pickNode(bool &IsTopNode) {
28392805 Cycles -= 2 ;
28402806 XDLProcRes.reset ();
28412807 XDLProcRes.reserve (Cycles);
2842- } else if (IsALU) {
2843- XDLProcRes.release (Cycles);
28442808 } else {
2845- XDLProcRes.release (1 );
2809+ XDLProcRes.release (Cycles );
28462810 }
28472811
28482812 LLVM_DEBUG (dbgs () << " OldXDLProcRes: " << XDLCyclesBefore
@@ -2858,11 +2822,7 @@ SUnit *GCNPostSchedStrategy::pickNode(bool &IsTopNode) {
28582822bool GCNPostSchedStrategy::tryXDL (SchedCandidate &Cand,
28592823 SchedCandidate &TryCand) {
28602824 MachineInstr *CInst = Cand.SU ->getInstr ();
2861- if (!CInst)
2862- return false ;
28632825 MachineInstr *TCInst = TryCand.SU ->getInstr ();
2864- if (!TCInst)
2865- return false ;
28662826 const SIInstrInfo *TII = DAG->MF .getSubtarget <GCNSubtarget>().getInstrInfo ();
28672827
28682828 bool CandIsXDL = TII->isXDL (*CInst);
@@ -2899,10 +2859,7 @@ bool GCNPostSchedStrategy::tryXDL(SchedCandidate &Cand,
28992859 if (!CandSeenSuccs.insert (SuccSU).second )
29002860 continue ;
29012861
2902- MachineInstr *SuccMI = SuccSU->getInstr ();
2903- if (!SuccMI)
2904- continue ;
2905- if (TII->isVALU (*SuccMI) && SuccSU->NumPredsLeft == 1 ) {
2862+ if (TII->isVALU (*SuccSU->getInstr ()) && SuccSU->NumPredsLeft == 1 ) {
29062863 ++CandReadyVALUSuccs;
29072864 }
29082865 }
@@ -2913,10 +2870,7 @@ bool GCNPostSchedStrategy::tryXDL(SchedCandidate &Cand,
29132870 if (!TrySeenSuccs.insert (SuccSU).second )
29142871 continue ;
29152872
2916- MachineInstr *SuccMI = SuccSU->getInstr ();
2917- if (!SuccMI)
2918- continue ;
2919- if (TII->isVALU (*SuccMI) && SuccSU->NumPredsLeft == 1 ) {
2873+ if (TII->isVALU (*SuccSU->getInstr ()) && SuccSU->NumPredsLeft == 1 ) {
29202874 ++TryReadyVALUSuccs;
29212875 }
29222876 }
@@ -2952,21 +2906,15 @@ bool GCNPostSchedStrategy::tryXDL(SchedCandidate &Cand,
29522906 SUnit *SuccSU = Succ.getSUnit ();
29532907 if (!CandSeenSuccs.insert (SuccSU).second )
29542908 continue ;
2955- MachineInstr *SuccMI = SuccSU->getInstr ();
2956- if (!SuccMI)
2957- continue ;
2958- if (TII->isVALU (*SuccMI))
2909+ if (TII->isVALU (*SuccSU->getInstr ()))
29592910 ++CandVALUSuccs;
29602911 }
29612912
29622913 for (SDep &Succ : TryCand.SU ->Succs ) {
29632914 SUnit *SuccSU = Succ.getSUnit ();
29642915 if (!TrySeenSuccs.insert (SuccSU).second )
29652916 continue ;
2966- MachineInstr *SuccMI = SuccSU->getInstr ();
2967- if (!SuccMI)
2968- continue ;
2969- if (TII->isVALU (*SuccMI))
2917+ if (TII->isVALU (*SuccSU->getInstr ()))
29702918 ++TryVALUSuccs;
29712919 }
29722920
@@ -3008,10 +2956,7 @@ bool GCNPostSchedStrategy::tryXDL(SchedCandidate &Cand,
30082956 if (!CandSeenSuccs.insert (SuccSU).second )
30092957 continue ;
30102958
3011- MachineInstr *SuccMI = SuccSU->getInstr ();
3012- if (!SuccMI)
3013- continue ;
3014- if (TII->isVALU (*SuccMI) && SuccSU->NumPredsLeft == 1 ) {
2959+ if (TII->isVALU (*SuccSU->getInstr ()) && SuccSU->NumPredsLeft == 1 ) {
30152960 ++CandReadyVALUSuccs;
30162961 }
30172962 }
@@ -3022,10 +2967,7 @@ bool GCNPostSchedStrategy::tryXDL(SchedCandidate &Cand,
30222967 if (!TrySeenSuccs.insert (SuccSU).second )
30232968 continue ;
30242969
3025- MachineInstr *SuccMI = SuccSU->getInstr ();
3026- if (!SuccMI)
3027- continue ;
3028- if (TII->isVALU (*SuccMI) && SuccSU->NumPredsLeft == 1 ) {
2970+ if (TII->isVALU (*SuccSU->getInstr ()) && SuccSU->NumPredsLeft == 1 ) {
30292971 ++TryReadyVALUSuccs;
30302972 }
30312973 }
@@ -3064,10 +3006,7 @@ bool GCNPostSchedStrategy::tryXDL(SchedCandidate &Cand,
30643006 if (!CandSeenSuccs.insert (SuccSU).second )
30653007 continue ;
30663008
3067- MachineInstr *SuccMI = SuccSU->getInstr ();
3068- if (!SuccMI)
3069- continue ;
3070- if (TII->isVALU (*SuccMI) && SuccSU->NumPredsLeft == 1 ) {
3009+ if (TII->isVALU (*SuccSU->getInstr ()) && SuccSU->NumPredsLeft == 1 ) {
30713010 ++CandReadyVALUSuccs;
30723011 }
30733012 }
@@ -3078,10 +3017,7 @@ bool GCNPostSchedStrategy::tryXDL(SchedCandidate &Cand,
30783017 if (!TrySeenSuccs.insert (SuccSU).second )
30793018 continue ;
30803019
3081- MachineInstr *SuccMI = SuccSU->getInstr ();
3082- if (!SuccMI)
3083- continue ;
3084- if (TII->isVALU (*SuccMI) && SuccSU->NumPredsLeft == 1 ) {
3020+ if (TII->isVALU (*SuccSU->getInstr ()) && SuccSU->NumPredsLeft == 1 ) {
30853021 ++TryReadyVALUSuccs;
30863022 }
30873023 }
@@ -3194,7 +3130,7 @@ bool GCNPostSchedStrategy::tryCandidate(SchedCandidate &Cand,
31943130}
31953131
31963132GCNPostScheduleDAGMILive::GCNPostScheduleDAGMILive (
3197- MachineSchedContext *C, std::unique_ptr<MachineSchedStrategy > S,
3133+ MachineSchedContext *C, std::unique_ptr<GCNPostSchedStrategy > S,
31983134 bool RemoveKillFlags)
31993135 : ScheduleDAGMI(C, std::move(S), RemoveKillFlags) {}
32003136
0 commit comments