Lines Matching refs:vdn
207 vfp_propagate_nan(struct vfp_double *vdd, struct vfp_double *vdn,
213 tn = vfp_double_type(vdn);
230 nan = vdn;
683 vfp_double_fadd_nonnumber(struct vfp_double *vdd, struct vfp_double *vdn,
690 tn = vfp_double_type(vdn);
697 if (vdn->sign ^ vdm->sign) {
707 vdp = vdn;
713 vdp = vdn;
718 return vfp_propagate_nan(vdd, vdn, vdm, fpscr);
725 vfp_double_add(struct vfp_double *vdd, struct vfp_double *vdn,
731 if (vdn->significand & (1ULL << 63) ||
734 vfp_double_dump("VDN", vdn);
743 if (vdn->exponent < vdm->exponent) {
744 struct vfp_double *t = vdn;
745 vdn = vdm;
753 if (vdn->exponent == 2047)
754 return vfp_double_fadd_nonnumber(vdd, vdn, vdm, fpscr);
757 * We have two proper numbers, where 'vdn' is the larger magnitude.
761 *vdd = *vdn;
766 exp_diff = vdn->exponent - vdm->exponent;
772 if (vdn->sign ^ vdm->sign) {
773 m_sig = vdn->significand - m_sig;
782 m_sig += vdn->significand;
790 vfp_double_multiply(struct vfp_double *vdd, struct vfp_double *vdn,
793 vfp_double_dump("VDN", vdn);
801 if (vdn->exponent < vdm->exponent) {
802 struct vfp_double *t = vdn;
803 vdn = vdm;
808 vdd->sign = vdn->sign ^ vdm->sign;
813 if (vdn->exponent == 2047) {
814 if (vdn->significand || (vdm->exponent == 2047 && vdm->significand))
815 return vfp_propagate_nan(vdd, vdn, vdm, fpscr);
820 vdd->exponent = vdn->exponent;
840 vdd->exponent = vdn->exponent + vdm->exponent - 1023 + 2;
841 vdd->significand = vfp_hi64multiply64(vdn->significand, vdm->significand);
853 struct vfp_double vdd, vdp, vdn, vdm;
856 vfp_double_unpack(&vdn, vfp_get_double(dn));
857 if (vdn.exponent == 0 && vdn.significand)
858 vfp_double_normalise_denormal(&vdn);
864 exceptions = vfp_double_multiply(&vdp, &vdn, &vdm, fpscr);
868 vfp_double_unpack(&vdn, vfp_get_double(dd));
870 vdn.sign = vfp_sign_negate(vdn.sign);
872 exceptions |= vfp_double_add(&vdd, &vdn, &vdp, fpscr);
918 struct vfp_double vdd, vdn, vdm;
921 vfp_double_unpack(&vdn, vfp_get_double(dn));
922 if (vdn.exponent == 0 && vdn.significand)
923 vfp_double_normalise_denormal(&vdn);
929 exceptions = vfp_double_multiply(&vdd, &vdn, &vdm, fpscr);
938 struct vfp_double vdd, vdn, vdm;
941 vfp_double_unpack(&vdn, vfp_get_double(dn));
942 if (vdn.exponent == 0 && vdn.significand)
943 vfp_double_normalise_denormal(&vdn);
949 exceptions = vfp_double_multiply(&vdd, &vdn, &vdm, fpscr);
960 struct vfp_double vdd, vdn, vdm;
963 vfp_double_unpack(&vdn, vfp_get_double(dn));
964 if (vdn.exponent == 0 && vdn.significand)
965 vfp_double_normalise_denormal(&vdn);
971 exceptions = vfp_double_add(&vdd, &vdn, &vdm, fpscr);
981 struct vfp_double vdd, vdn, vdm;
984 vfp_double_unpack(&vdn, vfp_get_double(dn));
985 if (vdn.exponent == 0 && vdn.significand)
986 vfp_double_normalise_denormal(&vdn);
997 exceptions = vfp_double_add(&vdd, &vdn, &vdm, fpscr);
1007 struct vfp_double vdd, vdn, vdm;
1011 vfp_double_unpack(&vdn, vfp_get_double(dn));
1014 vdd.sign = vdn.sign ^ vdm.sign;
1016 tn = vfp_double_type(&vdn);
1057 vfp_double_normalise_denormal(&vdn);
1064 vdd.exponent = vdn.exponent - vdm.exponent + 1023 - 1;
1066 if (vdm.significand <= (2 * vdn.significand)) {
1067 vdn.significand >>= 1;
1070 vdd.significand = vfp_estimate_div128to64(vdn.significand, 0, vdm.significand);
1074 sub128(&remh, &reml, vdn.significand, 0, termh, terml);
1084 exceptions = vfp_propagate_nan(&vdd, &vdn, &vdm, fpscr);
1090 exceptions = vfp_propagate_nan(&vdd, &vdm, &vdn, fpscr);