diff options
author | Stefan Pintilie <stefanp@ca.ibm.com> | 2018-07-09 13:36:14 +0000 |
---|---|---|
committer | Stefan Pintilie <stefanp@ca.ibm.com> | 2018-07-09 13:36:14 +0000 |
commit | 3d76326d24310638fff26267e24b5473b543913d (patch) | |
tree | 5b79d44cb07b1853723a99ab5ca3efdf4aa54e63 /llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp | |
parent | 813b21e33a69d05efb65580ff56dd3aae6cfe9a6 (diff) | |
download | bcm5719-llvm-3d76326d24310638fff26267e24b5473b543913d.tar.gz bcm5719-llvm-3d76326d24310638fff26267e24b5473b543913d.zip |
[Power9] Add __float128 support for compare operations
Added handling for the select f128.
Differential Revision: https://reviews.llvm.org/D48294
llvm-svn: 336548
Diffstat (limited to 'llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp')
-rw-r--r-- | llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp b/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp index 151a12bcddf..06152d05107 100644 --- a/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp +++ b/llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp @@ -3617,9 +3617,12 @@ SDValue PPCDAGToDAGISel::SelectCC(SDValue LHS, SDValue RHS, ISD::CondCode CC, } } else if (LHS.getValueType() == MVT::f32) { Opc = PPC::FCMPUS; - } else { - assert(LHS.getValueType() == MVT::f64 && "Unknown vt!"); + } else if (LHS.getValueType() == MVT::f64) { Opc = PPCSubTarget->hasVSX() ? PPC::XSCMPUDP : PPC::FCMPUD; + } else { + assert(LHS.getValueType() == MVT::f128 && "Unknown vt!"); + assert(PPCSubTarget->hasVSX() && "__float128 requires VSX"); + Opc = PPC::XSCMPUQP; } return SDValue(CurDAG->getMachineNode(Opc, dl, MVT::i32, LHS, RHS), 0); } @@ -4564,6 +4567,8 @@ void PPCDAGToDAGISel::Select(SDNode *N) { SelectCCOp = PPC::SELECT_CC_VSFRC; else SelectCCOp = PPC::SELECT_CC_F8; + else if (N->getValueType(0) == MVT::f128) + SelectCCOp = PPC::SELECT_CC_F16; else if (PPCSubTarget->hasQPX() && N->getValueType(0) == MVT::v4f64) SelectCCOp = PPC::SELECT_CC_QFRC; else if (PPCSubTarget->hasQPX() && N->getValueType(0) == MVT::v4f32) |