Skip to content

Commit 0f5fbe9

Browse files
Ana Mihajlovicgithub-actions[bot]
authored andcommitted
Automerge: [AMDGPU] Fix hw stage metadata setting for unsigned values (#154502)
2 parents 05f8aae + c488584 commit 0f5fbe9

File tree

4 files changed

+42
-3
lines changed

4 files changed

+42
-3
lines changed

llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1444,9 +1444,10 @@ static void EmitPALMetadataCommon(AMDGPUPALMetadata *MD,
14441444
MD->setComputeRegisters(".dynamic_vgpr_en", true);
14451445
}
14461446

1447-
MD->setHwStage(CC, ".lds_size",
1448-
(unsigned)(CurrentProgramInfo.LdsSize *
1449-
getLdsDwGranularity(ST) * sizeof(uint32_t)));
1447+
MD->updateHwStageMaximum(
1448+
CC, ".lds_size",
1449+
(unsigned)(CurrentProgramInfo.LdsSize * getLdsDwGranularity(ST) *
1450+
sizeof(uint32_t)));
14501451
}
14511452

14521453
// This is the equivalent of EmitProgramInfoSI above, but for when the OS type

llvm/lib/Target/AMDGPU/Utils/AMDGPUPALMetadata.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1061,6 +1061,17 @@ VersionTuple AMDGPUPALMetadata::getPALVersion() {
10611061
return VersionTuple(getPALVersion(0), getPALVersion(1));
10621062
}
10631063

1064+
// Set the field in a given .hardware_stages entry to a maximum value
1065+
void AMDGPUPALMetadata::updateHwStageMaximum(unsigned CC, StringRef field,
1066+
unsigned Val) {
1067+
msgpack::MapDocNode HwStageFieldMapNode = getHwStage(CC);
1068+
auto &Node = HwStageFieldMapNode[field];
1069+
if (Node.isEmpty())
1070+
Node = Val;
1071+
else
1072+
Node = std::max<unsigned>(Node.getUInt(), Val);
1073+
}
1074+
10641075
// Set the field in a given .hardware_stages entry
10651076
void AMDGPUPALMetadata::setHwStage(unsigned CC, StringRef field, unsigned Val) {
10661077
getHwStage(CC)[field] = Val;

llvm/lib/Target/AMDGPU/Utils/AMDGPUPALMetadata.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@ class AMDGPUPALMetadata {
156156
unsigned getPALMinorVersion();
157157
VersionTuple getPALVersion();
158158

159+
void updateHwStageMaximum(unsigned CC, StringRef field, unsigned Val);
159160
void setHwStage(unsigned CC, StringRef field, unsigned Val);
160161
void setHwStage(unsigned CC, StringRef field, bool Val);
161162
void setHwStage(unsigned CC, StringRef field, msgpack::Type Type,
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2+
; RUN: llc -mtriple=amdgcn--amdpal -mcpu=gfx1200 < %s | FileCheck -check-prefix=PAL %s
3+
4+
;test if zero lds_size of f2 doesn't overwrite f1
5+
@x = addrspace(3) global i32 poison
6+
7+
; PAL: .hardware_stages:
8+
; PAL: .lds_size: 0x200
9+
; PAL: .shader_functions:
10+
; PAL: f1:
11+
; PAL: .lds_size: 0x4
12+
; PAL: f2:
13+
; PAL: .lds_size: 0
14+
15+
define amdgpu_gfx void @f1(i32 %val) {
16+
store i32 %val, ptr addrspace(3) @x
17+
ret void
18+
}
19+
20+
define amdgpu_gfx void @f2(i32 %a, ptr addrspace(1) %ptr) {
21+
store i32 %a, ptr addrspace(1) %ptr
22+
ret void
23+
}
24+
25+
!amdgpu.pal.metadata.msgpack = !{!8}
26+
!8 = !{!"\82\B0amdpal.pipelines\91\8A\A4.api\A6Vulkan\B2.compute_registers\85\AB.tg_size_en\C3\AA.tgid_x_en\C3\AA.tgid_y_en\C3\AA.tgid_z_en\C3\AF.tidig_comp_cnt\00\B0.hardware_stages\81\A3.cs\8D\AF.checksum_value\00\AB.debug_mode\00\AB.float_mode\CC\C0\A9.image_op\C2\AC.mem_ordered\C3\AB.sgpr_limitj\B7.threadgroup_dimensions\93 \01\01\AD.trap_present\00\B2.user_data_reg_map\DC\00 \CE\10\00\00\00\CE\10\00\00\06\CE\FF\FF\FF\FF\00\01\02\03\04\05\06\CE\FF\FF\FF\FF\CE\FF\FF\FF\FF\CE\FF\FF\FF\FF\CE\FF\FF\FF\FF\CE\FF\FF\FF\FF\CE\10\00\00\02\CE\FF\FF\FF\FF\CE\FF\FF\FF\FF\CE\FF\FF\FF\FF\CE\FF\FF\FF\FF\CE\FF\FF\FF\FF\CE\FF\FF\FF\FF\CE\FF\FF\FF\FF\CE\FF\FF\FF\FF\CE\FF\FF\FF\FF\CE\FF\FF\FF\FF\CE\FF\FF\FF\FF\CE\FF\FF\FF\FF\CE\FF\FF\FF\FF\CE\FF\FF\FF\FF\CE\FF\FF\FF\FF\CE\FF\FF\FF\FF\AB.user_sgprs\10\AB.vgpr_limit\CC\80\AF.wavefront_size \AF.wg_round_robin\C2\B7.internal_pipeline_hash\92\CF\F6\B5\A6D\E3\BE\9D\D6\CFF\\=l\09\AB\F0#\A8.shaders\81\A8.compute\82\B0.api_shader_hash\92\00\00\B1.hardware_mapping\91\A3.cs\B0.spill_threshold\CD\FF\FF\A5.type\A2Cs\B0.user_data_limit\07\A9.uses_cps\C3\AF.xgl_cache_info\82\B3.128_bit_cache_hash\92\CF-ua\DD\EA7\19\94\CF\80\16\9A\FC\9B\A6\1Dk\AD.llpc_version\A477.4\AEamdpal.version\92\03\00"}

0 commit comments

Comments
 (0)