Commit 3b27fc36e3b4e249d42b816fe13a0522729e5464

Authored by aurel32
1 parent e0147e41

target-ppc: correctly propagate NaN in division

Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6048 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 1 additions and 1 deletions
target-ppc/op_helper.c
@@ -1135,7 +1135,7 @@ uint64_t helper_fdiv (uint64_t arg1, uint64_t arg2) @@ -1135,7 +1135,7 @@ uint64_t helper_fdiv (uint64_t arg1, uint64_t arg2)
1135 } else if (unlikely(isinfinity(farg1.d) && isinfinity(farg2.d))) { 1135 } else if (unlikely(isinfinity(farg1.d) && isinfinity(farg2.d))) {
1136 /* Division of infinity by infinity */ 1136 /* Division of infinity by infinity */
1137 farg1.ll = fload_invalid_op_excp(POWERPC_EXCP_FP_VXIDI); 1137 farg1.ll = fload_invalid_op_excp(POWERPC_EXCP_FP_VXIDI);
1138 - } else if (unlikely(iszero(farg2.d))) { 1138 + } else if (unlikely(!float64_is_nan(farg1.d) && iszero(farg2.d))) {
1139 if (iszero(farg1.d)) { 1139 if (iszero(farg1.d)) {
1140 /* Division of zero by zero */ 1140 /* Division of zero by zero */
1141 farg1.ll = fload_invalid_op_excp(POWERPC_EXCP_FP_VXZDZ); 1141 farg1.ll = fload_invalid_op_excp(POWERPC_EXCP_FP_VXZDZ);