public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 1/2] riscv: Consolidate the libm-test-ulps
  2022-09-20 19:50 [PATCH 0/2] coalesce some rv64 and rv32 stuff DJ Delorie
@ 2022-09-15  4:37 ` DJ Delorie
  2022-09-21 17:35   ` Adhemerval Zanella Netto
  2022-09-20 19:21 ` [PATCH 2/2] riscv: Remove RV32 floating point functions DJ Delorie
  1 sibling, 1 reply; 6+ messages in thread
From: DJ Delorie @ 2022-09-15  4:37 UTC (permalink / raw)
  To: libc-alpha


Both RV32 and RV64 should have the same libm-test-ulps, so consolidate
them into a single file.
---
 sysdeps/riscv/rv32/rvd/libm-test-ulps         | 1405 -----------------
 sysdeps/riscv/rv32/rvd/libm-test-ulps-name    |    1 -
 sysdeps/riscv/{rv64 => }/rvd/libm-test-ulps   |    0
 .../riscv/{rv64 => }/rvd/libm-test-ulps-name  |    0
 4 files changed, 1406 deletions(-)
 delete mode 100644 sysdeps/riscv/rv32/rvd/libm-test-ulps
 delete mode 100644 sysdeps/riscv/rv32/rvd/libm-test-ulps-name
 rename sysdeps/riscv/{rv64 => }/rvd/libm-test-ulps (100%)
 rename sysdeps/riscv/{rv64 => }/rvd/libm-test-ulps-name (100%)

diff --git a/sysdeps/riscv/rv32/rvd/libm-test-ulps b/sysdeps/riscv/rv32/rvd/libm-test-ulps
deleted file mode 100644
index 5b6f121ac5..0000000000
--- a/sysdeps/riscv/rv32/rvd/libm-test-ulps
+++ /dev/null
@@ -1,1405 +0,0 @@
-# Begin of automatic generation
-
-# Maximal error of functions:
-Function: "acos":
-float: 1
-ldouble: 1
-
-Function: "acos_downward":
-double: 1
-float: 1
-ldouble: 1
-
-Function: "acos_towardzero":
-double: 1
-float: 1
-ldouble: 1
-
-Function: "acos_upward":
-double: 1
-float: 1
-ldouble: 1
-
-Function: "acosh":
-double: 2
-float: 2
-ldouble: 2
-
-Function: "acosh_downward":
-double: 2
-float: 2
-ldouble: 3
-
-Function: "acosh_towardzero":
-double: 2
-float: 2
-ldouble: 2
-
-Function: "acosh_upward":
-double: 2
-float: 2
-ldouble: 2
-
-Function: "asin":
-float: 1
-ldouble: 1
-
-Function: "asin_downward":
-double: 1
-float: 1
-ldouble: 2
-
-Function: "asin_towardzero":
-double: 1
-float: 1
-ldouble: 1
-
-Function: "asin_upward":
-double: 1
-float: 1
-ldouble: 2
-
-Function: "asinh":
-double: 1
-float: 2
-ldouble: 3
-
-Function: "asinh_downward":
-double: 3
-float: 3
-ldouble: 4
-
-Function: "asinh_towardzero":
-double: 2
-float: 2
-ldouble: 2
-
-Function: "asinh_upward":
-double: 3
-float: 3
-ldouble: 4
-
-Function: "atan":
-float: 1
-ldouble: 1
-
-Function: "atan2":
-float: 1
-ldouble: 1
-
-Function: "atan2_downward":
-double: 1
-float: 2
-ldouble: 2
-
-Function: "atan2_towardzero":
-double: 1
-float: 2
-ldouble: 3
-
-Function: "atan2_upward":
-double: 1
-float: 1
-ldouble: 2
-
-Function: "atan_downward":
-double: 1
-float: 2
-ldouble: 2
-
-Function: "atan_towardzero":
-double: 1
-float: 1
-ldouble: 1
-
-Function: "atan_upward":
-double: 1
-float: 2
-ldouble: 2
-
-Function: "atanh":
-double: 2
-float: 2
-ldouble: 3
-
-Function: "atanh_downward":
-double: 3
-float: 3
-ldouble: 4
-
-Function: "atanh_towardzero":
-double: 2
-float: 2
-ldouble: 2
-
-Function: "atanh_upward":
-double: 3
-float: 3
-ldouble: 4
-
-Function: "cabs":
-double: 1
-ldouble: 1
-
-Function: "cabs_downward":
-double: 1
-ldouble: 1
-
-Function: "cabs_towardzero":
-double: 1
-ldouble: 1
-
-Function: "cabs_upward":
-double: 1
-ldouble: 1
-
-Function: Real part of "cacos":
-double: 1
-float: 2
-ldouble: 2
-
-Function: Imaginary part of "cacos":
-double: 2
-float: 2
-ldouble: 2
-
-Function: Real part of "cacos_downward":
-double: 3
-float: 2
-ldouble: 3
-
-Function: Imaginary part of "cacos_downward":
-double: 5
-float: 3
-ldouble: 6
-
-Function: Real part of "cacos_towardzero":
-double: 3
-float: 2
-ldouble: 3
-
-Function: Imaginary part of "cacos_towardzero":
-double: 4
-float: 2
-ldouble: 5
-
-Function: Real part of "cacos_upward":
-double: 2
-float: 2
-ldouble: 3
-
-Function: Imaginary part of "cacos_upward":
-double: 5
-float: 5
-ldouble: 7
-
-Function: Real part of "cacosh":
-double: 2
-float: 2
-ldouble: 2
-
-Function: Imaginary part of "cacosh":
-double: 1
-float: 2
-ldouble: 2
-
-Function: Real part of "cacosh_downward":
-double: 4
-float: 2
-ldouble: 5
-
-Function: Imaginary part of "cacosh_downward":
-double: 3
-float: 3
-ldouble: 4
-
-Function: Real part of "cacosh_towardzero":
-double: 4
-float: 2
-ldouble: 5
-
-Function: Imaginary part of "cacosh_towardzero":
-double: 3
-float: 2
-ldouble: 3
-
-Function: Real part of "cacosh_upward":
-double: 4
-float: 3
-ldouble: 6
-
-Function: Imaginary part of "cacosh_upward":
-double: 3
-float: 2
-ldouble: 4
-
-Function: "carg":
-float: 1
-ldouble: 2
-
-Function: "carg_downward":
-double: 1
-float: 2
-ldouble: 2
-
-Function: "carg_towardzero":
-double: 1
-float: 2
-ldouble: 3
-
-Function: "carg_upward":
-double: 1
-float: 1
-ldouble: 2
-
-Function: Real part of "casin":
-double: 1
-float: 1
-ldouble: 2
-
-Function: Imaginary part of "casin":
-double: 2
-float: 2
-ldouble: 2
-
-Function: Real part of "casin_downward":
-double: 3
-float: 2
-ldouble: 3
-
-Function: Imaginary part of "casin_downward":
-double: 5
-float: 3
-ldouble: 6
-
-Function: Real part of "casin_towardzero":
-double: 3
-float: 1
-ldouble: 3
-
-Function: Imaginary part of "casin_towardzero":
-double: 4
-float: 2
-ldouble: 5
-
-Function: Real part of "casin_upward":
-double: 3
-float: 2
-ldouble: 3
-
-Function: Imaginary part of "casin_upward":
-double: 5
-float: 5
-ldouble: 7
-
-Function: Real part of "casinh":
-double: 2
-float: 2
-ldouble: 2
-
-Function: Imaginary part of "casinh":
-double: 1
-float: 1
-ldouble: 2
-
-Function: Real part of "casinh_downward":
-double: 5
-float: 3
-ldouble: 6
-
-Function: Imaginary part of "casinh_downward":
-double: 3
-float: 2
-ldouble: 3
-
-Function: Real part of "casinh_towardzero":
-double: 4
-float: 2
-ldouble: 5
-
-Function: Imaginary part of "casinh_towardzero":
-double: 3
-float: 1
-ldouble: 3
-
-Function: Real part of "casinh_upward":
-double: 5
-float: 5
-ldouble: 7
-
-Function: Imaginary part of "casinh_upward":
-double: 3
-float: 2
-ldouble: 3
-
-Function: Real part of "catan":
-double: 1
-float: 1
-ldouble: 1
-
-Function: Imaginary part of "catan":
-double: 1
-float: 1
-ldouble: 1
-
-Function: Real part of "catan_downward":
-double: 1
-float: 2
-ldouble: 2
-
-Function: Imaginary part of "catan_downward":
-double: 2
-float: 2
-ldouble: 2
-
-Function: Real part of "catan_towardzero":
-double: 1
-float: 2
-ldouble: 2
-
-Function: Imaginary part of "catan_towardzero":
-double: 2
-float: 2
-ldouble: 2
-
-Function: Real part of "catan_upward":
-double: 1
-float: 1
-ldouble: 2
-
-Function: Imaginary part of "catan_upward":
-double: 2
-float: 2
-ldouble: 3
-
-Function: Real part of "catanh":
-double: 1
-float: 1
-ldouble: 1
-
-Function: Imaginary part of "catanh":
-double: 1
-float: 1
-ldouble: 1
-
-Function: Real part of "catanh_downward":
-double: 2
-float: 2
-ldouble: 2
-
-Function: Imaginary part of "catanh_downward":
-double: 1
-float: 2
-ldouble: 2
-
-Function: Real part of "catanh_towardzero":
-double: 2
-float: 2
-ldouble: 2
-
-Function: Imaginary part of "catanh_towardzero":
-double: 1
-float: 2
-ldouble: 2
-
-Function: Real part of "catanh_upward":
-double: 4
-float: 4
-ldouble: 4
-
-Function: Imaginary part of "catanh_upward":
-double: 1
-float: 1
-ldouble: 2
-
-Function: "cbrt":
-double: 3
-float: 1
-ldouble: 1
-
-Function: "cbrt_downward":
-double: 4
-float: 1
-ldouble: 1
-
-Function: "cbrt_towardzero":
-double: 3
-float: 1
-ldouble: 1
-
-Function: "cbrt_upward":
-double: 5
-float: 1
-ldouble: 1
-
-Function: Real part of "ccos":
-double: 1
-float: 1
-ldouble: 1
-
-Function: Imaginary part of "ccos":
-double: 1
-float: 1
-ldouble: 1
-
-Function: Real part of "ccos_downward":
-double: 1
-float: 1
-ldouble: 2
-
-Function: Imaginary part of "ccos_downward":
-double: 3
-float: 3
-ldouble: 2
-
-Function: Real part of "ccos_towardzero":
-double: 1
-float: 2
-ldouble: 2
-
-Function: Imaginary part of "ccos_towardzero":
-double: 3
-float: 3
-ldouble: 2
-
-Function: Real part of "ccos_upward":
-double: 1
-float: 2
-ldouble: 3
-
-Function: Imaginary part of "ccos_upward":
-double: 2
-float: 2
-ldouble: 2
-
-Function: Real part of "ccosh":
-double: 1
-float: 1
-ldouble: 1
-
-Function: Imaginary part of "ccosh":
-double: 1
-float: 1
-ldouble: 1
-
-Function: Real part of "ccosh_downward":
-double: 2
-float: 2
-ldouble: 2
-
-Function: Imaginary part of "ccosh_downward":
-double: 3
-float: 3
-ldouble: 2
-
-Function: Real part of "ccosh_towardzero":
-double: 2
-float: 3
-ldouble: 2
-
-Function: Imaginary part of "ccosh_towardzero":
-double: 3
-float: 3
-ldouble: 2
-
-Function: Real part of "ccosh_upward":
-double: 1
-float: 2
-ldouble: 3
-
-Function: Imaginary part of "ccosh_upward":
-double: 2
-float: 2
-ldouble: 2
-
-Function: Real part of "cexp":
-double: 2
-float: 1
-ldouble: 1
-
-Function: Imaginary part of "cexp":
-double: 1
-float: 2
-ldouble: 1
-
-Function: Real part of "cexp_downward":
-double: 2
-float: 2
-ldouble: 2
-
-Function: Imaginary part of "cexp_downward":
-double: 3
-float: 3
-ldouble: 2
-
-Function: Real part of "cexp_towardzero":
-double: 2
-float: 2
-ldouble: 2
-
-Function: Imaginary part of "cexp_towardzero":
-double: 3
-float: 3
-ldouble: 2
-
-Function: Real part of "cexp_upward":
-double: 1
-float: 2
-ldouble: 3
-
-Function: Imaginary part of "cexp_upward":
-double: 3
-float: 2
-ldouble: 3
-
-Function: Real part of "clog":
-double: 3
-float: 3
-ldouble: 2
-
-Function: Imaginary part of "clog":
-float: 1
-ldouble: 1
-
-Function: Real part of "clog10":
-double: 3
-float: 4
-ldouble: 2
-
-Function: Imaginary part of "clog10":
-double: 2
-float: 2
-ldouble: 2
-
-Function: Real part of "clog10_downward":
-double: 5
-float: 5
-ldouble: 3
-
-Function: Imaginary part of "clog10_downward":
-double: 2
-float: 4
-ldouble: 3
-
-Function: Real part of "clog10_towardzero":
-double: 5
-float: 5
-ldouble: 4
-
-Function: Imaginary part of "clog10_towardzero":
-double: 2
-float: 4
-ldouble: 3
-
-Function: Real part of "clog10_upward":
-double: 6
-float: 5
-ldouble: 4
-
-Function: Imaginary part of "clog10_upward":
-double: 2
-float: 4
-ldouble: 3
-
-Function: Real part of "clog_downward":
-double: 4
-float: 3
-ldouble: 3
-
-Function: Imaginary part of "clog_downward":
-double: 1
-float: 2
-ldouble: 2
-
-Function: Real part of "clog_towardzero":
-double: 4
-float: 4
-ldouble: 3
-
-Function: Imaginary part of "clog_towardzero":
-double: 1
-float: 3
-ldouble: 2
-
-Function: Real part of "clog_upward":
-double: 4
-float: 3
-ldouble: 4
-
-Function: Imaginary part of "clog_upward":
-double: 1
-float: 2
-ldouble: 2
-
-Function: "cos":
-double: 1
-float: 1
-ldouble: 1
-
-Function: "cos_downward":
-double: 1
-float: 1
-ldouble: 3
-
-Function: "cos_towardzero":
-double: 1
-float: 1
-ldouble: 1
-
-Function: "cos_upward":
-double: 1
-float: 1
-ldouble: 2
-
-Function: "cosh":
-double: 1
-float: 2
-ldouble: 1
-
-Function: "cosh_downward":
-double: 2
-float: 1
-ldouble: 2
-
-Function: "cosh_towardzero":
-double: 2
-float: 1
-ldouble: 2
-
-Function: "cosh_upward":
-double: 2
-float: 2
-ldouble: 3
-
-Function: Real part of "cpow":
-double: 2
-float: 5
-ldouble: 4
-
-Function: Imaginary part of "cpow":
-float: 2
-ldouble: 1
-
-Function: Real part of "cpow_downward":
-double: 5
-float: 8
-ldouble: 6
-
-Function: Imaginary part of "cpow_downward":
-double: 1
-float: 2
-ldouble: 2
-
-Function: Real part of "cpow_towardzero":
-double: 5
-float: 8
-ldouble: 6
-
-Function: Imaginary part of "cpow_towardzero":
-double: 1
-float: 2
-ldouble: 2
-
-Function: Real part of "cpow_upward":
-double: 4
-float: 1
-ldouble: 3
-
-Function: Imaginary part of "cpow_upward":
-double: 1
-float: 2
-ldouble: 2
-
-Function: Real part of "csin":
-double: 1
-float: 1
-ldouble: 1
-
-Function: Imaginary part of "csin":
-ldouble: 1
-
-Function: Real part of "csin_downward":
-double: 3
-float: 3
-ldouble: 2
-
-Function: Imaginary part of "csin_downward":
-double: 1
-float: 1
-ldouble: 2
-
-Function: Real part of "csin_towardzero":
-double: 3
-float: 3
-ldouble: 2
-
-Function: Imaginary part of "csin_towardzero":
-double: 1
-float: 1
-ldouble: 2
-
-Function: Real part of "csin_upward":
-double: 2
-float: 2
-ldouble: 2
-
-Function: Imaginary part of "csin_upward":
-double: 1
-float: 2
-ldouble: 3
-
-Function: Real part of "csinh":
-float: 1
-ldouble: 1
-
-Function: Imaginary part of "csinh":
-double: 1
-float: 1
-ldouble: 1
-
-Function: Real part of "csinh_downward":
-double: 2
-float: 1
-ldouble: 2
-
-Function: Imaginary part of "csinh_downward":
-double: 3
-float: 3
-ldouble: 2
-
-Function: Real part of "csinh_towardzero":
-double: 2
-float: 2
-ldouble: 2
-
-Function: Imaginary part of "csinh_towardzero":
-double: 3
-float: 3
-ldouble: 2
-
-Function: Real part of "csinh_upward":
-double: 1
-float: 2
-ldouble: 3
-
-Function: Imaginary part of "csinh_upward":
-double: 2
-float: 2
-ldouble: 2
-
-Function: Real part of "csqrt":
-double: 2
-float: 2
-ldouble: 2
-
-Function: Imaginary part of "csqrt":
-double: 2
-float: 2
-ldouble: 2
-
-Function: Real part of "csqrt_downward":
-double: 5
-float: 4
-ldouble: 4
-
-Function: Imaginary part of "csqrt_downward":
-double: 4
-float: 3
-ldouble: 3
-
-Function: Real part of "csqrt_towardzero":
-double: 4
-float: 3
-ldouble: 3
-
-Function: Imaginary part of "csqrt_towardzero":
-double: 4
-float: 3
-ldouble: 3
-
-Function: Real part of "csqrt_upward":
-double: 5
-float: 4
-ldouble: 4
-
-Function: Imaginary part of "csqrt_upward":
-double: 3
-float: 3
-ldouble: 3
-
-Function: Real part of "ctan":
-double: 1
-float: 1
-ldouble: 3
-
-Function: Imaginary part of "ctan":
-double: 2
-float: 2
-ldouble: 3
-
-Function: Real part of "ctan_downward":
-double: 6
-float: 5
-ldouble: 4
-
-Function: Imaginary part of "ctan_downward":
-double: 2
-float: 2
-ldouble: 5
-
-Function: Real part of "ctan_towardzero":
-double: 5
-float: 2
-ldouble: 4
-
-Function: Imaginary part of "ctan_towardzero":
-double: 2
-float: 2
-ldouble: 5
-
-Function: Real part of "ctan_upward":
-double: 2
-float: 4
-ldouble: 5
-
-Function: Imaginary part of "ctan_upward":
-double: 2
-float: 2
-ldouble: 5
-
-Function: Real part of "ctanh":
-double: 2
-float: 2
-ldouble: 3
-
-Function: Imaginary part of "ctanh":
-double: 2
-float: 1
-ldouble: 3
-
-Function: Real part of "ctanh_downward":
-double: 4
-float: 2
-ldouble: 5
-
-Function: Imaginary part of "ctanh_downward":
-double: 6
-float: 5
-ldouble: 4
-
-Function: Real part of "ctanh_towardzero":
-double: 2
-float: 2
-ldouble: 5
-
-Function: Imaginary part of "ctanh_towardzero":
-double: 5
-float: 2
-ldouble: 3
-
-Function: Real part of "ctanh_upward":
-double: 2
-float: 2
-ldouble: 5
-
-Function: Imaginary part of "ctanh_upward":
-double: 2
-float: 3
-ldouble: 5
-
-Function: "erf":
-double: 1
-float: 1
-ldouble: 1
-
-Function: "erf_downward":
-double: 1
-float: 1
-ldouble: 2
-
-Function: "erf_towardzero":
-double: 1
-float: 1
-ldouble: 1
-
-Function: "erf_upward":
-double: 1
-float: 1
-ldouble: 2
-
-Function: "erfc":
-double: 2
-float: 2
-ldouble: 2
-
-Function: "erfc_downward":
-double: 4
-float: 4
-ldouble: 5
-
-Function: "erfc_towardzero":
-double: 3
-float: 3
-ldouble: 4
-
-Function: "erfc_upward":
-double: 4
-float: 4
-ldouble: 5
-
-Function: "exp":
-float: 1
-ldouble: 1
-
-Function: "exp10":
-double: 2
-ldouble: 2
-
-Function: "exp10_downward":
-double: 3
-float: 1
-ldouble: 3
-
-Function: "exp10_towardzero":
-double: 3
-float: 1
-ldouble: 3
-
-Function: "exp10_upward":
-double: 2
-float: 1
-ldouble: 3
-
-Function: "exp2":
-double: 1
-ldouble: 1
-
-Function: "exp2_downward":
-double: 1
-ldouble: 1
-
-Function: "exp2_towardzero":
-double: 1
-ldouble: 1
-
-Function: "exp2_upward":
-double: 1
-float: 1
-ldouble: 2
-
-Function: "exp_downward":
-double: 1
-float: 1
-
-Function: "exp_towardzero":
-double: 1
-float: 1
-
-Function: "exp_upward":
-double: 1
-float: 1
-
-Function: "expm1":
-double: 1
-float: 1
-ldouble: 1
-
-Function: "expm1_downward":
-double: 1
-float: 1
-ldouble: 2
-
-Function: "expm1_towardzero":
-double: 1
-float: 2
-ldouble: 4
-
-Function: "expm1_upward":
-double: 1
-float: 1
-ldouble: 3
-
-Function: "gamma":
-double: 3
-float: 3
-ldouble: 5
-
-Function: "gamma_downward":
-double: 4
-float: 4
-ldouble: 8
-
-Function: "gamma_towardzero":
-double: 4
-float: 3
-ldouble: 5
-
-Function: "gamma_upward":
-double: 4
-float: 5
-ldouble: 8
-
-Function: "hypot":
-double: 1
-ldouble: 1
-
-Function: "hypot_downward":
-double: 1
-ldouble: 1
-
-Function: "hypot_towardzero":
-double: 1
-ldouble: 1
-
-Function: "hypot_upward":
-double: 1
-ldouble: 1
-
-Function: "j0":
-double: 2
-float: 8
-ldouble: 2
-
-Function: "j0_downward":
-double: 2
-float: 4
-ldouble: 4
-
-Function: "j0_towardzero":
-double: 5
-float: 6
-ldouble: 2
-
-Function: "j0_upward":
-double: 4
-float: 5
-ldouble: 5
-
-Function: "j1":
-double: 2
-float: 8
-ldouble: 4
-
-Function: "j1_downward":
-double: 3
-float: 5
-ldouble: 4
-
-Function: "j1_towardzero":
-double: 3
-float: 2
-ldouble: 4
-
-Function: "j1_upward":
-double: 3
-float: 4
-ldouble: 3
-
-Function: "jn":
-double: 4
-float: 4
-ldouble: 7
-
-Function: "jn_downward":
-double: 4
-float: 5
-ldouble: 8
-
-Function: "jn_towardzero":
-double: 4
-float: 5
-ldouble: 8
-
-Function: "jn_upward":
-double: 5
-float: 4
-ldouble: 7
-
-Function: "lgamma":
-double: 3
-float: 3
-ldouble: 5
-
-Function: "lgamma_downward":
-double: 4
-float: 4
-ldouble: 8
-
-Function: "lgamma_towardzero":
-double: 4
-float: 3
-ldouble: 5
-
-Function: "lgamma_upward":
-double: 4
-float: 5
-ldouble: 8
-
-Function: "log":
-ldouble: 1
-
-Function: "log10":
-double: 2
-float: 2
-ldouble: 1
-
-Function: "log10_downward":
-double: 2
-float: 3
-ldouble: 1
-
-Function: "log10_towardzero":
-double: 2
-float: 1
-ldouble: 1
-
-Function: "log10_upward":
-double: 2
-float: 2
-ldouble: 1
-
-Function: "log1p":
-double: 1
-float: 1
-ldouble: 2
-
-Function: "log1p_downward":
-double: 1
-float: 2
-ldouble: 3
-
-Function: "log1p_towardzero":
-double: 2
-float: 2
-ldouble: 3
-
-Function: "log1p_upward":
-double: 2
-float: 2
-ldouble: 2
-
-Function: "log2":
-double: 1
-float: 1
-ldouble: 2
-
-Function: "log2_downward":
-double: 3
-ldouble: 3
-
-Function: "log2_towardzero":
-double: 2
-ldouble: 1
-
-Function: "log2_upward":
-double: 3
-ldouble: 1
-
-Function: "log_downward":
-ldouble: 1
-
-Function: "log_towardzero":
-ldouble: 2
-
-Function: "log_upward":
-double: 1
-ldouble: 2
-
-Function: "pow":
-double: 1
-ldouble: 2
-
-Function: "pow_downward":
-double: 1
-float: 1
-ldouble: 2
-
-Function: "pow_towardzero":
-double: 1
-float: 1
-ldouble: 2
-
-Function: "pow_upward":
-double: 1
-float: 1
-ldouble: 2
-
-Function: "sin":
-double: 1
-float: 1
-ldouble: 1
-
-Function: "sin_downward":
-double: 1
-float: 1
-ldouble: 3
-
-Function: "sin_towardzero":
-double: 1
-float: 1
-ldouble: 2
-
-Function: "sin_upward":
-double: 1
-float: 1
-ldouble: 3
-
-Function: "sincos":
-double: 1
-ldouble: 1
-
-Function: "sincos_downward":
-double: 1
-float: 1
-ldouble: 3
-
-Function: "sincos_towardzero":
-double: 1
-float: 1
-ldouble: 2
-
-Function: "sincos_upward":
-double: 1
-float: 1
-ldouble: 3
-
-Function: "sinh":
-double: 2
-float: 2
-ldouble: 2
-
-Function: "sinh_downward":
-double: 3
-float: 3
-ldouble: 3
-
-Function: "sinh_towardzero":
-double: 2
-float: 2
-ldouble: 3
-
-Function: "sinh_upward":
-double: 3
-float: 3
-ldouble: 4
-
-Function: "tan":
-float: 1
-ldouble: 1
-
-Function: "tan_downward":
-double: 1
-float: 2
-ldouble: 1
-
-Function: "tan_towardzero":
-double: 1
-float: 1
-ldouble: 1
-
-Function: "tan_upward":
-double: 1
-float: 1
-ldouble: 1
-
-Function: "tanh":
-double: 2
-float: 2
-ldouble: 2
-
-Function: "tanh_downward":
-double: 3
-float: 3
-ldouble: 4
-
-Function: "tanh_towardzero":
-double: 2
-float: 2
-ldouble: 3
-
-Function: "tanh_upward":
-double: 3
-float: 3
-ldouble: 3
-
-Function: "tgamma":
-double: 5
-float: 8
-ldouble: 4
-
-Function: "tgamma_downward":
-double: 5
-float: 7
-ldouble: 5
-
-Function: "tgamma_towardzero":
-double: 5
-float: 7
-ldouble: 5
-
-Function: "tgamma_upward":
-double: 4
-float: 8
-ldouble: 4
-
-Function: "y0":
-double: 2
-float: 6
-ldouble: 3
-
-Function: "y0_downward":
-double: 3
-float: 4
-ldouble: 4
-
-Function: "y0_towardzero":
-double: 3
-float: 3
-ldouble: 3
-
-Function: "y0_upward":
-double: 2
-float: 5
-ldouble: 3
-
-Function: "y1":
-double: 3
-float: 2
-ldouble: 2
-
-Function: "y1_downward":
-double: 3
-float: 2
-ldouble: 4
-
-Function: "y1_towardzero":
-double: 3
-float: 2
-ldouble: 2
-
-Function: "y1_upward":
-double: 5
-float: 2
-ldouble: 5
-
-Function: "yn":
-double: 3
-float: 3
-ldouble: 5
-
-Function: "yn_downward":
-double: 3
-float: 4
-ldouble: 5
-
-Function: "yn_towardzero":
-double: 3
-float: 3
-ldouble: 5
-
-Function: "yn_upward":
-double: 4
-float: 5
-ldouble: 5
-
-# end of automatic generation
diff --git a/sysdeps/riscv/rv32/rvd/libm-test-ulps-name b/sysdeps/riscv/rv32/rvd/libm-test-ulps-name
deleted file mode 100644
index 6d2816082e..0000000000
--- a/sysdeps/riscv/rv32/rvd/libm-test-ulps-name
+++ /dev/null
@@ -1 +0,0 @@
-RISC-V 32-bit
diff --git a/sysdeps/riscv/rv64/rvd/libm-test-ulps b/sysdeps/riscv/rvd/libm-test-ulps
similarity index 100%
rename from sysdeps/riscv/rv64/rvd/libm-test-ulps
rename to sysdeps/riscv/rvd/libm-test-ulps
diff --git a/sysdeps/riscv/rv64/rvd/libm-test-ulps-name b/sysdeps/riscv/rvd/libm-test-ulps-name
similarity index 100%
rename from sysdeps/riscv/rv64/rvd/libm-test-ulps-name
rename to sysdeps/riscv/rvd/libm-test-ulps-name
-- 
2.31.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 2/2] riscv: Remove RV32 floating point functions
  2022-09-20 19:50 [PATCH 0/2] coalesce some rv64 and rv32 stuff DJ Delorie
  2022-09-15  4:37 ` [PATCH 1/2] riscv: Consolidate the libm-test-ulps DJ Delorie
