[llvm] [SPIR-V] Add support for HLSL SV_GroupIndex (PR #130670)
Steven Perron via llvm-commits
llvm-commits at lists.llvm.org
Wed Mar 19 07:36:04 PDT 2025
================
@@ -4005,6 +4017,40 @@ bool SPIRVInstructionSelector::loadVec3BuiltinInputID(
return Result && MIB.constrainAllUses(TII, TRI, RBI);
}
+// Generate the instructions to load 32-bit integer builtin input IDs/Indices.
+// Like LocalInvocationIndex
+bool SPIRVInstructionSelector::loadBuiltinInputID(
+ SPIRV::BuiltIn::BuiltIn BuiltInValue, Register ResVReg,
+ const SPIRVType *ResType, MachineInstr &I) const {
+ MachineIRBuilder MIRBuilder(I);
+ const SPIRVType *PtrType = GR.getOrCreateSPIRVPointerType(
+ ResType, MIRBuilder, SPIRV::StorageClass::Input);
+
+ // Create new register for the input ID builtin variable.
+ Register NewRegister =
+ MIRBuilder.getMRI()->createVirtualRegister(GR.getRegClass(PtrType));
+ MIRBuilder.getMRI()->setType(
+ NewRegister,
+ LLT::pointer(storageClassToAddressSpace(SPIRV::StorageClass::Input),
+ GR.getPointerSize()));
+ GR.assignSPIRVTypeToVReg(PtrType, NewRegister, MIRBuilder.getMF());
+
+ // Build global variable with the necessary decorations for the input ID
+ // builtin variable.
+ Register Variable = GR.buildGlobalVariable(
+ NewRegister, PtrType, getLinkStringForBuiltIn(BuiltInValue), nullptr,
+ SPIRV::StorageClass::Input, nullptr, true, true,
+ SPIRV::LinkageType::Import, MIRBuilder, false);
----------------
s-perron wrote:
Changing this to false will build a variable without any linkage attribute.
```suggestion
Register Variable = GR.buildGlobalVariable(
NewRegister, PtrType, getLinkStringForBuiltIn(BuiltInValue), nullptr,
SPIRV::StorageClass::Input, nullptr, true, false,
SPIRV::LinkageType::Import, MIRBuilder, false);
```
https://github.com/llvm/llvm-project/pull/130670
More information about the llvm-commits
mailing list