summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@gmail.com>2019-12-26 21:25:22 -0800
committerCraig Topper <craig.topper@gmail.com>2019-12-26 21:45:18 -0800
commit50fb3957c1906d2e971a192e5bd69b40bc5a3919 (patch)
tree7b1f36c9bd6ff8c6c621fcae278f377d4ddc985b /llvm/lib
parentc4a97b64e3a7e7a75b796a9ef01d4b4981468071 (diff)
downloadbcm5719-llvm-50fb3957c1906d2e971a192e5bd69b40bc5a3919.tar.gz
bcm5719-llvm-50fb3957c1906d2e971a192e5bd69b40bc5a3919.zip
[X86] Custom widen strict v2f32->v2i32 by padding with zeroes.
For non-strict, generic type legalization will take care of this, but that doesn't happen currently for strict nodes.
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/X86/X86ISelLowering.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 508bbfb17f9..e1236714a33 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -28858,6 +28858,18 @@ void X86TargetLowering::ReplaceNodeResults(SDNode *N,
return;
}
+ // Custom widen strict v2f32->v2i32 by padding with zeros.
+ // FIXME: Should generic type legalizer do this?
+ if (Src.getValueType() == MVT::v2f32 && IsStrict) {
+ Src = DAG.getNode(ISD::CONCAT_VECTORS, dl, MVT::v4f32, Src,
+ DAG.getConstantFP(0.0, dl, MVT::v2f32));
+ SDValue Res = DAG.getNode(N->getOpcode(), dl, {MVT::v4i32, MVT::Other},
+ {N->getOperand(0), Src});
+ Results.push_back(Res);
+ Results.push_back(Res.getValue(1));
+ return;
+ }
+
// The FP_TO_INTHelper below only handles f32/f64/f80 scalar inputs,
// so early out here.
return;
OpenPOWER on IntegriCloud