Details
Details
Diff Detail
Diff Detail
Event Timeline
lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp | ||
---|---|---|
360–367 | Should check if MinNumSGPRs is less than TRAP_NUM_SGPRS, and perform the rounding after the subtraction? If so then replace with: unsigned MinNumSGPRs = getTotalNumSGPRs(Features) / (WavesPerEU + 1); if (Features.test(FeatureTrapHandler)) MinNumSGPRs -= std::min(MinNumSGPRs, TRAP_NUM_SGPRS); MinNumSGPRs = alignDown(MinNumSGPRs, getSGPRAllocGranule(Features)) + 1; return std::min(MinNumSGPRs, getAddressableNumSGPRs(Features)); | |
373–382 | Should check if MaxNumSGPRs is less than TRAP_NUM_SGPRS? If so then replace with: IsaVersion Version = getIsaVersion(Features); unsigned AddressableNumSGPRs = getAddressableNumSGPRs(Features); if (Version.Major >= 8 && !Addressable) AddressableNumSGPRs = 112; unsigned MaxNumSGPRs = getTotalNumSGPRs(Features) / WavesPerEU; if (Features.test(FeatureTrapHandler)) MaxNumSGPRs -= std::min(MaxNumSGPRs, TRAP_NUM_SGPRS) ; MaxNumSGPRs = alignDown(MaxNumSGPRs, getSGPRAllocGranule(Features)); return std::min(MaxNumSGPRs, AddressableNumSGPRs); | |
374–380 | Why is this needed? Why is getAddressableNumSGPRs not returning the correct value for each target? |
lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp | ||
---|---|---|
374–380 | I talked to Tony offline about this. I will do relevant changes after this change lands. |
Should check if MinNumSGPRs is less than TRAP_NUM_SGPRS, and perform the rounding after the subtraction? If so then replace with: