@@ -4023,14 +4023,16 @@ bool SPIRVInstructionSelector::loadBuiltinInputID(
40234023 SPIRV::BuiltIn::BuiltIn BuiltInValue, Register ResVReg,
40244024 const SPIRVType *ResType, MachineInstr &I) const {
40254025 MachineIRBuilder MIRBuilder (I);
4026- const SPIRVType *U32Type = GR.getOrCreateSPIRVIntegerType (32 , MIRBuilder);
40274026 const SPIRVType *PtrType = GR.getOrCreateSPIRVPointerType (
4028- U32Type , MIRBuilder, SPIRV::StorageClass::Input);
4027+ ResType , MIRBuilder, SPIRV::StorageClass::Input);
40294028
40304029 // Create new register for the input ID builtin variable.
40314030 Register NewRegister =
4032- MIRBuilder.getMRI ()->createVirtualRegister (&SPIRV::iIDRegClass);
4033- MIRBuilder.getMRI ()->setType (NewRegister, LLT::pointer (0 , 64 ));
4031+ MIRBuilder.getMRI ()->createVirtualRegister (GR.getRegClass (PtrType));
4032+ MIRBuilder.getMRI ()->setType (
4033+ NewRegister,
4034+ LLT::pointer (storageClassToAddressSpace (SPIRV::StorageClass::Input),
4035+ GR.getPointerSize ()));
40344036 GR.assignSPIRVTypeToVReg (PtrType, NewRegister, MIRBuilder.getMF ());
40354037
40364038 // Build global variable with the necessary decorations for the input ID
@@ -4043,7 +4045,7 @@ bool SPIRVInstructionSelector::loadBuiltinInputID(
40434045 // Load uint value from the global variable.
40444046 auto MIB = BuildMI (*I.getParent (), I, I.getDebugLoc (), TII.get (SPIRV::OpLoad))
40454047 .addDef (ResVReg)
4046- .addUse (GR.getSPIRVTypeID (U32Type ))
4048+ .addUse (GR.getSPIRVTypeID (ResType ))
40474049 .addUse (Variable);
40484050
40494051 return MIB.constrainAllUses (TII, TRI, RBI);
0 commit comments