Index: lib/Target/AMDGPU/AMDGPUISelLowering.h =================================================================== --- lib/Target/AMDGPU/AMDGPUISelLowering.h +++ lib/Target/AMDGPU/AMDGPUISelLowering.h @@ -294,7 +294,8 @@ /// Helper function that returns the byte offset of the given /// type of implicit parameter. uint32_t getImplicitParameterOffset(const MachineFunction &MF, - const ImplicitParameter Param) const; + const ImplicitParameter Param, + unsigned ExplicitArgOffset) const; AMDGPUAS getAMDGPUAS() const { return AMDGPUASI; Index: lib/Target/AMDGPU/AMDGPUISelLowering.cpp =================================================================== --- lib/Target/AMDGPU/AMDGPUISelLowering.cpp +++ lib/Target/AMDGPU/AMDGPUISelLowering.cpp @@ -3937,10 +3937,11 @@ } uint32_t AMDGPUTargetLowering::getImplicitParameterOffset( - const MachineFunction &MF, const ImplicitParameter Param) const { + const MachineFunction &MF, const ImplicitParameter Param, + unsigned ExplicitArgOffset) const { const AMDGPUMachineFunction *MFI = MF.getInfo(); - const AMDGPUSubtarget &ST = MF.getSubtarget(); - unsigned ExplicitArgOffset = ST.getExplicitKernelArgOffset(MF.getFunction()); + const AMDGPUCommonSubtarget &ST = + AMDGPUCommonSubtarget::get(getTargetMachine(), MF.getFunction()); unsigned Alignment = ST.getAlignmentForImplicitArgPtr(); uint64_t ArgOffset = alignTo(MFI->getExplicitKernArgSize(), Alignment) + ExplicitArgOffset; Index: lib/Target/AMDGPU/R600ISelLowering.cpp =================================================================== --- lib/Target/AMDGPU/R600ISelLowering.cpp +++ lib/Target/AMDGPU/R600ISelLowering.cpp @@ -602,7 +602,8 @@ case Intrinsic::r600_implicitarg_ptr: { MVT PtrVT = getPointerTy(DAG.getDataLayout(), AMDGPUASI.PARAM_I_ADDRESS); - uint32_t ByteOffset = getImplicitParameterOffset(MF, FIRST_IMPLICIT); + uint32_t ByteOffset = getImplicitParameterOffset(MF, FIRST_IMPLICIT, + Subtarget->getExplicitKernelArgOffset(MF)); return DAG.getConstant(ByteOffset, DL, PtrVT); } case Intrinsic::r600_read_ngroups_x: Index: lib/Target/AMDGPU/SIISelLowering.cpp =================================================================== --- lib/Target/AMDGPU/SIISelLowering.cpp +++ lib/Target/AMDGPU/SIISelLowering.cpp @@ -1127,8 +1127,12 @@ SDValue SITargetLowering::getImplicitArgPtr(SelectionDAG &DAG, const SDLoc &SL) const { + MachineFunction &MF = DAG.getMachineFunction(); + const Function &F = MF.getFunction(); + const SISubtarget &ST = MF.getSubtarget(); uint64_t Offset = getImplicitParameterOffset(DAG.getMachineFunction(), - FIRST_IMPLICIT); + FIRST_IMPLICIT, + ST.getExplicitKernelArgOffset(F)); return lowerKernArgParameterPtr(DAG, SL, DAG.getEntryNode(), Offset); }