diff options
author | Evan Cheng <evan.cheng@apple.com> | 2010-10-26 02:08:50 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2010-10-26 02:08:50 +0000 |
commit | e96b8d7ab66051f9fcbac5dfffd8dff7544a2909 (patch) | |
tree | 7368120864db587882d4c5781bee4bfed04c3e09 /llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp | |
parent | b45591979b34ecbfe74d6f9897c4fe40c671ee5d (diff) | |
download | bcm5719-llvm-e96b8d7ab66051f9fcbac5dfffd8dff7544a2909.tar.gz bcm5719-llvm-e96b8d7ab66051f9fcbac5dfffd8dff7544a2909.zip |
Use instruction itinerary to determine what instructions are 'cheap'.
llvm-svn: 117348
Diffstat (limited to 'llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp')
-rw-r--r-- | llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp b/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp index 757ca13512c..8834ff3268f 100644 --- a/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp +++ b/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp @@ -1951,3 +1951,18 @@ hasHighOperandLatency(const InstrItineraryData *ItinData, return DDomain == ARMII::DomainVFP || DDomain == ARMII::DomainNEON || UDomain == ARMII::DomainVFP || UDomain == ARMII::DomainNEON; } + +bool ARMBaseInstrInfo:: +hasLowDefLatency(const InstrItineraryData *ItinData, + const MachineInstr *DefMI, unsigned DefIdx) const { + if (!ItinData || ItinData->isEmpty()) + return false; + + unsigned DDomain = DefMI->getDesc().TSFlags & ARMII::DomainMask; + if (DDomain == ARMII::DomainGeneral) { + unsigned DefClass = DefMI->getDesc().getSchedClass(); + int DefCycle = ItinData->getOperandCycle(DefClass, DefIdx); + return (DefCycle != -1 && DefCycle <= 2); + } + return false; +} |