summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen
diff options
context:
space:
mode:
authorAhmed Bougacha <ahmed.bougacha@gmail.com>2016-01-14 19:45:36 +0000
committerAhmed Bougacha <ahmed.bougacha@gmail.com>2016-01-14 19:45:36 +0000
commit60b201b662789fb96f63170afe0131d7d0bd08dd (patch)
treea67ff774e5f3eb0fd35f69f43ae27e5183137085 /llvm/lib/CodeGen
parent3e8d8c7d26684109c115b26da93256a37445cce8 (diff)
downloadbcm5719-llvm-60b201b662789fb96f63170afe0131d7d0bd08dd.tar.gz
bcm5719-llvm-60b201b662789fb96f63170afe0131d7d0bd08dd.zip
[CodeGen] Don't assume fp_to_fp16 produces i16 when legalizing it.
Since r230276, we support an improved legalization for f64->f16, which goes through a temporary f32, improving codegen when f32->f16 is legal but not f64->f16. This requires unsafe-fp-math. However, that legalization assumed that the second step, producing a pseudo-softened f16, had type i16. That's not true on targets with illegal i16, such as ARM. Use the initial f64->f16 result type instead. llvm-svn: 257794
Diffstat (limited to 'llvm/lib/CodeGen')
-rw-r--r--llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
index 5d572c4c2b0..10d06a747ff 100644
--- a/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
+++ b/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
@@ -3416,7 +3416,7 @@ bool SelectionDAGLegalize::ExpandNode(SDNode *Node) {
SDValue FloatVal = DAG.getNode(ISD::FP_ROUND, dl, MVT::f32, Op,
DAG.getIntPtrConstant(0, dl));
Results.push_back(
- DAG.getNode(ISD::FP_TO_FP16, dl, MVT::i16, FloatVal));
+ DAG.getNode(ISD::FP_TO_FP16, dl, Node->getValueType(0), FloatVal));
}
}
break;
OpenPOWER on IntegriCloud