Message ID | 20180510140934.22855-1-peter.maydell@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 10 May 2018 at 15:09, Peter Maydell <peter.maydell@linaro.org> wrote: > In commit d81ce0ef2c4f105 we added an extra float_status field > fp_status_fp16 for Arm, but forgot to initialize it correctly > by setting it to float_tininess_before_rounding. This currently > will only cause problems for the new V8_FP16 feature, since the > float-to-float conversion code doesn't use it yet. The effect > would be that we failed to set the Underflow IEEE exception flag > in all the cases where we should. Oops, I forgot to fix the patch summary line from my quick-hack commit. Something like: target/arm: Fix tininess detection for fp16 arithmetic would be a bit clearer. thanks -- PMM
On 05/10/2018 07:09 AM, Peter Maydell wrote: > In commit d81ce0ef2c4f105 we added an extra float_status field > fp_status_fp16 for Arm, but forgot to initialize it correctly > by setting it to float_tininess_before_rounding. This currently > will only cause problems for the new V8_FP16 feature, since the > float-to-float conversion code doesn't use it yet. The effect > would be that we failed to set the Underflow IEEE exception flag > in all the cases where we should. > > Add the missing initialization. > > Fixes: d81ce0ef2c4f105 > Cc: qemu-stable@nongnu.org > Signed-off-by: Peter Maydell <peter.maydell@linaro.org> > --- > target/arm/cpu.c | 2 ++ > 1 file changed, 2 insertions(+) Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
Peter Maydell <peter.maydell@linaro.org> writes: > In commit d81ce0ef2c4f105 we added an extra float_status field > fp_status_fp16 for Arm, but forgot to initialize it correctly > by setting it to float_tininess_before_rounding. This currently > will only cause problems for the new V8_FP16 feature, since the > float-to-float conversion code doesn't use it yet. The effect > would be that we failed to set the Underflow IEEE exception flag > in all the cases where we should. > > Add the missing initialization. > > Fixes: d81ce0ef2c4f105 > Cc: qemu-stable@nongnu.org > Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> > --- > target/arm/cpu.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/target/arm/cpu.c b/target/arm/cpu.c > index d175c5e94f..7939c6b8ae 100644 > --- a/target/arm/cpu.c > +++ b/target/arm/cpu.c > @@ -324,6 +324,8 @@ static void arm_cpu_reset(CPUState *s) > &env->vfp.fp_status); > set_float_detect_tininess(float_tininess_before_rounding, > &env->vfp.standard_fp_status); > + set_float_detect_tininess(float_tininess_before_rounding, > + &env->vfp.fp_status_f16); > #ifndef CONFIG_USER_ONLY > if (kvm_enabled()) { > kvm_arm_reset_vcpu(cpu); -- Alex Bennée
diff --git a/target/arm/cpu.c b/target/arm/cpu.c index d175c5e94f..7939c6b8ae 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -324,6 +324,8 @@ static void arm_cpu_reset(CPUState *s) &env->vfp.fp_status); set_float_detect_tininess(float_tininess_before_rounding, &env->vfp.standard_fp_status); + set_float_detect_tininess(float_tininess_before_rounding, + &env->vfp.fp_status_f16); #ifndef CONFIG_USER_ONLY if (kvm_enabled()) { kvm_arm_reset_vcpu(cpu);
In commit d81ce0ef2c4f105 we added an extra float_status field fp_status_fp16 for Arm, but forgot to initialize it correctly by setting it to float_tininess_before_rounding. This currently will only cause problems for the new V8_FP16 feature, since the float-to-float conversion code doesn't use it yet. The effect would be that we failed to set the Underflow IEEE exception flag in all the cases where we should. Add the missing initialization. Fixes: d81ce0ef2c4f105 Cc: qemu-stable@nongnu.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- target/arm/cpu.c | 2 ++ 1 file changed, 2 insertions(+)