Message ID | 20190827020013.27154-1-richard.henderson@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | target/ppc: Set float_tininess_before_rounding at cpu reset | expand |
On Mon, Aug 26, 2019 at 07:00:13PM -0700, Richard Henderson wrote: > As defined in Power 3.0 section 4.4.4 "Underflow Exception", > a tiny result is detected before rounding. > > Fixes: https://bugs.launchpad.net/qemu/+bug/1841491 > Reported-by: Paul Clarke <pc@us.ibm.com> > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Applied to ppc-for-4.2, thanks. > --- > target/ppc/translate_init.inc.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/target/ppc/translate_init.inc.c b/target/ppc/translate_init.inc.c > index 4a21ed7289..023138c2f9 100644 > --- a/target/ppc/translate_init.inc.c > +++ b/target/ppc/translate_init.inc.c > @@ -10461,6 +10461,10 @@ static void ppc_cpu_reset(CPUState *s) > s->exception_index = POWERPC_EXCP_NONE; > env->error_code = 0; > > + /* tininess for underflow is detected before rounding */ > + set_float_detect_tininess(float_tininess_before_rounding, > + &env->fp_status); > + > for (i = 0; i < ARRAY_SIZE(env->spr_cb); i++) { > ppc_spr_t *spr = &env->spr_cb[i]; > -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson
On 8/26/19 9:00 PM, Richard Henderson wrote: > As defined in Power 3.0 section 4.4.4 "Underflow Exception", > a tiny result is detected before rounding. Responded in the bug: https://bugs.launchpad.net/qemu/+bug/1841491/comments/3 In my testing, this works for "double", but not "float". > Fixes: https://bugs.launchpad.net/qemu/+bug/1841491 > Reported-by: Paul Clarke <pc@us.ibm.com> > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > --- > target/ppc/translate_init.inc.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/target/ppc/translate_init.inc.c b/target/ppc/translate_init.inc.c > index 4a21ed7289..023138c2f9 100644 > --- a/target/ppc/translate_init.inc.c > +++ b/target/ppc/translate_init.inc.c > @@ -10461,6 +10461,10 @@ static void ppc_cpu_reset(CPUState *s) > s->exception_index = POWERPC_EXCP_NONE; > env->error_code = 0; > > + /* tininess for underflow is detected before rounding */ > + set_float_detect_tininess(float_tininess_before_rounding, > + &env->fp_status); > + > for (i = 0; i < ARRAY_SIZE(env->spr_cb); i++) { > ppc_spr_t *spr = &env->spr_cb[i]; PC
diff --git a/target/ppc/translate_init.inc.c b/target/ppc/translate_init.inc.c index 4a21ed7289..023138c2f9 100644 --- a/target/ppc/translate_init.inc.c +++ b/target/ppc/translate_init.inc.c @@ -10461,6 +10461,10 @@ static void ppc_cpu_reset(CPUState *s) s->exception_index = POWERPC_EXCP_NONE; env->error_code = 0; + /* tininess for underflow is detected before rounding */ + set_float_detect_tininess(float_tininess_before_rounding, + &env->fp_status); + for (i = 0; i < ARRAY_SIZE(env->spr_cb); i++) { ppc_spr_t *spr = &env->spr_cb[i];
As defined in Power 3.0 section 4.4.4 "Underflow Exception", a tiny result is detected before rounding. Fixes: https://bugs.launchpad.net/qemu/+bug/1841491 Reported-by: Paul Clarke <pc@us.ibm.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> --- target/ppc/translate_init.inc.c | 4 ++++ 1 file changed, 4 insertions(+) -- 2.17.1