mailing list of musl libc
 help / color / mirror / code / Atom feed
From: Rich Felker <dalias@libc.org>
To: SIMONE MIONE <205212@studenti.unimore.it>
Cc: noloader@gmail.com, musl@lists.openwall.com
Subject: Re: [musl] musl how to use hard float with aarch64-none-elf-gcc
Date: Fri, 25 Feb 2022 13:01:18 -0500	[thread overview]
Message-ID: <20220225180114.GZ7074@brightrain.aerifal.cx> (raw)
In-Reply-To: <CAOUaTh_8mvhmu-myKe8JijWjpgfJnQrwhk2Yv2eTCY4hb_XtXQ@mail.gmail.com>

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 <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 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 <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 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
> > > >
> >

  parent reply	other threads:[~2022-02-25 18:01 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-16  9:50 SIMONE MIONE
2022-02-16 10:24 ` Jeffrey Walton
2022-02-16 11:29   ` Szabolcs Nagy
2022-02-16 11:32     ` Jeffrey Walton
2022-02-16 11:59       ` SIMONE MIONE
2022-02-16 14:57         ` Rich Felker
2022-02-25 15:21           ` SIMONE MIONE
2022-02-25 16:41             ` Damian McGuckin
2022-02-25 16:48               ` SIMONE MIONE
2022-02-25 18:01             ` Rich Felker [this message]
2022-03-01  8:36               ` SIMONE MIONE
2022-03-01 13:10                 ` Rich Felker
2022-03-25  9:08                   ` SIMONE MIONE

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220225180114.GZ7074@brightrain.aerifal.cx \
    --to=dalias@libc.org \
    --cc=205212@studenti.unimore.it \
    --cc=musl@lists.openwall.com \
    --cc=noloader@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).