From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-yw1-f172.google.com (mail-yw1-f172.google.com [209.85.128.172]) by sourceware.org (Postfix) with ESMTPS id 05A51385773C for ; Mon, 15 May 2023 21:36:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 05A51385773C Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rtems.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-yw1-f172.google.com with SMTP id 00721157ae682-56186035b61so2522537b3.3 for ; Mon, 15 May 2023 14:36:25 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684186584; x=1686778584; h=cc:to:subject:message-id:date:from:reply-to:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=FuByJ64ZSptcOQMiOvmh5YMuKWTKIWurlb3+IuIkXJ8=; b=fXqHlw2X1/woLAinGQ/2d9ncgAExIgwRYVFdDTeiQW4ZvsQ1YhI/U9wwMGiPrDm2/H 9jVaX3rbUZo0C1+W2Gd9PwyPUOmNnl/Io+glT9gQeb745B93hINi+91odRFIpMkWIBiU srY+E+Jr5fCtE0CP3YjIdXwRep7xBjSThSJWcpadH0xYt24wI28Yt+3z4jb5Mhi2oVuA Gw5XCXi82MyPQlt1Fft0vkEhddhouawz920eEkfxh2JG7LqOEJ7VnFNOanqmuKEae/ne iJ/ZH2p7ak4cD62dYpjAFMEJEQTUxK1KvCu3zTcZic78bb+B3ldiuJeQTcAKrnpViRQV WRKQ== X-Gm-Message-State: AC+VfDyJASRLtjuPyPK7aH3AGfqk4llPSAtls8Msp7I2ABcf7pde8Ltv NTexXxcWPIXQbW6uyNozoCrCxypWMlQ= X-Google-Smtp-Source: ACHHUZ7hvQv+J4ZIoe9dOwgvA7gPe1pSsQG0MGz5x13Uf0DeHfdMOv9GeIimn6iEyw3pp66EAuz76A== X-Received: by 2002:a0d:dac2:0:b0:552:96e0:ccd0 with SMTP id c185-20020a0ddac2000000b0055296e0ccd0mr37944280ywe.16.1684186584044; Mon, 15 May 2023 14:36:24 -0700 (PDT) Received: from mail-yw1-f176.google.com (mail-yw1-f176.google.com. [209.85.128.176]) by smtp.gmail.com with ESMTPSA id z145-20020a0dd797000000b0054e82b6a95esm103858ywd.42.2023.05.15.14.36.23 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 15 May 2023 14:36:23 -0700 (PDT) Received: by mail-yw1-f176.google.com with SMTP id 00721157ae682-55a6efe95c9so189483487b3.1 for ; Mon, 15 May 2023 14:36:23 -0700 (PDT) X-Received: by 2002:a0d:c4c1:0:b0:561:1c14:b8df with SMTP id g184-20020a0dc4c1000000b005611c14b8dfmr9765643ywd.47.1684186583149; Mon, 15 May 2023 14:36:23 -0700 (PDT) MIME-Version: 1.0 References: <20230505183918.3200477-1-jennifer.averett@oarcorp.com> In-Reply-To: <20230505183918.3200477-1-jennifer.averett@oarcorp.com> Reply-To: joel@rtems.org From: Joel Sherrill Date: Mon, 15 May 2023 16:36:11 -0500 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH v3 0/3] Add math support for non LDBL_EQ_DBL architecture To: Jennifer Averett Cc: newlib@sourceware.org Content-Type: multipart/alternative; boundary="00000000000006366f05fbc23f87" X-Spam-Status: No, score=-3031.4 required=5.0 tests=BAYES_00,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,HTML_MESSAGE,KAM_DMARC_STATUS,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --00000000000006366f05fbc23f87 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable 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=E2=80=AFPM Jennifer Averett < jennifer.averett@oarcorp.com> wrote: > Patch v3 1/3 - Used RTEMS modified . 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 power= pc > support which would have to be integrated for newlib. FreeBSD riscv suppo= rt > 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, =E2=80=9Cfile.h=E2=80= =9D was changed to > =E2=80=9Cld/file.h=E2=80=9D). The files invtrig.h and k_expl.h were crea= ted 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 > > --00000000000006366f05fbc23f87--