[PATCH] D87704: [AMDGPU] Reduce stack pointer alignment
Sebastian Neubauer via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Oct 2 02:31:06 PDT 2020
Flakebi added inline comments.
================
Comment at: llvm/lib/Target/AMDGPU/AMDGPUSubtarget.h:944-946
+ // the pointer. Set this to something above the minimum for HSA to avoid
+ // needing dynamic realignment in common cases.
+ Align getStackAlignment() const {
----------------
arsenm wrote:
> arsenm wrote:
> > arsenm wrote:
> > > Flakebi wrote:
> > > > arsenm wrote:
> > > > > This isn't a real ABI requirement and I don't think should vary based on the triple. Why do you want to re-reduce this?
> > > > As far as I understand it, an alignment of 16 is needed for OpenCL but otherwise not required (as real memory addresses for lanes are aligned to 4 only anyway).
> > > > Forcing an alignment of 16 means that spilling one vgpr will reserve 1 kiB of scratch memory where only 256 Byte are needed.
> > > > If a single sgpr needs to be spilled to a vgpr (which is then in turn spilled to scratch), we need 1 kiB of memory for a 4 Byte value, which seems quite a lot to me.
> > > >
> > > > Is there a downside of requiring an alignment of 4? Are there cases outside OpenCL where a higher alignment is required and the stack would need to be realigned?
> > > It's not needed, it just introduces stack realignment if you have any stack objects with a higher alignment. Values up to 16-bytes are common (and 8 are very common). This isn't a property of the source language since the target ABI still has higher alignments for common types.
> > I have been thinking we should add an optimization pass to reduce the alignment of allocas if the address isn't captured
> To be clear, reducing this back to 4 (I had it at 4 originally) may be a good plan with some optimizations, but I don't think this should vary based on the triple
Thanks for the helpful explanation. I might come back to this in a while.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D87704/new/
https://reviews.llvm.org/D87704
More information about the llvm-commits
mailing list