================ @@ -10616,19 +10616,43 @@ SDValue SITargetLowering::LowerFDIV16(SDValue Op, SelectionDAG &DAG) const { return FastLowered; SDLoc SL(Op); - SDValue Src0 = Op.getOperand(0); - SDValue Src1 = Op.getOperand(1); - - SDValue CvtSrc0 = DAG.getNode(ISD::FP_EXTEND, SL, MVT::f32, Src0); - SDValue CvtSrc1 = DAG.getNode(ISD::FP_EXTEND, SL, MVT::f32, Src1); - - SDValue RcpSrc1 = DAG.getNode(AMDGPUISD::RCP, SL, MVT::f32, CvtSrc1); - SDValue Quot = DAG.getNode(ISD::FMUL, SL, MVT::f32, CvtSrc0, RcpSrc1); - - SDValue FPRoundFlag = DAG.getTargetConstant(0, SL, MVT::i32); - SDValue BestQuot = DAG.getNode(ISD::FP_ROUND, SL, MVT::f16, Quot, FPRoundFlag); + SDValue LHS = Op.getOperand(0); + SDValue RHS = Op.getOperand(1); - return DAG.getNode(AMDGPUISD::DIV_FIXUP, SL, MVT::f16, BestQuot, Src1, Src0); + // a32.u = opx(V_CVT_F32_F16, a.u); // CVT to F32 + // b32.u = opx(V_CVT_F32_F16, b.u); // CVT to F32 + // r32.u = opx(V_RCP_F32, b32.u); // rcp = 1 / d + // q32.u = opx(V_MUL_F32, a32.u, r32.u); // q = n * rcp + // e32.u = opx(V_MAD_F32, (b32.u^_neg32), q32.u, a32.u); // err = -d * q + n + // q32.u = opx(V_MAD_F32, e32.u, r32.u, q32.u); // q = n * rcp + // e32.u = opx(V_MAD_F32, (b32.u^_neg32), q32.u, a32.u); // err = -d * q + n + // tmp.u = opx(V_MUL_F32, e32.u, r32.u); + // tmp.u = opx(V_AND_B32, tmp.u, 0xff800000) + // q32.u = opx(V_ADD_F32, tmp.u, q32.u); + // q16.u = opx(V_CVT_F16_F32, q32.u); + // q16.u = opx(V_DIV_FIXUP_F16, q16.u, b.u, a.u); // q = touchup(q, d, n) + + // We will use ISD::FMA on targets that don't support ISD::FMAD. + unsigned FMADOpCode = + isOperationLegal(ISD::FMAD, MVT::f32) ? ISD::FMAD : ISD::FMA; + + SDValue LHSExt = DAG.getNode(ISD::FP_EXTEND, SL, MVT::f32, LHS); + SDValue RHSExt = DAG.getNode(ISD::FP_EXTEND, SL, MVT::f32, RHS); ---------------- arsenm wrote:
Didn't propagate flags https://github.com/llvm/llvm-project/pull/109295 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits