Skip to content

Commit b78b37b

Browse files
RKSimonzahiraam
authored andcommitted
[DAG] getNode() - begin generalizing the (zext (trunc (assertzext x))) -> (assertzext x) fold.
We'll need to generalize this fold to check for any zero upperbits to address some of the D155472 regressions, but this exposes a number of issues. For now, just use the general MaskedValueIsZero test instead of the assertzext.
1 parent bba7cb0 commit b78b37b

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5695,8 +5695,9 @@ SDValue SelectionDAG::getNode(unsigned Opcode, const SDLoc &DL, EVT VT,
56955695
SDValue OpOp = N1.getOperand(0);
56965696
if (OpOp.getValueType() == VT) {
56975697
if (OpOp.getOpcode() == ISD::AssertZext && N1->hasOneUse()) {
5698-
EVT ExtVT = cast<VTSDNode>(OpOp.getOperand(1))->getVT();
5699-
if (N1.getScalarValueSizeInBits() >= ExtVT.getSizeInBits()) {
5698+
APInt HiBits = APInt::getBitsSetFrom(VT.getScalarSizeInBits(),
5699+
N1.getScalarValueSizeInBits());
5700+
if (MaskedValueIsZero(OpOp, HiBits)) {
57005701
transferDbgValues(N1, OpOp);
57015702
return OpOp;
57025703
}

0 commit comments

Comments
 (0)