[PATCH] RISC-V: Support Zfinx/Zdinx extension.

Corinna Vinschen vinschen@redhat.com
Wed Jul 26 13:27:32 GMT 2023


On Jul 26 18:03, Kito Cheng via Newlib wrote:
> Zfinx/Zdinx are new extensions ratified in 2022, it similar to F/D extensions,
> support hard float operation for single/double precision, but the difference
> between Zfinx/Zdinx and F/D is Zfinx/Zdinx is operating under general purpose
> registers rather than dedicated floating-point registers.
> 
> This patch improve the hard float support detection for RISC-V port, so
> that Zfinx/Zdinx can have better/right performance.
> 
> Co-authored-by: Jesse Huang <jesse.huang@sifive.com>
> ---
>  newlib/libc/include/machine/ieeefp.h        |  4 ++--
>  newlib/libc/machine/riscv/ieeefp.c          | 10 +++++-----
>  newlib/libc/machine/riscv/sys/fenv.h        |  2 +-
>  newlib/libm/common/math_config.h            |  6 ++++--
>  newlib/libm/machine/riscv/e_sqrt.c          |  2 +-
>  newlib/libm/machine/riscv/ef_sqrt.c         |  2 +-
>  newlib/libm/machine/riscv/feclearexcept.c   |  3 ++-
>  newlib/libm/machine/riscv/fegetenv.c        |  3 ++-
>  newlib/libm/machine/riscv/fegetexceptflag.c |  3 ++-
>  newlib/libm/machine/riscv/fegetround.c      |  3 ++-
>  newlib/libm/machine/riscv/feholdexcept.c    |  3 ++-
>  newlib/libm/machine/riscv/feraiseexcept.c   |  3 ++-
>  newlib/libm/machine/riscv/fesetenv.c        |  3 ++-
>  newlib/libm/machine/riscv/fesetexceptflag.c |  3 ++-
>  newlib/libm/machine/riscv/fesetround.c      |  3 ++-
>  newlib/libm/machine/riscv/fetestexcept.c    |  3 ++-
>  newlib/libm/machine/riscv/feupdateenv.c     |  3 ++-
>  newlib/libm/machine/riscv/riscv_math.h      | 12 +++++++++---
>  newlib/libm/machine/riscv/s_copysign.c      |  3 ++-
>  newlib/libm/machine/riscv/s_fabs.c          |  3 ++-
>  newlib/libm/machine/riscv/s_finite.c        |  3 ++-
>  newlib/libm/machine/riscv/s_fmax.c          |  3 ++-
>  newlib/libm/machine/riscv/s_fmin.c          |  3 ++-
>  newlib/libm/machine/riscv/s_fpclassify.c    |  5 ++---
>  newlib/libm/machine/riscv/s_isinf.c         |  4 ++--
>  newlib/libm/machine/riscv/s_isnan.c         |  4 ++--
>  newlib/libm/machine/riscv/s_llrint.c        |  3 ++-
>  newlib/libm/machine/riscv/s_llround.c       |  3 ++-
>  newlib/libm/machine/riscv/s_lrint.c         |  3 ++-
>  newlib/libm/machine/riscv/s_lround.c        |  3 ++-
>  newlib/libm/machine/riscv/sf_copysign.c     |  3 ++-
>  newlib/libm/machine/riscv/sf_fabs.c         |  3 ++-
>  newlib/libm/machine/riscv/sf_finite.c       |  3 ++-
>  newlib/libm/machine/riscv/sf_fmax.c         |  3 ++-
>  newlib/libm/machine/riscv/sf_fmin.c         |  3 ++-
>  newlib/libm/machine/riscv/sf_fpclassify.c   |  3 ++-
>  newlib/libm/machine/riscv/sf_isinf.c        |  4 ++--
>  newlib/libm/machine/riscv/sf_isnan.c        |  4 ++--
>  newlib/libm/machine/riscv/sf_llrint.c       |  3 ++-
>  newlib/libm/machine/riscv/sf_llround.c      |  3 ++-
>  newlib/libm/machine/riscv/sf_lrint.c        |  3 ++-
>  newlib/libm/machine/riscv/sf_lround.c       |  3 ++-
>  42 files changed, 93 insertions(+), 56 deletions(-)

Pushed.


Thanks,
Corinna



More information about the Newlib mailing list