@ 2022-09-20 19:21 ` DJ Delorie
  2022-09-21 17:37   ` Adhemerval Zanella Netto
  1 sibling, 1 reply; 6+ messages in thread
From: DJ Delorie @ 2022-09-20 19:21 UTC (permalink / raw)
  To: libc-alpha


We don't need RV32 specific floating point functions, instead make them
generic for RISC-V.
---
 sysdeps/riscv/rv32/rvd/s_lrint.c         | 31 ------------------------
 sysdeps/riscv/rv32/rvd/s_lround.c        | 31 ------------------------
 sysdeps/riscv/rv32/rvf/s_lrintf.c        | 31 ------------------------
 sysdeps/riscv/rv32/rvf/s_lroundf.c       | 31 ------------------------
 sysdeps/riscv/{rv64 => }/rvd/s_lrint.c   | 12 +++++++--
 sysdeps/riscv/{rv64 => }/rvd/s_lround.c  | 12 +++++++--
 sysdeps/riscv/{rv64 => }/rvf/s_lrintf.c  | 12 +++++++--
 sysdeps/riscv/{rv64 => }/rvf/s_lroundf.c | 12 +++++++--
 8 files changed, 40 insertions(+), 132 deletions(-)
 delete mode 100644 sysdeps/riscv/rv32/rvd/s_lrint.c
 delete mode 100644 sysdeps/riscv/rv32/rvd/s_lround.c
 delete mode 100644 sysdeps/riscv/rv32/rvf/s_lrintf.c
 delete mode 100644 sysdeps/riscv/rv32/rvf/s_lroundf.c
 rename sysdeps/riscv/{rv64 => }/rvd/s_lrint.c (83%)
 rename sysdeps/riscv/{rv64 => }/rvd/s_lround.c (83%)
 rename sysdeps/riscv/{rv64 => }/rvf/s_lrintf.c (83%)
 rename sysdeps/riscv/{rv64 => }/rvf/s_lroundf.c (83%)

