mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
Enable tail merging on PPC.
Tail merging had been disabled on PPC because it would disturb bundling decisions made during pre-RA scheduling on the 970 cores. Now, however, all bundling decisions are made during post-RA scheduling, and tail merging is generally beneficial (the average test-suite speedup is insignificantly positive). Largest test-suite speedups: MultiSource/Benchmarks/mediabench/gsm/toast/toast - 30% MultiSource/Benchmarks/BitBench/uuencode/uuencode - 23% SingleSource/Benchmarks/Shootout-C++/ary - 21% SingleSource/Benchmarks/Stanford/Queens - 17% Largest slowdowns: MultiSource/Benchmarks/MiBench/security-sha/security-sha - 24% MultiSource/Benchmarks/McCat/03-testtrie/testtrie - 22% MultiSource/Applications/JM/ldecod/ldecod - 14% MultiSource/Benchmarks/mediabench/g721/g721encode/encode - 9% This is improved by using full (instead of just critical) anti-dependency breaking, but doing so still causes miscompiles and so cannot yet be enabled by default. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158259 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ba17293a88
commit
8bf75ed41c
@ -93,13 +93,7 @@ public:
|
|||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
TargetPassConfig *PPCTargetMachine::createPassConfig(PassManagerBase &PM) {
|
TargetPassConfig *PPCTargetMachine::createPassConfig(PassManagerBase &PM) {
|
||||||
TargetPassConfig *PassConfig = new PPCPassConfig(this, PM);
|
return new PPCPassConfig(this, PM);
|
||||||
|
|
||||||
// Override this for PowerPC. Tail merging happily breaks up instruction issue
|
|
||||||
// groups, which typically degrades performance.
|
|
||||||
PassConfig->setEnableTailMerge(false);
|
|
||||||
|
|
||||||
return PassConfig;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PPCPassConfig::addPreRegAlloc() {
|
bool PPCPassConfig::addPreRegAlloc() {
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
; RUN: llc < %s -march=ppc32 | grep bl.*baz | count 2
|
; RUN: llc < %s -march=ppc32 -enable-tail-merge=0 | grep bl.*baz | count 2
|
||||||
; RUN: llc < %s -march=ppc32 | grep bl.*quux | count 2
|
; RUN: llc < %s -march=ppc32 -enable-tail-merge=0 | grep bl.*quux | count 2
|
||||||
; RUN: llc < %s -march=ppc32 -enable-tail-merge | grep bl.*baz | count 1
|
; RUN: llc < %s -march=ppc32 | grep bl.*baz | count 1
|
||||||
; RUN: llc < %s -march=ppc32 -enable-tail-merge=1 | grep bl.*quux | count 1
|
; RUN: llc < %s -march=ppc32 | grep bl.*quux | count 1
|
||||||
; Check that tail merging is not the default on ppc, and that -enable-tail-merge works.
|
; Check that tail merging is the default on ppc, and that -enable-tail-merge works.
|
||||||
|
|
||||||
; ModuleID = 'tail.c'
|
; ModuleID = 'tail.c'
|
||||||
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64"
|
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64"
|
||||||
|
Loading…
Reference in New Issue
Block a user