[llvm] [SPIRV] Upd SPV_KHR_shader_clock extension (PR #160147)

Dmitry Sidorov via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 25 08:59:23 PDT 2025


================
@@ -1443,18 +1443,25 @@ static bool generateKernelClockInst(const SPIRV::IncomingCall *Call,
 
   Register ResultReg = Call->ReturnRegister;
 
-  // Deduce the `Scope` operand from the builtin function name.
-  SPIRV::Scope::Scope ScopeArg =
-      StringSwitch<SPIRV::Scope::Scope>(Builtin->Name)
-          .EndsWith("device", SPIRV::Scope::Scope::Device)
-          .EndsWith("work_group", SPIRV::Scope::Scope::Workgroup)
-          .EndsWith("sub_group", SPIRV::Scope::Scope::Subgroup);
-  Register ScopeReg = buildConstantIntReg32(ScopeArg, MIRBuilder, GR);
-
-  MIRBuilder.buildInstr(SPIRV::OpReadClockKHR)
-      .addDef(ResultReg)
-      .addUse(GR->getSPIRVTypeID(Call->ReturnType))
-      .addUse(ScopeReg);
+  if (Builtin->Name == "__spirv_ReadClockKHR") {
+    MIRBuilder.buildInstr(SPIRV::OpReadClockKHR)
+        .addDef(ResultReg)
+        .addUse(GR->getSPIRVTypeID(Call->ReturnType))
+        .addUse(Call->Arguments[0]);
+  } else {
----------------
MrSidims wrote:

I believe it's not needed. I'm looking at https://github.com/llvm/llvm-project/pull/96790 and it seems like changing
`defm : DemangledNativeBuiltin<"__spirv_ReadClockKHR", OpenCL_std, KernelClock, 1, 1, OpReadClockKHR>;`
to
`defm : DemangledGroupBuiltinWrapper<"__spirv_ReadClockKHR", OpenCL_std, 1, 1, OpReadClockKHR>;`

should be enough

https://github.com/llvm/llvm-project/pull/160147


More information about the llvm-commits mailing list