[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 24/27] fpu/softfloat: Specialize on snan_bit_
From: |
Richard Henderson |
Subject: |
Re: [Qemu-devel] [PATCH v2 24/27] fpu/softfloat: Specialize on snan_bit_is_one |
Date: |
Mon, 14 May 2018 09:54:33 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 |
On 05/14/2018 07:44 AM, Peter Maydell wrote:
> On 12 May 2018 at 01:43, Richard Henderson <address@hidden> wrote:
>> Only MIPS requires snan_bit_is_one to be variable. While we are
>> specializing softfloat behaviour, allow other targets to eliminate
>> this runtime check.
>>
>> Cc: Aurelien Jarno <address@hidden>
>> Cc: Yongbok Kim <address@hidden>
>> Cc: David Gibson <address@hidden>
>> Cc: Alexander Graf <address@hidden>
>> Cc: Guan Xuetao <address@hidden>
>> Signed-off-by: Richard Henderson <address@hidden>
>> ---
>> fpu/softfloat-specialize.h | 68 ++++++++++++++++++++++-------------
>> include/fpu/softfloat-types.h | 1 +
>> include/fpu/softfloat.h | 4 ---
>> target/mips/cpu.h | 4 +--
>> target/hppa/cpu.c | 1 -
>> target/mips/translate_init.c | 4 +--
>> target/ppc/fpu_helper.c | 1 -
>> target/sh4/cpu.c | 1 -
>> target/unicore32/cpu.c | 2 --
>> 9 files changed, 48 insertions(+), 38 deletions(-)
>
>
>> diff --git a/include/fpu/softfloat.h b/include/fpu/softfloat.h
>> index 69f4dbc4db..e72cc9525d 100644
>> --- a/include/fpu/softfloat.h
>> +++ b/include/fpu/softfloat.h
>> @@ -125,10 +125,6 @@ static inline void set_default_nan_mode(flag val,
>> float_status *status)
>> {
>> status->default_nan_mode = val;
>> }
>> -static inline void set_snan_bit_is_one(flag val, float_status *status)
>> -{
>> - status->snan_bit_is_one = val;
>> -}
>> static inline int get_float_detect_tininess(float_status *status)
>> {
>> return status->float_detect_tininess;
>> diff --git a/target/mips/cpu.h b/target/mips/cpu.h
>> index cfe1735e0e..2abce47ea3 100644
>> --- a/target/mips/cpu.h
>> +++ b/target/mips/cpu.h
>> @@ -755,8 +755,8 @@ target_ulong exception_resume_pc (CPUMIPSState *env);
>>
>> static inline void restore_snan_bit_mode(CPUMIPSState *env)
>> {
>> - set_snan_bit_is_one((env->active_fpu.fcr31 & (1 << FCR31_NAN2008)) == 0,
>> - &env->active_fpu.fp_status);
>> + env->active_fpu.fp_status.snan_bit_is_one
>> + = (env->active_fpu.fcr31 & (1 << FCR31_NAN2008)) == 0;
>> }
>>
>> static inline void cpu_get_tb_cpu_state(CPUMIPSState *env, target_ulong *pc,
>>
>> diff --git a/target/mips/translate_init.c b/target/mips/translate_init.c
>> index c7ba6ee5f9..5e40d6a198 100644
>> --- a/target/mips/translate_init.c
>> +++ b/target/mips/translate_init.c
>> @@ -878,6 +878,6 @@ static void msa_reset(CPUMIPSState *env)
>> /* clear float_status nan mode */
>> set_default_nan_mode(0, &env->active_tc.msa_fp_status);
>>
>> - /* set proper signanling bit meaning ("1" means "quiet") */
>> - set_snan_bit_is_one(0, &env->active_tc.msa_fp_status);
>> + /* set proper signaling bit meaning ("1" means "quiet") */
>> + env->active_tc.msa_fp_status.snan_bit_is_one = 0;
>> }
>
> Why remove the set_snan_bit_is_one() helper and require mips
> to manually look inside the float_status struct?
What I really wanted was to #ifdef TARGET_MIPS around the function and the
field, but it's poisoned at that point. But you're right, I could have left
the function.
r~
- Re: [Qemu-devel] [PATCH v2 18/27] target/m68k: Use floatX_silence_nan when we have already checked for SNaN, (continued)
- [Qemu-devel] [PATCH v2 20/27] target/riscv: Remove floatX_maybe_silence_nan from conversions, Richard Henderson, 2018/05/11
- [Qemu-devel] [PATCH v2 22/27] fpu/softfloat: Use float*_silence_nan in propagateFloat*NaN, Richard Henderson, 2018/05/11
- [Qemu-devel] [PATCH v2 21/27] target/s390x: Remove floatX_maybe_silence_nan from conversions, Richard Henderson, 2018/05/11
- [Qemu-devel] [PATCH v2 23/27] fpu/softfloat: Remove floatX_maybe_silence_nan, Richard Henderson, 2018/05/11
- [Qemu-devel] [PATCH v2 24/27] fpu/softfloat: Specialize on snan_bit_is_one, Richard Henderson, 2018/05/11
- [Qemu-devel] [PATCH v2 25/27] fpu/softfloat: Make is_nan et al available to softfloat-specialize.h, Richard Henderson, 2018/05/11
- [Qemu-devel] [PATCH v2 26/27] fpu/softfloat: Pass FloatClass to pickNaN, Richard Henderson, 2018/05/11
- [Qemu-devel] [PATCH v2 27/27] fpu/softfloat: Pass FloatClass to pickNaNMulAdd, Richard Henderson, 2018/05/11
- Re: [Qemu-devel] [PATCH v2 00/27] softfloat patch roundup, Peter Maydell, 2018/05/14