@@ -119,6 +119,70 @@ define void @s_getreg(ptr addrspace(1) inreg %out) {
119119 ret void
120120}
121121
122+ ; CHECK-LABEL: for function 'cluster_workgroup_id_x':
123+ ; CHECK: ALL VALUES UNIFORM
124+ define void @cluster_workgroup_id_x (ptr addrspace (1 ) inreg %out ) {
125+ %result = call i32 @llvm.amdgcn.cluster.workgroup.id.x ()
126+ store i32 %result , ptr addrspace (1 ) %out , align 4
127+ ret void
128+ }
129+
130+ ; CHECK-LABEL: for function 'cluster_workgroup_id_y':
131+ ; CHECK: ALL VALUES UNIFORM
132+ define void @cluster_workgroup_id_y (ptr addrspace (1 ) inreg %out ) {
133+ %result = call i32 @llvm.amdgcn.cluster.workgroup.id.y ()
134+ store i32 %result , ptr addrspace (1 ) %out , align 4
135+ ret void
136+ }
137+
138+ ; CHECK-LABEL: for function 'cluster_workgroup_id_z':
139+ ; CHECK: ALL VALUES UNIFORM
140+ define void @cluster_workgroup_id_z (ptr addrspace (1 ) inreg %out ) {
141+ %result = call i32 @llvm.amdgcn.cluster.workgroup.id.z ()
142+ store i32 %result , ptr addrspace (1 ) %out , align 4
143+ ret void
144+ }
145+
146+ ; CHECK-LABEL: for function 'cluster_workgroup_flat_id':
147+ ; CHECK: ALL VALUES UNIFORM
148+ define void @cluster_workgroup_flat_id (ptr addrspace (1 ) inreg %out ) {
149+ %result = call i32 @llvm.amdgcn.cluster.workgroup.flat.id ()
150+ store i32 %result , ptr addrspace (1 ) %out , align 4
151+ ret void
152+ }
153+
154+ ; CHECK-LABEL: for function 'cluster_workgroup_max_id_x':
155+ ; CHECK: ALL VALUES UNIFORM
156+ define void @cluster_workgroup_max_id_x (ptr addrspace (1 ) inreg %out ) {
157+ %result = call i32 @llvm.amdgcn.cluster.workgroup.max.id.x ()
158+ store i32 %result , ptr addrspace (1 ) %out , align 4
159+ ret void
160+ }
161+
162+ ; CHECK-LABEL: for function 'cluster_workgroup_max_id_y':
163+ ; CHECK: ALL VALUES UNIFORM
164+ define void @cluster_workgroup_max_id_y (ptr addrspace (1 ) inreg %out ) {
165+ %result = call i32 @llvm.amdgcn.cluster.workgroup.max.id.y ()
166+ store i32 %result , ptr addrspace (1 ) %out , align 4
167+ ret void
168+ }
169+
170+ ; CHECK-LABEL: for function 'cluster_workgroup_max_id_z':
171+ ; CHECK: ALL VALUES UNIFORM
172+ define void @cluster_workgroup_max_id_z (ptr addrspace (1 ) inreg %out ) {
173+ %result = call i32 @llvm.amdgcn.cluster.workgroup.max.id.z ()
174+ store i32 %result , ptr addrspace (1 ) %out , align 4
175+ ret void
176+ }
177+
178+ ; CHECK-LABEL: for function 'cluster_workgroup_max_flat_id':
179+ ; CHECK: ALL VALUES UNIFORM
180+ define void @cluster_workgroup_max_flat_id (ptr addrspace (1 ) inreg %out ) {
181+ %result = call i32 @llvm.amdgcn.cluster.workgroup.max.flat.id ()
182+ store i32 %result , ptr addrspace (1 ) %out , align 4
183+ ret void
184+ }
185+
122186; CHECK-LABEL: for function 's_memtime':
123187; CHECK: ALL VALUES UNIFORM
124188define void @s_memtime (ptr addrspace (1 ) inreg %out ) {
@@ -144,6 +208,14 @@ declare i64 @llvm.amdgcn.ballot.i32(i1) #1
144208declare i32 @llvm.amdgcn.workgroup.id.x () #0
145209declare i32 @llvm.amdgcn.workgroup.id.y () #0
146210declare i32 @llvm.amdgcn.workgroup.id.z () #0
211+ declare i32 @llvm.amdgcn.cluster.workgroup.id.x ()
212+ declare i32 @llvm.amdgcn.cluster.workgroup.id.y ()
213+ declare i32 @llvm.amdgcn.cluster.workgroup.id.z ()
214+ declare i32 @llvm.amdgcn.cluster.workgroup.flat.id ()
215+ declare i32 @llvm.amdgcn.cluster.workgroup.max.id.x ()
216+ declare i32 @llvm.amdgcn.cluster.workgroup.max.id.y ()
217+ declare i32 @llvm.amdgcn.cluster.workgroup.max.id.z ()
218+ declare i32 @llvm.amdgcn.cluster.workgroup.max.flat.id ()
147219
148220attributes #0 = { nounwind readnone }
149221attributes #1 = { nounwind readnone convergent }
0 commit comments