ARM getOperandLatency should return -1 for unknown, consistent with API
authorAndrew Trick <atrick@apple.com>
Thu, 7 Jun 2012 19:41:58 +0000 (19:41 +0000)
committerAndrew Trick <atrick@apple.com>
Thu, 7 Jun 2012 19:41:58 +0000 (19:41 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158162 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/ARM/ARMBaseInstrInfo.cpp

index f3462d078bb5eebea629c008fd5deb00d1b7f809..c85a71a5d61e9b3a01ab33761d75230cf458fa8d 100644 (file)
@@ -2574,8 +2574,9 @@ ARMBaseInstrInfo::getOperandLatency(const InstrItineraryData *ItinData,
       DefMI->isRegSequence() || DefMI->isImplicitDef()) {
     return 1;
   }
+  // No operand latency. The caller may fall back to getInstrLatency.
   if (!ItinData || ItinData->isEmpty())
-    return DefMI->mayLoad() ? 3 : 1;
+    return -1;
 
   const MCInstrDesc *DefMCID = &DefMI->getDesc();
   const MCInstrDesc *UseMCID = &UseMI->getDesc();
@@ -3057,6 +3058,8 @@ hasHighOperandLatency(const InstrItineraryData *ItinData,
 
   // Hoist VFP / NEON instructions with 4 or higher latency.
   int Latency = getOperandLatency(ItinData, DefMI, DefIdx, UseMI, UseIdx);
+  if (Latency < 0)
+    Latency = getInstrLatency(ItinData, DefMI);
   if (Latency <= 3)
     return false;
   return DDomain == ARMII::DomainVFP || DDomain == ARMII::DomainNEON ||