I agree that the comment is incorrect and should say "sNaN square root".
On Thu, Feb 12, 2015 at 4:21 PM, Maciej W. Rozycki <ma...@linux-mips.org> wrote: > On Wed, 7 Jan 2015, Alexander Graf wrote: > > > diff --git a/target-ppc/fpu_helper.c b/target-ppc/fpu_helper.c > > index 7f74466..81db60f 100644 > > --- a/target-ppc/fpu_helper.c > > +++ b/target-ppc/fpu_helper.c > > @@ -920,14 +923,16 @@ uint64_t helper_fsqrt(CPUPPCState *env, uint64_t > arg) > > > > farg.ll = arg; > > > > - if (unlikely(float64_is_neg(farg.d) && !float64_is_zero(farg.d))) { > > - /* Square root of a negative nonzero number */ > > - farg.ll = fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSQRT, 1); > > - } else { > > + if (unlikely(float64_is_any_nan(farg.d))) { > > if (unlikely(float64_is_signaling_nan(farg.d))) { > > - /* sNaN square root */ > > + /* sNaN reciprocal square root */ > > This change to the comment looks accidental, compare the changes below. > Should it be reverted? [Found this while resolving merge conflicts.] > > > fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSNAN, 1); > > + farg.ll = float64_snan_to_qnan(farg.ll); > > } > > + } else if (unlikely(float64_is_neg(farg.d) && > !float64_is_zero(farg.d))) { > > + /* Square root of a negative nonzero number */ > > + farg.ll = fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSQRT, 1); > > + } else { > > farg.d = float64_sqrt(farg.d, &env->fp_status); > > } > > return farg.ll; > > @@ -974,17 +979,20 @@ uint64_t helper_frsqrte(CPUPPCState *env, uint64_t > arg) > > > > farg.ll = arg; > > > > - if (unlikely(float64_is_neg(farg.d) && !float64_is_zero(farg.d))) { > > - /* Reciprocal square root of a negative nonzero number */ > > - farg.ll = fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSQRT, 1); > > - } else { > > + if (unlikely(float64_is_any_nan(farg.d))) { > > if (unlikely(float64_is_signaling_nan(farg.d))) { > > /* sNaN reciprocal square root */ > > fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSNAN, 1); > > + farg.ll = float64_snan_to_qnan(farg.ll); > > } > > + } else if (unlikely(float64_is_neg(farg.d) && > !float64_is_zero(farg.d))) { > > + /* Reciprocal square root of a negative nonzero number */ > > + farg.ll = fload_invalid_op_excp(env, POWERPC_EXCP_FP_VXSQRT, 1); > > + } else { > > farg.d = float64_sqrt(farg.d, &env->fp_status); > > farg.d = float64_div(float64_one, farg.d, &env->fp_status); > > } > > + > > return farg.ll; > > } > > > > Maciej >