Skip to content

Commit d63ab54

Browse files
authored
[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 3be44e2 commit d63ab54

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)