diff --git a/sysdeps/riscv/rv32/rvd/s_lrint.c b/sysdeps/riscv/rv32/rvd/s_lrint.c
deleted file mode 100644
index f0a4d6135f..0000000000
--- a/sysdeps/riscv/rv32/rvd/s_lrint.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* lrint().  The 32-bit RISC-V (RV32) version.
-   Copyright (C) 2020-2022 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <https://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <libm-alias-double.h>
-#include <stdint.h>
-
-long int
-__lrint (double x)
-{
-  int32_t res;
-  asm ("fcvt.w.d %0, %1" : "=r" (res) : "f" (x));
-  return res;
-}
-
-libm_alias_double (__lrint, lrint)
diff --git a/sysdeps/riscv/rv32/rvd/s_lround.c b/sysdeps/riscv/rv32/rvd/s_lround.c
deleted file mode 100644
index 7549461095..0000000000
--- a/sysdeps/riscv/rv32/rvd/s_lround.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* lround().  32-bit RISC-V (RV32) version.
-   Copyright (C) 2020-2022 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <https://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <libm-alias-double.h>
-#include <stdint.h>
-
-long int
-__lround (double x)
-{
-  int32_t res;
-  asm ("fcvt.w.d %0, %1, rmm" : "=r" (res) : "f" (x));
-  return res;
-}
-
-libm_alias_double (__lround, lround)
diff --git a/sysdeps/riscv/rv32/rvf/s_lrintf.c b/sysdeps/riscv/rv32/rvf/s_lrintf.c
deleted file mode 100644
index 6cc281f82a..0000000000
--- a/sysdeps/riscv/rv32/rvf/s_lrintf.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* lrintf().  32-bit RISC-V (RV32) version.
-   Copyright (C) 2020-2022 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <https://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <libm-alias-float.h>
-#include <stdint.h>
-
-long int
-__lrintf (float x)
-{
-  int32_t res;
-  asm ("fcvt.w.s %0, %1" : "=r" (res) : "f" (x));
-  return res;
-}
-
-libm_alias_float (__lrint, lrint)
diff --git a/sysdeps/riscv/rv32/rvf/s_lroundf.c b/sysdeps/riscv/rv32/rvf/s_lroundf.c
deleted file mode 100644
index dcaef30fc7..0000000000
--- a/sysdeps/riscv/rv32/rvf/s_lroundf.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* lroundf().  32-bit RISC-V (RV32) version.
-   Copyright (C) 2020-2022 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-
-   The GNU C Library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library.  If not, see
-   <https://www.gnu.org/licenses/>.  */
-
-#include <math.h>
-#include <libm-alias-float.h>
-#include <stdint.h>
-
-long int
-__lroundf (float x)
-{
-  int32_t res;
-  asm ("fcvt.w.s %0, %1, rmm" : "=r" (res) : "f" (x));
-  return res;
-}
-
-libm_alias_float (__lround, lround)
diff --git a/sysdeps/riscv/rv64/rvd/s_lrint.c b/sysdeps/riscv/rvd/s_lrint.c
similarity index 83%
rename from sysdeps/riscv/rv64/rvd/s_lrint.c
rename to sysdeps/riscv/rvd/s_lrint.c
index 64bf72ec02..5a9693034c 100644
--- a/sysdeps/riscv/rv64/rvd/s_lrint.c
+++ b/sysdeps/riscv/rvd/s_lrint.c
@@ -19,11 +19,19 @@
 #include <libm-alias-double.h>
 #include <stdint.h>
 
