Add further _BitInt <-> floating point tests [PR102989]
commitc62c82dc98dcb7420498b7114bf4cd2ec1a81405
authorJakub Jelinek <jakub@redhat.com>
Wed, 6 Sep 2023 15:47:49 +0000 (6 17:47 +0200)
committerJakub Jelinek <jakub@redhat.com>
Wed, 6 Sep 2023 15:47:49 +0000 (6 17:47 +0200)
treebe919564c1757d272bf4471baaab8f1ec412b728
parentf6e0ec5696ec5f52baed71fe23f978bcef80d458
Add further _BitInt <-> floating point tests [PR102989]

Here are just the testsuite additions from libgcc _BitInt patch review.

On Fri, Sep 01, 2023 at 09:48:22PM +0000, Joseph Myers wrote:
> 1. Test overflowing conversions to integers (including from inf or NaN)
> raise FE_INVALID.  (Note: it's not specified in the standard whether
> inexact conversions to integers raise FE_INEXACT or not, so testing that
> seems less important.)

This is in gcc.dg/bitint-28.c (FE_INVALID) and gcc.dg/bitint-29.c
(FE_INEXACT) for binary and dfp/bitint-8.c new tests.

> 2. Test conversions from integers to floating point raise FE_INEXACT when
> inexact, together with FE_OVERFLOW when overflowing (while exact
> conversions don't raise exceptions).

This is in gcc.dg/bitint-30.c new test.

> 3. Test conversions from integers to floating point respect the rounding
> mode.

This is in gcc.dg/bitint-31.c new test.

> 4. Test converting floating-point values in the range (-1.0, 0.0] to both
> unsigned and signed _BitInt; I didn't see such tests for binary floating
> types, only for decimal types, and the decimal tests didn't include tests
> of negative zero itself as the value converted to _BitInt.

This is done as incremental changes to existing tests.

> 5. Test conversions of noncanonical BID zero to integers (these tests
> would be specific to BID).  See below for a bug in this area.

This is done in dfp/bitint-7.c test.

2023-09-06  Jakub Jelinek  <jakub@redhat.com>

PR c/102989
* gcc.dg/torture/bitint-21.c (main): Add tests for -1 for signed only,
-1 + epsilon, another (-1, 0) range value and -0.
* gcc.dg/torture/bitint-22.c (main): Likewise.
* gcc.dg/bitint-28.c: New test.
* gcc.dg/bitint-29.c: New test.
* gcc.dg/bitint-30.c: New test.
* gcc.dg/bitint-31.c: New test.
* gcc.dg/dfp/bitint-1.c (main): Add tests for -1 for signed only,
-1 + epsilon and -0.
* gcc.dg/dfp/bitint-2.c (main): Likewise.
* gcc.dg/dfp/bitint-3.c (main): Likewise.
* gcc.dg/dfp/bitint-7.c: New test.
* gcc.dg/dfp/bitint-8.c: New test.
gcc/testsuite/gcc.dg/bitint-28.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/bitint-29.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/bitint-30.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/bitint-31.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/dfp/bitint-1.c
gcc/testsuite/gcc.dg/dfp/bitint-2.c
gcc/testsuite/gcc.dg/dfp/bitint-3.c
gcc/testsuite/gcc.dg/dfp/bitint-7.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/dfp/bitint-8.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/torture/bitint-21.c
gcc/testsuite/gcc.dg/torture/bitint-22.c