summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
authorStanislav Mekhanoshin <Stanislav.Mekhanoshin@amd.com>2019-09-19 20:09:04 +0000
committerStanislav Mekhanoshin <Stanislav.Mekhanoshin@amd.com>2019-09-19 20:09:04 +0000
commitd487d6401d98ba7a759cd069b61ae67b286a3014 (patch)
tree741bb5a455ee1242abc293d2153c2484609d735e /llvm/lib/Target
parent1796aad50ca5de2447fdee5f22ce6f6a6379197f (diff)
downloadbcm5719-llvm-d487d6401d98ba7a759cd069b61ae67b286a3014.tar.gz
bcm5719-llvm-d487d6401d98ba7a759cd069b61ae67b286a3014.zip
[AMDGPU] fixed underflow in getOccupancyWithNumVGPRs
The function could return zero if an extreme number or registers were used. Minimal possible occupancy is 1. Differential Revision: https://reviews.llvm.org/D67771 llvm-svn: 372350
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r--llvm/lib/Target/AMDGPU/AMDGPUSubtarget.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUSubtarget.cpp b/llvm/lib/Target/AMDGPU/AMDGPUSubtarget.cpp
index b1069d4a319..cf89af68d6f 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUSubtarget.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUSubtarget.cpp
@@ -599,7 +599,7 @@ unsigned GCNSubtarget::getOccupancyWithNumVGPRs(unsigned VGPRs) const {
if (VGPRs < Granule)
return MaxWaves;
unsigned RoundedRegs = ((VGPRs + Granule - 1) / Granule) * Granule;
- return std::min(getTotalNumVGPRs() / RoundedRegs, MaxWaves);
+ return std::min(std::max(getTotalNumVGPRs() / RoundedRegs, 1u), MaxWaves);
}
unsigned GCNSubtarget::getReservedNumSGPRs(const MachineFunction &MF) const {
OpenPOWER on IntegriCloud