From a86d5e2752ffc4a89e4f92a9cb6f00aa3f267e17 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Tue, 10 Feb 2015 08:16:26 -0500 Subject: vfp: Normalize accumulator for multiply accumulate instructions --- src/core/arm/skyeye_common/vfp/vfpdouble.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/core/arm/skyeye_common/vfp/vfpdouble.cpp') diff --git a/src/core/arm/skyeye_common/vfp/vfpdouble.cpp b/src/core/arm/skyeye_common/vfp/vfpdouble.cpp index 2c15db12..9a708808 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); -- cgit v1.2.3