diff mbox series

manual: Avoid name collision in libm ULP table [BZ #28956]

Message ID 20220405094654.111306-1-thomas.coldrick@codethink.co.uk
State New
Headers show
Series manual: Avoid name collision in libm ULP table [BZ #28956] | expand

Commit Message

Tom Coldrick April 5, 2022, 9:46 a.m. UTC
The 32-bit and 64-bit variants of RISC-V share the same name - "RISC-V"
- when generating the libm error table for the info pages. This
collision, and the way how the table is generated, mean that the values
in the final table for "RISC-V" may be either for the 32- or 64-bit
variant, with no indication as to which.

As an additional side-effect, this makes the build non-reproducible, as
the error table generated is dependent upon the host filesystem
implementation.

To solve this issue, the libm-test-ulps-name files for both variants
have been modified to include their word size, so as to remove the
collision and provide more accurate information in the table.

An alternative proposed was to merge the two variants' ULP values into a
single file, but this would mean that information about error values is
lost, as the two variants are not identical. Some differences are
considerable, notably the values for the exp() function are large.
---
 sysdeps/riscv/rv32/rvd/libm-test-ulps-name | 2 +-
 sysdeps/riscv/rv64/rvd/libm-test-ulps-name | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

Comments

Adhemerval Zanella Netto April 5, 2022, 11:16 a.m. UTC | #1
On 05/04/2022 06:46, Tom Coldrick via Libc-alpha wrote:
> The 32-bit and 64-bit variants of RISC-V share the same name - "RISC-V"
> - when generating the libm error table for the info pages. This
> collision, and the way how the table is generated, mean that the values
> in the final table for "RISC-V" may be either for the 32- or 64-bit
> variant, with no indication as to which.
> 
> As an additional side-effect, this makes the build non-reproducible, as
> the error table generated is dependent upon the host filesystem
> implementation.
> 
> To solve this issue, the libm-test-ulps-name files for both variants
> have been modified to include their word size, so as to remove the
> collision and provide more accurate information in the table.
> 
> An alternative proposed was to merge the two variants' ULP values into a
> single file, but this would mean that information about error values is
> lost, as the two variants are not identical. Some differences are
> considerable, notably the values for the exp() function are large.

Path looks ok, but is there any expectation that RV64 and RV32 hardware
floating-point implementation or compiler generate code to have different
precision? Otherwise it would be simple to just use one ulp tests file.

> ---
>  sysdeps/riscv/rv32/rvd/libm-test-ulps-name | 2 +-
>  sysdeps/riscv/rv64/rvd/libm-test-ulps-name | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/sysdeps/riscv/rv32/rvd/libm-test-ulps-name b/sysdeps/riscv/rv32/rvd/libm-test-ulps-name
> index 827fcdca19..6d2816082e 100644
> --- a/sysdeps/riscv/rv32/rvd/libm-test-ulps-name
> +++ b/sysdeps/riscv/rv32/rvd/libm-test-ulps-name
> @@ -1 +1 @@
> -RISC-V
> +RISC-V 32-bit
> diff --git a/sysdeps/riscv/rv64/rvd/libm-test-ulps-name b/sysdeps/riscv/rv64/rvd/libm-test-ulps-name
> index 827fcdca19..9cb50380df 100644
> --- a/sysdeps/riscv/rv64/rvd/libm-test-ulps-name
> +++ b/sysdeps/riscv/rv64/rvd/libm-test-ulps-name
> @@ -1 +1 @@
> -RISC-V
> +RISC-V 64-bit
Florian Weimer April 5, 2022, 1:29 p.m. UTC | #2
Sorry, why does this say “manual:”?  Shouldn't it be ”math:”?

Thanks,
Florian
Andreas Schwab April 5, 2022, 3:25 p.m. UTC | #3
On Apr 05 2022, Florian Weimer via Libc-alpha wrote:

> Sorry, why does this say “manual:”?  Shouldn't it be ”math:”?

While the file is read by math/gen-libm-test.py, it is only used for
generating the ULPs table in the manual.
Carlos O'Donell April 11, 2022, 3:46 p.m. UTC | #4
On 4/5/22 07:16, Adhemerval Zanella via Libc-alpha wrote:
> 
> 
> On 05/04/2022 06:46, Tom Coldrick via Libc-alpha wrote:
>> The 32-bit and 64-bit variants of RISC-V share the same name - "RISC-V"
>> - when generating the libm error table for the info pages. This
>> collision, and the way how the table is generated, mean that the values
>> in the final table for "RISC-V" may be either for the 32- or 64-bit
>> variant, with no indication as to which.
>>
>> As an additional side-effect, this makes the build non-reproducible, as
>> the error table generated is dependent upon the host filesystem
>> implementation.
>>
>> To solve this issue, the libm-test-ulps-name files for both variants
>> have been modified to include their word size, so as to remove the
>> collision and provide more accurate information in the table.
>>
>> An alternative proposed was to merge the two variants' ULP values into a
>> single file, but this would mean that information about error values is
>> lost, as the two variants are not identical. Some differences are
>> considerable, notably the values for the exp() function are large.
> 
> Path looks ok, but is there any expectation that RV64 and RV32 hardware
> floating-point implementation or compiler generate code to have different
> precision? Otherwise it would be simple to just use one ulp tests file.

That is a good question, but it could be handled with a distinct patch to remove the files
if the maintainers consider that the right direction to take.

Overall this patch looks correct to me also and I've pushed it as trivial in that it makes
the manual more correct.

I tested the patch on x86_64 with make pdf and the table looks good and disambiguates the
results.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Tested-by: Carlos O'Donell <carlos@redhat.com>
diff mbox series

Patch

diff --git a/sysdeps/riscv/rv32/rvd/libm-test-ulps-name b/sysdeps/riscv/rv32/rvd/libm-test-ulps-name
index 827fcdca19..6d2816082e 100644
--- a/sysdeps/riscv/rv32/rvd/libm-test-ulps-name
+++ b/sysdeps/riscv/rv32/rvd/libm-test-ulps-name
@@ -1 +1 @@ 
-RISC-V
+RISC-V 32-bit
diff --git a/sysdeps/riscv/rv64/rvd/libm-test-ulps-name b/sysdeps/riscv/rv64/rvd/libm-test-ulps-name
index 827fcdca19..9cb50380df 100644
--- a/sysdeps/riscv/rv64/rvd/libm-test-ulps-name
+++ b/sysdeps/riscv/rv64/rvd/libm-test-ulps-name
@@ -1 +1 @@ 
-RISC-V
+RISC-V 64-bit