On Thu, May 21, 2026 at 07:40:16AM +0800, Anton Blanchard wrote:
> Use float_raise instead of open coding it.
>
> Signed-off-by: Anton Blanchard <[email protected]>
Reviewed-by: Chao Liu <[email protected]>
> ---
> target/riscv/vector_helper.c | 27 +++++++++++++--------------
> 1 file changed, 13 insertions(+), 14 deletions(-)
>
> diff --git a/target/riscv/vector_helper.c b/target/riscv/vector_helper.c
> index c4e150635e..72ea431746 100644
> --- a/target/riscv/vector_helper.c
> +++ b/target/riscv/vector_helper.c
> @@ -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 ((s->float_rounding_mode == float_round_to_zero) ||
> ((s->float_rounding_mode == float_round_down) && !sign) ||
> @@ -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);
> }
>
> --
> 2.34.1
>
>