From: Simon Pilgrim Date: Sat, 25 Mar 2017 21:22:12 +0000 (+0000) Subject: [X86] Pull out repeated ScalarValueSizeInBits code. NFCI. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d7e1b091d09ff62a3607638f066ab8fc38f56c22;p=llvm [X86] Pull out repeated ScalarValueSizeInBits code. NFCI. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@298783 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/X86/X86ISelLowering.cpp b/lib/Target/X86/X86ISelLowering.cpp index 02e39dadea7..fb432a000f0 100644 --- a/lib/Target/X86/X86ISelLowering.cpp +++ b/lib/Target/X86/X86ISelLowering.cpp @@ -26646,25 +26646,23 @@ void X86TargetLowering::computeKnownBitsForTargetNode(const SDValue Op, unsigned X86TargetLowering::ComputeNumSignBitsForTargetNode( SDValue Op, const SelectionDAG &DAG, unsigned Depth) const { + unsigned VTBits = Op.getScalarValueSizeInBits(); unsigned Opcode = Op.getOpcode(); switch (Opcode) { case X86ISD::SETCC_CARRY: // SETCC_CARRY sets the dest to ~0 for true or 0 for false. - return Op.getScalarValueSizeInBits(); + return VTBits; case X86ISD::VSEXT: { SDValue Src = Op.getOperand(0); - EVT VT = Op.getValueType(); - EVT SrcVT = Src.getValueType(); unsigned Tmp = DAG.ComputeNumSignBits(Src, Depth + 1); - Tmp += VT.getScalarSizeInBits() - SrcVT.getScalarSizeInBits(); + Tmp += VTBits - Src.getScalarValueSizeInBits(); return Tmp; } case X86ISD::VSRAI: { SDValue Src = Op.getOperand(0); unsigned Tmp = DAG.ComputeNumSignBits(Src, Depth + 1); - unsigned VTBits = Op.getValueType().getScalarSizeInBits(); APInt ShiftVal = cast(Op.getOperand(1))->getAPIntValue(); ShiftVal += Tmp; return ShiftVal.uge(VTBits) ? VTBits : ShiftVal.getZExtValue(); @@ -26676,7 +26674,7 @@ unsigned X86TargetLowering::ComputeNumSignBitsForTargetNode( case X86ISD::VPCOM: case X86ISD::VPCOMU: // Vector compares return zero/all-bits result values. - return Op.getScalarValueSizeInBits(); + return VTBits; } // Fallback case.