Commit 04281c6e7b for qemu.org
commit 04281c6e7b5198969bfa978e2cc921fb3bb0d75e
Author: Richard Henderson <richard.henderson@linaro.org>
Date: Fri May 1 20:36:14 2026 +1000
fpu: Use get_default_nan_mode everywhere
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc
index 6a67e6af2c..bef47a932d 100644
--- a/fpu/softfloat-parts.c.inc
+++ b/fpu/softfloat-parts.c.inc
@@ -20,14 +20,14 @@ FloatPartsN partsN(return_nan)(const FloatPartsN *a, float_status *s)
switch (a->cls) {
case float_class_snan:
float_raise(float_flag_invalid | float_flag_invalid_snan, s);
- if (s->default_nan_mode) {
+ if (get_default_nan_mode(s)) {
return partsN(default_nan)(s);
} else {
return partsN(silence_nan)(a, s);
}
break;
case float_class_qnan:
- if (s->default_nan_mode) {
+ if (get_default_nan_mode(s)) {
return partsN(default_nan)(s);
}
break;
@@ -49,7 +49,7 @@ FloatPartsN partsN(pick_nan)(const FloatPartsN *a, const FloatPartsN *b,
have_snan = true;
}
- if (s->default_nan_mode) {
+ if (get_default_nan_mode(s)) {
return partsN(default_nan)(s);
}
@@ -134,7 +134,7 @@ static FloatPartsN partsN(pick_nan_muladd)(const FloatPartsN *a,
float_raise(float_flag_invalid | float_flag_invalid_imz, s);
}
- if (s->default_nan_mode) {
+ if (get_default_nan_mode(s)) {
/*
* We guarantee not to require the target to tell us how to
* pick a NaN if we're always returning the default NaN.
diff --git a/target/arm/tcg/helper-a64.c b/target/arm/tcg/helper-a64.c
index dd1f9c6dc6..6505ee3c94 100644
--- a/target/arm/tcg/helper-a64.c
+++ b/target/arm/tcg/helper-a64.c
@@ -273,11 +273,11 @@ uint32_t HELPER(frecpx_f16)(uint32_t a, float_status *fpst)
float16 nan = a;
if (float16_is_signaling_nan(a, fpst)) {
float_raise(float_flag_invalid, fpst);
- if (!fpst->default_nan_mode) {
+ if (!get_default_nan_mode(fpst)) {
nan = float16_silence_nan(a, fpst);
}
}
- if (fpst->default_nan_mode) {
+ if (get_default_nan_mode(fpst)) {
nan = float16_default_nan(fpst);
}
return nan;
@@ -305,11 +305,11 @@ float32 HELPER(frecpx_f32)(float32 a, float_status *fpst)
float32 nan = a;
if (float32_is_signaling_nan(a, fpst)) {
float_raise(float_flag_invalid, fpst);
- if (!fpst->default_nan_mode) {
+ if (!get_default_nan_mode(fpst)) {
nan = float32_silence_nan(a, fpst);
}
}
- if (fpst->default_nan_mode) {
+ if (get_default_nan_mode(fpst)) {
nan = float32_default_nan(fpst);
}
return nan;
@@ -337,11 +337,11 @@ float64 HELPER(frecpx_f64)(float64 a, float_status *fpst)
float64 nan = a;
if (float64_is_signaling_nan(a, fpst)) {
float_raise(float_flag_invalid, fpst);
- if (!fpst->default_nan_mode) {
+ if (!get_default_nan_mode(fpst)) {
nan = float64_silence_nan(a, fpst);
}
}
- if (fpst->default_nan_mode) {
+ if (get_default_nan_mode(fpst)) {
nan = float64_default_nan(fpst);
}
return nan;
diff --git a/target/arm/tcg/vfp_helper.c b/target/arm/tcg/vfp_helper.c
index 495ce8a329..8d3f6e3a2e 100644
--- a/target/arm/tcg/vfp_helper.c
+++ b/target/arm/tcg/vfp_helper.c
@@ -690,11 +690,11 @@ uint32_t HELPER(recpe_f16)(uint32_t input, float_status *fpst)
float16 nan = f16;
if (float16_is_signaling_nan(f16, fpst)) {
float_raise(float_flag_invalid, fpst);
- if (!fpst->default_nan_mode) {
+ if (!get_default_nan_mode(fpst)) {
nan = float16_silence_nan(f16, fpst);
}
}
- if (fpst->default_nan_mode) {
+ if (get_default_nan_mode(fpst)) {
nan = float16_default_nan(fpst);
}
return nan;
@@ -743,11 +743,11 @@ static float32 do_recpe_f32(float32 input, float_status *fpst, bool rpres)
float32 nan = f32;
if (float32_is_signaling_nan(f32, fpst)) {
float_raise(float_flag_invalid, fpst);
- if (!fpst->default_nan_mode) {
+ if (!get_default_nan_mode(fpst)) {
nan = float32_silence_nan(f32, fpst);
}
}
- if (fpst->default_nan_mode) {
+ if (get_default_nan_mode(fpst)) {
nan = float32_default_nan(fpst);
}
return nan;
@@ -802,11 +802,11 @@ float64 HELPER(recpe_f64)(float64 input, float_status *fpst)
float64 nan = f64;
if (float64_is_signaling_nan(f64, fpst)) {
float_raise(float_flag_invalid, fpst);
- if (!fpst->default_nan_mode) {
+ if (!get_default_nan_mode(fpst)) {
nan = float64_silence_nan(f64, fpst);
}
}
- if (fpst->default_nan_mode) {
+ if (get_default_nan_mode(fpst)) {
nan = float64_default_nan(fpst);
}
return nan;
@@ -945,11 +945,11 @@ uint32_t HELPER(rsqrte_f16)(uint32_t input, float_status *s)
float16 nan = f16;
if (float16_is_signaling_nan(f16, s)) {
float_raise(float_flag_invalid, s);
- if (!s->default_nan_mode) {
+ if (!get_default_nan_mode(s)) {
nan = float16_silence_nan(f16, s);
}
}
- if (s->default_nan_mode) {
+ if (get_default_nan_mode(s)) {
nan = float16_default_nan(s);
}
return nan;
@@ -994,11 +994,11 @@ static float32 do_rsqrte_f32(float32 input, float_status *s, bool rpres)
float32 nan = f32;
if (float32_is_signaling_nan(f32, s)) {
float_raise(float_flag_invalid, s);
- if (!s->default_nan_mode) {
+ if (!get_default_nan_mode(s)) {
nan = float32_silence_nan(f32, s);
}
}
- if (s->default_nan_mode) {
+ if (get_default_nan_mode(s)) {
nan = float32_default_nan(s);
}
return nan;
@@ -1056,11 +1056,11 @@ float64 HELPER(rsqrte_f64)(float64 input, float_status *s)
float64 nan = f64;
if (float64_is_signaling_nan(f64, s)) {
float_raise(float_flag_invalid, s);
- if (!s->default_nan_mode) {
+ if (!get_default_nan_mode(s)) {
nan = float64_silence_nan(f64, s);
}
}
- if (s->default_nan_mode) {
+ if (get_default_nan_mode(s)) {
nan = float64_default_nan(s);
}
return nan;
diff --git a/target/m68k/softfloat.c b/target/m68k/softfloat.c
index f5d683bcc5..99c2dcbe8c 100644
--- a/target/m68k/softfloat.c
+++ b/target/m68k/softfloat.c
@@ -35,7 +35,7 @@ static floatx80 propagateFloatx80NaNOneArg(floatx80 a, float_status *status)
a = floatx80_silence_nan(a, status);
}
- if (status->default_nan_mode) {
+ if (get_default_nan_mode(status)) {
return floatx80_default_nan(status);
}