<div dir="ltr">Hi Konstantin,<br><br>This revision added warnings to the builder:<br><a href="http://lab.llvm.org:8011/builders/clang-3stage-ubuntu/builds/330">http://lab.llvm.org:8011/builders/clang-3stage-ubuntu/builds/330</a><br><br>Please have a look at this?<br><br>Thanks<br><br>Galina<br><br><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Nov 16, 2016 at 8:28 PM, Konstantin Zhuravlyov via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: kzhuravl<br>
Date: Wed Nov 16 22:28:37 2016<br>
New Revision: 287203<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=287203&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project?rev=287203&view=rev</a><br>
Log:<br>
[AMDGPU] Custom lower f16 = fp_round f64<br>
<br>
Modified:<br>
    llvm/trunk/lib/Target/AMDGPU/<wbr>SIISelLowering.cpp<br>
    llvm/trunk/lib/Target/AMDGPU/<wbr>SIISelLowering.h<br>
<br>
Modified: llvm/trunk/lib/Target/AMDGPU/<wbr>SIISelLowering.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/SIISelLowering.cpp?rev=287203&r1=287202&r2=287203&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/Target/<wbr>AMDGPU/SIISelLowering.cpp?rev=<wbr>287203&r1=287202&r2=287203&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/lib/Target/AMDGPU/<wbr>SIISelLowering.cpp (original)<br>
+++ llvm/trunk/lib/Target/AMDGPU/<wbr>SIISelLowering.cpp Wed Nov 16 22:28:37 2016<br>
@@ -285,6 +285,7 @@ SITargetLowering::<wbr>SITargetLowering(const<br>
     AddPromotedToType(ISD::STORE, MVT::f16, MVT::i16);<br>
<br>
     // F16 - VOP1 Actions.<br>
+    setOperationAction(ISD::FP_<wbr>ROUND, MVT::f16, Custom);<br>
     setOperationAction(ISD::FCOS, MVT::f16, Promote);<br>
     setOperationAction(ISD::FSIN, MVT::f16, Promote);<br>
     setOperationAction(ISD::FP_TO_<wbr>SINT, MVT::f16, Promote);<br>
@@ -1832,6 +1833,8 @@ SDValue SITargetLowering::<wbr>LowerOperation<br>
<br>
   case ISD::ConstantFP:<br>
     return lowerConstantFP(Op, DAG);<br>
+  case ISD::FP_ROUND:<br>
+    return lowerFP_ROUND(Op, DAG);<br>
   }<br>
   return SDValue();<br>
 }<br>
@@ -2043,6 +2046,23 @@ SDValue SITargetLowering::<wbr>lowerConstantF<br>
   return SDValue();<br>
 }<br>
<br>
+SDValue SITargetLowering::lowerFP_<wbr>ROUND(SDValue Op, SelectionDAG &DAG) const {<br>
+  EVT DstVT = Op.getValueType();<br>
+  EVT SrcVT = Op.getOperand(0).getValueType(<wbr>);<br>
+<br>
+  assert(DstVT == MVT::f16 &&<br>
+         "Do not know how to custom lower FP_ROUND for non-f16 type");<br>
+<br>
+  if (SrcVT != MVT::f64)<br>
+    return Op;<br>
+<br>
+  SDLoc DL(Op);<br>
+  SDValue Src = Op.getOperand(0);<br>
+  SDValue FpToFp16 = DAG.getNode(ISD::FP_TO_FP16, DL, MVT::i32, Src);<br>
+  SDValue Trunc = DAG.getNode(ISD::TRUNCATE, DL, MVT::i16, FpToFp16);<br>
+  return DAG.getNode(ISD::BITCAST, DL, MVT::f16, Trunc);;<br>
+}<br>
+<br>
 SDValue SITargetLowering::<wbr>getSegmentAperture(unsigned AS,<br>
                                              SelectionDAG &DAG) const {<br>
   SDLoc SL;<br>
<br>
Modified: llvm/trunk/lib/Target/AMDGPU/<wbr>SIISelLowering.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/SIISelLowering.h?rev=287203&r1=287202&r2=287203&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/llvm/trunk/lib/Target/<wbr>AMDGPU/SIISelLowering.h?rev=<wbr>287203&r1=287202&r2=287203&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- llvm/trunk/lib/Target/AMDGPU/<wbr>SIISelLowering.h (original)<br>
+++ llvm/trunk/lib/Target/AMDGPU/<wbr>SIISelLowering.h Wed Nov 16 22:28:37 2016<br>
@@ -56,6 +56,9 @@ class SITargetLowering final : public AM<br>
   /// \brief Custom lowering for ISD::ConstantFP.<br>
   SDValue lowerConstantFP(SDValue Op, SelectionDAG &DAG) const;<br>
<br>
+  /// \brief Custom lowering for ISD::FP_ROUND for MVT::f16.<br>
+  SDValue lowerFP_ROUND(SDValue Op, SelectionDAG &DAG) const;<br>
+<br>
   SDValue getSegmentAperture(unsigned AS, SelectionDAG &DAG) const;<br>
   SDValue lowerADDRSPACECAST(SDValue Op, SelectionDAG &DAG) const;<br>
   SDValue lowerTRAP(SDValue Op, SelectionDAG &DAG) const;<br>
<br>
<br>
______________________________<wbr>_________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div></div>