Constant fold SIGN_EXTEND_INREG with ashr not lshr.
llvm-svn: 47992
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
index dd13435..0dba4a4 100644
--- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
@@ -2029,7 +2029,7 @@
APInt Val = N1C->getAPIntValue();
unsigned FromBits = MVT::getSizeInBits(cast<VTSDNode>(N2)->getVT());
Val <<= Val.getBitWidth()-FromBits;
- Val = Val.lshr(Val.getBitWidth()-FromBits);
+ Val = Val.ashr(Val.getBitWidth()-FromBits);
return getConstant(Val, VT);
}
break;