|
31 | 31 | #include "Utils/AMDGPUBaseInfo.h" |
32 | 32 | #include "Utils/AMDKernelCodeTUtils.h" |
33 | 33 | #include "Utils/SIDefinesUtils.h" |
| 34 | +#include "llvm/ADT/SmallString.h" |
34 | 35 | #include "llvm/Analysis/OptimizationRemarkEmitter.h" |
35 | 36 | #include "llvm/BinaryFormat/ELF.h" |
36 | 37 | #include "llvm/CodeGen/MachineFrameInfo.h" |
|
43 | 44 | #include "llvm/MC/MCStreamer.h" |
44 | 45 | #include "llvm/MC/TargetRegistry.h" |
45 | 46 | #include "llvm/Support/AMDHSAKernelDescriptor.h" |
| 47 | +#include "llvm/Support/FormatVariadic.h" |
46 | 48 | #include "llvm/Target/TargetLoweringObjectFile.h" |
47 | 49 | #include "llvm/Target/TargetMachine.h" |
48 | 50 | #include "llvm/TargetParser/TargetParser.h" |
@@ -466,12 +468,11 @@ void AMDGPUAsmPrinter::validateMCResourceInfo(Function &F) { |
466 | 468 | F, "amdgpu-waves-per-eu", {0, 0}, true); |
467 | 469 |
|
468 | 470 | if (TryGetMCExprValue(OccupancyExpr, Occupancy) && Occupancy < MinWEU) { |
469 | | - DiagnosticInfoOptimizationFailure Diag( |
470 | | - F, F.getSubprogram(), |
| 471 | + SmallString<256> Msg = formatv( |
471 | 472 | "failed to meet occupancy target given by 'amdgpu-waves-per-eu' in " |
472 | | - "'" + |
473 | | - F.getName() + "': desired occupancy was " + Twine(MinWEU) + |
474 | | - ", final occupancy is " + Twine(Occupancy)); |
| 473 | + "'{0}': desired occupancy was {1}, final occupancy is {2}", |
| 474 | + F.getName(), MinWEU, Occupancy); |
| 475 | + DiagnosticInfoOptimizationFailure Diag(F, F.getSubprogram(), Msg); |
475 | 476 | F.getContext().diagnose(Diag); |
476 | 477 | return; |
477 | 478 | } |
@@ -1261,13 +1262,12 @@ void AMDGPUAsmPrinter::getSIProgramInfo(SIProgramInfo &ProgInfo, |
1261 | 1262 | AMDGPU::getIntegerPairAttribute(F, "amdgpu-waves-per-eu", {0, 0}, true); |
1262 | 1263 | uint64_t Occupancy; |
1263 | 1264 | if (TryGetMCExprValue(ProgInfo.Occupancy, Occupancy) && Occupancy < MinWEU) { |
1264 | | - DiagnosticInfoOptimizationFailure Diag( |
1265 | | - F, F.getSubprogram(), |
| 1265 | + SmallString<256> Msg = formatv( |
1266 | 1266 | "failed to meet occupancy target given by 'amdgpu-waves-per-eu' in " |
1267 | | - "'" + |
1268 | | - F.getName() + "': desired occupancy was " + Twine(MinWEU) + |
1269 | | - ", final occupancy is " + Twine(Occupancy)); |
1270 | | - F.getContext().diagnose(Diag); |
| 1267 | + "'{0}'': desired occupancy was {1}, final occupancy is {2}", |
| 1268 | + F.getName(), MinWEU, Occupancy); |
| 1269 | + F.getContext().diagnose( |
| 1270 | + DiagnosticInfoOptimizationFailure(F, F.getSubprogram(), Msg)); |
1271 | 1271 | } |
1272 | 1272 |
|
1273 | 1273 | if (isGFX11Plus(STM)) { |
|
0 commit comments