Don't compute latencies for regmask operands.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Wed, 22 Feb 2012 22:52:52 +0000 (22:52 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Wed, 22 Feb 2012 22:52:52 +0000 (22:52 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151211 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/ScheduleDAGInstrs.cpp

index 61bca5294eea023ec1b5110b3f857b8b216b432f..5c1247f987aca82a73688529dbf91caf6b0d54a9 100644 (file)
@@ -737,7 +737,9 @@ void ScheduleDAGInstrs::ComputeOperandLatency(SUnit *Def, SUnit *Use,
       //   %Q1<def> = VMULv8i16 %Q1<kill>, %Q3<kill>, ...
       // What we want is to compute latency between def of %D6/%D7 and use of
       // %Q3 instead.
-      DefIdx = DefMI->findRegisterDefOperandIdx(Reg, false, true, TRI);
+      unsigned Op2 = DefMI->findRegisterDefOperandIdx(Reg, false, true, TRI);
+      if (DefMI->getOperand(Op2).isReg())
+        DefIdx = Op2;
     }
     MachineInstr *UseMI = Use->getInstr();
     // For all uses of the register, calculate the maxmimum latency