Skip to content

Commit 9d31b01

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 36e4174 commit 9d31b01

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
@@ -5008,11 +5008,9 @@ combineUnpackingMovIntoLoad(SDNode *N, TargetLowering::DAGCombinerInfo &DCI) {
50085008
return !U.getUser()->use_empty();
50095009
}
50105010

5011-
// Handle CopyToReg nodes that will become dead after our replacement
5012-
if (U.getUser()->getOpcode() == ISD::CopyToReg) {
5013-
DeadCopyToRegs.push_back(U.getUser());
5011+
// Peek through CopyToReg nodes
5012+
if (U.getUser()->getOpcode() == ISD::CopyToReg)
50145013
return true;
5015-
}
50165014

50175015
// Otherwise, this use prevents us from splitting a value.
50185016
return false;
@@ -5080,10 +5078,6 @@ combineUnpackingMovIntoLoad(SDNode *N, TargetLowering::DAGCombinerInfo &DCI) {
50805078
for (unsigned I : seq(NewLoad->getNumValues() - NewNumOutputs))
50815079
Results.push_back(NewLoad.getValue(NewNumOutputs + I));
50825080

5083-
// Remove dead CopyToReg nodes by folding them into the chain they reference
5084-
for (SDNode *CTR : DeadCopyToRegs)
5085-
DCI.CombineTo(CTR, CTR->getOperand(0));
5086-
50875081
return DCI.DAG.getMergeValues(Results, DL);
50885082
}
50895083

@@ -6420,4 +6414,4 @@ void NVPTXTargetLowering::computeKnownBitsForTargetNode(
64206414
default:
64216415
break;
64226416
}
6423-
}
6417+
}

0 commit comments

Comments
 (0)