Lines Matching refs:vsn
215 vfp_propagate_nan(struct vfp_single *vsd, struct vfp_single *vsn,
221 tn = vfp_single_type(vsn);
238 nan = vsn;
729 vfp_single_fadd_nonnumber(struct vfp_single *vsd, struct vfp_single *vsn,
736 tn = vfp_single_type(vsn);
743 if (vsn->sign ^ vsm->sign) {
753 vsp = vsn;
759 vsp = vsn;
764 return vfp_propagate_nan(vsd, vsn, vsm, fpscr);
771 vfp_single_add(struct vfp_single *vsd, struct vfp_single *vsn,
776 if (vsn->significand & 0x80000000 ||
779 vfp_single_dump("VSN", vsn);
788 if (vsn->exponent < vsm->exponent) {
789 struct vfp_single *t = vsn;
790 vsn = vsm;
798 if (vsn->exponent == 255)
799 return vfp_single_fadd_nonnumber(vsd, vsn, vsm, fpscr);
802 * We have two proper numbers, where 'vsn' is the larger magnitude.
806 *vsd = *vsn;
811 exp_diff = vsn->exponent - vsm->exponent;
817 if (vsn->sign ^ vsm->sign) {
818 m_sig = vsn->significand - m_sig;
827 m_sig = vsn->significand + m_sig;
835 vfp_single_multiply(struct vfp_single *vsd, struct vfp_single *vsn, struct vfp_single *vsm, u32 fpscr)
837 vfp_single_dump("VSN", vsn);
845 if (vsn->exponent < vsm->exponent) {
846 struct vfp_single *t = vsn;
847 vsn = vsm;
852 vsd->sign = vsn->sign ^ vsm->sign;
857 if (vsn->exponent == 255) {
858 if (vsn->significand || (vsm->exponent == 255 && vsm->significand))
859 return vfp_propagate_nan(vsd, vsn, vsm, fpscr);
864 vsd->exponent = vsn->exponent;
884 vsd->exponent = vsn->exponent + vsm->exponent - 127 + 2;
885 vsd->significand = vfp_hi64to32jamming((u64)vsn->significand * vsm->significand);
897 struct vfp_single vsd, vsp, vsn, vsm;
903 vfp_single_unpack(&vsn, v);
904 if (vsn.exponent == 0 && vsn.significand)
905 vfp_single_normalise_denormal(&vsn);
911 exceptions = vfp_single_multiply(&vsp, &vsn, &vsm, fpscr);
917 vfp_single_unpack(&vsn, v);
918 if (vsn.exponent == 0 && vsn.significand)
919 vfp_single_normalise_denormal(&vsn);
921 vsn.sign = vfp_sign_negate(vsn.sign);
923 exceptions |= vfp_single_add(&vsd, &vsn, &vsp, fpscr);
969 struct vfp_single vsd, vsn, vsm;
975 vfp_single_unpack(&vsn, n);
976 if (vsn.exponent == 0 && vsn.significand)
977 vfp_single_normalise_denormal(&vsn);
983 exceptions = vfp_single_multiply(&vsd, &vsn, &vsm, fpscr);
992 struct vfp_single vsd, vsn, vsm;
998 vfp_single_unpack(&vsn, n);
999 if (vsn.exponent == 0 && vsn.significand)
1000 vfp_single_normalise_denormal(&vsn);
1006 exceptions = vfp_single_multiply(&vsd, &vsn, &vsm, fpscr);
1016 struct vfp_single vsd, vsn, vsm;
1025 vfp_single_unpack(&vsn, n);
1026 if (vsn.exponent == 0 && vsn.significand)
1027 vfp_single_normalise_denormal(&vsn);
1033 exceptions = vfp_single_add(&vsd, &vsn, &vsm, fpscr);
1054 struct vfp_single vsd, vsn, vsm;
1061 vfp_single_unpack(&vsn, n);
1064 vsd.sign = vsn.sign ^ vsm.sign;
1066 tn = vfp_single_type(&vsn);
1107 vfp_single_normalise_denormal(&vsn);
1114 vsd.exponent = vsn.exponent - vsm.exponent + 127 - 1;
1116 if (vsm.significand <= (2 * vsn.significand)) {
1117 vsn.significand >>= 1;
1121 u64 significand = (u64)vsn.significand << 32;
1126 vsd.significand |= ((u64)vsm.significand * vsd.significand != (u64)vsn.significand << 32);
1131 exceptions = vfp_propagate_nan(&vsd, &vsn, &vsm, fpscr);
1137 exceptions = vfp_propagate_nan(&vsd, &vsm, &vsn, fpscr);