+#if __WORDSIZE == 64
+# define OP "fcvt.l.d"
+#elif __WORDSIZE == 32
+# define OP "fcvt.w.d"
+#else
+# error Unsupported
+#endif
+
 long int
 __lrint (double x)
 {
-  int64_t res;
-  asm ("fcvt.l.d %0, %1" : "=r" (res) : "f" (x));
+  long int res;
+  asm (OP "\t%0, %1" : "=r" (res) : "f" (x));
   return res;
 }
 
diff --git a/sysdeps/riscv/rv64/rvd/s_lround.c b/sysdeps/riscv/rvd/s_lround.c
similarity index 83%
rename from sysdeps/riscv/rv64/rvd/s_lround.c
rename to sysdeps/riscv/rvd/s_lround.c
index 1b55d99a0e..f869aa41ce 100644
--- a/sysdeps/riscv/rv64/rvd/s_lround.c
+++ b/sysdeps/riscv/rvd/s_lround.c
@@ -19,11 +19,19 @@
 #include <libm-alias-double.h>
 #include <stdint.h>
 
+#if __WORDSIZE == 64
+# define OP "fcvt.l.d"
+#elif __WORDSIZE == 32
+# define OP "fcvt.w.d"
+#else
+# error Unsupported
+#endif
+
 long int
 __lround (double x)
 {
-  int64_t res;
-  asm ("fcvt.l.d %0, %1, rmm" : "=r" (res) : "f" (x));
+  long int res;
+  asm (OP "\t%0, %1, rmm" : "=r" (res) : "f" (x));
   return res;
 }
 
diff --git a/sysdeps/riscv/rv64/rvf/s_lrintf.c b/sysdeps/riscv/rvf/s_lrintf.c
similarity index 83%
rename from sysdeps/riscv/rv64/rvf/s_lrintf.c
rename to sysdeps/riscv/rvf/s_lrintf.c
index ca97bc108e..0bd4945df7 100644
--- a/sysdeps/riscv/rv64/rvf/s_lrintf.c
+++ b/sysdeps/riscv/rvf/s_lrintf.c
@@ -20,11 +20,19 @@
 #include <libm-alias-float.h>
 #include <stdint.h>
 
+#if __WORDSIZE == 64
+# define OP "fcvt.l.s"
+#elif __WORDSIZE == 32
+# define OP "fcvt.w.s"
+#else
+# error Unsupported
+#endif
+
 long int
 __lrintf (float x)
 {
-  int64_t res;
-  asm ("fcvt.l.s %0, %1" : "=r" (res) : "f" (x));
+  long int res;
+  asm (OP "\t%0, %1" : "=r" (res) : "f" (x));
   return res;
 }
 
diff --git a/sysdeps/riscv/rv64/rvf/s_lroundf.c b/sysdeps/riscv/rvf/s_lroundf.c
similarity index 83%
rename from sysdeps/riscv/rv64/rvf/s_lroundf.c
rename to sysdeps/riscv/rvf/s_lroundf.c
index 046870d0a3..c6dd141230 100644
--- a/sysdeps/riscv/rv64/rvf/s_lroundf.c
+++ b/sysdeps/riscv/rvf/s_lroundf.c
@@ -20,11 +20,19 @@
 #include <libm-alias-float.h>
 #include <stdint.h>
 
+#if __WORDSIZE == 64
+# define OP "fcvt.l.s"
+#elif __WORDSIZE == 32
+# define OP "fcvt.w.s"
+#else
+# error Unsupported
+#endif
+
 long int
 __lroundf (float x)
 {
-  int64_t res;
-  asm ("fcvt.l.s %0, %1, rmm" : "=r" (res) : "f" (x));
+  long int res;
+  asm (OP "\t%0, %1, rmm" : "=r" (res) : "f" (x));
   return res;
 }
 
-- 
2.31.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH 0/2] coalesce some rv64 and rv32 stuff
@ 2022-09-20 19:50 DJ Delorie
  2022-09-15  4:37 ` [PATCH 1/2] riscv: Consolidate the libm-test-ulps DJ Delorie
  2022-09-20 19:21 ` [PATCH 2/2] riscv: Remove RV32 floating point functions DJ Delorie
  0 siblings, 2 replies; 6+ messages in thread
From: DJ Delorie @ 2022-09-20 19:50 UTC (permalink / raw)
  To: libc-alpha


This is a rework of Alistair's patches from Sept 2020.  I used the
latest rv64 ULPs and tweaked the .c moves to accomodate the latest
copyright years etc.  Alistair retains credit for the authorship, I'm
just tweaking it to make it apply cleanly.

https://patchwork.sourceware.org/project/glibc/list/?series=815

Alistair Francis (2):
  riscv: Consolidate the libm-test-ulps
  riscv: Remove RV32 floating point functions

 sysdeps/riscv/rv32/rvd/libm-test-ulps         | 1405 -----------------
 sysdeps/riscv/rv32/rvd/libm-test-ulps-name    |    1 -
 sysdeps/riscv/rv32/rvd/s_lrint.c              |   31 -
 sysdeps/riscv/rv32/rvd/s_lround.c             |   31 -
 sysdeps/riscv/rv32/rvf/s_lrintf.c             |   31 -
 sysdeps/riscv/rv32/rvf/s_lroundf.c            |   31 -
 sysdeps/riscv/{rv64 => }/rvd/libm-test-ulps   |    0
 .../riscv/{rv64 => }/rvd/libm-test-ulps-name  |    0
 sysdeps/riscv/{rv64 => }/rvd/s_lrint.c        |   12 +-
 sysdeps/riscv/{rv64 => }/rvd/s_lround.c       |   12 +-
 sysdeps/riscv/{rv64 => }/rvf/s_lrintf.c       |   12 +-
 sysdeps/riscv/{rv64 => }/rvf/s_lroundf.c      |   12 +-
 12 files changed, 40 insertions(+), 1538 deletions(-)
 delete mode 100644 sysdeps/riscv/rv32/rvd/libm-test-ulps
 delete mode 100644 sysdeps/riscv/rv32/rvd/libm-test-ulps-name
 delete mode 100644 sysdeps/riscv/rv32/rvd/s_lrint.c
 delete mode 100644 sysdeps/riscv/rv32/rvd/s_lround.c
 delete mode 100644 sysdeps/riscv/rv32/rvf/s_lrintf.c
 delete mode 100644 sysdeps/riscv/rv32/rvf/s_lroundf.c
 rename sysdeps/riscv/{rv64 => }/rvd/libm-test-ulps (100%)
 rename sysdeps/riscv/{rv64 => }/rvd/libm-test-ulps-name (100%)
 rename sysdeps/riscv/{rv64 => }/rvd/s_lrint.c (83%)
 rename sysdeps/riscv/{rv64 => }/rvd/s_lround.c (83%)
 rename sysdeps/riscv/{rv64 => }/rvf/s_lrintf.c (83%)
 rename sysdeps/riscv/{rv64 => }/rvf/s_lroundf.c (83%)

