From 687982c181912ce7970fe526ae0e8dd5a9b4d28a Mon Sep 17 00:00:00 2001 From: Simon Pilgrim Date: Wed, 1 Nov 2017 13:16:48 +0000 Subject: [PATCH] [SelectionDAG] computeKnownBits - use ashrInPlace on known bits of ISD::SRA input. NFCI. llvm-svn: 317087 --- llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp index 5a9e798..e5de280 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp @@ -2479,17 +2479,9 @@ void SelectionDAG::computeKnownBits(SDValue Op, KnownBits &Known, case ISD::SRA: if (const APInt *ShAmt = getValidShiftAmountConstant(Op)) { computeKnownBits(Op.getOperand(0), Known, DemandedElts, Depth + 1); - Known.Zero.lshrInPlace(*ShAmt); - Known.One.lshrInPlace(*ShAmt); - // If we know the value of the sign bit, then we know it is copied across - // the high bits by the shift amount. - APInt SignMask = APInt::getSignMask(BitWidth); - SignMask.lshrInPlace(*ShAmt); // Adjust to where it is now in the mask. - if (Known.Zero.intersects(SignMask)) { - Known.Zero.setHighBits(ShAmt->getZExtValue());// New bits are known zero. - } else if (Known.One.intersects(SignMask)) { - Known.One.setHighBits(ShAmt->getZExtValue()); // New bits are known one. - } + // Sign extend known zero/one bit (else is unknown). + Known.Zero.ashrInPlace(*ShAmt); + Known.One.ashrInPlace(*ShAmt); } break; case ISD::SIGN_EXTEND_INREG: { -- 2.7.4