diff options
| author | Craig Topper <craig.topper@intel.com> | 2019-11-21 15:53:01 -0800 |
|---|---|---|
| committer | Craig Topper <craig.topper@intel.com> | 2019-11-21 16:19:25 -0800 |
| commit | 7696b99258d1461cd50285d34dcde0b870def1ae (patch) | |
| tree | dd2e6beb0606f1030ff19ca8cef36a1cec4f870d /llvm/lib/CodeGen | |
| parent | 95f44cf44a68f2e7a3fced2b8d920340013f0349 (diff) | |
| download | bcm5719-llvm-7696b99258d1461cd50285d34dcde0b870def1ae.tar.gz bcm5719-llvm-7696b99258d1461cd50285d34dcde0b870def1ae.zip | |
[LegalizeDAG][X86] Add support for turning STRICT_FADD/SUB/MUL/DIV into libcalls. Use it for fp128 on x86-64.
This requires a minor hack for f32/f64 strict fadd/fsub to avoid
turning those into libcalls.
Diffstat (limited to 'llvm/lib/CodeGen')
| -rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp index ec099823c47..6602ffed020 100644 --- a/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp @@ -4019,6 +4019,7 @@ void SelectionDAGLegalize::ConvertNodeToLibcall(SDNode *Node) { RTLIB::LLRINT_PPCF128, Results); break; case ISD::FDIV: + case ISD::STRICT_FDIV: ExpandFPLibCall(Node, RTLIB::DIV_F32, RTLIB::DIV_F64, RTLIB::DIV_F80, RTLIB::DIV_F128, RTLIB::DIV_PPCF128, Results); @@ -4036,11 +4037,13 @@ void SelectionDAGLegalize::ConvertNodeToLibcall(SDNode *Node) { RTLIB::FMA_PPCF128, Results); break; case ISD::FADD: + case ISD::STRICT_FADD: ExpandFPLibCall(Node, RTLIB::ADD_F32, RTLIB::ADD_F64, RTLIB::ADD_F80, RTLIB::ADD_F128, RTLIB::ADD_PPCF128, Results); break; case ISD::FMUL: + case ISD::STRICT_FMUL: ExpandFPLibCall(Node, RTLIB::MUL_F32, RTLIB::MUL_F64, RTLIB::MUL_F80, RTLIB::MUL_F128, RTLIB::MUL_PPCF128, Results); @@ -4058,6 +4061,7 @@ void SelectionDAGLegalize::ConvertNodeToLibcall(SDNode *Node) { break; } case ISD::FSUB: + case ISD::STRICT_FSUB: ExpandFPLibCall(Node, RTLIB::SUB_F32, RTLIB::SUB_F64, RTLIB::SUB_F80, RTLIB::SUB_F128, RTLIB::SUB_PPCF128, Results); |