-- 
2.31.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/2] riscv: Consolidate the libm-test-ulps
  2022-09-15  4:37 ` [PATCH 1/2] riscv: Consolidate the libm-test-ulps DJ Delorie
@ 2022-09-21 17:35   ` Adhemerval Zanella Netto
  2022-09-21 18:39     ` DJ Delorie
  0 siblings, 1 reply; 6+ messages in thread
From: Adhemerval Zanella Netto @ 2022-09-21 17:35 UTC (permalink / raw)
  To: DJ Delorie, libc-alpha



On 15/09/22 01:37, DJ Delorie via Libc-alpha wrote:
> 
> Both RV32 and RV64 should have the same libm-test-ulps, so consolidate
> them into a single file.

LGTM, thanks.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>

> ---
>  sysdeps/riscv/rv32/rvd/libm-test-ulps         | 1405 -----------------
>  sysdeps/riscv/rv32/rvd/libm-test-ulps-name    |    1 -
>  sysdeps/riscv/{rv64 => }/rvd/libm-test-ulps   |    0
>  .../riscv/{rv64 => }/rvd/libm-test-ulps-name  |    0
>  4 files changed, 1406 deletions(-)
>  delete mode 100644 sysdeps/riscv/rv32/rvd/libm-test-ulps
>  delete mode 100644 sysdeps/riscv/rv32/rvd/libm-test-ulps-name
>  rename sysdeps/riscv/{rv64 => }/rvd/libm-test-ulps (100%)
>  rename sysdeps/riscv/{rv64 => }/rvd/libm-test-ulps-name (100%)
> 
> diff --git a/sysdeps/riscv/rv32/rvd/libm-test-ulps b/sysdeps/riscv/rv32/rvd/libm-test-ulps
> deleted file mode 100644
> index 5b6f121ac5..0000000000
> --- a/sysdeps/riscv/rv32/rvd/libm-test-ulps
> +++ /dev/null
> @@ -1,1405 +0,0 @@
> -# Begin of automatic generation
> -
> -# Maximal error of functions:
> -Function: "acos":
> -float: 1
> -ldouble: 1
> -
> -Function: "acos_downward":
> -double: 1
> -float: 1
> -ldouble: 1
> -
> -Function: "acos_towardzero":
> -double: 1
> -float: 1
> -ldouble: 1
> -
> -Function: "acos_upward":
> -double: 1
> -float: 1
> -ldouble: 1
> -
> -Function: "acosh":
> -double: 2
> -float: 2
> -ldouble: 2
> -
> -Function: "acosh_downward":
> -double: 2
> -float: 2
> -ldouble: 3
> -
> -Function: "acosh_towardzero":
> -double: 2
> -float: 2
> -ldouble: 2
> -
> -Function: "acosh_upward":
> -double: 2
> -float: 2
> -ldouble: 2
> -
> -Function: "asin":
> -float: 1
> -ldouble: 1
> -
> -Function: "asin_downward":
> -double: 1
> -float: 1
> -ldouble: 2
> -
> -Function: "asin_towardzero":
> -double: 1
> -float: 1
> -ldouble: 1
> -
> -Function: "asin_upward":
> -double: 1
> -float: 1
> -ldouble: 2
> -
> -Function: "asinh":
> -double: 1
> -float: 2
> -ldouble: 3
> -
> -Function: "asinh_downward":
> -double: 3
> -float: 3
> -ldouble: 4
> -
> -Function: "asinh_towardzero":
> -double: 2
> -float: 2
> -ldouble: 2
> -
> -Function: "asinh_upward":
> -double: 3
> -float: 3
> -ldouble: 4
> -
> -Function: "atan":
> -float: 1
> -ldouble: 1
> -
> -Function: "atan2":
> -float: 1
> -ldouble: 1
> -
> -Function: "atan2_downward":
> -double: 1
> -float: 2
> -ldouble: 2
> -
> -Function: "atan2_towardzero":
> -double: 1
> -float: 2
> -ldouble: 3
> -
> -Function: "atan2_upward":
> -double: 1
> -float: 1
> -ldouble: 2
> -
> -Function: "atan_downward":
> -double: 1
> -float: 2
> -ldouble: 2
> -
> -Function: "atan_towardzero":
> -double: 1
> -float: 1
> -ldouble: 1
> -
> -Function: "atan_upward":
> -double: 1
> -float: 2
> -ldouble: 2
> -
> -Function: "atanh":
> -double: 2
> -float: 2
> -ldouble: 3
> -
> -Function: "atanh_downward":
> -double: 3
> -float: 3
> -ldouble: 4
> -
> -Function: "atanh_towardzero":
> -double: 2
> -float: 2
> -ldouble: 2
> -
> -Function: "atanh_upward":
> -double: 3
> -float: 3
> -ldouble: 4
> -
> -Function: "cabs":
> -double: 1
> -ldouble: 1
> -
> -Function: "cabs_downward":
> -double: 1
> -ldouble: 1
> -
> -Function: "cabs_towardzero":
> -double: 1
> -ldouble: 1
> -
> -Function: "cabs_upward":
> -double: 1
> -ldouble: 1
> -
> -Function: Real part of "cacos":
> -double: 1
> -float: 2
> -ldouble: 2
> -
> -Function: Imaginary part of "cacos":
> -double: 2
> -float: 2
> -ldouble: 2
> -
> -Function: Real part of "cacos_downward":
> -double: 3
> -float: 2
> -ldouble: 3
> -
> -Function: Imaginary part of "cacos_downward":
> -double: 5
> -float: 3
> -ldouble: 6
> -
> -Function: Real part of "cacos_towardzero":
> -double: 3
> -float: 2
> -ldouble: 3
> -
> -Function: Imaginary part of "cacos_towardzero":
> -double: 4
> -float: 2
> -ldouble: 5
> -
> -Function: Real part of "cacos_upward":
> -double: 2
> -float: 2
> -ldouble: 3
> -
> -Function: Imaginary part of "cacos_upward":
> -double: 5
> -float: 5
> -ldouble: 7
> -
> -Function: Real part of "cacosh":
> -double: 2
> -float: 2
> -ldouble: 2
> -
> -Function: Imaginary part of "cacosh":
> -double: 1
> -float: 2
> -ldouble: 2
> -
> -Function: Real part of "cacosh_downward":
> -double: 4
> -float: 2
> -ldouble: 5
> -
> -Function: Imaginary part of "cacosh_downward":
> -double: 3
> -float: 3
> -ldouble: 4
> -
> -Function: Real part of "cacosh_towardzero":
> -double: 4
> -float: 2
> -ldouble: 5
> -
> -Function: Imaginary part of "cacosh_towardzero":
> -double: 3
> -float: 2
> -ldouble: 3
> -
> -Function: Real part of "cacosh_upward":
> -double: 4
> -float: 3
> -ldouble: 6
> -
> -Function: Imaginary part of "cacosh_upward":
> -double: 3
> -float: 2
> -ldouble: 4
> -
> -Function: "carg":
> -float: 1
> -ldouble: 2
> -
> -Function: "carg_downward":
> -double: 1
> -float: 2
> -ldouble: 2
> -
> -Function: "carg_towardzero":
> -double: 1
> -float: 2
> -ldouble: 3
> -
> -Function: "carg_upward":
> -double: 1
> -float: 1
> -ldouble: 2
> -
> -Function: Real part of "casin":
> -double: 1
> -float: 1
> -ldouble: 2
> -
> -Function: Imaginary part of "casin":
> -double: 2
> -float: 2
> -ldouble: 2
> -
> -Function: Real part of "casin_downward":
> -double: 3
> -float: 2
> -ldouble: 3
> -
> -Function: Imaginary part of "casin_downward":
> -double: 5
> -float: 3
> -ldouble: 6
> -
> -Function: Real part of "casin_towardzero":
> -double: 3
> -float: 1
> -ldouble: 3
> -
> -Function: Imaginary part of "casin_towardzero":
> -double: 4
> -float: 2
> -ldouble: 5
> -
> -Function: Real part of "casin_upward":
> -double: 3
> -float: 2
> -ldouble: 3
> -
> -Function: Imaginary part of "casin_upward":
> -double: 5
> -float: 5
> -ldouble: 7
> -
> -Function: Real part of "casinh":
> -double: 2
> -float: 2
> -ldouble: 2
> -
> -Function: Imaginary part of "casinh":
> -double: 1
> -float: 1
> -ldouble: 2
> -
> -Function: Real part of "casinh_downward":
> -double: 5
> -float: 3
> -ldouble: 6
> -
> -Function: Imaginary part of "casinh_downward":
> -double: 3
> -float: 2
> -ldouble: 3
> -
> -Function: Real part of "casinh_towardzero":
> -double: 4
> -float: 2
> -ldouble: 5
> -
> -Function: Imaginary part of "casinh_towardzero":
> -double: 3
> -float: 1
> -ldouble: 3
> -
> -Function: Real part of "casinh_upward":
> -double: 5
> -float: 5
> -ldouble: 7
> -
> -Function: Imaginary part of "casinh_upward":
> -double: 3
> -float: 2
> -ldouble: 3
> -
> -Function: Real part of "catan":
> -double: 1
> -float: 1
> -ldouble: 1
> -
> -Function: Imaginary part of "catan":
> -double: 1
> -float: 1
> -ldouble: 1
> -
> -Function: Real part of "catan_downward":
> -double: 1
> -float: 2
> -ldouble: 2
> -
> -Function: Imaginary part of "catan_downward":
> -double: 2
> -float: 2
> -ldouble: 2
> -
> -Function: Real part of "catan_towardzero":
> -double: 1
> -float: 2
> -ldouble: 2
> -
> -Function: Imaginary part of "catan_towardzero":
> -double: 2
> -float: 2
> -ldouble: 2
> -
> -Function: Real part of "catan_upward":
> -double: 1
> -float: 1
> -ldouble: 2
> -
> -Function: Imaginary part of "catan_upward":
> -double: 2
> -float: 2
> -ldouble: 3
> -
> -Function: Real part of "catanh":
> -double: 1
> -float: 1
> -ldouble: 1
> -
> -Function: Imaginary part of "catanh":
> -double: 1
> -float: 1
> -ldouble: 1
> -
> -Function: Real part of "catanh_downward":
> -double: 2
> -float: 2
> -ldouble: 2
> -
> -Function: Imaginary part of "catanh_downward":
> -double: 1
> -float: 2
> -ldouble: 2
> -
> -Function: Real part of "catanh_towardzero":
> -double: 2
> -float: 2
> -ldouble: 2
> -
> -Function: Imaginary part of "catanh_towardzero":
> -double: 1
> -float: 2
> -ldouble: 2
> -
> -Function: Real part of "catanh_upward":
> -double: 4
> -float: 4
> -ldouble: 4
> -
> -Function: Imaginary part of "catanh_upward":
> -double: 1
> -float: 1
> -ldouble: 2
> -
> -Function: "cbrt":
> -double: 3
> -float: 1
> -ldouble: 1
> -
> -Function: "cbrt_downward":
> -double: 4
> -float: 1
> -ldouble: 1
> -
> -Function: "cbrt_towardzero":
> -double: 3
> -float: 1
> -ldouble: 1
> -
> -Function: "cbrt_upward":
> -double: 5
> -float: 1
> -ldouble: 1
> -
> -Function: Real part of "ccos":
> -double: 1
> -float: 1
> -ldouble: 1
> -
> -Function: Imaginary part of "ccos":
> -double: 1
> -float: 1
> -ldouble: 1
> -
> -Function: Real part of "ccos_downward":
> -double: 1
> -float: 1
> -ldouble: 2
> -
> -Function: Imaginary part of "ccos_downward":
> -double: 3
> -float: 3
> -ldouble: 2
> -
> -Function: Real part of "ccos_towardzero":
> -double: 1
> -float: 2
> -ldouble: 2
> -
> -Function: Imaginary part of "ccos_towardzero":
> -double: 3
> -float: 3
> -ldouble: 2
> -
> -Function: Real part of "ccos_upward":
> -double: 1
> -float: 2
> -ldouble: 3
> -
> -Function: Imaginary part of "ccos_upward":
> -double: 2
> -float: 2
> -ldouble: 2
> -
> -Function: Real part of "ccosh":
> -double: 1
> -float: 1
> -ldouble: 1
> -
> -Function: Imaginary part of "ccosh":
> -double: 1
> -float: 1
> -ldouble: 1
> -
> -Function: Real part of "ccosh_downward":
> -double: 2
> -float: 2
> -ldouble: 2
> -
> -Function: Imaginary part of "ccosh_downward":
> -double: 3
> -float: 3
> -ldouble: 2
> -
> -Function: Real part of "ccosh_towardzero":
> -double: 2
> -float: 3
> -ldouble: 2
> -
> -Function: Imaginary part of "ccosh_towardzero":
> -double: 3
> -float: 3
> -ldouble: 2
> -
> -Function: Real part of "ccosh_upward":
> -double: 1
> -float: 2
> -ldouble: 3
> -
> -Function: Imaginary part of "ccosh_upward":
> -double: 2
> -float: 2
> -ldouble: 2
> -
> -Function: Real part of "cexp":
> -double: 2
> -float: 1
> -ldouble: 1
> -
> -Function: Imaginary part of "cexp":
> -double: 1
> -float: 2
> -ldouble: 1
> -
> -Function: Real part of "cexp_downward":
> -double: 2
> -float: 2
> -ldouble: 2
> -
> -Function: Imaginary part of "cexp_downward":
> -double: 3
> -float: 3
> -ldouble: 2
> -
> -Function: Real part of "cexp_towardzero":
> -double: 2
> -float: 2
> -ldouble: 2
> -
> -Function: Imaginary part of "cexp_towardzero":
> -double: 3
> -float: 3
> -ldouble: 2
> -
> -Function: Real part of "cexp_upward":
> -double: 1
> -float: 2
> -ldouble: 3
> -
> -Function: Imaginary part of "cexp_upward":
> -double: 3
> -float: 2
> -ldouble: 3
> -
> -Function: Real part of "clog":
> -double: 3
> -float: 3
> -ldouble: 2
> -
> -Function: Imaginary part of "clog":
> -float: 1
> -ldouble: 1
> -
> -Function: Real part of "clog10":
> -double: 3
> -float: 4
> -ldouble: 2
> -
> -Function: Imaginary part of "clog10":
> -double: 2
> -float: 2
> -ldouble: 2
> -
> -Function: Real part of "clog10_downward":
> -double: 5
> -float: 5
> -ldouble: 3
> -
> -Function: Imaginary part of "clog10_downward":
> -double: 2
> -float: 4
> -ldouble: 3
> -
> -Function: Real part of "clog10_towardzero":
> -double: 5
> -float: 5
> -ldouble: 4
> -
> -Function: Imaginary part of "clog10_towardzero":
> -double: 2
> -float: 4
> -ldouble: 3
> -
> -Function: Real part of "clog10_upward":
> -double: 6
> -float: 5
> -ldouble: 4
> -
> -Function: Imaginary part of "clog10_upward":
> -double: 2
> -float: 4
> -ldouble: 3
> -
> -Function: Real part of "clog_downward":
> -double: 4
> -float: 3
> -ldouble: 3
> -
> -Function: Imaginary part of "clog_downward":
> -double: 1
> -float: 2
> -ldouble: 2
> -
> -Function: Real part of "clog_towardzero":
> -double: 4
> -float: 4
> -ldouble: 3
> -
> -Function: Imaginary part of "clog_towardzero":
> -double: 1
> -float: 3
> -ldouble: 2
> -
> -Function: Real part of "clog_upward":
> -double: 4
> -float: 3
> -ldouble: 4
> -
> -Function: Imaginary part of "clog_upward":
> -double: 1
> -float: 2
> -ldouble: 2
> -
> -Function: "cos":
> -double: 1
> -float: 1
> -ldouble: 1
> -
> -Function: "cos_downward":
> -double: 1
> -float: 1
> -ldouble: 3
> -
> -Function: "cos_towardzero":
> -double: 1
> -float: 1
> -ldouble: 1
> -
> -Function: "cos_upward":
> -double: 1
> -float: 1
> -ldouble: 2
> -
> -Function: "cosh":
> -double: 1
> -float: 2
> -ldouble: 1
> -
> -Function: "cosh_downward":
> -double: 2
> -float: 1
> -ldouble: 2
> -
> -Function: "cosh_towardzero":
> -double: 2
> -float: 1
> -ldouble: 2
> -
> -Function: "cosh_upward":
> -double: 2
> -float: 2
> -ldouble: 3
> -
> -Function: Real part of "cpow":
> -double: 2
> -float: 5
> -ldouble: 4
> -
> -Function: Imaginary part of "cpow":
> -float: 2
> -ldouble: 1
> -
> -Function: Real part of "cpow_downward":
> -double: 5
> -float: 8
> -ldouble: 6
> -
> -Function: Imaginary part of "cpow_downward":
> -double: 1
> -float: 2
> -ldouble: 2
> -
> -Function: Real part of "cpow_towardzero":
> -double: 5
> -float: 8
> -ldouble: 6
> -
> -Function: Imaginary part of "cpow_towardzero":
> -double: 1
> -float: 2
> -ldouble: 2
> -
> -Function: Real part of "cpow_upward":
> -double: 4
> -float: 1
> -ldouble: 3
> -
> -Function: Imaginary part of "cpow_upward":
> -double: 1
> -float: 2
> -ldouble: 2
> -
> -Function: Real part of "csin":
> -double: 1
> -float: 1
> -ldouble: 1
> -
> -Function: Imaginary part of "csin":
> -ldouble: 1
> -
> -Function: Real part of "csin_downward":
> -double: 3
> -float: 3
> -ldouble: 2
> -
> -Function: Imaginary part of "csin_downward":
> -double: 1
> -float: 1
> -ldouble: 2
> -
> -Function: Real part of "csin_towardzero":
> -double: 3
> -float: 3
> -ldouble: 2
> -
> -Function: Imaginary part of "csin_towardzero":
> -double: 1
> -float: 1
> -ldouble: 2
> -
> -Function: Real part of "csin_upward":
> -double: 2
> -float: 2
> -ldouble: 2
> -
> -Function: Imaginary part of "csin_upward":
> -double: 1
> -float: 2
> -ldouble: 3
> -
> -Function: Real part of "csinh":
> -float: 1
> -ldouble: 1
> -
> -Function: Imaginary part of "csinh":
> -double: 1
> -float: 1
> -ldouble: 1
> -
> -Function: Real part of "csinh_downward":
> -double: 2
> -float: 1
> -ldouble: 2
> -
> -Function: Imaginary part of "csinh_downward":
> -double: 3
> -float: 3
> -ldouble: 2
> -
> -Function: Real part of "csinh_towardzero":
> -double: 2
> -float: 2
> -ldouble: 2
> -
> -Function: Imaginary part of "csinh_towardzero":
> -double: 3
> -float: 3
> -ldouble: 2
> -
> -Function: Real part of "csinh_upward":
> -double: 1
> -float: 2
> -ldouble: 3
> -
> -Function: Imaginary part of "csinh_upward":
> -double: 2
> -float: 2
> -ldouble: 2
> -
> -Function: Real part of "csqrt":
> -double: 2
> -float: 2
> -ldouble: 2
> -
> -Function: Imaginary part of "csqrt":
> -double: 2
> -float: 2
> -ldouble: 2
> -
> -Function: Real part of "csqrt_downward":
> -double: 5
> -float: 4
> -ldouble: 4
> -
> -Function: Imaginary part of "csqrt_downward":
> -double: 4
> -float: 3
> -ldouble: 3
> -
> -Function: Real part of "csqrt_towardzero":
> -double: 4
> -float: 3
> -ldouble: 3
> -
> -Function: Imaginary part of "csqrt_towardzero":
> -double: 4
> -float: 3
> -ldouble: 3
> -
> -Function: Real part of "csqrt_upward":
> -double: 5
> -float: 4
> -ldouble: 4
> -
> -Function: Imaginary part of "csqrt_upward":
> -double: 3
> -float: 3
> -ldouble: 3
> -
> -Function: Real part of "ctan":
> -double: 1
> -float: 1
> -ldouble: 3
> -
> -Function: Imaginary part of "ctan":
> -double: 2
> -float: 2
> -ldouble: 3
> -
> -Function: Real part of "ctan_downward":
> -double: 6
> -float: 5
> -ldouble: 4
> -
> -Function: Imaginary part of "ctan_downward":
> -double: 2
> -float: 2
> -ldouble: 5
> -
> -Function: Real part of "ctan_towardzero":
> -double: 5
> -float: 2
> -ldouble: 4
> -
> -Function: Imaginary part of "ctan_towardzero":
> -double: 2
> -float: 2
> -ldouble: 5
> -
> -Function: Real part of "ctan_upward":
> -double: 2
> -float: 4
> -ldouble: 5
> -
> -Function: Imaginary part of "ctan_upward":
> -double: 2
> -float: 2
> -ldouble: 5
> -
> -Function: Real part of "ctanh":
> -double: 2
> -float: 2
> -ldouble: 3
> -
> -Function: Imaginary part of "ctanh":
> -double: 2
> -float: 1
> -ldouble: 3
> -
> -Function: Real part of "ctanh_downward":
> -double: 4
> -float: 2
> -ldouble: 5
> -
> -Function: Imaginary part of "ctanh_downward":
> -double: 6
> -float: 5
> -ldouble: 4
> -
> -Function: Real part of "ctanh_towardzero":
> -double: 2
> -float: 2
> -ldouble: 5
> -
> -Function: Imaginary part of "ctanh_towardzero":
> -double: 5
> -float: 2
> -ldouble: 3
> -
> -Function: Real part of "ctanh_upward":
> -double: 2
> -float: 2
> -ldouble: 5
> -
> -Function: Imaginary part of "ctanh_upward":
> -double: 2
> -float: 3
> -ldouble: 5
> -
> -Function: "erf":
> -double: 1
> -float: 1
> -ldouble: 1
> -
> -Function: "erf_downward":
> -double: 1
> -float: 1
> -ldouble: 2
> -
> -Function: "erf_towardzero":
> -double: 1
> -float: 1
> -ldouble: 1
> -
> -Function: "erf_upward":
> -double: 1
> -float: 1
> -ldouble: 2
> -
> -Function: "erfc":
> -double: 2
> -float: 2
> -ldouble: 2
> -
> -Function: "erfc_downward":
> -double: 4
> -float: 4
> -ldouble: 5
> -
> -Function: "erfc_towardzero":
> -double: 3
> -float: 3
> -ldouble: 4
> -
> -Function: "erfc_upward":
> -double: 4
> -float: 4
> -ldouble: 5
> -
> -Function: "exp":
> -float: 1
> -ldouble: 1
> -
> -Function: "exp10":
> -double: 2
> -ldouble: 2
> -
> -Function: "exp10_downward":
> -double: 3
> -float: 1
> -ldouble: 3
> -
> -Function: "exp10_towardzero":
> -double: 3
> -float: 1
> -ldouble: 3
> -
> -Function: "exp10_upward":
> -double: 2
> -float: 1
> -ldouble: 3
> -
> -Function: "exp2":
> -double: 1
> -ldouble: 1
> -
> -Function: "exp2_downward":
> -double: 1
> -ldouble: 1
> -
> -Function: "exp2_towardzero":
> -double: 1
> -ldouble: 1
> -
> -Function: "exp2_upward":
> -double: 1
> -float: 1
> -ldouble: 2
> -
> -Function: "exp_downward":
> -double: 1
> -float: 1
> -
> -Function: "exp_towardzero":
> -double: 1
> -float: 1
> -
> -Function: "exp_upward":
> -double: 1
> -float: 1
> -
> -Function: "expm1":
> -double: 1
> -float: 1
> -ldouble: 1
> -
> -Function: "expm1_downward":
> -double: 1
> -float: 1
> -ldouble: 2
> -
> -Function: "expm1_towardzero":
> -double: 1
> -float: 2
> -ldouble: 4
> -
> -Function: "expm1_upward":
> -double: 1
> -float: 1
> -ldouble: 3
> -
> -Function: "gamma":
> -double: 3
> -float: 3
> -ldouble: 5
> -
> -Function: "gamma_downward":
> -double: 4
> -float: 4
> -ldouble: 8
> -
> -Function: "gamma_towardzero":
> -double: 4
> -float: 3
> -ldouble: 5
> -
> -Function: "gamma_upward":
> -double: 4
> -float: 5
> -ldouble: 8
> -
> -Function: "hypot":
> -double: 1
> -ldouble: 1
> -
> -Function: "hypot_downward":
> -double: 1
> -ldouble: 1
> -
> -Function: "hypot_towardzero":
> -double: 1
> -ldouble: 1
> -
> -Function: "hypot_upward":
> -double: 1
> -ldouble: 1
> -
> -Function: "j0":
> -double: 2
> -float: 8
> -ldouble: 2
> -
> -Function: "j0_downward":
> -double: 2
> -float: 4
> -ldouble: 4
> -
> -Function: "j0_towardzero":
> -double: 5
> -float: 6
> -ldouble: 2
> -
> -Function: "j0_upward":
> -double: 4
> -float: 5
> -ldouble: 5
> -
> -Function: "j1":
> -double: 2
> -float: 8
> -ldouble: 4
> -
> -Function: "j1_downward":
> -double: 3
> -float: 5
> -ldouble: 4
> -
> -Function: "j1_towardzero":
> -double: 3
> -float: 2
> -ldouble: 4
> -
> -Function: "j1_upward":
> -double: 3
> -float: 4
> -ldouble: 3
> -
> -Function: "jn":
> -double: 4
> -float: 4
> -ldouble: 7
> -
> -Function: "jn_downward":
> -double: 4
> -float: 5
> -ldouble: 8
> -
> -Function: "jn_towardzero":
> -double: 4
> -float: 5
> -ldouble: 8
> -
> -Function: "jn_upward":
> -double: 5
> -float: 4
> -ldouble: 7
> -
> -Function: "lgamma":
> -double: 3
> -float: 3
> -ldouble: 5
> -
> -Function: "lgamma_downward":
> -double: 4
> -float: 4
> -ldouble: 8
> -
> -Function: "lgamma_towardzero":
> -double: 4
> -float: 3
> -ldouble: 5
> -
> -Function: "lgamma_upward":
> -double: 4
> -float: 5
> -ldouble: 8
> -
> -Function: "log":
> -ldouble: 1
> -
> -Function: "log10":
> -double: 2
> -float: 2
> -ldouble: 1
> -
> -Function: "log10_downward":
> -double: 2
> -float: 3
> -ldouble: 1
> -
> -Function: "log10_towardzero":
> -double: 2
> -float: 1
> -ldouble: 1
> -
> -Function: "log10_upward":
> -double: 2
> -float: 2
> -ldouble: 1
> -
> -Function: "log1p":
> -double: 1
> -float: 1
> -ldouble: 2
> -
> -Function: "log1p_downward":
> -double: 1
> -float: 2
> -ldouble: 3
> -
> -Function: "log1p_towardzero":
> -double: 2
> -float: 2
> -ldouble: 3
> -
> -Function: "log1p_upward":
> -double: 2
> -float: 2
> -ldouble: 2
> -
> -Function: "log2":
> -double: 1
> -float: 1
> -ldouble: 2
> -
> -Function: "log2_downward":
> -double: 3
> -ldouble: 3
> -
> -Function: "log2_towardzero":
> -double: 2
> -ldouble: 1
> -
> -Function: "log2_upward":
> -double: 3
> -ldouble: 1
> -
> -Function: "log_downward":
> -ldouble: 1
> -
> -Function: "log_towardzero":
> -ldouble: 2
> -
> -Function: "log_upward":
> -double: 1
> -ldouble: 2
> -
> -Function: "pow":
> -double: 1
> -ldouble: 2
> -
> -Function: "pow_downward":
> -double: 1
> -float: 1
> -ldouble: 2
> -
> -Function: "pow_towardzero":
> -double: 1
> -float: 1
> -ldouble: 2
> -
> -Function: "pow_upward":
> -double: 1
> -float: 1
> -ldouble: 2
> -
> -Function: "sin":
> -double: 1
> -float: 1
> -ldouble: 1
> -
> -Function: "sin_downward":
> -double: 1
> -float: 1
> -ldouble: 3
> -
> -Function: "sin_towardzero":
> -double: 1
> -float: 1
> -ldouble: 2
> -
> -Function: "sin_upward":
> -double: 1
> -float: 1
> -ldouble: 3
> -
> -Function: "sincos":
> -double: 1
> -ldouble: 1
> -
> -Function: "sincos_downward":
> -double: 1
> -float: 1
> -ldouble: 3
> -
> -Function: "sincos_towardzero":
> -double: 1
> -float: 1
> -ldouble: 2
> -
> -Function: "sincos_upward":
> -double: 1
> -float: 1
> -ldouble: 3
> -
> -Function: "sinh":
> -double: 2
> -float: 2
> -ldouble: 2
> -
> -Function: "sinh_downward":
> -double: 3
> -float: 3
> -ldouble: 3
> -
> -Function: "sinh_towardzero":
> -double: 2
> -float: 2
> -ldouble: 3
> -
> -Function: "sinh_upward":
> -double: 3
> -float: 3
> -ldouble: 4
> -
> -Function: "tan":
> -float: 1
> -ldouble: 1
> -
> -Function: "tan_downward":
> -double: 1
> -float: 2
> -ldouble: 1
> -
> -Function: "tan_towardzero":
> -double: 1
> -float: 1
> -ldouble: 1
> -
> -Function: "tan_upward":
> -double: 1
> -float: 1
> -ldouble: 1
> -
> -Function: "tanh":
> -double: 2
> -float: 2
> -ldouble: 2
> -
> -Function: "tanh_downward":
> -double: 3
> -float: 3
> -ldouble: 4
> -
> -Function: "tanh_towardzero":
> -double: 2
> -float: 2
> -ldouble: 3
> -
> -Function: "tanh_upward":
> -double: 3
> -float: 3
> -ldouble: 3
> -
> -Function: "tgamma":
> -double: 5
> -float: 8
> -ldouble: 4
> -
> -Function: "tgamma_downward":
> -double: 5
> -float: 7
> -ldouble: 5
> -
> -Function: "tgamma_towardzero":
> -double: 5
> -float: 7
> -ldouble: 5
> -
> -Function: "tgamma_upward":
> -double: 4
> -float: 8
> -ldouble: 4
> -
> -Function: "y0":
> -double: 2
> -float: 6
> -ldouble: 3
> -
> -Function: "y0_downward":
> -double: 3
> -float: 4
> -ldouble: 4
> -
> -Function: "y0_towardzero":
> -double: 3
> -float: 3
> -ldouble: 3
> -
> -Function: "y0_upward":
> -double: 2
> -float: 5
> -ldouble: 3
> -
> -Function: "y1":
> -double: 3
> -float: 2
> -ldouble: 2
> -
> -Function: "y1_downward":
> -double: 3
> -float: 2
> -ldouble: 4
> -
> -Function: "y1_towardzero":
> -double: 3
> -float: 2
> -ldouble: 2
> -
> -Function: "y1_upward":
> -double: 5
> -float: 2
> -ldouble: 5
> -
> -Function: "yn":
> -double: 3
> -float: 3
> -ldouble: 5
> -
> -Function: "yn_downward":
> -double: 3
> -float: 4
> -ldouble: 5
> -
> -Function: "yn_towardzero":
> -double: 3
> -float: 3
> -ldouble: 5
> -
> -Function: "yn_upward":
> -double: 4
> -float: 5
> -ldouble: 5
> -
> -# end of automatic generation
> diff --git a/sysdeps/riscv/rv32/rvd/libm-test-ulps-name b/sysdeps/riscv/rv32/rvd/libm-test-ulps-name
> deleted file mode 100644
> index 6d2816082e..0000000000
> --- a/sysdeps/riscv/rv32/rvd/libm-test-ulps-name
> +++ /dev/null
> @@ -1 +0,0 @@
> -RISC-V 32-bit
> diff --git a/sysdeps/riscv/rv64/rvd/libm-test-ulps b/sysdeps/riscv/rvd/libm-test-ulps
> similarity index 100%
> rename from sysdeps/riscv/rv64/rvd/libm-test-ulps
> rename to sysdeps/riscv/rvd/libm-test-ulps
> diff --git a/sysdeps/riscv/rv64/rvd/libm-test-ulps-name b/sysdeps/riscv/rvd/libm-test-ulps-name
> similarity index 100%
> rename from sysdeps/riscv/rv64/rvd/libm-test-ulps-name
> rename to sysdeps/riscv/rvd/libm-test-ulps-name

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 2/2] riscv: Remove RV32 floating point functions
  2022-09-20 19:21 ` [PATCH 2/2] riscv: Remove RV32 floating point functions DJ Delorie
