From d487d6401d98ba7a759cd069b61ae67b286a3014 Mon Sep 17 00:00:00 2001 From: Stanislav Mekhanoshin Date: Thu, 19 Sep 2019 20:09:04 +0000 Subject: [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 --- llvm/lib/Target/AMDGPU/AMDGPUSubtarget.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'llvm/lib/Target') 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 { -- cgit v1.2.3