[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 34/72] target/loongarch: Use normal float_status in fclass_s and f
From: |
Peter Maydell |
Subject: |
[PULL 34/72] target/loongarch: Use normal float_status in fclass_s and fclass_d helpers |
Date: |
Wed, 11 Dec 2024 16:19:26 +0000 |
In target/loongarch's helper_fclass_s() and helper_fclass_d() we pass
a zero-initialized float_status struct to float32_is_quiet_nan() and
float64_is_quiet_nan(), with the cryptic comment "for
snan_bit_is_one".
This pattern appears to have been copied from target/riscv, where it
is used because the functions there do not have ready access to the
CPU state struct. The comment presumably refers to the fact that the
main reason the is_quiet_nan() functions want the float_state is
because they want to know about the snan_bit_is_one config.
In the loongarch helpers, though, we have the CPU state struct
to hand. Use the usual env->fp_status here. This avoids our needing
to track that we need to update the initializer of the local
float_status structs when the core softfloat code adds new
options for targets to configure their behaviour.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20241202131347.498124-30-peter.maydell@linaro.org
---
target/loongarch/tcg/fpu_helper.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/target/loongarch/tcg/fpu_helper.c
b/target/loongarch/tcg/fpu_helper.c
index 37a48599366..aea5e0fe5e6 100644
--- a/target/loongarch/tcg/fpu_helper.c
+++ b/target/loongarch/tcg/fpu_helper.c
@@ -359,8 +359,7 @@ uint64_t helper_fclass_s(CPULoongArchState *env, uint64_t
fj)
} else if (float32_is_zero_or_denormal(f)) {
return sign ? 1 << 4 : 1 << 8;
} else if (float32_is_any_nan(f)) {
- float_status s = { }; /* for snan_bit_is_one */
- return float32_is_quiet_nan(f, &s) ? 1 << 1 : 1 << 0;
+ return float32_is_quiet_nan(f, &env->fp_status) ? 1 << 1 : 1 << 0;
} else {
return sign ? 1 << 3 : 1 << 7;
}
@@ -378,8 +377,7 @@ uint64_t helper_fclass_d(CPULoongArchState *env, uint64_t
fj)
} else if (float64_is_zero_or_denormal(f)) {
return sign ? 1 << 4 : 1 << 8;
} else if (float64_is_any_nan(f)) {
- float_status s = { }; /* for snan_bit_is_one */
- return float64_is_quiet_nan(f, &s) ? 1 << 1 : 1 << 0;
+ return float64_is_quiet_nan(f, &env->fp_status) ? 1 << 1 : 1 << 0;
} else {
return sign ? 1 << 3 : 1 << 7;
}
--
2.34.1
- [PULL 21/72] tests/fp: Explicitly set 3-NaN propagation rule, (continued)
- [PULL 21/72] tests/fp: Explicitly set 3-NaN propagation rule, Peter Maydell, 2024/12/11
- [PULL 27/72] target/mips: Set Float3NaNPropRule explicitly, Peter Maydell, 2024/12/11
- [PULL 28/72] target/xtensa: Set Float3NaNPropRule explicitly, Peter Maydell, 2024/12/11
- [PULL 30/72] target/hppa: Set Float3NaNPropRule explicitly, Peter Maydell, 2024/12/11
- [PULL 25/72] target/s390x: Set Float3NaNPropRule explicitly, Peter Maydell, 2024/12/11
- [PULL 26/72] target/sparc: Set Float3NaNPropRule explicitly, Peter Maydell, 2024/12/11
- [PULL 29/72] target/i386: Set Float3NaNPropRule explicitly, Peter Maydell, 2024/12/11
- [PULL 33/72] softfloat: Create floatx80 default NaN from parts64_default_nan, Peter Maydell, 2024/12/11
- [PULL 31/72] fpu: Remove use_first_nan field from float_status, Peter Maydell, 2024/12/11
- [PULL 32/72] target/m68k: Don't pass NULL float_status to floatx80_default_nan(), Peter Maydell, 2024/12/11
- [PULL 34/72] target/loongarch: Use normal float_status in fclass_s and fclass_d helpers,
Peter Maydell <=
- [PULL 35/72] target/m68k: In frem helper, initialize local float_status from env->fp_status, Peter Maydell, 2024/12/11
- [PULL 36/72] target/m68k: Init local float_status from env fp_status in gdb get/set reg, Peter Maydell, 2024/12/11
- [PULL 37/72] target/sparc: Initialize local scratch float_status from env->fp_status, Peter Maydell, 2024/12/11
- [PULL 38/72] target/ppc: Use env->fp_status in helper_compute_fprf functions, Peter Maydell, 2024/12/11
- [PULL 39/72] target/arm: Copy entire float_status in is_ebf, Peter Maydell, 2024/12/11
- [PULL 40/72] fpu: Allow runtime choice of default NaN value, Peter Maydell, 2024/12/11
- [PULL 41/72] tests/fp: Set default NaN pattern explicitly, Peter Maydell, 2024/12/11
- [PULL 43/72] target/i386: Set default NaN pattern explicitly, Peter Maydell, 2024/12/11
- [PULL 42/72] target/microblaze: Set default NaN pattern explicitly, Peter Maydell, 2024/12/11
- [PULL 44/72] target/hppa: Set default NaN pattern explicitly, Peter Maydell, 2024/12/11