From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTPS id E1969385770E for ; Tue, 16 May 2023 02:58:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org E1969385770E Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1684205927; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=MXc7NDiLmPccWSmDP9V26Y0FuPQtj9TjkaqrieYI9ew=; b=BfZPqMYDPnp1M9Tf+lMa5ZRgDZuoLKuU0Y4yjc+46wJfJ6qGQMI9jtus9VRhYcyuqkZsFj pyOiF3yW/V/GK55s82c2a7GfpqwsIMvA8nFe2FQKT/+fPjUzSBsATsIqlF5tAS50KBORKR z3LpUaTBukAAZVXAoMbeiR1NoySjHOA= Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-128-qbfX95MnNeyUf84P-qYqZQ-1; Mon, 15 May 2023 22:58:46 -0400 X-MC-Unique: qbfX95MnNeyUf84P-qYqZQ-1 Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-3f387d3b41eso7841841cf.1 for ; Mon, 15 May 2023 19:58:45 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684205925; x=1686797925; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=MXc7NDiLmPccWSmDP9V26Y0FuPQtj9TjkaqrieYI9ew=; b=QI1HnYonfJmLkhlPxc+UTufNEU5tTmVWf+tgCWnIv4KzPa0E+Kp9scI7xeTW9u0nr8 klZQa3+OTs5zOFh0Lm9BGHpTbzjG31AzZF2dsdLVksAS0xamau1QBImiub0FAV1XmTOv ubixQUfmZCCmNZZ561iGbt04Vq0vYgUQAOrOqJEhjVK9I6vOXhu4iezflWnC/yYghFV8 EnlRn9FkrlzKcIJfGiLxfYRdmk/dFJLvF1jyW9Apvzul0/RvzBI51rnPdZGwMtRLgQ04 efkAH+6CYEm3ymElxLhWwFySCfzBNl2gB9FIe9xNs385I4oiPQu2I3Nh9H8DlIcyf9Br Hyug== X-Gm-Message-State: AC+VfDyK6kSrrF1bBGdHVIaYld3IJZbRDV/fVLLF97jkgzXKNh10zpIf Xe+mPB8VMaPmzcrGldhIZgFJN7pMkmR0n6DLpszReo+TLogEEULkjnxZp2M5b6ZyW5xsxl4TtcI OIBfgP++BaSQ3vPHMnhKRw6Epex2NnaNtfcjVrFg= X-Received: by 2002:a05:622a:1a95:b0:3f3:9680:c51d with SMTP id s21-20020a05622a1a9500b003f39680c51dmr2595367qtc.0.1684205925315; Mon, 15 May 2023 19:58:45 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4YRG8ftVzttBx7m1sH/0s/Gl2uPi2MPbkVuhfTBlctvscCYGtvM0G8mAJbKLVVjMcw4qLOrVHbu6Ve2TX4gvw= X-Received: by 2002:a05:622a:1a95:b0:3f3:9680:c51d with SMTP id s21-20020a05622a1a9500b003f39680c51dmr2595351qtc.0.1684205925049; Mon, 15 May 2023 19:58:45 -0700 (PDT) MIME-Version: 1.0 References: <20230505183918.3200477-1-jennifer.averett@oarcorp.com> In-Reply-To: From: Jeff Johnston Date: Mon, 15 May 2023 22:58:34 -0400 Message-ID: Subject: Re: [PATCH v3 0/3] Add math support for non LDBL_EQ_DBL architecture To: joel@rtems.org Cc: Jennifer Averett , newlib@sourceware.org X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/alternative; boundary="000000000000e43f3105fbc6bf9c" X-Spam-Status: No, score=-4.5 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,HTML_MESSAGE,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --000000000000e43f3105fbc6bf9c Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Please go ahead. For some reason I thought there was some outstanding comment. -- Jeff J. On Mon, May 15, 2023 at 5:36=E2=80=AFPM Joel Sherrill wrot= e: > 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 a= nd > > 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 t= he > > architecture does not have _fpmath.h the LDBL_EQ_DBL files are built > > instead. > > > > The second patch contains the modifications necessary to build in newli= b. > > 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 head= er > > 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 cr= eated 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 > > > > > > --000000000000e43f3105fbc6bf9c--