Skip to content

Commit 2e6268a

Browse files
authored
[AMDGPU] Add MSG_RTN_GET_CLUSTER_BARRIER_STATE (#157549)
1 parent b94987b commit 2e6268a

File tree

5 files changed

+43
-0
lines changed

5 files changed

+43
-0
lines changed

llvm/lib/Target/AMDGPU/SIDefines.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -458,6 +458,8 @@ enum Id { // Message ID, width(4) [3:0].
458458
ID_RTN_GET_TBA_TO_PC = 134,
459459
ID_RTN_GET_SE_AID_ID = 135,
460460

461+
ID_RTN_GET_CLUSTER_BARRIER_STATE = 136, // added in GFX1250
462+
461463
ID_MASK_PreGFX11_ = 0xF,
462464
ID_MASK_GFX11Plus_ = 0xFF
463465
};

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,8 @@ static constexpr CustomOperand MsgOperands[] = {
116116
{{"MSG_RTN_GET_TBA"}, ID_RTN_GET_TBA, isGFX11Plus},
117117
{{"MSG_RTN_GET_TBA_TO_PC"}, ID_RTN_GET_TBA_TO_PC, isGFX11Plus},
118118
{{"MSG_RTN_GET_SE_AID_ID"}, ID_RTN_GET_SE_AID_ID, isGFX12Plus},
119+
{{"MSG_RTN_GET_CLUSTER_BARRIER_STATE"}, ID_RTN_GET_CLUSTER_BARRIER_STATE,
120+
isGFX1250},
119121
};
120122

121123
static constexpr CustomOperand SysMsgOperands[] = {

llvm/test/CodeGen/AMDGPU/llvm.amdgcn.sendmsg.rtn.ll

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,5 +268,30 @@ define amdgpu_kernel void @test_get_99999_i64(ptr addrspace(1) %out) {
268268
ret void
269269
}
270270

271+
define amdgpu_kernel void @test_get_136_i64(ptr addrspace(1) %out) {
272+
; GFX11-LABEL: test_get_136_i64:
273+
; GFX11: ; %bb.0:
274+
; GFX11-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
275+
; GFX11-NEXT: s_sendmsg_rtn_b64 s[2:3], sendmsg(136, 0, 0)
276+
; GFX11-NEXT: v_mov_b32_e32 v2, 0
277+
; GFX11-NEXT: s_waitcnt lgkmcnt(0)
278+
; GFX11-NEXT: v_dual_mov_b32 v0, s2 :: v_dual_mov_b32 v1, s3
279+
; GFX11-NEXT: global_store_b64 v2, v[0:1], s[0:1]
280+
; GFX11-NEXT: s_endpgm
281+
;
282+
; GFX1250-LABEL: test_get_136_i64:
283+
; GFX1250: ; %bb.0:
284+
; GFX1250-NEXT: s_load_b64 s[0:1], s[4:5], 0x24
285+
; GFX1250-NEXT: s_sendmsg_rtn_b64 s[2:3], sendmsg(MSG_RTN_GET_CLUSTER_BARRIER_STATE)
286+
; GFX1250-NEXT: v_mov_b32_e32 v2, 0
287+
; GFX1250-NEXT: s_wait_kmcnt 0x0
288+
; GFX1250-NEXT: v_mov_b64_e32 v[0:1], s[2:3]
289+
; GFX1250-NEXT: global_store_b64 v2, v[0:1], s[0:1]
290+
; GFX1250-NEXT: s_endpgm
291+
%ret = call i64 @llvm.amdgcn.s.sendmsg.rtn.i64(i32 136)
292+
store i64 %ret, ptr addrspace(1) %out
293+
ret void
294+
}
295+
271296
declare i32 @llvm.amdgcn.s.sendmsg.rtn.i32(i32)
272297
declare i64 @llvm.amdgcn.s.sendmsg.rtn.i64(i32)

llvm/test/MC/AMDGPU/gfx1250_asm_sop1.s

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,14 @@ s_rfe_i64 s[2:3]
4545
s_rfe_b64 s[2:3]
4646
// GFX1250: s_rfe_i64 s[2:3] ; encoding: [0x02,0x4a,0x80,0xbe]
4747

48+
s_sendmsg_rtn_b32 s2, sendmsg(MSG_RTN_GET_CLUSTER_BARRIER_STATE)
49+
// GFX1250: s_sendmsg_rtn_b32 s2, sendmsg(MSG_RTN_GET_CLUSTER_BARRIER_STATE) ; encoding: [0x88,0x4c,0x82,0xbe]
50+
// GFX12-ERR: :[[@LINE-2]]:{{[0-9]+}}: error: specified message id is not supported on this GPU
51+
52+
s_sendmsg_rtn_b64 s[2:3], sendmsg(MSG_RTN_GET_CLUSTER_BARRIER_STATE)
53+
// GFX1250: s_sendmsg_rtn_b64 s[2:3], sendmsg(MSG_RTN_GET_CLUSTER_BARRIER_STATE) ; encoding: [0x88,0x4d,0x82,0xbe]
54+
// GFX12-ERR: :[[@LINE-2]]:{{[0-9]+}}: error: specified message id is not supported on this GPU
55+
4856
s_get_shader_cycles_u64 s[2:3]
4957
// GFX1250: s_get_shader_cycles_u64 s[2:3] ; encoding: [0x00,0x06,0x82,0xbe]
5058
// GFX12-ERR: :[[@LINE-2]]:{{[0-9]+}}: error: instruction not supported on this GPU

llvm/test/MC/Disassembler/AMDGPU/gfx1250_dasm_sop1.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,12 @@
1212
# GFX1250: s_add_pc_i64 s[2:3] ; encoding: [0x02,0x4b,0x80,0xbe]
1313
0x02,0x4b,0x80,0xbe
1414

15+
# GFX1250: s_sendmsg_rtn_b32 s2, sendmsg(MSG_RTN_GET_CLUSTER_BARRIER_STATE) ; encoding: [0x88,0x4c,0x82,0xbe]
16+
0x88,0x4c,0x82,0xbe
17+
18+
# GFX1250: s_sendmsg_rtn_b64 s[2:3], sendmsg(MSG_RTN_GET_CLUSTER_BARRIER_STATE) ; encoding: [0x88,0x4d,0x82,0xbe]
19+
0x88,0x4d,0x82,0xbe
20+
1521
# GFX1250: s_get_shader_cycles_u64 s[2:3] ; encoding: [0x00,0x06,0x82,0xbe]
1622
0x00,0x06,0x82,0xbe
1723

0 commit comments

Comments
 (0)