@ 2022-09-21 17:37   ` Adhemerval Zanella Netto
  0 siblings, 0 replies; 6+ messages in thread
From: Adhemerval Zanella Netto @ 2022-09-21 17:37 UTC (permalink / raw)
  To: DJ Delorie, libc-alpha



On 20/09/22 16:21, DJ Delorie via Libc-alpha wrote:
> 
> We don't need RV32 specific floating point functions, instead make them
> generic for RISC-V.


LGTM, thanks.

Maybe in the future adapt to use compiler builtins.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>

> ---
>  sysdeps/riscv/rv32/rvd/s_lrint.c         | 31 ------------------------
>  sysdeps/riscv/rv32/rvd/s_lround.c        | 31 ------------------------
>  sysdeps/riscv/rv32/rvf/s_lrintf.c        | 31 ------------------------
>  sysdeps/riscv/rv32/rvf/s_lroundf.c       | 31 ------------------------
>  sysdeps/riscv/{rv64 => }/rvd/s_lrint.c   | 12 +++++++--
>  sysdeps/riscv/{rv64 => }/rvd/s_lround.c  | 12 +++++++--
>  sysdeps/riscv/{rv64 => }/rvf/s_lrintf.c  | 12 +++++++--
>  sysdeps/riscv/{rv64 => }/rvf/s_lroundf.c | 12 +++++++--
>  8 files changed, 40 insertions(+), 132 deletions(-)
>  delete mode 100644 sysdeps/riscv/rv32/rvd/s_lrint.c
>  delete mode 100644 sysdeps/riscv/rv32/rvd/s_lround.c
>  delete mode 100644 sysdeps/riscv/rv32/rvf/s_lrintf.c
>  delete mode 100644 sysdeps/riscv/rv32/rvf/s_lroundf.c
>  rename sysdeps/riscv/{rv64 => }/rvd/s_lrint.c (83%)
>  rename sysdeps/riscv/{rv64 => }/rvd/s_lround.c (83%)
>  rename sysdeps/riscv/{rv64 => }/rvf/s_lrintf.c (83%)
>  rename sysdeps/riscv/{rv64 => }/rvf/s_lroundf.c (83%)
> 
> diff --git a/sysdeps/riscv/rv32/rvd/s_lrint.c b/sysdeps/riscv/rv32/rvd/s_lrint.c
> deleted file mode 100644
> index f0a4d6135f..0000000000
> --- a/sysdeps/riscv/rv32/rvd/s_lrint.c
> +++ /dev/null
> @@ -1,31 +0,0 @@
> -/* lrint().  The 32-bit RISC-V (RV32) version.
> -   Copyright (C) 2020-2022 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -
> -   The GNU C Library is free software; you can redistribute it and/or
> -   modify it under the terms of the GNU Lesser General Public
> -   License as published by the Free Software Foundation; either
> -   version 2.1 of the License, or (at your option) any later version.
> -
> -   The GNU C Library is distributed in the hope that it will be useful,
> -   but WITHOUT ANY WARRANTY; without even the implied warranty of
> -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> -   Lesser General Public License for more details.
> -
> -   You should have received a copy of the GNU Lesser General Public
> -   License along with the GNU C Library.  If not, see
> -   <https://www.gnu.org/licenses/>.  */
> -
> -#include <math.h>
> -#include <libm-alias-double.h>
> -#include <stdint.h>
> -
> -long int
> -__lrint (double x)
> -{
> -  int32_t res;
> -  asm ("fcvt.w.d %0, %1" : "=r" (res) : "f" (x));
> -  return res;
> -}
> -
> -libm_alias_double (__lrint, lrint)
> diff --git a/sysdeps/riscv/rv32/rvd/s_lround.c b/sysdeps/riscv/rv32/rvd/s_lround.c
> deleted file mode 100644
> index 7549461095..0000000000
> --- a/sysdeps/riscv/rv32/rvd/s_lround.c
> +++ /dev/null
> @@ -1,31 +0,0 @@
> -/* lround().  32-bit RISC-V (RV32) version.
> -   Copyright (C) 2020-2022 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -
> -   The GNU C Library is free software; you can redistribute it and/or
> -   modify it under the terms of the GNU Lesser General Public
> -   License as published by the Free Software Foundation; either
> -   version 2.1 of the License, or (at your option) any later version.
> -
> -   The GNU C Library is distributed in the hope that it will be useful,
> -   but WITHOUT ANY WARRANTY; without even the implied warranty of
> -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> -   Lesser General Public License for more details.
> -
> -   You should have received a copy of the GNU Lesser General Public
> -   License along with the GNU C Library.  If not, see
> -   <https://www.gnu.org/licenses/>.  */
> -
> -#include <math.h>
> -#include <libm-alias-double.h>
> -#include <stdint.h>
> -
> -long int
> -__lround (double x)
> -{
> -  int32_t res;
> -  asm ("fcvt.w.d %0, %1, rmm" : "=r" (res) : "f" (x));
> -  return res;
> -}
> -
> -libm_alias_double (__lround, lround)
> diff --git a/sysdeps/riscv/rv32/rvf/s_lrintf.c b/sysdeps/riscv/rv32/rvf/s_lrintf.c
> deleted file mode 100644
> index 6cc281f82a..0000000000
> --- a/sysdeps/riscv/rv32/rvf/s_lrintf.c
> +++ /dev/null
> @@ -1,31 +0,0 @@
> -/* lrintf().  32-bit RISC-V (RV32) version.
> -   Copyright (C) 2020-2022 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -
> -   The GNU C Library is free software; you can redistribute it and/or
> -   modify it under the terms of the GNU Lesser General Public
> -   License as published by the Free Software Foundation; either
> -   version 2.1 of the License, or (at your option) any later version.
> -
> -   The GNU C Library is distributed in the hope that it will be useful,
> -   but WITHOUT ANY WARRANTY; without even the implied warranty of
> -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> -   Lesser General Public License for more details.
> -
> -   You should have received a copy of the GNU Lesser General Public
> -   License along with the GNU C Library.  If not, see
> -   <https://www.gnu.org/licenses/>.  */
> -
> -#include <math.h>
> -#include <libm-alias-float.h>
> -#include <stdint.h>
> -
> -long int
> -__lrintf (float x)
> -{
> -  int32_t res;
> -  asm ("fcvt.w.s %0, %1" : "=r" (res) : "f" (x));
> -  return res;
> -}
> -
> -libm_alias_float (__lrint, lrint)
> diff --git a/sysdeps/riscv/rv32/rvf/s_lroundf.c b/sysdeps/riscv/rv32/rvf/s_lroundf.c
> deleted file mode 100644
> index dcaef30fc7..0000000000
> --- a/sysdeps/riscv/rv32/rvf/s_lroundf.c
> +++ /dev/null
> @@ -1,31 +0,0 @@
> -/* lroundf().  32-bit RISC-V (RV32) version.
> -   Copyright (C) 2020-2022 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -
> -   The GNU C Library is free software; you can redistribute it and/or
> -   modify it under the terms of the GNU Lesser General Public
> -   License as published by the Free Software Foundation; either
> -   version 2.1 of the License, or (at your option) any later version.
> -
> -   The GNU C Library is distributed in the hope that it will be useful,
> -   but WITHOUT ANY WARRANTY; without even the implied warranty of
> -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> -   Lesser General Public License for more details.
> -
> -   You should have received a copy of the GNU Lesser General Public
> -   License along with the GNU C Library.  If not, see
> -   <https://www.gnu.org/licenses/>.  */
> -
> -#include <math.h>
> -#include <libm-alias-float.h>
> -#include <stdint.h>
> -
> -long int
> -__lroundf (float x)
> -{
> -  int32_t res;
> -  asm ("fcvt.w.s %0, %1, rmm" : "=r" (res) : "f" (x));
> -  return res;
> -}
> -
> -libm_alias_float (__lround, lround)
> diff --git a/sysdeps/riscv/rv64/rvd/s_lrint.c b/sysdeps/riscv/rvd/s_lrint.c
> similarity index 83%
> rename from sysdeps/riscv/rv64/rvd/s_lrint.c
> rename to sysdeps/riscv/rvd/s_lrint.c
> index 64bf72ec02..5a9693034c 100644
> --- a/sysdeps/riscv/rv64/rvd/s_lrint.c
> +++ b/sysdeps/riscv/rvd/s_lrint.c
> @@ -19,11 +19,19 @@
>  #include <libm-alias-double.h>
>  #include <stdint.h>
>  
> +#if __WORDSIZE == 64
> +# define OP "fcvt.l.d"
> +#elif __WORDSIZE == 32
> +# define OP "fcvt.w.d"
> +#else
> +# error Unsupported
> +#endif
> +
>  long int
>  __lrint (double x)
>  {
> -  int64_t res;
> -  asm ("fcvt.l.d %0, %1" : "=r" (res) : "f" (x));
> +  long int res;
> +  asm (OP "\t%0, %1" : "=r" (res) : "f" (x));
>    return res;
>  }
>  
> diff --git a/sysdeps/riscv/rv64/rvd/s_lround.c b/sysdeps/riscv/rvd/s_lround.c
> similarity index 83%
> rename from sysdeps/riscv/rv64/rvd/s_lround.c
> rename to sysdeps/riscv/rvd/s_lround.c
> index 1b55d99a0e..f869aa41ce 100644
> --- a/sysdeps/riscv/rv64/rvd/s_lround.c
> +++ b/sysdeps/riscv/rvd/s_lround.c
> @@ -19,11 +19,19 @@
>  #include <libm-alias-double.h>
>  #include <stdint.h>
>  
> +#if __WORDSIZE == 64
> +# define OP "fcvt.l.d"
> +#elif __WORDSIZE == 32
> +# define OP "fcvt.w.d"
> +#else
> +# error Unsupported
> +#endif
> +
>  long int
>  __lround (double x)
>  {
> -  int64_t res;
> -  asm ("fcvt.l.d %0, %1, rmm" : "=r" (res) : "f" (x));
> +  long int res;
> +  asm (OP "\t%0, %1, rmm" : "=r" (res) : "f" (x));
>    return res;
>  }
>  
> diff --git a/sysdeps/riscv/rv64/rvf/s_lrintf.c b/sysdeps/riscv/rvf/s_lrintf.c
> similarity index 83%
> rename from sysdeps/riscv/rv64/rvf/s_lrintf.c
> rename to sysdeps/riscv/rvf/s_lrintf.c
> index ca97bc108e..0bd4945df7 100644
> --- a/sysdeps/riscv/rv64/rvf/s_lrintf.c
> +++ b/sysdeps/riscv/rvf/s_lrintf.c
> @@ -20,11 +20,19 @@
>  #include <libm-alias-float.h>
>  #include <stdint.h>
>  
> +#if __WORDSIZE == 64
> +# define OP "fcvt.l.s"
> +#elif __WORDSIZE == 32
> +# define OP "fcvt.w.s"
> +#else
> +# error Unsupported
> +#endif
> +
>  long int
>  __lrintf (float x)
>  {
> -  int64_t res;
> -  asm ("fcvt.l.s %0, %1" : "=r" (res) : "f" (x));
> +  long int res;
> +  asm (OP "\t%0, %1" : "=r" (res) : "f" (x));
>    return res;
>  }
>  
> diff --git a/sysdeps/riscv/rv64/rvf/s_lroundf.c b/sysdeps/riscv/rvf/s_lroundf.c
> similarity index 83%
> rename from sysdeps/riscv/rv64/rvf/s_lroundf.c
> rename to sysdeps/riscv/rvf/s_lroundf.c
> index 046870d0a3..c6dd141230 100644
> --- a/sysdeps/riscv/rv64/rvf/s_lroundf.c
> +++ b/sysdeps/riscv/rvf/s_lroundf.c
> @@ -20,11 +20,19 @@
>  #include <libm-alias-float.h>
>  #include <stdint.h>
>  
> +#if __WORDSIZE == 64
> +# define OP "fcvt.l.s"
> +#elif __WORDSIZE == 32
> +# define OP "fcvt.w.s"
> +#else
> +# error Unsupported
> +#endif
> +
>  long int
>  __lroundf (float x)
>  {
> -  int64_t res;
> -  asm ("fcvt.l.s %0, %1, rmm" : "=r" (res) : "f" (x));
> +  long int res;
> +  asm (OP "\t%0, %1, rmm" : "=r" (res) : "f" (x));
>    return res;
>  }
>  

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH 1/2] riscv: Consolidate the libm-test-ulps
  2022-09-21 17:35   ` Adhemerval Zanella Netto
@ 2022-09-21 18:39     ` DJ Delorie
  0 siblings, 0 replies; 6+ messages in thread
From: DJ Delorie @ 2022-09-21 18:39 UTC (permalink / raw)
  To: Adhemerval Zanella Netto; +Cc: libc-alpha


Thanks!  Pushed.


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-09-21 18:39 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-20 19:50 [PATCH 0/2] coalesce some rv64 and rv32 stuff DJ Delorie
2022-09-15  4:37 ` [PATCH 1/2] riscv: Consolidate the libm-test-ulps DJ Delorie
2022-09-21 17:35   ` Adhemerval Zanella Netto
2022-09-21 18:39     ` DJ Delorie
2022-09-20 19:21 ` [PATCH 2/2] riscv: Remove RV32 floating point functions DJ Delorie
2022-09-21 17:37   ` Adhemerval Zanella Netto

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).