Skip to content

Commit 2067a4c

Browse files
Prince781jsji
authored andcommitted
[NVPTX] don't erase CopyToRegs when folding movs into loads (#149393)
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 e87c4f0 commit 2067a4c

File tree

7 files changed

+1095
-691
lines changed

7 files changed

+1095
-691
lines changed

llvm/lib/Target/NVPTX/NVPTXISelLowering.cpp

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5008,12 +5008,6 @@ 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());
5014-
return true;
5015-
}
5016-
50175011
// Otherwise, this use prevents us from splitting a value.
50185012
return false;
50195013
}))
@@ -5080,10 +5074,6 @@ combineUnpackingMovIntoLoad(SDNode *N, TargetLowering::DAGCombinerInfo &DCI) {
50805074
for (unsigned I : seq(NewLoad->getNumValues() - NewNumOutputs))
50815075
Results.push_back(NewLoad.getValue(NewNumOutputs + I));
50825076

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-
50875077
return DCI.DAG.getMergeValues(Results, DL);
50885078
}
50895079

@@ -6418,4 +6408,4 @@ void NVPTXTargetLowering::computeKnownBitsForTargetNode(
64186408
default:
64196409
break;
64206410
}
6421-
}
6411+
}

llvm/test/CodeGen/NVPTX/f16x2-instructions.ll

Lines changed: 346 additions & 245 deletions
Large diffs are not rendered by default.

llvm/test/CodeGen/NVPTX/f32x2-instructions.ll

Lines changed: 397 additions & 246 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)