[PATCH] D21551: AMDGPU: fix local stack slot allocation bugs
Nicolai Hähnle via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 4 03:19:23 PDT 2016
nhaehnle updated this revision to Diff 62660.
nhaehnle added a comment.
Change encoding back to ADD_I32_e64, use temporary register for immediates.
The other issue isn't that simple, I believe, and the problem actually doesn't
have anything to do with local stack slot allocation per se. It persists
even when I disable that pass.
The issue is that if
(1) VGPR spilling isn't enabled and
(2) there aren't any stack objects initially but
(3) during instruction selection, new stack objects are created (in order to
lower extractelement instructions)
this messes with some assumptions around the existence of stack objects.
Virtual registers or not, in this case we do need to reserve various SGPRs
after the fact because they're needed for frame finalization. But reserved
registers are frozen during instruction selection.
Basically, we would need a hook either when a new stack object is created
during instruction selection or somewhere just before the end of instruction
selection (but again not after, because we have to reserve SGPRs).
To be honest, this is becoming a bit of a waste of time. In Mesa, we're
enabling VGPR spilling all the time anyway. Why is the option to disable
that even there? I'm a bit tempted to just enable VGPR spilling in the test
case and commit only the SIRegisterInfo part.
http://reviews.llvm.org/D21551
Files:
lib/Target/AMDGPU/SIISelLowering.cpp
lib/Target/AMDGPU/SIMachineFunctionInfo.cpp
lib/Target/AMDGPU/SIMachineFunctionInfo.h
lib/Target/AMDGPU/SIRegisterInfo.cpp
test/CodeGen/AMDGPU/local-stack-slot-bug.ll
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D21551.62660.patch
Type: text/x-patch
Size: 8242 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160704/69259c3a/attachment.bin>
More information about the llvm-commits
mailing list