diff options
| author | Wang, Pengfei <pengfei.wang@intel.com> | 2019-12-26 22:16:46 +0800 |
|---|---|---|
| committer | Wang, Pengfei <pengfei.wang@intel.com> | 2020-01-08 12:59:31 +0800 |
| commit | 9a621de1ecadf668886a7caf743f6283d1c709e2 (patch) | |
| tree | 4bb05597dc0de2c859ab710537e3a6d1e056161f /llvm/lib/Target | |
| parent | 917f46db04b8ddf52a43183f00d3b74e78740f9f (diff) | |
| download | bcm5719-llvm-9a621de1ecadf668886a7caf743f6283d1c709e2.tar.gz bcm5719-llvm-9a621de1ecadf668886a7caf743f6283d1c709e2.zip | |
[X86] Adding fp128 support for strict fcmp
Summary: Adding fp128 support for strict fcmp
Reviewers: craig.topper, LiuChen3, andrew.w.kaylor, RKSimon, uweigand
Subscribers: hiraditya, llvm-commits, LuoYuanke
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D71897
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index 426bfb61419..c2d76b1be8a 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -20755,7 +20755,7 @@ static std::pair<SDValue, SDValue> EmitCmp(SDValue Op0, SDValue Op1, const X86Subtarget &Subtarget, SDValue Chain, bool IsSignaling) { if (isNullConstant(Op1)) - return std::make_pair(EmitTest(Op0, X86CC, dl, DAG, Subtarget), SDValue()); + return std::make_pair(EmitTest(Op0, X86CC, dl, DAG, Subtarget), Chain); EVT CmpVT = Op0.getValueType(); @@ -21842,15 +21842,15 @@ SDValue X86TargetLowering::LowerSETCC(SDValue Op, SelectionDAG &DAG) const { // Handle f128 first, since one possible outcome is a normal integer // comparison which gets handled by emitFlagsForSetcc. if (Op0.getValueType() == MVT::f128) { - // FIXME: We may need a strict version of softenSetCCOperands before - // supporting f128. - assert(!IsStrict && "Unhandled strict operation!"); - softenSetCCOperands(DAG, MVT::f128, Op0, Op1, CC, dl, Op0, Op1); + softenSetCCOperands(DAG, MVT::f128, Op0, Op1, CC, dl, Op0, Op1, Chain, + Op.getOpcode() == ISD::STRICT_FSETCCS); // If softenSetCCOperands returned a scalar, use it. if (!Op1.getNode()) { assert(Op0.getValueType() == Op.getValueType() && "Unexpected setcc expansion!"); + if (IsStrict) + return DAG.getMergeValues({Op0, Chain}, dl); return Op0; } } |

