From 6ef04515db5d4ddb807b6c45c8bbba62b609998e Mon Sep 17 00:00:00 2001 From: Matt Arsenault Date: Wed, 22 Jun 2016 17:47:39 +0000 Subject: [PATCH] AMDGPU: Make FrameLowering stack alignment 16 We don't need it to be that high. The natural alignment for a single workitem's stack is 16. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@273448 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/AMDGPU/AMDGPUSubtarget.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/Target/AMDGPU/AMDGPUSubtarget.cpp b/lib/Target/AMDGPU/AMDGPUSubtarget.cpp index 63b19acea20..70603374bc9 100644 --- a/lib/Target/AMDGPU/AMDGPUSubtarget.cpp +++ b/lib/Target/AMDGPU/AMDGPUSubtarget.cpp @@ -107,7 +107,8 @@ AMDGPUSubtarget::AMDGPUSubtarget(const Triple &TT, StringRef GPU, StringRef FS, initializeSubtargetDependencies(TT, GPU, FS); - const unsigned MaxStackAlign = 64 * 16; // Maximum stack alignment (long16) + // Scratch is allocated in 256 dword per wave blocks. + const unsigned StackAlign = 4 * 256 / getWavefrontSize(); if (getGeneration() <= AMDGPUSubtarget::NORTHERN_ISLANDS) { InstrInfo.reset(new R600InstrInfo(*this)); @@ -116,14 +117,14 @@ AMDGPUSubtarget::AMDGPUSubtarget(const Triple &TT, StringRef GPU, StringRef FS, // FIXME: Should have R600 specific FrameLowering FrameLowering.reset(new AMDGPUFrameLowering( TargetFrameLowering::StackGrowsUp, - MaxStackAlign, + StackAlign, 0)); } else { InstrInfo.reset(new SIInstrInfo(*this)); TLInfo.reset(new SITargetLowering(TM, *this)); FrameLowering.reset(new SIFrameLowering( TargetFrameLowering::StackGrowsUp, - MaxStackAlign, + StackAlign, 0)); #ifndef LLVM_BUILD_GLOBAL_ISEL GISelAccessor *GISel = new GISelAccessor(); -- 2.50.1