[PATCH] D151341: AMDGPU: Special case uniformity info for singlethreaded workitem IDs

Yashwant Singh via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed May 24 11:33:45 PDT 2023


yassingh added inline comments.


================
Comment at: llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp:903-911
   if (const IntrinsicInst *Intrinsic = dyn_cast<IntrinsicInst>(V)) {
-    if (Intrinsic->getIntrinsicID() == Intrinsic::read_register)
+    switch (Intrinsic->getIntrinsicID()) {
+    case Intrinsic::amdgcn_workitem_id_x:
+    case Intrinsic::amdgcn_workitem_id_y:
+    case Intrinsic::amdgcn_workitem_id_z:
+      return !ST->isSingleLaneExecution(*Intrinsic->getFunction());
+    case Intrinsic::read_register:
----------------
Will this also work for GMIR? 
eg "//%4:_(s32) = G_INTRINSIC intrinsic(@llvm.amdgcn.workitem.id.x)//"


================
Comment at: llvm/test/Analysis/UniformityAnalysis/AMDGPU/workitem-intrinsics.ll:44-50
+; CHECK-LABEL: UniformityInfo for function 'workitem_id_x_singlethreaded':
+; CHECK-NOT: DIVERGENT
+define amdgpu_kernel void @workitem_id_x_singlethreaded() #2 {
+  %id.x = call i32 @llvm.amdgcn.workitem.id.x()
+  store volatile i32 %id.x, ptr addrspace(1) undef
+  ret void
+}
----------------
Same as above, equivalent GMIR test?


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D151341/new/

https://reviews.llvm.org/D151341



More information about the llvm-commits mailing list