forked from OSchip/llvm-project
ARM scheduling fix: compute predicated implicit use properly.
Minor drive by fix to cleanup latency computation. Calling getOperandLatency with a deliberately incorrect operand index does not give you the latency you want. llvm-svn: 158959
This commit is contained in:
parent
0d6989bd10
commit
3ccb1b8cf9
|
@ -2998,9 +2998,7 @@ ARMBaseInstrInfo::getOutputLatency(const InstrItineraryData *ItinData,
|
|||
return 1;
|
||||
|
||||
// If the second MI is predicated, then there is an implicit use dependency.
|
||||
int Latency = getOperandLatency(ItinData, DefMI, DefIdx, DepMI,
|
||||
DepMI->getNumOperands());
|
||||
return (Latency <= 0) ? 1 : Latency;
|
||||
return getInstrLatency(ItinData, DefMI);
|
||||
}
|
||||
|
||||
unsigned ARMBaseInstrInfo::getInstrLatency(const InstrItineraryData *ItinData,
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
; RUN: llc < %s -march=arm -mattr=+neon -pre-RA-sched=source | FileCheck %s
|
||||
; RUN: llc < %s -march=arm -mattr=+neon -pre-RA-sched=source -disable-post-ra | FileCheck %s
|
||||
|
||||
define <8 x i8> @sdivi8(<8 x i8>* %A, <8 x i8>* %B) nounwind {
|
||||
;CHECK: vrecpe.f32
|
||||
;CHECK: vrecpe.f32
|
||||
;CHECK: vmovn.i32
|
||||
;CHECK: vrecpe.f32
|
||||
;CHECK: vmovn.i32
|
||||
;CHECK: vmovn.i16
|
||||
%tmp1 = load <8 x i8>* %A
|
||||
|
@ -15,10 +15,10 @@ define <8 x i8> @sdivi8(<8 x i8>* %A, <8 x i8>* %B) nounwind {
|
|||
define <8 x i8> @udivi8(<8 x i8>* %A, <8 x i8>* %B) nounwind {
|
||||
;CHECK: vrecpe.f32
|
||||
;CHECK: vrecps.f32
|
||||
;CHECK: vmovn.i32
|
||||
;CHECK: vrecpe.f32
|
||||
;CHECK: vrecps.f32
|
||||
;CHECK: vmovn.i32
|
||||
;CHECK: vmovn.i32
|
||||
;CHECK: vqmovun.s16
|
||||
%tmp1 = load <8 x i8>* %A
|
||||
%tmp2 = load <8 x i8>* %B
|
||||
|
|
Loading…
Reference in New Issue