diff options
author | Stanislav Mekhanoshin <Stanislav.Mekhanoshin@amd.com> | 2018-05-25 17:25:12 +0000 |
---|---|---|
committer | Stanislav Mekhanoshin <Stanislav.Mekhanoshin@amd.com> | 2018-05-25 17:25:12 +0000 |
commit | 1c538423dc2482c475a00b0895dffde5a9ff9bd3 (patch) | |
tree | 6f8d4b4618804dc091a1878ff5a454bbb54286b5 /llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp | |
parent | 6a3199238371e86d8251502c001fe9b0e8ba5795 (diff) | |
download | bcm5719-llvm-1c538423dc2482c475a00b0895dffde5a9ff9bd3.tar.gz bcm5719-llvm-1c538423dc2482c475a00b0895dffde5a9ff9bd3.zip |
[AMDGPU] Add perf hints to functions
This is adoption of HSAIL perfhint pass. Two types of hints are produced:
1. Function is memory bound.
2. Kernel can use wave limiter.
Currently these hints are used in the scheduler. If a function is suspected
to be memory bound we allow occupancy to decrease to 4 waves in the course
of scheduling.
Differential Revision: https://reviews.llvm.org/D46992
llvm-svn: 333289
Diffstat (limited to 'llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp')
-rw-r--r-- | llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp b/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp index 12e90cc7732..4c23beef616 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp @@ -278,11 +278,14 @@ void AMDGPUAsmPrinter::emitCommonFunctionComments( uint32_t NumVGPR, uint32_t NumSGPR, uint64_t ScratchSize, - uint64_t CodeSize) { + uint64_t CodeSize, + const AMDGPUMachineFunction *MFI) { OutStreamer->emitRawComment(" codeLenInByte = " + Twine(CodeSize), false); OutStreamer->emitRawComment(" NumSgprs: " + Twine(NumSGPR), false); OutStreamer->emitRawComment(" NumVgprs: " + Twine(NumVGPR), false); OutStreamer->emitRawComment(" ScratchSize: " + Twine(ScratchSize), false); + OutStreamer->emitRawComment(" MemoryBound: " + Twine(MFI->isMemoryBound()), + false); } bool AMDGPUAsmPrinter::runOnMachineFunction(MachineFunction &MF) { @@ -339,7 +342,7 @@ bool AMDGPUAsmPrinter::runOnMachineFunction(MachineFunction &MF) { Info.NumVGPR, Info.getTotalNumSGPRs(MF.getSubtarget<SISubtarget>()), Info.PrivateSegmentSize, - getFunctionCodeSize(MF)); + getFunctionCodeSize(MF), MFI); return false; } @@ -347,7 +350,7 @@ bool AMDGPUAsmPrinter::runOnMachineFunction(MachineFunction &MF) { emitCommonFunctionComments(CurrentProgramInfo.NumVGPR, CurrentProgramInfo.NumSGPR, CurrentProgramInfo.ScratchSize, - getFunctionCodeSize(MF)); + getFunctionCodeSize(MF), MFI); OutStreamer->emitRawComment( " FloatMode: " + Twine(CurrentProgramInfo.FloatMode), false); @@ -376,6 +379,9 @@ bool AMDGPUAsmPrinter::runOnMachineFunction(MachineFunction &MF) { " ReservedVGPRCount: " + Twine(CurrentProgramInfo.ReservedVGPRCount), false); + OutStreamer->emitRawComment( + " WaveLimiterHint : " + Twine(MFI->needsWaveLimiter()), false); + if (MF.getSubtarget<SISubtarget>().debuggerEmitPrologue()) { OutStreamer->emitRawComment( " DebuggerWavefrontPrivateSegmentOffsetSGPR: s" + |