aboutsummaryrefslogtreecommitdiff
path: root/fpu
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2024-11-05 10:09:58 +0000
committerPeter Maydell <peter.maydell@linaro.org>2024-11-05 10:09:58 +0000
commitbc0b360def4d4735c3f30e0a35ae9f49209df37a (patch)
treed8067424bc5f3372cbb52da6f8685ce410b49b68 /fpu
parentba6558461cb0280ad861b376cbfff4680be82570 (diff)
softfloat: Remove fallback rule from pickNaN()
Now that all targets have been converted to explicitly set a NaN propagation rule, we can remove the set of target ifdefs (which now list every target) and clean up the references to fallback behaviour for float_2nan_prop_none. The "default" case in the switch will catch any remaining places where status->float_2nan_prop_rule was not set by the target. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20241025141254.2141506-22-peter.maydell@linaro.org
Diffstat (limited to 'fpu')
-rw-r--r--fpu/softfloat-specialize.c.inc23
1 files changed, 3 insertions, 20 deletions
diff --git a/fpu/softfloat-specialize.c.inc b/fpu/softfloat-specialize.c.inc
index 254bbd6716..b5a3208050 100644
--- a/fpu/softfloat-specialize.c.inc
+++ b/fpu/softfloat-specialize.c.inc
@@ -390,32 +390,15 @@ bool float32_is_signaling_nan(float32 a_, float_status *status)
static int pickNaN(FloatClass a_cls, FloatClass b_cls,
bool aIsLargerSignificand, float_status *status)
{
- Float2NaNPropRule rule = status->float_2nan_prop_rule;
-
/*
* We guarantee not to require the target to tell us how to
* pick a NaN if we're always returning the default NaN.
+ * But if we're not in default-NaN mode then the target must
+ * specify via set_float_2nan_prop_rule().
*/
assert(!status->default_nan_mode);
- if (rule == float_2nan_prop_none) {
- /* target didn't set the rule: fall back to old ifdef choices */
-#if defined(TARGET_AVR) || defined(TARGET_HEXAGON) \
- || defined(TARGET_RISCV) || defined(TARGET_SH4) \
- || defined(TARGET_TRICORE) || defined(TARGET_ARM) || defined(TARGET_MIPS) \
- || defined(TARGET_LOONGARCH64) || defined(TARGET_HPPA) \
- || defined(TARGET_S390X) || defined(TARGET_PPC) || defined(TARGET_M68K) \
- || defined(TARGET_SPARC) || defined(TARGET_XTENSA) \
- || defined(TARGET_I386) || defined(TARGET_ALPHA) \
- || defined(TARGET_MICROBLAZE) || defined(TARGET_OPENRISC) \
- || defined(TARGET_RX)
- g_assert_not_reached();
-#else
- rule = float_2nan_prop_x87;
-#endif
- }
-
- switch (rule) {
+ switch (status->float_2nan_prop_rule) {
case float_2nan_prop_s_ab:
if (is_snan(a_cls)) {
return 0;