ARM: Enable MachineScheduler and disable PostRAScheduler for swift.
authorMatthias Braun <matze@braunis.de>
Fri, 17 Jul 2015 23:18:30 +0000 (23:18 +0000)
committerMatthias Braun <matze@braunis.de>
Fri, 17 Jul 2015 23:18:30 +0000 (23:18 +0000)
commit6f6ca40ef09b36971bceca4c24e54346a0924dbd
tree44f868f038790b19507f45ef9d205e4bf6b57927
parent0dec0e1ea5a7df2aca129fdbe8fb1db87938c593
ARM: Enable MachineScheduler and disable PostRAScheduler for swift.

Reapply r242500 now that the swift schedmodel includes LDRLIT.

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@242588 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