1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-22 12:33:33 +02:00
llvm-mirror/test/Transforms/CodeGenPrepare
Philip Reames e6c29ed949 [CGP] Duplicate addressing computation in cold paths if required to sink addressing mode
This patch teaches CGP to duplicate addressing mode computations into cold paths (detected via explicit cold attribute on calls) if required to let addressing mode be safely sunk into the basic block containing each load and store.

In general, duplicating code into cold blocks may result in code growth, but should not effect performance. In this case, it's better to duplicate some code than to put extra pressure on the register allocator by making it keep the address through the entirely of the fast path.

This patch only handles addressing computations, but in principal, we could implement a more general cold cold scheduling heuristic which tries to reduce register pressure in the fast path by duplicating code into the cold path. Getting the profitability of the general case right seemed likely to be challenging, so I stuck to the existing case (addressing computation) we already had.

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

llvm-svn: 263074
2016-03-09 23:13:12 +00:00
..
AArch64 Move free-zext.ll to llvm/test/Transforms/CodeGenPrepare/AArch64/ 2015-11-20 22:55:34 +00:00
AMDGPU AMDGPU: Remove some old intrinsic uses from tests 2016-02-11 06:02:01 +00:00
ARM [InstCombine] Rewrite bswap/bitreverse handling completely. 2016-01-15 09:20:19 +00:00
X86 [CGP] Duplicate addressing computation in cold paths if required to sink addressing mode 2016-03-09 23:13:12 +00:00
2008-11-24-RAUW-Self.ll
basic.ll
bitreverse-hang.ll [InstCombine] Rewrite bswap/bitreverse handling completely. 2016-01-15 09:20:19 +00:00
invariant.group.ll Introducing llvm.invariant.group.barrier intrinsic 2015-09-15 18:32:14 +00:00
overflow-intrinsics.ll [InstCombine][CodeGenPrep] Create llvm.uadd.with.overflow in CGP. 2015-04-10 21:07:09 +00:00
statepoint-relocate.ll [gc.statepoint] Change gc.statepoint intrinsic's return type to token type instead of i32 type 2015-12-26 07:54:32 +00:00