Enable tail merging on PPC.
authorHal Finkel <hfinkel@anl.gov>
Sat, 9 Jun 2012 03:14:50 +0000 (03:14 +0000)
committerHal Finkel <hfinkel@anl.gov>
Sat, 9 Jun 2012 03:14:50 +0000 (03:14 +0000)
commit8bf75ed41c95e50b62a4f8b03552d51ad6e86c7a
treeea2ff86af8cf11e16c336b5a0c36b7c917935475
parentba17293a8827a7e0e390b0a1d6075148a58d9edd
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
lib/Target/PowerPC/PPCTargetMachine.cpp
test/CodeGen/PowerPC/2007-05-22-tailmerge-3.ll