Lines Matching refs:vdn
207 vfp_propagate_nan(struct vfp_double *vdd, struct vfp_double *vdn, in vfp_propagate_nan() argument
213 tn = vfp_double_type(vdn); in vfp_propagate_nan()
230 nan = vdn; in vfp_propagate_nan()
683 vfp_double_fadd_nonnumber(struct vfp_double *vdd, struct vfp_double *vdn, in vfp_double_fadd_nonnumber() argument
690 tn = vfp_double_type(vdn); in vfp_double_fadd_nonnumber()
697 if (vdn->sign ^ vdm->sign) { in vfp_double_fadd_nonnumber()
707 vdp = vdn; in vfp_double_fadd_nonnumber()
713 vdp = vdn; in vfp_double_fadd_nonnumber()
718 return vfp_propagate_nan(vdd, vdn, vdm, fpscr); in vfp_double_fadd_nonnumber()
725 vfp_double_add(struct vfp_double *vdd, struct vfp_double *vdn, in vfp_double_add() argument
731 if (vdn->significand & (1ULL << 63) || in vfp_double_add()
734 vfp_double_dump("VDN", vdn); in vfp_double_add()
743 if (vdn->exponent < vdm->exponent) { in vfp_double_add()
744 struct vfp_double *t = vdn; in vfp_double_add()
745 vdn = vdm; in vfp_double_add()
753 if (vdn->exponent == 2047) in vfp_double_add()
754 return vfp_double_fadd_nonnumber(vdd, vdn, vdm, fpscr); in vfp_double_add()
761 *vdd = *vdn; in vfp_double_add()
766 exp_diff = vdn->exponent - vdm->exponent; in vfp_double_add()
772 if (vdn->sign ^ vdm->sign) { in vfp_double_add()
773 m_sig = vdn->significand - m_sig; in vfp_double_add()
782 m_sig += vdn->significand; in vfp_double_add()
790 vfp_double_multiply(struct vfp_double *vdd, struct vfp_double *vdn, in vfp_double_multiply() argument
793 vfp_double_dump("VDN", vdn); in vfp_double_multiply()
801 if (vdn->exponent < vdm->exponent) { in vfp_double_multiply()
802 struct vfp_double *t = vdn; in vfp_double_multiply()
803 vdn = vdm; in vfp_double_multiply()
808 vdd->sign = vdn->sign ^ vdm->sign; in vfp_double_multiply()
813 if (vdn->exponent == 2047) { in vfp_double_multiply()
814 if (vdn->significand || (vdm->exponent == 2047 && vdm->significand)) in vfp_double_multiply()
815 return vfp_propagate_nan(vdd, vdn, vdm, fpscr); in vfp_double_multiply()
820 vdd->exponent = vdn->exponent; 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()
853 struct vfp_double vdd, vdp, vdn, vdm; in vfp_double_multiply_accumulate() local
856 vfp_double_unpack(&vdn, vfp_get_double(dn)); in vfp_double_multiply_accumulate()
857 if (vdn.exponent == 0 && vdn.significand) in vfp_double_multiply_accumulate()
858 vfp_double_normalise_denormal(&vdn); in vfp_double_multiply_accumulate()
864 exceptions = vfp_double_multiply(&vdp, &vdn, &vdm, fpscr); in vfp_double_multiply_accumulate()
868 vfp_double_unpack(&vdn, vfp_get_double(dd)); in vfp_double_multiply_accumulate()
869 if (vdn.exponent == 0 && vdn.significand) in vfp_double_multiply_accumulate()
870 vfp_double_normalise_denormal(&vdn); in vfp_double_multiply_accumulate()
872 vdn.sign = vfp_sign_negate(vdn.sign); in vfp_double_multiply_accumulate()
874 exceptions |= vfp_double_add(&vdd, &vdn, &vdp, fpscr); in vfp_double_multiply_accumulate()
920 struct vfp_double vdd, vdn, vdm; in vfp_double_fmul() local
923 vfp_double_unpack(&vdn, vfp_get_double(dn)); in vfp_double_fmul()
924 if (vdn.exponent == 0 && vdn.significand) in vfp_double_fmul()
925 vfp_double_normalise_denormal(&vdn); in vfp_double_fmul()
931 exceptions = vfp_double_multiply(&vdd, &vdn, &vdm, fpscr); in vfp_double_fmul()
940 struct vfp_double vdd, vdn, vdm; in vfp_double_fnmul() local
943 vfp_double_unpack(&vdn, vfp_get_double(dn)); in vfp_double_fnmul()
944 if (vdn.exponent == 0 && vdn.significand) in vfp_double_fnmul()
945 vfp_double_normalise_denormal(&vdn); in vfp_double_fnmul()
951 exceptions = vfp_double_multiply(&vdd, &vdn, &vdm, fpscr); in vfp_double_fnmul()
962 struct vfp_double vdd, vdn, vdm; in vfp_double_fadd() local
965 vfp_double_unpack(&vdn, vfp_get_double(dn)); in vfp_double_fadd()
966 if (vdn.exponent == 0 && vdn.significand) in vfp_double_fadd()
967 vfp_double_normalise_denormal(&vdn); in vfp_double_fadd()
973 exceptions = vfp_double_add(&vdd, &vdn, &vdm, fpscr); in vfp_double_fadd()
983 struct vfp_double vdd, vdn, vdm; in vfp_double_fsub() local
986 vfp_double_unpack(&vdn, vfp_get_double(dn)); in vfp_double_fsub()
987 if (vdn.exponent == 0 && vdn.significand) in vfp_double_fsub()
988 vfp_double_normalise_denormal(&vdn); in vfp_double_fsub()
999 exceptions = vfp_double_add(&vdd, &vdn, &vdm, fpscr); in vfp_double_fsub()
1009 struct vfp_double vdd, vdn, vdm; in vfp_double_fdiv() local
1013 vfp_double_unpack(&vdn, vfp_get_double(dn)); in vfp_double_fdiv()
1016 vdd.sign = vdn.sign ^ vdm.sign; in vfp_double_fdiv()
1018 tn = vfp_double_type(&vdn); in vfp_double_fdiv()
1059 vfp_double_normalise_denormal(&vdn); in vfp_double_fdiv()
1066 vdd.exponent = vdn.exponent - vdm.exponent + 1023 - 1; in vfp_double_fdiv()
1068 if (vdm.significand <= (2 * vdn.significand)) { in vfp_double_fdiv()
1069 vdn.significand >>= 1; in vfp_double_fdiv()
1072 vdd.significand = vfp_estimate_div128to64(vdn.significand, 0, vdm.significand); in vfp_double_fdiv()
1076 sub128(&remh, &reml, vdn.significand, 0, termh, terml); in vfp_double_fdiv()
1086 exceptions = vfp_propagate_nan(&vdd, &vdn, &vdm, fpscr); in vfp_double_fdiv()
1092 exceptions = vfp_propagate_nan(&vdd, &vdm, &vdn, fpscr); in vfp_double_fdiv()