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);
};