[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 45/76] target/arm: Implement FPCR.AH semantics for scalar FMI
From: |
Peter Maydell |
Subject: |
Re: [PATCH 45/76] target/arm: Implement FPCR.AH semantics for scalar FMIN/FMAX |
Date: |
Fri, 31 Jan 2025 13:09:19 +0000 |
On Sun, 26 Jan 2025 at 12:44, Richard Henderson
<richard.henderson@linaro.org> wrote:
>
> On 1/24/25 08:28, Peter Maydell wrote:
> > diff --git a/target/arm/tcg/helper-a64.c b/target/arm/tcg/helper-a64.c
> > index 05036089dd7..406d76e1129 100644
> > --- a/target/arm/tcg/helper-a64.c
> > +++ b/target/arm/tcg/helper-a64.c
> > @@ -399,6 +399,42 @@ float32 HELPER(fcvtx_f64_to_f32)(float64 a,
> > float_status *fpst)
> > return r;
> > }
> >
> > +/*
> > + * AH=1 min/max have some odd special cases:
> > + * comparing two zeroes (even of different sign), (NaN, anything),
> > + * or (anything, NaN) should return the second argument (possibly
> > + * squashed to zero).
> > + * Also, denormal outputs are not squashed to zero regardless of FZ or
> > FZ16.
> > + */
> > +#define AH_MINMAX_HELPER(NAME, CTYPE, FLOATTYPE, MINMAX) \
> > + CTYPE HELPER(NAME)(CTYPE a, CTYPE b, float_status *fpst) \
> > + { \
> > + bool save; \
> > + CTYPE r; \
> > + a = FLOATTYPE ## _squash_input_denormal(a, fpst); \
> > + b = FLOATTYPE ## _squash_input_denormal(b, fpst); \
> > + if (FLOATTYPE ## _is_zero(a) && FLOATTYPE ## _is_zero(b)) { \
>
> The comment says "even of different sign", the pseudocode explicitly checks
> different
> sign. But of course if they're the same sign a and b are indistinguishable.
> Perhaps
> slightly different wording?
Sure. I changed from "(even of different sign)" to
"(regardless of sign)". Let me know if you have a
more specific tweak you'd like.
thanks
-- PMM
- Re: [PATCH 06/76] target/arm: Define new fp_status_a32 and fp_status_a64, (continued)
- [PATCH 25/76] target/arm: Remove redundant advsimd float16 helpers, Peter Maydell, 2025/01/24
- [PATCH 33/76] target/arm: Use FPST_FPCR_AH for FRECPE, FRECPS, FRECPX, FRSQRTE, FRSQRTS, Peter Maydell, 2025/01/24
- [PATCH 36/76] target/arm: Add FPCR.NEP to TBFLAGS, Peter Maydell, 2025/01/24
- [PATCH 45/76] target/arm: Implement FPCR.AH semantics for scalar FMIN/FMAX, Peter Maydell, 2025/01/24
- [PATCH 27/76] target/arm: Define FPCR AH, FIZ, NEP bits, Peter Maydell, 2025/01/24
- [PATCH 29/76] target/arm: Adjust FP behaviour for FPCR.AH = 1, Peter Maydell, 2025/01/24
- [PATCH 31/76] target/arm: Add FPCR.AH to tbflags, Peter Maydell, 2025/01/24
- [PATCH 32/76] target/arm: Set up float_status to use for FPCR.AH=1 behaviour, Peter Maydell, 2025/01/24