[clang] [llvm] [HLSL] Implement SV_GroupThreadId semantic (PR #117781)

Tex Riddell via cfe-commits cfe-commits at lists.llvm.org
Fri Dec 6 16:23:31 PST 2024


================
@@ -3606,6 +3613,32 @@ bool SPIRVInstructionSelector::selectSpvThreadId(Register ResVReg,
   return Result && MIB.constrainAllUses(TII, TRI, RBI);
 }
 
+bool SPIRVInstructionSelector::selectSpvThreadId(Register ResVReg,
+                                                 const SPIRVType *ResType,
+                                                 MachineInstr &I) const {
+  // DX intrinsic: @llvm.dx.thread.id(i32)
+  // ID  Name      Description
+  // 93  ThreadId  reads the thread ID
+  //
+  // In SPIR-V, llvm.dx.thread.id maps to a `GlobalInvocationId` builtin
+  // variable
+  return loadVec3BuiltinInputID(SPIRV::BuiltIn::GlobalInvocationId, ResVReg,
+                                ResType, I);
----------------
tex3d wrote:

I'm not sure I see any advantage of wrapping these calls in these functions rather than calling `loadVec3BuiltinInputID` directly from the switch case in `selectIntrinsic`.

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


More information about the cfe-commits mailing list