[llvm] r287203 - [AMDGPU] Custom lower f16 = fp_round f64
Galina Kistanova via llvm-commits
llvm-commits at lists.llvm.org
Thu Nov 17 12:27:28 PST 2016
Hi Konstantin,
This revision added warnings to the builder:
http://lab.llvm.org:8011/builders/clang-3stage-ubuntu/builds/330
Please have a look at this?
Thanks
Galina
On Wed, Nov 16, 2016 at 8:28 PM, Konstantin Zhuravlyov via llvm-commits <
llvm-commits at lists.llvm.org> wrote:
> Author: kzhuravl
> Date: Wed Nov 16 22:28:37 2016
> New Revision: 287203
>
> URL: http://llvm.org/viewvc/llvm-project?rev=287203&view=rev
> Log:
> [AMDGPU] Custom lower f16 = fp_round f64
>
> Modified:
> llvm/trunk/lib/Target/AMDGPU/SIISelLowering.cpp
> llvm/trunk/lib/Target/AMDGPU/SIISelLowering.h
>
> Modified: llvm/trunk/lib/Target/AMDGPU/SIISelLowering.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/
> AMDGPU/SIISelLowering.cpp?rev=287203&r1=287202&r2=287203&view=diff
> ============================================================
> ==================
> --- llvm/trunk/lib/Target/AMDGPU/SIISelLowering.cpp (original)
> +++ llvm/trunk/lib/Target/AMDGPU/SIISelLowering.cpp Wed Nov 16 22:28:37
> 2016
> @@ -285,6 +285,7 @@ SITargetLowering::SITargetLowering(const
> AddPromotedToType(ISD::STORE, MVT::f16, MVT::i16);
>
> // F16 - VOP1 Actions.
> + setOperationAction(ISD::FP_ROUND, MVT::f16, Custom);
> setOperationAction(ISD::FCOS, MVT::f16, Promote);
> setOperationAction(ISD::FSIN, MVT::f16, Promote);
> setOperationAction(ISD::FP_TO_SINT, MVT::f16, Promote);
> @@ -1832,6 +1833,8 @@ SDValue SITargetLowering::LowerOperation
>
> case ISD::ConstantFP:
> return lowerConstantFP(Op, DAG);
> + case ISD::FP_ROUND:
> + return lowerFP_ROUND(Op, DAG);
> }
> return SDValue();
> }
> @@ -2043,6 +2046,23 @@ SDValue SITargetLowering::lowerConstantF
> return SDValue();
> }
>
> +SDValue SITargetLowering::lowerFP_ROUND(SDValue Op, SelectionDAG &DAG)
> const {
> + EVT DstVT = Op.getValueType();
> + EVT SrcVT = Op.getOperand(0).getValueType();
> +
> + assert(DstVT == MVT::f16 &&
> + "Do not know how to custom lower FP_ROUND for non-f16 type");
> +
> + if (SrcVT != MVT::f64)
> + return Op;
> +
> + SDLoc DL(Op);
> + SDValue Src = Op.getOperand(0);
> + SDValue FpToFp16 = DAG.getNode(ISD::FP_TO_FP16, DL, MVT::i32, Src);
> + SDValue Trunc = DAG.getNode(ISD::TRUNCATE, DL, MVT::i16, FpToFp16);
> + return DAG.getNode(ISD::BITCAST, DL, MVT::f16, Trunc);;
> +}
> +
> SDValue SITargetLowering::getSegmentAperture(unsigned AS,
> SelectionDAG &DAG) const {
> SDLoc SL;
>
> Modified: llvm/trunk/lib/Target/AMDGPU/SIISelLowering.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/
> AMDGPU/SIISelLowering.h?rev=287203&r1=287202&r2=287203&view=diff
> ============================================================
> ==================
> --- llvm/trunk/lib/Target/AMDGPU/SIISelLowering.h (original)
> +++ llvm/trunk/lib/Target/AMDGPU/SIISelLowering.h Wed Nov 16 22:28:37 2016
> @@ -56,6 +56,9 @@ class SITargetLowering final : public AM
> /// \brief Custom lowering for ISD::ConstantFP.
> SDValue lowerConstantFP(SDValue Op, SelectionDAG &DAG) const;
>
> + /// \brief Custom lowering for ISD::FP_ROUND for MVT::f16.
> + SDValue lowerFP_ROUND(SDValue Op, SelectionDAG &DAG) const;
> +
> SDValue getSegmentAperture(unsigned AS, SelectionDAG &DAG) const;
> SDValue lowerADDRSPACECAST(SDValue Op, SelectionDAG &DAG) const;
> SDValue lowerTRAP(SDValue Op, SelectionDAG &DAG) const;
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161117/eef217e8/attachment.html>
More information about the llvm-commits
mailing list