ARM: Enable MachineScheduler and disable PostRAScheduler for swift.
authorMatthias Braun <matze@braunis.de>
Fri, 17 Jul 2015 01:44:31 +0000 (01:44 +0000)
committerMatthias Braun <matze@braunis.de>
Fri, 17 Jul 2015 01:44:31 +0000 (01:44 +0000)
commitc8fe2bf3a4f4887b461f164f042403f304df50a9
tree566d5ff77d83c56f19d7f4054edd94030348ec88
parentac69d5205bdc513c94068ecb49ecc0268e70015d
ARM: Enable MachineScheduler and disable PostRAScheduler for swift.

This is mostly done to disable the PostRAScheduler which optimizes for
instruction latencies which isn't a good fit for out-of-order
architectures. This also allows to leave out the itinerary table in
swift in favor of the SchedModel ones.

This change leads to performance improvements/regressions by as much as
10% in some benchmarks, in fact we loose 0.4% performance over the
llvm-testsuite for reasons that appear to be unknown or out of the
compilers control. rdar://20803802 documents the investigation of
these effects.

While it is probably a good idea to perform the same switch for the
other ARM out-of-order CPUs, I limited this change to swift as I cannot
perform the benchmark verification on the other CPUs.

Differential Revision: http://reviews.llvm.org/D10513

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@242500 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/MC/MCSchedule.h
lib/Target/ARM/ARMScheduleSwift.td
lib/Target/ARM/ARMSubtarget.cpp
lib/Target/ARM/ARMSubtarget.h
test/CodeGen/ARM/adv-copy-opt.ll
test/CodeGen/ARM/avoid-cpsr-rmw.ll
test/CodeGen/ARM/cmpxchg-idioms.ll
test/CodeGen/ARM/test-sharedidx.ll
test/CodeGen/ARM/vector-load.ll
test/CodeGen/ARM/vector-store.ll