Implement a very very simple hazard recognizer for LSU rejects and ctr set/read
flushes


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26587 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/PowerPC/PPCISelDAGToDAG.cpp b/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
index 185afd1..5c74a7b 100644
--- a/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
+++ b/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
@@ -15,6 +15,7 @@
 #include "PPC.h"
 #include "PPCTargetMachine.h"
 #include "PPCISelLowering.h"
+#include "PPCHazardRecognizers.h"
 #include "llvm/CodeGen/MachineInstrBuilder.h"
 #include "llvm/CodeGen/MachineFunction.h"
 #include "llvm/CodeGen/SSARegMap.h"
@@ -40,6 +41,7 @@
   class PPCDAGToDAGISel : public SelectionDAGISel {
     PPCTargetLowering PPCLowering;
     unsigned GlobalBaseReg;
+    PPCHazardRecognizer970 PPC970HR;
   public:
     PPCDAGToDAGISel(TargetMachine &TM)
       : SelectionDAGISel(PPCLowering), PPCLowering(TM) {}
@@ -122,13 +124,19 @@
     virtual const char *getPassName() const {
       return "PowerPC DAG->DAG Pattern Instruction Selection";
     } 
+    
+    /// GetTargetHazardRecognizer - Return the hazard recognizer to use for this
+    /// target when scheduling the DAG.
+    virtual HazardRecognizer &GetTargetHazardRecognizer() {
+      // Should use subtarget info to pick the right hazard recognizer.  For
+      // now, always return a PPC970 recognizer.
+      return PPC970HR; 
+    }
 
 // Include the pieces autogenerated from the target description.
 #include "PPCGenDAGISel.inc"
     
 private:
-    SDOperand SelectADD_PARTS(SDOperand Op);
-    SDOperand SelectSUB_PARTS(SDOperand Op);
     SDOperand SelectSETCC(SDOperand Op);
     SDOperand SelectCALL(SDOperand Op);
   };