|
23 | 23 | #include "llvm/MC/MCExpr.h" |
24 | 24 | #include "llvm/Support/AMDGPUMetadata.h" |
25 | 25 | #include "llvm/Support/EndianStream.h" |
| 26 | +#include "llvm/Support/VersionTuple.h" |
26 | 27 |
|
27 | 28 | using namespace llvm; |
28 | 29 | using namespace llvm::AMDGPU; |
@@ -259,13 +260,16 @@ void AMDGPUPALMetadata::setEntryPoint(unsigned CC, StringRef Name) { |
259 | 260 | getHwStage(CC)[".entry_point_symbol"] = |
260 | 261 | MsgPackDoc.getNode(Name, /*Copy=*/true); |
261 | 262 |
|
262 | | - // Set .entry_point which is defined |
263 | | - // to be _amdgpu_<stage> and _amdgpu_cs for non-shader functions |
264 | | - SmallString<16> EPName("_amdgpu_"); |
265 | | - raw_svector_ostream EPNameOS(EPName); |
266 | | - EPNameOS << getStageName(CC) + 1; |
267 | | - getHwStage(CC)[".entry_point"] = |
268 | | - MsgPackDoc.getNode(EPNameOS.str(), /*Copy=*/true); |
| 263 | + // For PAL version 3.6 and above, entry_point is no longer required. |
| 264 | + if (getPALVersion() < VersionTuple(3, 6)) { |
| 265 | + // Set .entry_point which is defined to be _amdgpu_<stage>_main and |
| 266 | + // _amdgpu_cs_main for non-shader functions. |
| 267 | + SmallString<16> EPName("_amdgpu_"); |
| 268 | + raw_svector_ostream EPNameOS(EPName); |
| 269 | + EPNameOS << getStageName(CC) + 1 << "_main"; |
| 270 | + getHwStage(CC)[".entry_point"] = |
| 271 | + MsgPackDoc.getNode(EPNameOS.str(), /*Copy=*/true); |
| 272 | + } |
269 | 273 | } |
270 | 274 |
|
271 | 275 | // Set the number of used vgprs in the metadata. This is an optional |
@@ -1052,6 +1056,10 @@ unsigned AMDGPUPALMetadata::getPALMajorVersion() { return getPALVersion(0); } |
1052 | 1056 |
|
1053 | 1057 | unsigned AMDGPUPALMetadata::getPALMinorVersion() { return getPALVersion(1); } |
1054 | 1058 |
|
| 1059 | +VersionTuple AMDGPUPALMetadata::getPALVersion() { |
| 1060 | + return VersionTuple(getPALVersion(0), getPALVersion(1)); |
| 1061 | +} |
| 1062 | + |
1055 | 1063 | // Set the field in a given .hardware_stages entry |
1056 | 1064 | void AMDGPUPALMetadata::setHwStage(unsigned CC, StringRef field, unsigned Val) { |
1057 | 1065 | getHwStage(CC)[field] = Val; |
|
0 commit comments