summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86ISelLowering.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Target/X86/X86ISelLowering.cpp')
-rw-r--r--llvm/lib/Target/X86/X86ISelLowering.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index a8859be9fb1..cf7d7a9b0d1 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -20083,8 +20083,8 @@ static SDValue LowerEXTEND_VECTOR_INREG(SDValue Op,
return SignExt;
if (VT == MVT::v2i64 && CurrVT == MVT::v4i32) {
- SDValue Sign = DAG.getNode(X86ISD::VSRAI, dl, CurrVT, Curr,
- DAG.getConstant(31, dl, MVT::i8));
+ SDValue Zero = DAG.getConstant(0, dl, CurrVT);
+ SDValue Sign = DAG.getSetCC(dl, CurrVT, Zero, Curr, ISD::SETGT);
SDValue Ext = DAG.getVectorShuffle(CurrVT, dl, SignExt, Sign, {0, 4, 1, 5});
return DAG.getBitcast(VT, Ext);
}
@@ -26358,8 +26358,8 @@ void X86TargetLowering::ReplaceNodeResults(SDNode *N,
In = DAG.getNode(ISD::SIGN_EXTEND, dl, MVT::v4i32, In);
// Fill a vector with sign bits for each element.
- SDValue SignBits = DAG.getNode(ISD::SRA, dl, MVT::v4i32, In,
- DAG.getConstant(31, dl, MVT::v4i32));
+ SDValue Zero = DAG.getConstant(0, dl, MVT::v4i32);
+ SDValue SignBits = DAG.getSetCC(dl, MVT::v4i32, Zero, In, ISD::SETGT);
// Create an unpackl and unpackh to interleave the sign bits then bitcast
// to v2i64.
OpenPOWER on IntegriCloud