@@ -119,6 +119,70 @@ define void @s_getreg(ptr addrspace(1) inreg %out) {
119
119
ret void
120
120
}
121
121
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
+
122
186
; CHECK-LABEL: for function 's_memtime':
123
187
; CHECK: ALL VALUES UNIFORM
124
188
define void @s_memtime (ptr addrspace (1 ) inreg %out ) {
@@ -144,6 +208,14 @@ declare i64 @llvm.amdgcn.ballot.i32(i1) #1
144
208
declare i32 @llvm.amdgcn.workgroup.id.x () #0
145
209
declare i32 @llvm.amdgcn.workgroup.id.y () #0
146
210
declare 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 ()
147
219
148
220
attributes #0 = { nounwind readnone }
149
221
attributes #1 = { nounwind readnone convergent }
0 commit comments