Skip to content

Commit a534d8d

Browse files
committed
[NVPTX] don't erase CopyToRegs when folding movs into loads
We may still need to keep CopyToReg even after folding uses into vector loads, since the original register may be used in other blocks. Partially reverts 1fdbe69
1 parent 48cd22c commit a534d8d

File tree

6 files changed

+385
-88
lines changed

6 files changed

+385
-88
lines changed

llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5060,11 +5060,9 @@ combineUnpackingMovIntoLoad(SDNode *N, TargetLowering::DAGCombinerInfo &DCI) {
50605060
return !U.getUser()->use_empty();
50615061
}
50625062

5063-
// Handle CopyToReg nodes that will become dead after our replacement
5064-
if (U.getUser()->getOpcode() == ISD::CopyToReg) {
5065-
DeadCopyToRegs.push_back(U.getUser());
5063+
// Peek through CopyToReg nodes
5064+
if (U.getUser()->getOpcode() == ISD::CopyToReg)
50665065
return true;
5067-
}
50685066

50695067
// Otherwise, this use prevents us from splitting a value.
50705068
return false;
@@ -5132,10 +5130,6 @@ combineUnpackingMovIntoLoad(SDNode *N, TargetLowering::DAGCombinerInfo &DCI) {
51325130
for (unsigned I : seq(NewLoad->getNumValues() - NewNumOutputs))
51335131
Results.push_back(NewLoad.getValue(NewNumOutputs + I));
51345132

5135-
// Remove dead CopyToReg nodes by folding them into the chain they reference
5136-
for (SDNode *CTR : DeadCopyToRegs)
5137-
DCI.CombineTo(CTR, CTR->getOperand(0));
5138-
51395133
return DCI.DAG.getMergeValues(Results, DL);
51405134
}
51415135

@@ -6544,4 +6538,4 @@ void NVPTXTargetLowering::computeKnownBitsForTargetNode(
65446538
default:
65456539
break;
65466540
}
6547-
}
6541+
}

0 commit comments

Comments
 (0)