Two sets of changes. Sorry they are intermingled.
authorEvan Cheng <evan.cheng@apple.com>
Wed, 3 Nov 2010 00:45:17 +0000 (00:45 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Wed, 3 Nov 2010 00:45:17 +0000 (00:45 +0000)
commit8239daf7c83a65a189c352cce3191cdc3bbfe151
tree84b82c2cf503208d1f67007255f2f56fdb383c55
parent41957f6eb2271e5f1981b32a873d1b58217c6411
Two sets of changes. Sorry they are intermingled.

1. Fix pre-ra scheduler so it doesn't try to push instructions above calls to
   "optimize for latency". Call instructions don't have the right latency and
   this is more likely to use introduce spills.
2. Fix if-converter cost function. For ARM, it should use instruction latencies,
   not # of micro-ops since multi-latency instructions is completely executed
   even when the predicate is false. Also, some instruction will be "slower"
   when they are predicated due to the register def becoming implicit input.
   rdar://8598427

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118135 91177308-0d34-0410-b5e6-96231b3b80d8
17 files changed:
include/llvm/CodeGen/ScheduleDAG.h
include/llvm/Target/TargetInstrInfo.h
lib/CodeGen/IfConversion.cpp
lib/CodeGen/ScheduleDAGInstrs.cpp
lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp
lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp
lib/Target/ARM/ARMBaseInstrInfo.cpp
lib/Target/ARM/ARMBaseInstrInfo.h
lib/Target/ARM/Thumb2InstrInfo.cpp
lib/Target/ARM/Thumb2InstrInfo.h
lib/Target/TargetInstrInfo.cpp
test/CodeGen/ARM/2007-01-19-InfiniteLoop.ll
test/CodeGen/ARM/ifcvt10.ll
test/CodeGen/ARM/ifcvt11.ll [new file with mode: 0644]
test/CodeGen/ARM/lsr-on-unrolled-loops.ll
test/CodeGen/ARM/reg_sequence.ll
test/CodeGen/Thumb2/2010-06-14-NEONCoalescer.ll