Lines Matching full:vdd

207 vfp_propagate_nan(struct vfp_double *vdd, struct vfp_double *vdn,  in vfp_propagate_nan()  argument
239 *vdd = *nan; in vfp_propagate_nan()
270 struct vfp_double vdm, vdd; in vfp_double_fsqrt() local
276 struct vfp_double *vdp = &vdd; in vfp_double_fsqrt()
316 vdd.sign = 0; in vfp_double_fsqrt()
317 vdd.exponent = ((vdm.exponent - 1023) >> 1) + 1023; in vfp_double_fsqrt()
318 vdd.significand = (u64)vfp_estimate_sqrt_significand(vdm.exponent, vdm.significand >> 32) << 31; in vfp_double_fsqrt()
320 vfp_double_dump("sqrt estimate1", &vdd); in vfp_double_fsqrt()
323 vdd.significand += 2 + vfp_estimate_div128to64(vdm.significand, 0, vdd.significand); in vfp_double_fsqrt()
325 vfp_double_dump("sqrt estimate2", &vdd); in vfp_double_fsqrt()
330 if ((vdd.significand & VFP_DOUBLE_LOW_BITS_MASK) <= 5) { in vfp_double_fsqrt()
331 if (vdd.significand < 2) { in vfp_double_fsqrt()
332 vdd.significand = ~0ULL; in vfp_double_fsqrt()
336 mul64to128(&termh, &terml, vdd.significand, vdd.significand); in vfp_double_fsqrt()
339 vdd.significand -= 1; in vfp_double_fsqrt()
340 shift64left(&termh, &terml, vdd.significand); in vfp_double_fsqrt()
344 vdd.significand |= (remh | reml) != 0; in vfp_double_fsqrt()
347 vdd.significand = vfp_shiftright64jamming(vdd.significand, 1); in vfp_double_fsqrt()
349 return vfp_double_normaliseround(dd, &vdd, fpscr, 0, "fsqrt"); in vfp_double_fsqrt()
683 vfp_double_fadd_nonnumber(struct vfp_double *vdd, struct vfp_double *vdn, in vfp_double_fadd_nonnumber() argument
718 return vfp_propagate_nan(vdd, vdn, vdm, fpscr); in vfp_double_fadd_nonnumber()
720 *vdd = *vdp; in vfp_double_fadd_nonnumber()
725 vfp_double_add(struct vfp_double *vdd, struct vfp_double *vdn, in vfp_double_add() argument
754 return vfp_double_fadd_nonnumber(vdd, vdn, vdm, fpscr); in vfp_double_add()
761 *vdd = *vdn; in vfp_double_add()
775 vdd->sign = vfp_sign_negate(vdd->sign); in vfp_double_add()
778 vdd->sign = (fpscr & FPSCR_RMODE_MASK) == in vfp_double_add()
784 vdd->significand = m_sig; in vfp_double_add()
790 vfp_double_multiply(struct vfp_double *vdd, struct vfp_double *vdn, in vfp_double_multiply() argument
808 vdd->sign = vdn->sign ^ vdm->sign; in vfp_double_multiply()
815 return vfp_propagate_nan(vdd, vdn, vdm, fpscr); in vfp_double_multiply()
817 *vdd = vfp_double_default_qnan; in vfp_double_multiply()
820 vdd->exponent = vdn->exponent; in vfp_double_multiply()
821 vdd->significand = 0; in vfp_double_multiply()
830 vdd->exponent = 0; in vfp_double_multiply()
831 vdd->significand = 0; in vfp_double_multiply()
840 vdd->exponent = vdn->exponent + vdm->exponent - 1023 + 2; in vfp_double_multiply()
841 vdd->significand = vfp_hi64multiply64(vdn->significand, vdm->significand); in vfp_double_multiply()
843 vfp_double_dump("VDD", vdd); in vfp_double_multiply()
853 struct vfp_double vdd, vdp, vdn, vdm; in vfp_double_multiply_accumulate() local
874 exceptions |= vfp_double_add(&vdd, &vdn, &vdp, fpscr); in vfp_double_multiply_accumulate()
876 return vfp_double_normaliseround(dd, &vdd, fpscr, exceptions, func); in vfp_double_multiply_accumulate()
920 struct vfp_double vdd, vdn, vdm; in vfp_double_fmul() local
931 exceptions = vfp_double_multiply(&vdd, &vdn, &vdm, fpscr); in vfp_double_fmul()
932 return vfp_double_normaliseround(dd, &vdd, fpscr, exceptions, "fmul"); in vfp_double_fmul()
940 struct vfp_double vdd, vdn, vdm; in vfp_double_fnmul() local
951 exceptions = vfp_double_multiply(&vdd, &vdn, &vdm, fpscr); in vfp_double_fnmul()
952 vdd.sign = vfp_sign_negate(vdd.sign); in vfp_double_fnmul()
954 return vfp_double_normaliseround(dd, &vdd, fpscr, exceptions, "fnmul"); in vfp_double_fnmul()
962 struct vfp_double vdd, vdn, vdm; in vfp_double_fadd() local
973 exceptions = vfp_double_add(&vdd, &vdn, &vdm, fpscr); in vfp_double_fadd()
975 return vfp_double_normaliseround(dd, &vdd, fpscr, exceptions, "fadd"); in vfp_double_fadd()
983 struct vfp_double vdd, vdn, vdm; in vfp_double_fsub() local
999 exceptions = vfp_double_add(&vdd, &vdn, &vdm, fpscr); in vfp_double_fsub()
1001 return vfp_double_normaliseround(dd, &vdd, fpscr, exceptions, "fsub"); in vfp_double_fsub()
1009 struct vfp_double vdd, vdn, vdm; in vfp_double_fdiv() local
1016 vdd.sign = vdn.sign ^ vdm.sign; in vfp_double_fdiv()
1066 vdd.exponent = vdn.exponent - vdm.exponent + 1023 - 1; in vfp_double_fdiv()
1070 vdd.exponent++; in vfp_double_fdiv()
1072 vdd.significand = vfp_estimate_div128to64(vdn.significand, 0, vdm.significand); in vfp_double_fdiv()
1073 if ((vdd.significand & 0x1ff) <= 2) { in vfp_double_fdiv()
1075 mul64to128(&termh, &terml, vdm.significand, vdd.significand); in vfp_double_fdiv()
1078 vdd.significand -= 1; in vfp_double_fdiv()
1081 vdd.significand |= (reml != 0); in vfp_double_fdiv()
1083 return vfp_double_normaliseround(dd, &vdd, fpscr, 0, "fdiv"); in vfp_double_fdiv()
1086 exceptions = vfp_propagate_nan(&vdd, &vdn, &vdm, fpscr); in vfp_double_fdiv()
1088 vfp_put_double(vfp_double_pack(&vdd), dd); in vfp_double_fdiv()
1092 exceptions = vfp_propagate_nan(&vdd, &vdm, &vdn, fpscr); in vfp_double_fdiv()
1096 vdd.exponent = 0; in vfp_double_fdiv()
1097 vdd.significand = 0; in vfp_double_fdiv()
1103 vdd.exponent = 2047; in vfp_double_fdiv()
1104 vdd.significand = 0; in vfp_double_fdiv()