|
@@ -521,3 +521,38 @@ static u32 vfp_single_fcvtd(int dd, int unused, s32 m, u32 fpscr)
|
|
vfp_put_double(vfp_double_pack(&vdd), dd);
|
|
vfp_put_double(vfp_double_pack(&vdd), dd);
|
|
return exceptions;
|
|
return exceptions;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+static u32 vfp_single_fuito(int sd, int unused, s32 m, u32 fpscr)
|
|
|
|
+{
|
|
|
|
+ struct vfp_single vs;
|
|
|
|
+
|
|
|
|
+ vs.sign = 0;
|
|
|
|
+ vs.exponent = 127 + 31 - 1;
|
|
|
|
+ vs.significand = (u32)m;
|
|
|
|
+
|
|
|
|
+ return vfp_single_normaliseround(sd, &vs, fpscr, 0, "fuito");
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static u32 vfp_single_fsito(int sd, int unused, s32 m, u32 fpscr)
|
|
|
|
+{
|
|
|
|
+ struct vfp_single vs;
|
|
|
|
+
|
|
|
|
+ vs.sign = (m & 0x80000000) >> 16;
|
|
|
|
+ vs.exponent = 127 + 31 - 1;
|
|
|
|
+ vs.significand = vs.sign ? -m : m;
|
|
|
|
+
|
|
|
|
+ return vfp_single_normaliseround(sd, &vs, fpscr, 0, "fsito");
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+static u32 vfp_single_ftoui(int sd, int unused, s32 m, u32 fpscr)
|
|
|
|
+{
|
|
|
|
+ struct vfp_single vsm;
|
|
|
|
+ u32 d, exceptions = 0;
|
|
|
|
+ int rmode = fpscr & FPSCR_RMODE_MASK;
|
|
|
|
+ int tm;
|
|
|
|
+
|
|
|
|
+ vfp_single_unpack(&vsm, m);
|
|
|
|
+ vfp_single_dump("VSM", &vsm);
|
|
|
|
+
|
|
|
|
+ /*
|
|
|
|
+ * Do we have a denormalised number?
|