From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HTML_MESSAGE,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 23262 invoked from network); 1 Mar 2022 08:37:10 -0000 Received: from mother.openwall.net (195.42.179.200) by inbox.vuxu.org with ESMTPUTF8; 1 Mar 2022 08:37:10 -0000 Received: (qmail 13928 invoked by uid 550); 1 Mar 2022 08:37:07 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Reply-To: musl@lists.openwall.com Received: (qmail 13895 invoked from network); 1 Mar 2022 08:37:06 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=studenti.unimore.it; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=er0AxS0a8D95vf5Ky8tfL5jL4srsq8eLqMv17sV8ilc=; b=If3e6aJRuu2g3SvmYM9UKQ7XTX6YRdRGqzBE8aDEjabhbsVMWNlRD3aDj81mpzDfcV q0aMtUUpvQ9jHmTqKRAJm3VNVzhAPwg+XPFWU4/GIkFXjZJ2bnZ33sbtxb6jDF8u7yR+ 8E+U7Sa0sqOq+PU2mfvQ9brbuYbAbrJ0W+pKfA5RTprITo94r9KPW6Wh37r3DNraSZeA 3oQvjjlRhrXgq1kxOHe76OOkInzoDkCCV7Nj149KlP0F5mpGioO5ze7RaMZelNZ1nAzT v69rCQEQ7lVMTERcrPUCns3DRwTtDjySqtMcs30wR8zgiX5UKrEZxoSJjFnAW5sod8Hw fPag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=er0AxS0a8D95vf5Ky8tfL5jL4srsq8eLqMv17sV8ilc=; b=aTxG8jg8ZRboq6x4YALoeJ3cg1QiyaHh0CUeGqRkZ0QzIAeVDdlGBtY+H5dPQcqJ1D GSnFIEdjUu14GHgt8nS4gXq3k2Ai1n990QoVDUc9hYeF1eO65Qih5yJxqvGyxCzu1Yhy 51H+gSVNHM8DjKNi9kgi36hrSx8XVz4pC8NlP9zTWwehG2uRcELcvGCWaGdilQYYE87D icnvCHfz0Cm5wthSqfISPzD5REos3L2WWM05L+XLFMbRnJfYAx9GRcZ+UmvKz9WWTvhY BVJWfJjc63OgpUYHMHMP1PA7Fk3RsdU2c6JQX65VtPiR7v8lfumJK5TdlhIcLzqfoCAW DqCA== X-Gm-Message-State: AOAM533VhvQ76Yy5DWkX0gUvn62F5SHmzsyWgyspMVqL3pQJbmXpv+/A k6LzUb4PTw+jRTECSKpJe9Lekxjw3l0pBlrbBus6tg== X-Google-Smtp-Source: ABdhPJxdaj2v3LWuuGk7u26sAd1XziWcU4Xl7TvxL5Khih1CUSQ2Hk8CwYPRVc83jjVKmC+nytrJYQ3UtpAX+UbpmMk= X-Received: by 2002:a0d:d7d2:0:b0:2cb:6a62:d953 with SMTP id z201-20020a0dd7d2000000b002cb6a62d953mr23331372ywd.96.1646123814976; Tue, 01 Mar 2022 00:36:54 -0800 (PST) MIME-Version: 1.0 References: <20220216112924.GG1320090@port70.net> <20220216145736.GN7074@brightrain.aerifal.cx> <20220225180114.GZ7074@brightrain.aerifal.cx> In-Reply-To: <20220225180114.GZ7074@brightrain.aerifal.cx> From: SIMONE MIONE <205212@studenti.unimore.it> Date: Tue, 1 Mar 2022 09:36:44 +0100 Message-ID: To: Rich Felker Cc: noloader@gmail.com, musl@lists.openwall.com Content-Type: multipart/alternative; boundary="0000000000003f963905d92411e1" Subject: Re: [musl] musl how to use hard float with aarch64-none-elf-gcc --0000000000003f963905d92411e1 Content-Type: text/plain; charset="UTF-8" My problem is I don't know how to implement such functions. I mean, functions like "__extenddftf2" and so on. Does someone know how to do that? Does someone have some reference I can check to implement those functions? I already have integrated newlib into my system and I didn't have these issues. Now I want to integrate musl but I can't because of this. What am I missing? Il giorno ven 25 feb 2022 alle ore 19:01 Rich Felker ha scritto: > On Fri, Feb 25, 2022 at 04:21:59PM +0100, SIMONE MIONE wrote: > > And what if I don't want quad precision? > > Then you don't have to use it, but at least some minimal amount of the > support code for it will be linked if you're using printf, since > linking can't see what format strings you're using with printf. > > > I mean, when I try to print a float, vfprintf casts the float to a double > > (and that's ok), but it seems like musl uses double as long double, so it > > tries to cast the double to long double. > > Is it true? > > Yes, the vfprintf converts all types up to the largest width/precision > one when loading them so that there are not duplicate code paths. In > the case of floating point, this is completely inconsequential because > only a very small number of operations are performed on the floating > point type to extract the exponent and mantissa and rounding > direction. After that it's all integer arithmetic. And of course the > result is not affected by this because all values of the narrower type > are representable in the wider type (that's the whole point). > > > Can I use a double (or float) as a double precision instead of > > quad precision? > > In short, no. There is no defined or supported ABI for aarch64 like > that. > > In theory it would be possible to define, with assistance from the > tooling (compiler etc), an ABI for aarch64 where long double is just a > copy of double, but I'm unclear what value you'd be hoping to get out > of that. Saving a small amount of .text size? > > Rich > > > > Il giorno mer 16 feb 2022 alle ore 15:57 Rich Felker > ha > > scritto: > > > > > On Wed, Feb 16, 2022 at 12:59:13PM +0100, SIMONE MIONE wrote: > > > > Thank you all for your reply. > > > > I meant when I add musl's lib*.a into my makefile, the compiler > complains > > > > about "undefined reference to __addtf3" (and others). Isn't that > > > > soft-float? Or emulation float? > > > > > > It's the implementation of long double which is IEEE quad in the > > > aarch64 ABI. > > > > > > > My supervisor told me "we already have float implementation so we > don't > > > > need those functions". So I was wondering if I need to disable it in > some > > > > way. > > > > > > No, you need them because there is no fpu implementation of quad. > > > > > > > > > > Il giorno mer 16 feb 2022 alle ore 12:32 Jeffrey Walton < > > > noloader@gmail.com> > > > > ha scritto: > > > > > > > > > On Wed, Feb 16, 2022 at 6:29 AM Szabolcs Nagy > wrote: > > > > > > > > > > > > * Jeffrey Walton [2022-02-16 05:24:48 > -0500]: > > > > > > > On Wed, Feb 16, 2022 at 4:51 AM SIMONE MIONE < > > > > > 205212@studenti.unimore.it> wrote: > > > > > > > > > > > > > > > > I am trying to integrate musl in a baremetal environment. I > > > already > > > > > have float support but I can't manage to disable soft-float by > musl. > > > > > > > > > > > > > > > > I configure with: > > > > > > > > ./configure --target=aarch64-none-elf --enable-debug > > > --disable-shared > > > > > > > > And simple compile with: > > > > > > > > make > > > > > > > > > > > > > > > > Does anyone know how to use hardfloat instead of soft float? > Is > > > > > there any option or flag? Thank you > > > > > > > > > > > > > > The GCC options for hard-floats are -mfpu=neon > -mfloat-abi=hard. In > > > > > > > later versions of GCC, you can also use -mfpu=auto (sometimes). > > > > > > > > > > > > that's for 32bit arm > > > > > > > > > > > > there is no soft float abi for aarch64, so i'm not sure what's > going > > > on. > > > > > > > > > > Oh, you're right My bad. I did not notice it was Aarch64. > > > > > > > > > > Jeff > > > > > > > > > --0000000000003f963905d92411e1 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
My problem is I don't know how to implement such = functions. I mean, functions like "__extenddftf2" and so on.
Does someone know how to do that? Does someone have some reference I = can check to implement those functions?

I already = have integrated newlib into my system and I didn't have these issues. N= ow I want to integrate musl but I can't because of this. What am I miss= ing?

Il giorno ven 25 feb 2022 alle ore 19:01 Rich Felker <dalias@libc.org> ha scritto:
On Fri, Feb 25, 2022 a= t 04:21:59PM +0100, SIMONE MIONE wrote:
> And what if I don't want quad precision?

Then you don't have to use it, but at least some minimal amount of the<= br> support code for it will be linked if you're using printf, since
linking can't see what format strings you're using with printf.

> I mean, when I try to print a float, vfprintf casts the float to a dou= ble
> (and that's ok), but it seems like musl uses double as long double= , so it
> tries to cast the double to long double.
> Is it true?

Yes, the vfprintf converts all types up to the largest width/precision
one when loading them so that there are not duplicate code paths. In
the case of floating point, this is completely inconsequential because
only a very small number of operations are performed on the floating
point type to extract the exponent and mantissa and rounding
direction. After that it's all integer arithmetic. And of course the result is not affected by this because all values of the narrower type
are representable in the wider type (that's the whole point).

> Can I use a double (or float) as a double precision instead of
> quad precision?

In short, no. There is no defined or supported ABI for aarch64 like
that.

In theory it would be possible to define, with assistance from the
tooling (compiler etc), an ABI for aarch64 where long double is just a
copy of double, but I'm unclear what value you'd be hoping to get o= ut
of that. Saving a small amount of .text size?

Rich


> Il giorno mer 16 feb 2022 alle ore 15:57 Rich Felker <dalias@libc.org> ha
> scritto:
>
> > On Wed, Feb 16, 2022 at 12:59:13PM +0100, SIMONE MIONE wrote:
> > > Thank you all for your reply.
> > > I meant when I add musl's lib*.a into my makefile, the c= ompiler complains
> > > about "undefined reference to __addtf3" (and other= s). Isn't that
> > > soft-float? Or emulation float?
> >
> > It's the implementation of long double which is IEEE quad in = the
> > aarch64 ABI.
> >
> > > My supervisor told me "we already have float implementa= tion so we don't
> > > need those functions". So I was wondering if I need to = disable it in some
> > > way.
> >
> > No, you need them because there is no fpu implementation of quad.=
> >
> >
> > > Il giorno mer 16 feb 2022 alle ore 12:32 Jeffrey Walton <=
> > noloader@= gmail.com>
> > > ha scritto:
> > >
> > > > On Wed, Feb 16, 2022 at 6:29 AM Szabolcs Nagy <nsz@port70.net> wrote= :
> > > > >
> > > > > * Jeffrey Walton <noloader@gmail.com> [2022-02-16 05:24:48 = -0500]:
> > > > > > On Wed, Feb 16, 2022 at 4:51 AM SIMONE MIONE = <
> > > > 205212@studenti.unimore.it> wrote:
> > > > > > >
> > > > > > > I am trying to integrate musl in a barem= etal environment. I
> > already
> > > > have float support but I can't manage to disable so= ft-float by musl.
> > > > > > >
> > > > > > > I configure with:
> > > > > > > ./configure --target=3Daarch64-none-elf = --enable-debug
> > --disable-shared
> > > > > > > And simple compile with:
> > > > > > > make
> > > > > > >
> > > > > > > Does anyone know how to use hardfloat in= stead of soft float? Is
> > > > there any option or flag? Thank you
> > > > > >
> > > > > > The GCC options for hard-floats are -mfpu=3Dn= eon -mfloat-abi=3Dhard. In
> > > > > > later versions of GCC, you can also use -mfpu= =3Dauto (sometimes).
> > > > >
> > > > > that's for 32bit arm
> > > > >
> > > > > there is no soft float abi for aarch64, so i'm= not sure what's going
> > on.
> > > >
> > > > Oh, you're right My bad. I did not notice it was Aa= rch64.
> > > >
> > > > Jeff
> > > >
> >
--0000000000003f963905d92411e1--