diff options
| author | bunnei <bunneidev@gmail.com> | 2015-02-10 10:09:45 -0500 |
|---|---|---|
| committer | bunnei <bunneidev@gmail.com> | 2015-02-10 10:09:45 -0500 |
| commit | 67db6aa4ce1f57f7d99406c8924ed41e74d36dbe (patch) | |
| tree | a2a0cfc5626629e7de3d5624d31943f4ce006196 /src/core/arm/skyeye_common/vfp/vfpsingle.cpp | |
| parent | 695beb8dcf0c2a7719740434c2e8574a8cf40c36 (diff) | |
| parent | a86d5e2752ffc4a89e4f92a9cb6f00aa3f267e17 (diff) | |
Merge pull request #553 from lioncash/denorm
vfp: Normalize accumulator for multiply accumulate instructions
Diffstat (limited to 'src/core/arm/skyeye_common/vfp/vfpsingle.cpp')
| -rw-r--r-- | src/core/arm/skyeye_common/vfp/vfpsingle.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
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); |
