summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM/ARMSubtarget.h
diff options
context:
space:
mode:
authorMatthias Braun <matze@braunis.de>2015-07-17 01:44:31 +0000
committerMatthias Braun <matze@braunis.de>2015-07-17 01:44:31 +0000
commit2d8315f8066bbce201e9b2c28b7d24915dcbe5f0 (patch)
tree6de810000cfdd7af9f988349786d0d911cf9932f /llvm/lib/Target/ARM/ARMSubtarget.h
parentfb2398d0c43405a6b654c80560e38fb3ccd134b9 (diff)
downloadbcm5719-llvm-2d8315f8066bbce201e9b2c28b7d24915dcbe5f0.tar.gz
bcm5719-llvm-2d8315f8066bbce201e9b2c28b7d24915dcbe5f0.zip
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 llvm-svn: 242500
Diffstat (limited to 'llvm/lib/Target/ARM/ARMSubtarget.h')
-rw-r--r--llvm/lib/Target/ARM/ARMSubtarget.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMSubtarget.h b/llvm/lib/Target/ARM/ARMSubtarget.h
index 75425890a28..4f9bc372e4b 100644
--- a/llvm/lib/Target/ARM/ARMSubtarget.h
+++ b/llvm/lib/Target/ARM/ARMSubtarget.h
@@ -433,6 +433,9 @@ public:
/// compiler runtime or math libraries.
bool hasSinCos() const;
+ /// Returns true if machine scheduler should be enabled.
+ bool enableMachineScheduler() const override;
+
/// True for some subtargets at > -O0.
bool enablePostRAScheduler() const override;
OpenPOWER on IntegriCloud