Re: [PATCH v3 0/3] Add math support for non LDBL_EQ_DBL architecture

Jeff Johnston <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <CAOox84uQmjBGwpD8zRNpVVrwsN7yez546tJZXXx9jGPGzLayRw@mail.gmail.com>
Please go ahead.  For some reason I thought there was some outstanding
comment.

-- Jeff J.

On Mon, May 15, 2023 at 5:36 PM Joel Sherrill <[email protected]> wrote:

> This has been sitting for 10 days (two weekends) and has no comments? Is it
> OK to merge now?
>
> Thanks.
>
> --joel
>
> On Fri, May 5, 2023 at 1:39 PM Jennifer Averett <
> [email protected]> wrote:
>
> > Patch v3 1/3 - Used RTEMS modified <sys/endian.h>.  This was based upon
> > Freebsd version but modified to work with 16-bit targets.
> > Patch v3 2/3 - Includes were added to resolve cygwin errors.
> > Patch v3 3/3 - autogenerated newlib.hin was removed.
> >
> > The attached set of patches add long double support for i386, aarch64 and
> > x86_64.  The riscv and powerpc are supported by FreeBSD but will need
> more
> > work to be supported by newlib.  FreeBSD has separate 64 and 32 bit
> powerpc
> > support which would have to be integrated for newlib. FreeBSD riscv
> support
> > is 64 and there are issues with fenv.h that would have to be addressed.
> >
> > The first patch is FreeBSD source.  Most of the source resides in three
> > directories ld, ld128, and ld80.  These contain the long double methods.
> > The ld128 and ld80 are enabled based on the architecture.  I also added
> > the FreeBSD sys/endian.h file which was required to build.   Finally, an
> > architecture machine/_fpmath.h file was copied from FreeBSD for each
> > architecture the methods are to be built with.  The existence of this
> file
> > is used to trigger the FreeBSD long double math methods to build.  If the
> > architecture does not have _fpmath.h the LDBL_EQ_DBL files are built
> > instead.
> >
> > The second patch contains the modifications necessary to build in newlib.
> > In FreeBSD some header files from any of the three directories are
> visible
> > to
> > all the source files.  The include statements were modified so the header
> > file was pulled from the required directory (e.g, “file.h” was changed to
> > “ld/file.h”).  The files invtrig.h and k_expl.h were created in the ld
> > directory and conditionally include either the ld128 or the ld80 version
> of
> > that header file. If the configure/makefile magic were changed it might
> be
> > possible to adjust the include arguments to the compiler rather than the
> > include statements.
> >
> > Also in the second patch, some of the _fpmath.h and a couple of the
> source
> > files
> > unsigned long and unsigned int were changed to fixed width types so
> > different
> > sized unsigned long could be accommodated.  The FreeBSD files
> > s_nearbyint.c,
> > s_fdim.c, and scalbln.c contained integer, float and long double
> > methods.  The int and float methods were removed and the file names were
> > changed to s_nearbyintl.c, fdiml.c and scalblnl.c to resolve conflicts.
> >
> > Finally, defines were add to math.h for the added architectures.
> >
> > These changes were checked against the FACE Conformance Test Suite.
> >
> > Jennifer Averett (3):
> >   newlib: Add FreeBSD files for non LDBL_EQ_DBL support
> >   newlib: Add non LDBL_EQ_DBL math support for aarch64, i386, and x86_64
> >   Regenerated source for adding non LDBL_EQ_DBL
> >
> >  newlib/Makefile.in                            | 1463 ++++++++++++++++-
> >  newlib/configure                              |   16 +
> >  newlib/libc/acinclude.m4                      |    3 +
> >  newlib/libc/include/math.h                    |    3 +-
> >  newlib/libc/include/sys/endian.h              |  207 +++
> >  newlib/libc/machine/aarch64/machine/_fpmath.h |   64 +
> >  newlib/libc/machine/i386/machine/_fpmath.h    |   56 +
> >  newlib/libc/machine/x86_64/machine/_fpmath.h  |   57 +
> >  newlib/libm/Makefile.inc                      |    8 +
> >  newlib/libm/ld/Makefile.inc                   |   56 +
> >  newlib/libm/ld/e_acoshl.c                     |   89 +
> >  newlib/libm/ld/e_acosl.c                      |   87 +
> >  newlib/libm/ld/e_asinl.c                      |   77 +
> >  newlib/libm/ld/e_atan2l.c                     |  120 ++
> >  newlib/libm/ld/e_atanhl.c                     |   74 +
> >  newlib/libm/ld/e_coshl.c                      |  132 ++
> >  newlib/libm/ld/e_fmodl.c                      |  149 ++
> >  newlib/libm/ld/e_lgammal.c                    |   27 +
> >  newlib/libm/ld/e_remainderl.c                 |   40 +
> >  newlib/libm/ld/e_sinhl.c                      |  134 ++
> >  newlib/libm/ld/fdiml.c                        |   55 +
> >  newlib/libm/ld/fpmath.h                       |   82 +
> >  newlib/libm/ld/invtrig.h                      |   34 +
> >  newlib/libm/ld/k_expl.h                       |   33 +
> >  newlib/libm/ld/math_private.h                 |  941 +++++++++++
> >  newlib/libm/ld/s_asinhl.c                     |   91 +
> >  newlib/libm/ld/s_atanl.c                      |   85 +
> >  newlib/libm/ld/s_cbrtl.c                      |  143 ++
> >  newlib/libm/ld/s_ceill.c                      |  101 ++
> >  newlib/libm/ld/s_copysignl.c                  |   44 +
> >  newlib/libm/ld/s_cosl.c                       |  102 ++
> >  newlib/libm/ld/s_fabsl.c                      |   45 +
> >  newlib/libm/ld/s_floorl.c                     |  101 ++
> >  newlib/libm/ld/s_fmal.c                       |  274 +++
> >  newlib/libm/ld/s_fmaxl.c                      |   57 +
> >  newlib/libm/ld/s_fminl.c                      |   57 +
> >  newlib/libm/ld/s_frexpl.c                     |   64 +
> >  newlib/libm/ld/s_ilogbl.c                     |   54 +
> >  newlib/libm/ld/s_llrintl.c                    |    9 +
> >  newlib/libm/ld/s_llroundl.c                   |   11 +
> >  newlib/libm/ld/s_logbl.c                      |   55 +
> >  newlib/libm/ld/s_lrint.c                      |   60 +
> >  newlib/libm/ld/s_lrintl.c                     |    9 +
> >  newlib/libm/ld/s_lround.c                     |   70 +
> >  newlib/libm/ld/s_lroundl.c                    |   11 +
> >  newlib/libm/ld/s_modfl.c                      |  103 ++
> >  newlib/libm/ld/s_nearbyintl.c                 |   68 +
> >  newlib/libm/ld/s_nextafterl.c                 |   80 +
> >  newlib/libm/ld/s_nexttoward.c                 |   72 +
> >  newlib/libm/ld/s_nexttowardf.c                |   59 +
> >  newlib/libm/ld/s_remquol.c                    |  173 ++
> >  newlib/libm/ld/s_rintl.c                      |   93 ++
> >  newlib/libm/ld/s_roundl.c                     |   64 +
> >  newlib/libm/ld/s_scalbnl.c                    |   49 +
> >  newlib/libm/ld/s_sinl.c                       |   95 ++
> >  newlib/libm/ld/s_tanhl.c                      |  174 ++
> >  newlib/libm/ld/s_tanl.c                       |   97 ++
> >  newlib/libm/ld/s_truncl.c                     |   68 +
> >  newlib/libm/ld/scalblnl.c                     |   63 +
> >  newlib/libm/ld128/Makefile.inc                |   14 +
> >  newlib/libm/ld128/b_tgammal.c                 |   57 +
> >  newlib/libm/ld128/e_lgammal_r.c               |  330 ++++
> >  newlib/libm/ld128/e_powl.c                    |  443 +++++
> >  newlib/libm/ld128/e_rem_pio2l.h               |  135 ++
> >  newlib/libm/ld128/invtrig.c                   |  102 ++
> >  newlib/libm/ld128/invtrig.h                   |  115 ++
> >  newlib/libm/ld128/k_cosl.c                    |   59 +
> >  newlib/libm/ld128/k_expl.h                    |  324 ++++
> >  newlib/libm/ld128/k_sinl.c                    |   59 +
> >  newlib/libm/ld128/s_erfl.c                    |  329 ++++
> >  newlib/libm/ld128/s_exp2l.c                   |  429 +++++
> >  newlib/libm/ld128/s_expl.c                    |  326 ++++
> >  newlib/libm/ld128/s_logl.c                    |  740 +++++++++
> >  newlib/libm/ld80/Makefile.inc                 |   15 +
> >  newlib/libm/ld80/b_expl.c                     |  113 ++
> >  newlib/libm/ld80/b_logl.c                     |  375 +++++
> >  newlib/libm/ld80/b_tgammal.c                  |  422 +++++
> >  newlib/libm/ld80/e_lgammal_r.c                |  358 ++++
> >  newlib/libm/ld80/e_powl.c                     |  662 ++++++++
> >  newlib/libm/ld80/e_rem_pio2l.h                |  143 ++
> >  newlib/libm/ld80/invtrig.c                    |   84 +
> >  newlib/libm/ld80/invtrig.h                    |  116 ++
> >  newlib/libm/ld80/k_cosl.c                     |   78 +
> >  newlib/libm/ld80/k_cospil.h                   |   42 +
> >  newlib/libm/ld80/k_expl.h                     |  301 ++++
> >  newlib/libm/ld80/k_sinl.c                     |   62 +
> >  newlib/libm/ld80/k_sinpil.h                   |   42 +
> >  newlib/libm/ld80/s_cospil.c                   |  129 ++
> >  newlib/libm/ld80/s_erfl.c                     |  337 ++++
> >  newlib/libm/ld80/s_exp2l.c                    |  290 ++++
> >  newlib/libm/ld80/s_expl.c                     |  279 ++++
> >  newlib/libm/ld80/s_logl.c                     |  722 ++++++++
> >  newlib/libm/ld80/s_sinpil.c                   |  140 ++
> >  93 files changed, 14814 insertions(+), 66 deletions(-)
> >  create mode 100644 newlib/libc/include/sys/endian.h
> >  create mode 100644 newlib/libc/machine/aarch64/machine/_fpmath.h
> >  create mode 100644 newlib/libc/machine/i386/machine/_fpmath.h
> >  create mode 100644 newlib/libc/machine/x86_64/machine/_fpmath.h
> >  create mode 100644 newlib/libm/ld/Makefile.inc
> >  create mode 100644 newlib/libm/ld/e_acoshl.c
> >  create mode 100644 newlib/libm/ld/e_acosl.c
> >  create mode 100644 newlib/libm/ld/e_asinl.c
> >  create mode 100644 newlib/libm/ld/e_atan2l.c
> >  create mode 100644 newlib/libm/ld/e_atanhl.c
> >  create mode 100644 newlib/libm/ld/e_coshl.c
> >  create mode 100644 newlib/libm/ld/e_fmodl.c
> >  create mode 100644 newlib/libm/ld/e_lgammal.c
> >  create mode 100644 newlib/libm/ld/e_remainderl.c
> >  create mode 100644 newlib/libm/ld/e_sinhl.c
> >  create mode 100644 newlib/libm/ld/fdiml.c
> >  create mode 100644 newlib/libm/ld/fpmath.h
> >  create mode 100644 newlib/libm/ld/invtrig.h
> >  create mode 100644 newlib/libm/ld/k_expl.h
> >  create mode 100644 newlib/libm/ld/math_private.h
> >  create mode 100644 newlib/libm/ld/s_asinhl.c
> >  create mode 100644 newlib/libm/ld/s_atanl.c
> >  create mode 100644 newlib/libm/ld/s_cbrtl.c
> >  create mode 100644 newlib/libm/ld/s_ceill.c
> >  create mode 100644 newlib/libm/ld/s_copysignl.c
> >  create mode 100644 newlib/libm/ld/s_cosl.c
> >  create mode 100644 newlib/libm/ld/s_fabsl.c
> >  create mode 100644 newlib/libm/ld/s_floorl.c
> >  create mode 100644 newlib/libm/ld/s_fmal.c
> >  create mode 100644 newlib/libm/ld/s_fmaxl.c
> >  create mode 100644 newlib/libm/ld/s_fminl.c
> >  create mode 100644 newlib/libm/ld/s_frexpl.c
> >  create mode 100644 newlib/libm/ld/s_ilogbl.c
> >  create mode 100644 newlib/libm/ld/s_llrintl.c
> >  create mode 100644 newlib/libm/ld/s_llroundl.c
> >  create mode 100644 newlib/libm/ld/s_logbl.c
> >  create mode 100644 newlib/libm/ld/s_lrint.c
> >  create mode 100644 newlib/libm/ld/s_lrintl.c
> >  create mode 100644 newlib/libm/ld/s_lround.c
> >  create mode 100644 newlib/libm/ld/s_lroundl.c
> >  create mode 100644 newlib/libm/ld/s_modfl.c
> >  create mode 100644 newlib/libm/ld/s_nearbyintl.c
> >  create mode 100644 newlib/libm/ld/s_nextafterl.c
> >  create mode 100644 newlib/libm/ld/s_nexttoward.c
> >  create mode 100644 newlib/libm/ld/s_nexttowardf.c
> >  create mode 100644 newlib/libm/ld/s_remquol.c
> >  create mode 100644 newlib/libm/ld/s_rintl.c
> >  create mode 100644 newlib/libm/ld/s_roundl.c
> >  create mode 100644 newlib/libm/ld/s_scalbnl.c
> >  create mode 100644 newlib/libm/ld/s_sinl.c
> >  create mode 100644 newlib/libm/ld/s_tanhl.c
> >  create mode 100644 newlib/libm/ld/s_tanl.c
> >  create mode 100644 newlib/libm/ld/s_truncl.c
> >  create mode 100644 newlib/libm/ld/scalblnl.c
> >  create mode 100644 newlib/libm/ld128/Makefile.inc
> >  create mode 100644 newlib/libm/ld128/b_tgammal.c
> >  create mode 100644 newlib/libm/ld128/e_lgammal_r.c
> >  create mode 100644 newlib/libm/ld128/e_powl.c
> >  create mode 100644 newlib/libm/ld128/e_rem_pio2l.h
> >  create mode 100644 newlib/libm/ld128/invtrig.c
> >  create mode 100644 newlib/libm/ld128/invtrig.h
> >  create mode 100644 newlib/libm/ld128/k_cosl.c
> >  create mode 100644 newlib/libm/ld128/k_expl.h
> >  create mode 100644 newlib/libm/ld128/k_sinl.c
> >  create mode 100644 newlib/libm/ld128/s_erfl.c
> >  create mode 100644 newlib/libm/ld128/s_exp2l.c
> >  create mode 100644 newlib/libm/ld128/s_expl.c
> >  create mode 100644 newlib/libm/ld128/s_logl.c
> >  create mode 100644 newlib/libm/ld80/Makefile.inc
> >  create mode 100644 newlib/libm/ld80/b_expl.c
> >  create mode 100644 newlib/libm/ld80/b_logl.c
> >  create mode 100644 newlib/libm/ld80/b_tgammal.c
> >  create mode 100644 newlib/libm/ld80/e_lgammal_r.c
> >  create mode 100644 newlib/libm/ld80/e_powl.c
> >  create mode 100644 newlib/libm/ld80/e_rem_pio2l.h
> >  create mode 100644 newlib/libm/ld80/invtrig.c
> >  create mode 100644 newlib/libm/ld80/invtrig.h
> >  create mode 100644 newlib/libm/ld80/k_cosl.c
> >  create mode 100644 newlib/libm/ld80/k_cospil.h
> >  create mode 100644 newlib/libm/ld80/k_expl.h
> >  create mode 100644 newlib/libm/ld80/k_sinl.c
> >  create mode 100644 newlib/libm/ld80/k_sinpil.h
> >  create mode 100644 newlib/libm/ld80/s_cospil.c
> >  create mode 100644 newlib/libm/ld80/s_erfl.c
> >  create mode 100644 newlib/libm/ld80/s_exp2l.c
> >  create mode 100644 newlib/libm/ld80/s_expl.c
> >  create mode 100644 newlib/libm/ld80/s_logl.c
> >  create mode 100644 newlib/libm/ld80/s_sinpil.c
> >
> > --
> > 2.31.1
> >
> >
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.