Skip to content

Commit 9e45f4e

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 90f733c commit 9e45f4e

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
@@ -5060,12 +5060,6 @@ 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());
5066-
return true;
5067-
}
5068-
50695063
// Otherwise, this use prevents us from splitting a value.
50705064
return false;
50715065
}))
@@ -5132,10 +5126,6 @@ combineUnpackingMovIntoLoad(SDNode *N, TargetLowering::DAGCombinerInfo &DCI) {
51325126
for (unsigned I : seq(NewLoad->getNumValues() - NewNumOutputs))
51335127
Results.push_back(NewLoad.getValue(NewNumOutputs + I));
51345128

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-
51395129
return DCI.DAG.getMergeValues(Results, DL);
51405130
}
51415131

@@ -6544,4 +6534,4 @@ void NVPTXTargetLowering::computeKnownBitsForTargetNode(
65446534
default:
65456535
break;
65466536
}
6547-
}
6537+
}

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)