On Sun, Sep 18, 2022 at 7:40 PM Georg Johann Lay <a...@gjlay.de> wrote:
>
> Hello,
>
> this patch fixed PR target/99184 which incorrectly rounded during 64-bit
> (long) double to 16-bit and 32-bit integers.
>
> The patch just removes the respective roundings from
> libf7-asm.sx::to_integer and ::to_unsigned.  Luckily, LibF7 does nowhere
> use respective functions internally, the only user is in libf7.c::f7_exp
>
> which reads
>
>    f7_round (qq, qq);
>    int16_t q = f7_get_s16 (qq);
>
> so that f7_get_s16() operates on an already rounded value, and therefore
> this code works unaltered with or without rounding in to_integer.
>
> The patch applies to directory
>
> ./libgcc/config/avr/libf7/
>
> and is the same for all GCC versions v10+.
>
> Please someone with write permissions commit it to trunk and backport to
> v12, v11, and v10 as it is a wrong-code issue.
>
> The patch will fit without problems (except for ChangeLog) because there
> is no traffic on that folder.

Thanks, I've pushed the change.  Please in future try to send patches
that can be applied with git am, thus use git format-patch

Richard.

>
> Thanks, Johann
>
>
> libgcc/config/avr/libf7/
>         PR target/99184
>         Remove rounding from double to [u]int16 and [u]int32 casts.
>
>         * libf7-asm.sx (to_integer, to_unsigned): Don't round 16-bit
>         and 32-bit integers.
>

Reply via email to