Re: [PATCH v3 0/3] Add math support for non LDBL_EQ_DBL architecture
Joel Sherrill <[email protected]>
| Newsgroups | gmane.comp.lib.newlib |
|---|---|
| Message-ID | <CAF9ehCUVsE=Fx_seO7RDMKUii4QujwHDFxxZADHCN0EfnDaH5A@mail.gmail.com> |
Thanks. I have pushed it to sourceware.org. Jennifer has confirmed it matches her expectations. I have updated the hash in the RTEMS Source Builder and am building tools now. Once I push that patch, our CIT should build on about a half dozen hosts. RTEMS uses about 18 architectures so that should be pretty good coverage. Hopefully that all comes out ok and no one else spots any anomalies. This was a large patch set. --joel On Mon, May 15, 2023 at 9:58 PM Jeff Johnston <[email protected]> wrote: > 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 >> > >> > >> >>