Skip to content

Commit eea0c50

Browse files
Introduce readfirstlane if dst reg is sgpr
1 parent 56b0571 commit eea0c50

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

llvm/lib/Target/AMDGPU/SIISelLowering.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3225,6 +3225,7 @@ SITargetLowering::LowerReturn(SDValue Chain, CallingConv::ID CallConv,
32253225
const SDLoc &DL, SelectionDAG &DAG) const {
32263226
MachineFunction &MF = DAG.getMachineFunction();
32273227
SIMachineFunctionInfo *Info = MF.getInfo<SIMachineFunctionInfo>();
3228+
const SIRegisterInfo *TRI = getSubtarget()->getRegisterInfo();
32283229

32293230
if (AMDGPU::isKernel(CallConv)) {
32303231
return AMDGPUTargetLowering::LowerReturn(Chain, CallConv, isVarArg, Outs,
@@ -3280,8 +3281,9 @@ SITargetLowering::LowerReturn(SDValue Chain, CallingConv::ID CallConv,
32803281
default:
32813282
llvm_unreachable("Unknown loc info!");
32823283
}
3283-
Arg = DAG.getNode(ISD::INTRINSIC_WO_CHAIN, DL, Arg.getValueType(),
3284-
ReadFirstLane, Arg);
3284+
if (TRI->isSGPRPhysReg(VA.getLocReg()))
3285+
Arg = DAG.getNode(ISD::INTRINSIC_WO_CHAIN, DL, Arg.getValueType(),
3286+
ReadFirstLane, Arg);
32853287
Chain = DAG.getCopyToReg(Chain, DL, VA.getLocReg(), Arg, Glue);
32863288
Glue = Chain.getValue(1);
32873289
RetOps.push_back(DAG.getRegister(VA.getLocReg(), VA.getLocVT()));

0 commit comments

Comments
 (0)