Recommit r129383. PreRA scheduler heuristic fixes: VRegCycle, TokenFactor latency.
authorAndrew Trick <atrick@apple.com>
Wed, 13 Apr 2011 00:38:32 +0000 (00:38 +0000)
committerAndrew Trick <atrick@apple.com>
Wed, 13 Apr 2011 00:38:32 +0000 (00:38 +0000)
commit87896d9368e08d93493427ce7bf8272d1e5cca35
treed3183747b2917bf4e1254c7a331ff86fd3352a2f
parentf93f7b2446bec3febc30b7136e18704664bd98cc
Recommit r129383. PreRA scheduler heuristic fixes: VRegCycle, TokenFactor latency.

Additional fixes:
Do something reasonable for subtargets with generic
itineraries by handle node latency the same as for an empty
itinerary. Now nodes default to unit latency unless an itinerary
explicitly specifies a zero cycle stage or it is a TokenFactor chain.

Original fixes:
UnitsSharePred was a source of randomness in the scheduler: node
priority depended on the queue data structure. I rewrote the recent
VRegCycle heuristics to completely replace the old heuristic without
any randomness. To make the ndoe latency adjustments work, I also
needed to do something a little more reasonable with TokenFactor. I
gave it zero latency to its consumers and always schedule it as low as
possible.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@129421 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Target/TargetInstrItineraries.h
lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp
lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp
test/CodeGen/ARM/memcpy-inline.ll
test/CodeGen/ARM/neon_div.ll
test/CodeGen/ARM/va_arg.ll
test/CodeGen/ARM/vfp.ll
test/CodeGen/Mips/o32_cc_vararg.ll
test/CodeGen/Thumb2/thumb2-uxtb.ll