Attempt to fix PR11607 by shuffling around which class defines which methods.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@146897 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Eli Friedman
2011-12-19 20:06:03 +00:00
parent 8209968306
commit 1e2ec6abd4
2 changed files with 12 additions and 7 deletions

View File

@@ -646,7 +646,7 @@ public:
virtual int getOperandLatency(const InstrItineraryData *ItinData, virtual int getOperandLatency(const InstrItineraryData *ItinData,
SDNode *DefNode, unsigned DefIdx, SDNode *DefNode, unsigned DefIdx,
SDNode *UseNode, unsigned UseIdx) const; SDNode *UseNode, unsigned UseIdx) const = 0;
/// getOutputLatency - Compute and return the output dependency latency of a /// getOutputLatency - Compute and return the output dependency latency of a
/// a given pair of defs which both target the same register. This is usually /// a given pair of defs which both target the same register. This is usually
@@ -665,7 +665,7 @@ public:
unsigned *PredCost = 0) const; unsigned *PredCost = 0) const;
virtual int getInstrLatency(const InstrItineraryData *ItinData, virtual int getInstrLatency(const InstrItineraryData *ItinData,
SDNode *Node) const; SDNode *Node) const = 0;
/// isHighLatencyDef - Return true if this opcode has high latency to its /// isHighLatencyDef - Return true if this opcode has high latency to its
/// result. /// result.
@@ -839,6 +839,11 @@ public:
virtual bool isSchedulingBoundary(const MachineInstr *MI, virtual bool isSchedulingBoundary(const MachineInstr *MI,
const MachineBasicBlock *MBB, const MachineBasicBlock *MBB,
const MachineFunction &MF) const; const MachineFunction &MF) const;
virtual int getOperandLatency(const InstrItineraryData *ItinData,
SDNode *DefNode, unsigned DefIdx,
SDNode *UseNode, unsigned UseIdx) const;
virtual int getInstrLatency(const InstrItineraryData *ItinData,
SDNode *Node) const;
bool usePreRAHazardRecognizer() const; bool usePreRAHazardRecognizer() const;

View File

@@ -513,7 +513,7 @@ CreateTargetPostRAHazardRecognizer(const InstrItineraryData *II,
} }
int int
TargetInstrInfo::getOperandLatency(const InstrItineraryData *ItinData, TargetInstrInfoImpl::getOperandLatency(const InstrItineraryData *ItinData,
SDNode *DefNode, unsigned DefIdx, SDNode *DefNode, unsigned DefIdx,
SDNode *UseNode, unsigned UseIdx) const { SDNode *UseNode, unsigned UseIdx) const {
if (!ItinData || ItinData->isEmpty()) if (!ItinData || ItinData->isEmpty())
@@ -529,7 +529,7 @@ TargetInstrInfo::getOperandLatency(const InstrItineraryData *ItinData,
return ItinData->getOperandLatency(DefClass, DefIdx, UseClass, UseIdx); return ItinData->getOperandLatency(DefClass, DefIdx, UseClass, UseIdx);
} }
int TargetInstrInfo::getInstrLatency(const InstrItineraryData *ItinData, int TargetInstrInfoImpl::getInstrLatency(const InstrItineraryData *ItinData,
SDNode *N) const { SDNode *N) const {
if (!ItinData || ItinData->isEmpty()) if (!ItinData || ItinData->isEmpty())
return 1; return 1;