Commit ad6c7552a6 for qemu.org
commit ad6c7552a63632fdfba04936a2222f376e22195b
Author: Anton Blanchard <antonb@tenstorrent.com>
Date: Thu May 21 11:08:24 2026 +0000
target/riscv: Use float_raise
Use float_raise instead of open coding it.
Signed-off-by: Anton Blanchard <antonb@tenstorrent.com>
Reviewed-by: Chao Liu <chao.liu.zevorn@gmail.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Max Chou <max.chou@sifive.com>
Message-ID: <20260521110824.1091323-1-antonb@tenstorrent.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
diff --git a/target/riscv/vector_helper.c b/target/riscv/vector_helper.c
index 12788b4b74..954a85c03a 100644
--- a/target/riscv/vector_helper.c
+++ b/target/riscv/vector_helper.c
@@ -4084,7 +4084,7 @@ static bfloat16 frsqrt7_h_bf16(bfloat16 f, float_status *s)
(bfloat16_is_infinity(f) && sign) ||
(bfloat16_is_normal(f) && sign) ||
(bfloat16_is_zero_or_denormal(f) && !bfloat16_is_zero(f) && sign)) {
- s->float_exception_flags |= float_flag_invalid;
+ float_raise(float_flag_invalid, s);
return bfloat16_default_nan(s);
}
@@ -4095,7 +4095,7 @@ static bfloat16 frsqrt7_h_bf16(bfloat16 f, float_status *s)
/* frsqrt7(+-0) = +-inf */
if (bfloat16_is_zero(f)) {
- s->float_exception_flags |= float_flag_divbyzero;
+ float_raise(float_flag_divbyzero, s);
return bfloat16_set_sign(bfloat16_infinity, sign);
}
@@ -4124,7 +4124,7 @@ static float16 frsqrt7_h(float16 f, float_status *s)
(float16_is_infinity(f) && sign) ||
(float16_is_normal(f) && sign) ||
(float16_is_zero_or_denormal(f) && !float16_is_zero(f) && sign)) {
- s->float_exception_flags |= float_flag_invalid;
+ float_raise(float_flag_invalid, s);
return float16_default_nan(s);
}
@@ -4135,7 +4135,7 @@ static float16 frsqrt7_h(float16 f, float_status *s)
/* frsqrt7(+-0) = +-inf */
if (float16_is_zero(f)) {
- s->float_exception_flags |= float_flag_divbyzero;
+ float_raise(float_flag_divbyzero, s);
return float16_set_sign(float16_infinity, sign);
}
@@ -4164,7 +4164,7 @@ static float32 frsqrt7_s(float32 f, float_status *s)
(float32_is_infinity(f) && sign) ||
(float32_is_normal(f) && sign) ||
(float32_is_zero_or_denormal(f) && !float32_is_zero(f) && sign)) {
- s->float_exception_flags |= float_flag_invalid;
+ float_raise(float_flag_invalid, s);
return float32_default_nan(s);
}
@@ -4175,7 +4175,7 @@ static float32 frsqrt7_s(float32 f, float_status *s)
/* frsqrt7(+-0) = +-inf */
if (float32_is_zero(f)) {
- s->float_exception_flags |= float_flag_divbyzero;
+ float_raise(float_flag_divbyzero, s);
return float32_set_sign(float32_infinity, sign);
}
@@ -4204,7 +4204,7 @@ static float64 frsqrt7_d(float64 f, float_status *s)
(float64_is_infinity(f) && sign) ||
(float64_is_normal(f) && sign) ||
(float64_is_zero_or_denormal(f) && !float64_is_zero(f) && sign)) {
- s->float_exception_flags |= float_flag_invalid;
+ float_raise(float_flag_invalid, s);
return float64_default_nan(s);
}
@@ -4215,7 +4215,7 @@ static float64 frsqrt7_d(float64 f, float_status *s)
/* frsqrt7(+-0) = +-inf */
if (float64_is_zero(f)) {
- s->float_exception_flags |= float_flag_divbyzero;
+ float_raise(float_flag_divbyzero, s);
return float64_set_sign(float64_infinity, sign);
}
@@ -4285,8 +4285,7 @@ static uint64_t frec7(uint64_t f, int exp_size, int frac_size,
* Overflow to inf or max value of same sign,
* depending on sign and rounding mode.
*/
- s->float_exception_flags |= (float_flag_inexact |
- float_flag_overflow);
+ float_raise(float_flag_inexact | float_flag_overflow, s);
if ((get_float_rounding_mode(s) == float_round_to_zero) ||
((get_float_rounding_mode(s) == float_round_down) && !sign) ||
@@ -4338,13 +4337,13 @@ static bfloat16 frec7_h_bf16(bfloat16 f, float_status *s)
/* frec7(+-0) = +-inf */
if (bfloat16_is_zero(f)) {
- s->float_exception_flags |= float_flag_divbyzero;
+ float_raise(float_flag_divbyzero, s);
return bfloat16_set_sign(bfloat16_infinity, sign);
}
/* frec7(sNaN) = canonical NaN */
if (bfloat16_is_signaling_nan(f, s)) {
- s->float_exception_flags |= float_flag_invalid;
+ float_raise(float_flag_invalid, s);
return bfloat16_default_nan(s);
}
@@ -4370,13 +4369,13 @@ static float16 frec7_h(float16 f, float_status *s)
/* frec7(+-0) = +-inf */
if (float16_is_zero(f)) {
- s->float_exception_flags |= float_flag_divbyzero;
+ float_raise(float_flag_divbyzero, s);
return float16_set_sign(float16_infinity, sign);
}
/* frec7(sNaN) = canonical NaN */
if (float16_is_signaling_nan(f, s)) {
- s->float_exception_flags |= float_flag_invalid;
+ float_raise(float_flag_invalid, s);
return float16_default_nan(s);
}
@@ -4402,13 +4401,13 @@ static float32 frec7_s(float32 f, float_status *s)
/* frec7(+-0) = +-inf */
if (float32_is_zero(f)) {
- s->float_exception_flags |= float_flag_divbyzero;
+ float_raise(float_flag_divbyzero, s);
return float32_set_sign(float32_infinity, sign);
}
/* frec7(sNaN) = canonical NaN */
if (float32_is_signaling_nan(f, s)) {
- s->float_exception_flags |= float_flag_invalid;
+ float_raise(float_flag_invalid, s);
return float32_default_nan(s);
}
@@ -4434,13 +4433,13 @@ static float64 frec7_d(float64 f, float_status *s)
/* frec7(+-0) = +-inf */
if (float64_is_zero(f)) {
- s->float_exception_flags |= float_flag_divbyzero;
+ float_raise(float_flag_divbyzero, s);
return float64_set_sign(float64_infinity, sign);
}
/* frec7(sNaN) = canonical NaN */
if (float64_is_signaling_nan(f, s)) {
- s->float_exception_flags |= float_flag_invalid;
+ float_raise(float_flag_invalid, s);
return float64_default_nan(s);
}