diff options
| author | 2014-12-16 23:22:58 -0500 | |
|---|---|---|
| committer | 2014-12-16 23:22:58 -0500 | |
| commit | ec9ac2f51a9669fba1a88c93d0edb02a522492f6 (patch) | |
| tree | e7a4389cf09a28208067d1706d972dc093cc89ad | |
| parent | Merge pull request #286 from yuriks/msvc-fix (diff) | |
| parent | armemu: Fix FTOUI NaN sign. (diff) | |
| download | yuzu-ec9ac2f51a9669fba1a88c93d0edb02a522492f6.tar.gz yuzu-ec9ac2f51a9669fba1a88c93d0edb02a522492f6.tar.xz yuzu-ec9ac2f51a9669fba1a88c93d0edb02a522492f6.zip | |
Merge pull request #290 from lioncash/vsub
armemu: Backport some VFP fixes from 3dmoo.
Diffstat (limited to '')
| -rw-r--r-- | src/core/arm/skyeye_common/vfp/vfpsingle.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/core/arm/skyeye_common/vfp/vfpsingle.cpp b/src/core/arm/skyeye_common/vfp/vfpsingle.cpp index 871900497..6c33d8b78 100644 --- a/src/core/arm/skyeye_common/vfp/vfpsingle.cpp +++ b/src/core/arm/skyeye_common/vfp/vfpsingle.cpp | |||
| @@ -614,7 +614,7 @@ static u32 vfp_single_ftoui(ARMul_State* state, int sd, int unused, s32 m, u32 f | |||
| 614 | exceptions |= FPSCR_IDC; | 614 | exceptions |= FPSCR_IDC; |
| 615 | 615 | ||
| 616 | if (tm & VFP_NAN) | 616 | if (tm & VFP_NAN) |
| 617 | vsm.sign = 0; | 617 | vsm.sign = 1; |
| 618 | 618 | ||
| 619 | if (vsm.exponent >= 127 + 32) { | 619 | if (vsm.exponent >= 127 + 32) { |
| 620 | d = vsm.sign ? 0 : 0xffffffff; | 620 | d = vsm.sign ? 0 : 0xffffffff; |
| @@ -1148,7 +1148,10 @@ static u32 vfp_single_fsub(ARMul_State* state, int sd, int sn, s32 m, u32 fpscr) | |||
| 1148 | /* | 1148 | /* |
| 1149 | * Subtraction is addition with one sign inverted. | 1149 | * Subtraction is addition with one sign inverted. |
| 1150 | */ | 1150 | */ |
| 1151 | return vfp_single_fadd(state, sd, sn, vfp_single_packed_negate(m), fpscr); | 1151 | if (m != 0x7FC00000) // Only negate if m isn't NaN. |
| 1152 | m = vfp_single_packed_negate(m); | ||
| 1153 | |||
| 1154 | return vfp_single_fadd(state, sd, sn, m, fpscr); | ||
| 1152 | } | 1155 | } |
| 1153 | 1156 | ||
| 1154 | /* | 1157 | /* |