diff options
| -rw-r--r-- | src/core/arm/skyeye_common/vfp/vfpdouble.cpp | 6 | ||||
| -rw-r--r-- | src/core/arm/skyeye_common/vfp/vfpsingle.cpp | 6 |
2 files changed, 6 insertions, 6 deletions
diff --git a/src/core/arm/skyeye_common/vfp/vfpdouble.cpp b/src/core/arm/skyeye_common/vfp/vfpdouble.cpp index ab9fec39d..f91049585 100644 --- a/src/core/arm/skyeye_common/vfp/vfpdouble.cpp +++ b/src/core/arm/skyeye_common/vfp/vfpdouble.cpp | |||
| @@ -531,7 +531,7 @@ static u32 vfp_double_fsito(ARMul_State* state, int dd, int unused, int dm, u32 | |||
| 531 | LOG_TRACE(Core_ARM11, "In %s\n", __FUNCTION__); | 531 | LOG_TRACE(Core_ARM11, "In %s\n", __FUNCTION__); |
| 532 | vdm.sign = (m & 0x80000000) >> 16; | 532 | vdm.sign = (m & 0x80000000) >> 16; |
| 533 | vdm.exponent = 1023 + 63 - 1; | 533 | vdm.exponent = 1023 + 63 - 1; |
| 534 | vdm.significand = vdm.sign ? -m : m; | 534 | vdm.significand = vdm.sign ? (~m + 1) : m; |
| 535 | 535 | ||
| 536 | return vfp_double_normaliseround(state, dd, &vdm, fpscr, 0, "fsito"); | 536 | return vfp_double_normaliseround(state, dd, &vdm, fpscr, 0, "fsito"); |
| 537 | } | 537 | } |
| @@ -669,7 +669,7 @@ static u32 vfp_double_ftosi(ARMul_State* state, int sd, int unused, int dm, u32 | |||
| 669 | exceptions |= FPSCR_IXC; | 669 | exceptions |= FPSCR_IXC; |
| 670 | 670 | ||
| 671 | if (vdm.sign) | 671 | if (vdm.sign) |
| 672 | d = -d; | 672 | d = (~d + 1); |
| 673 | } else { | 673 | } else { |
| 674 | d = 0; | 674 | d = 0; |
| 675 | if (vdm.exponent | vdm.significand) { | 675 | if (vdm.exponent | vdm.significand) { |
| @@ -817,7 +817,7 @@ u32 vfp_double_add(struct vfp_double *vdd, struct vfp_double *vdn,struct vfp_dou | |||
| 817 | m_sig = vdn->significand - m_sig; | 817 | m_sig = vdn->significand - m_sig; |
| 818 | if ((s64)m_sig < 0) { | 818 | if ((s64)m_sig < 0) { |
| 819 | vdd->sign = vfp_sign_negate(vdd->sign); | 819 | vdd->sign = vfp_sign_negate(vdd->sign); |
| 820 | m_sig = -m_sig; | 820 | m_sig = (~m_sig + 1); |
| 821 | } else if (m_sig == 0) { | 821 | } else if (m_sig == 0) { |
| 822 | vdd->sign = (fpscr & FPSCR_RMODE_MASK) == | 822 | vdd->sign = (fpscr & FPSCR_RMODE_MASK) == |
| 823 | FPSCR_ROUND_MINUSINF ? 0x8000 : 0; | 823 | FPSCR_ROUND_MINUSINF ? 0x8000 : 0; |
diff --git a/src/core/arm/skyeye_common/vfp/vfpsingle.cpp b/src/core/arm/skyeye_common/vfp/vfpsingle.cpp index 4dfe0254d..a692c1909 100644 --- a/src/core/arm/skyeye_common/vfp/vfpsingle.cpp +++ b/src/core/arm/skyeye_common/vfp/vfpsingle.cpp | |||
| @@ -388,7 +388,7 @@ sqrt_invalid: | |||
| 388 | } else { | 388 | } else { |
| 389 | u64 term; | 389 | u64 term; |
| 390 | s64 rem; | 390 | s64 rem; |
| 391 | vsm.significand <<= !(vsm.exponent & 1); | 391 | vsm.significand <<= static_cast<u32>((vsm.exponent & 1) == 0); |
| 392 | term = (u64)vsd.significand * vsd.significand; | 392 | term = (u64)vsd.significand * vsd.significand; |
| 393 | rem = ((u64)vsm.significand << 32) - term; | 393 | rem = ((u64)vsm.significand << 32) - term; |
| 394 | 394 | ||
| @@ -691,7 +691,7 @@ static u32 vfp_single_ftosi(ARMul_State* state, int sd, int unused, s32 m, u32 f | |||
| 691 | exceptions |= FPSCR_IXC; | 691 | exceptions |= FPSCR_IXC; |
| 692 | 692 | ||
| 693 | if (vsm.sign) | 693 | if (vsm.sign) |
| 694 | d = 0-d; | 694 | d = (~d + 1); |
| 695 | } else { | 695 | } else { |
| 696 | d = 0; | 696 | d = 0; |
| 697 | if (vsm.exponent | vsm.significand) { | 697 | if (vsm.exponent | vsm.significand) { |
| @@ -843,7 +843,7 @@ vfp_single_add(struct vfp_single *vsd, struct vfp_single *vsn, | |||
| 843 | m_sig = vsn->significand - m_sig; | 843 | m_sig = vsn->significand - m_sig; |
| 844 | if ((s32)m_sig < 0) { | 844 | if ((s32)m_sig < 0) { |
| 845 | vsd->sign = vfp_sign_negate(vsd->sign); | 845 | vsd->sign = vfp_sign_negate(vsd->sign); |
| 846 | m_sig = 0-m_sig; | 846 | m_sig = (~m_sig + 1); |
| 847 | } else if (m_sig == 0) { | 847 | } else if (m_sig == 0) { |
| 848 | vsd->sign = (fpscr & FPSCR_RMODE_MASK) == | 848 | vsd->sign = (fpscr & FPSCR_RMODE_MASK) == |
| 849 | FPSCR_ROUND_MINUSINF ? 0x8000 : 0; | 849 | FPSCR_ROUND_MINUSINF ? 0x8000 : 0; |