diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2017-07-28 18:40:05 +0000 |
---|---|---|
committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2017-07-28 18:40:05 +0000 |
commit | c06574ffc0053cd9bf54d174cc9467e8a8edd94d (patch) | |
tree | 0ede0fbb6791fb60a12b9545cfc637af236e83cf /llvm/lib/Analysis/ValueTracking.cpp | |
parent | 1b179bc5ff845e49fe787783ca3c7c8f2949c5bb (diff) | |
download | bcm5719-llvm-c06574ffc0053cd9bf54d174cc9467e8a8edd94d.tar.gz bcm5719-llvm-c06574ffc0053cd9bf54d174cc9467e8a8edd94d.zip |
AMDGPU: Add pass to replace out arguments
It is better to return arguments directly in registers
if we are making a call rather than introducing expensive
stack usage. In one of sample compile from one of
Blender's many kernel variants, this fires on about
~20 different functions. Future improvements may be to
recognize simple cases where the pointer is indexing a small
array. This also fails when the store to the out argument
is in a separate block from the return, which happens in
a few of the Blender functions. This should also probably
be using MemorySSA which might help with that.
I'm not sure this is correct as a FunctionPass, but
MemoryDependenceAnalysis seems to not work with
a ModulePass.
I'm also not sure where it should run.I think it should
run before DeadArgumentElimination, so maybe either
EP_CGSCCOptimizerLate or EP_ScalarOptimizerLate.
llvm-svn: 309416
Diffstat (limited to 'llvm/lib/Analysis/ValueTracking.cpp')
0 files changed, 0 insertions, 0 deletions