diff options
author | Lioncash <mathew1800@gmail.com> | 2015-02-10 14:16:26 +0100 |
---|---|---|
committer | Lioncash <mathew1800@gmail.com> | 2015-02-10 14:16:26 +0100 |
commit | a86d5e2752ffc4a89e4f92a9cb6f00aa3f267e17 (patch) | |
tree | c252966c0e57267d1207791736b207caf52625df /src | |
parent | Merge pull request #543 from Alegend45/master (diff) | |
download | yuzu-a86d5e2752ffc4a89e4f92a9cb6f00aa3f267e17.tar yuzu-a86d5e2752ffc4a89e4f92a9cb6f00aa3f267e17.tar.gz yuzu-a86d5e2752ffc4a89e4f92a9cb6f00aa3f267e17.tar.bz2 yuzu-a86d5e2752ffc4a89e4f92a9cb6f00aa3f267e17.tar.lz yuzu-a86d5e2752ffc4a89e4f92a9cb6f00aa3f267e17.tar.xz yuzu-a86d5e2752ffc4a89e4f92a9cb6f00aa3f267e17.tar.zst yuzu-a86d5e2752ffc4a89e4f92a9cb6f00aa3f267e17.zip |
Diffstat (limited to 'src')
-rw-r--r-- | src/core/arm/skyeye_common/vfp/vfpdouble.cpp | 3 | ||||
-rw-r--r-- | src/core/arm/skyeye_common/vfp/vfpsingle.cpp | 3 |
2 files changed, 6 insertions, 0 deletions
diff --git a/src/core/arm/skyeye_common/vfp/vfpdouble.cpp b/src/core/arm/skyeye_common/vfp/vfpdouble.cpp index 2c15db12b..9a7088088 100644 --- a/src/core/arm/skyeye_common/vfp/vfpdouble.cpp +++ b/src/core/arm/skyeye_common/vfp/vfpdouble.cpp @@ -908,6 +908,9 @@ vfp_double_multiply_accumulate(ARMul_State* state, int dd, int dn, int dm, u32 f vdp.sign = vfp_sign_negate(vdp.sign); vfp_double_unpack(&vdn, vfp_get_double(state, dd)); + if (vdn.exponent == 0 && vdn.significand != 0) + vfp_double_normalise_denormal(&vdn); + if (negate & NEG_SUBTRACT) vdn.sign = vfp_sign_negate(vdn.sign); diff --git a/src/core/arm/skyeye_common/vfp/vfpsingle.cpp b/src/core/arm/skyeye_common/vfp/vfpsingle.cpp index 678b63f51..8b2dfa388 100644 --- a/src/core/arm/skyeye_common/vfp/vfpsingle.cpp +++ b/src/core/arm/skyeye_common/vfp/vfpsingle.cpp @@ -941,6 +941,9 @@ vfp_single_multiply_accumulate(ARMul_State* state, int sd, int sn, s32 m, u32 fp v = vfp_get_float(state, sd); pr_debug("VFP: s%u = %08x\n", sd, v); vfp_single_unpack(&vsn, v); + if (vsn.exponent == 0 && vsn.significand != 0) + vfp_single_normalise_denormal(&vsn); + if (negate & NEG_SUBTRACT) vsn.sign = vfp_sign_negate(vsn.sign); |