From 0d92c4debc405d5abfe2c4832a0633f01330d8ac Mon Sep 17 00:00:00 2001 From: Simon Pilgrim Date: Sat, 12 Jan 2019 12:00:43 +0000 Subject: [PATCH] Use getShiftAmountTy for shift amounts. llvm-svn: 351005 --- llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp b/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp index 1d8615c..0175bcd 100644 --- a/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp @@ -4719,6 +4719,7 @@ bool TargetLowering::expandABS(SDNode *N, SDValue &Result, SelectionDAG &DAG) const { SDLoc dl(N); EVT VT = N->getValueType(0); + EVT ShVT = getShiftAmountTy(VT, DAG.getDataLayout()); SDValue Op = N->getOperand(0); // Only expand vector types if we have the appropriate vector operations. @@ -4729,7 +4730,7 @@ bool TargetLowering::expandABS(SDNode *N, SDValue &Result, SDValue Shift = DAG.getNode(ISD::SRA, dl, VT, Op, - DAG.getConstant(VT.getScalarSizeInBits() - 1, dl, VT)); + DAG.getConstant(VT.getScalarSizeInBits() - 1, dl, ShVT)); SDValue Add = DAG.getNode(ISD::ADD, dl, VT, Op, Shift); Result = DAG.getNode(ISD::XOR, dl, VT, Add, Shift); return true; -- 2.7.4