diff options
| author | Stanislav Mekhanoshin <Stanislav.Mekhanoshin@amd.com> | 2017-02-15 01:03:59 +0000 |
|---|---|---|
| committer | Stanislav Mekhanoshin <Stanislav.Mekhanoshin@amd.com> | 2017-02-15 01:03:59 +0000 |
| commit | 19f98c6a09a95f1d7549210837c38ddec34dd96b (patch) | |
| tree | 065480b3c420b62b3cfeffbe94eaf8bb975d69b5 /llvm/lib/Target | |
| parent | 60b02509ddc1b997674c685281958d7d9fe1aae8 (diff) | |
| download | bcm5719-llvm-19f98c6a09a95f1d7549210837c38ddec34dd96b.tar.gz bcm5719-llvm-19f98c6a09a95f1d7549210837c38ddec34dd96b.zip | |
[AMDGPU] Fix MaxWorkGroupsPerCU for large workgroups
This patch corrects the maximum workgroups per CU if we have big
workgroups (more than 128). This calculation contributes to the
occupancy calculation in respect to LDS size.
Differential Revision: https://reviews.llvm.org/D29974
llvm-svn: 295134
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp b/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp index 02e47afeb91..0a1ab73d8dc 100644 --- a/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp +++ b/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp @@ -151,7 +151,11 @@ unsigned getMaxWorkGroupsPerCU(const FeatureBitset &Features, unsigned FlatWorkGroupSize) { if (!Features.test(FeatureGCN)) return 8; - return getWavesPerWorkGroup(Features, FlatWorkGroupSize) == 1 ? 40 : 16; + unsigned N = getWavesPerWorkGroup(Features, FlatWorkGroupSize); + if (N == 1) + return 40; + N = 40 / N; + return std::min(N, 16u); } unsigned getMaxWavesPerCU(const FeatureBitset &Features) { |

