summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms
diff options
context:
space:
mode:
authorStanislav Mekhanoshin <Stanislav.Mekhanoshin@amd.com>2017-05-16 16:11:26 +0000
committerStanislav Mekhanoshin <Stanislav.Mekhanoshin@amd.com>2017-05-16 16:11:26 +0000
commitb10860788f9b2b8612cec4ab0768e10b960ffcf3 (patch)
tree34d35e0dbe56cc8fc659b287dd30faefe6b4b6a1 /llvm/test/Transforms
parent52e892577d593ef6c9e0fb8c7c56c46f80ad1901 (diff)
downloadbcm5719-llvm-b10860788f9b2b8612cec4ab0768e10b960ffcf3.tar.gz
bcm5719-llvm-b10860788f9b2b8612cec4ab0768e10b960ffcf3.zip
[AMDGPU] Cache live-ins and register pressure in scheduler
Using LIS can be quite expensive, so caching of calculated region live-ins and pressure is implemented. It does two things: 1. Caches the info for the second stage when we schedule with decreased target occupancy. 2. Tracks the basic block from top to bottom thus eliminating the need to scan whole register file liveness at every region split in the middle of the block. The scheduling is now done in 3 stages instead of two, with the first one being really a no-op and only used to collect scheduling regions as sent by the scheduler driver. There is no functional change to the current behavior, only compilation speed is affected. In general computeBlockPressure() could be simplified if we switch to backward RP tracker, because scheduler sends regions within a block starting from the last upward. We could use a natural order of upward tracker to seamlessly change between regions of the same block, since live reg set of a previous tracked region would become a live-out of the next region. That however requires fixing upward tracker to properly account defs and uses of the same instruction as both are contributing to the current pressure. When we converge on the produced pressure we should be able to switch between them back and forth. In addition, backward tracker is less expensive as it uses LIS in recede less often than forward uses it in advance. At the moment the worst known case compilation time has improved from 26 minutes to 8.5. Differential Revision: https://reviews.llvm.org/D33117 llvm-svn: 303184
Diffstat (limited to 'llvm/test/Transforms')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud