[llvm] [AMDGPU] Mark workitem IDs uniform in more cases (PR #152581)
Shilei Tian via llvm-commits
llvm-commits at lists.llvm.org
Thu Aug 28 11:03:27 PDT 2025
================
@@ -113,11 +113,40 @@ define amdgpu_kernel void @workitem_id_x_not_singlethreaded_dimz() !reqd_work_gr
ret void
}
+; CHECK-LABEL: UniformityInfo for function 'workitem_id_z_uniform_len_1'
+; CHECK-NOT: DIVERGENT
+define amdgpu_kernel void @workitem_id_z_uniform_len_1(ptr %o) !reqd_work_group_size !4 {
+ %id.z = call i32 @llvm.amdgcn.workitem.id.z()
+ store i32 %id.z, ptr %o
+ ret void
+}
+
+; CHECK-LABEL: UniformityInfo for function 'workitem_id_x_div_wavefront_size'
+; CHECK: DIVERGENT: %id.x = call i32 @llvm.amdgcn.workitem.id.x()
+; CHECK-NOT: DIVERGENT
+define amdgpu_kernel void @workitem_id_x_div_wavefront_size(ptr %o) #3 !reqd_work_group_size !5 {
+ %id.x = call i32 @llvm.amdgcn.workitem.id.x()
+ %id.sg = lshr i32 %id.x, 6
+ store i32 %id.sg, ptr %o
+ ret void
+}
+
+; CHECK-LABEL: UniformityInfo for function 'workitem_id_y_uniform_in_subgroup'
+; CHECK-NOT: DIVERGENT
+define amdgpu_kernel void @workitem_id_y_uniform_in_subgroup(ptr %o) #3 !reqd_work_group_size !5 {
+ %id.y = call i32 @llvm.amdgcn.workitem.id.y()
----------------
shiltian wrote:
Oh, the uniformity is only for threads executing in lockstep. Now I get it.
https://github.com/llvm/llvm-project/pull/152581
More information about the llvm-commits
mailing list