From: Segher Boessenkool <segher@kernel.crashing.org>
To: Joseph Myers <joseph@codesourcery.com>
Cc: Jakub Jelinek <jakub@redhat.com>,
Michael Meissner <meissner@linux.ibm.com>,
gcc@gcc.gnu.org, Thomas Koenig <tkoenig@netcologne.de>,
fortran@gcc.gnu.org, Tobias Burnus <tobias@codesourcery.com>,
Jonathan Wakely <jwakely@redhat.com>
Subject: Re: libgfortran.so SONAME and powerpc64le-linux ABI changes
Date: Wed, 6 Oct 2021 13:39:19 -0500 [thread overview]
Message-ID: <20211006183919.GK10333@gate.crashing.org> (raw)
In-Reply-To: <alpine.DEB.2.22.394.2110061658410.3641536@digraph.polyomino.org.uk>
On Wed, Oct 06, 2021 at 05:13:59PM +0000, Joseph Myers wrote:
> On Wed, 6 Oct 2021, Jakub Jelinek via Gcc wrote:
> > On Wed, Oct 06, 2021 at 11:07:30AM -0500, Segher Boessenkool wrote:
> > > We can emulate it everywhere (using libquadmath for example). This can
> > > magically make -msoft-float work as well everywhere, btw.
> >
> > Emulation is one thing, but another one is where are those __float128 or
> > quad long double arguments and return values passed. On power8 le I think
> > they are passed in VSX registers, aren't they?
> > But are those available everywhere where ppc64 is supported? For ppc32
> > certainly not, I don't remember for ppc64.
>
> As noted in previous discussions, while the current GCC implementation
> requires VSX for _Float128 support, the registers used in the ABI are the
> same as AltiVec registers; it would be possible to implement support for
> _Float128 on all powerpc64 with AltiVec (most but not all 64-bit
> processors), using AltiVec registers in the ABI and being fully compatible
> with the ABI using VSX registers.
Good point. And we can simply require -maltivec for -mfloat128 to work.
We currently require -mvsx, which itself requires -maltivec, so that is
not a restriction.
> > Sure, the ABI could say pass it in e.g. in a pair of integer registers...
>
> You'd need to decide whether you want the 64-bit BE ABI for _Float128 to
> be one that supports the type on all 64-bit processors (so pass in integer
> registers), or one that only supports it on processors with AltiVec but is
> more similar to the LE ABI (passing in AltiVec registers).
I vote for the latter: require -maltivec. Well unless -msoft-float
perhaps, if someone ever cares enough to implement that for QP float :-)
> And, then, decide the 32-bit ABIs (hard and soft float), if you want to
> support _Float128 there.
Soft float is not described in any formal ABI btw (well, except the
Power 32-bit embedded ABI :-) ) -- it is an compiler-internal affair.
Which does not work over function calls, but that is how it always has
been.
This never was a huge problem afaik.
For 32-bit, maybe we can just require -maltivec as well, to allow
-mfloat128? Or use what -msoft-float would do for _Float128, if
-mno-altivec, if desired (this does not have to be limited to -m32 of
course).
> And, then, do glibc changes, both to support _Float128 functions at all,
> and to support a different long double format if you wish to support
> changing the long double format for those ABIs. Note that the symbol
> versioning in glibc assumes that all libm functions either predate
> _Float128 support on all architectures (version of *f128 versions is
> FLOAT128_VERSION) or postdate it on all architectures (versions in
> math/Versions based on whenever that function was added to glibc; various
> *f64x functions, that alias *f128 when appropriate, are also hardcoded as
> GLIBC_2.27). So if someone adds _Float128 support to any glibc ABI that
> doesn't currently have it, they need to add support for new syntax in
> Versions files such as MAX (FLOAT128_VERSION, GLIBC_2.28), which describes
> the right symbol version for a _Float128 function added in 2.28, in the
> case where some architecture gets _Float128 support later than that. And
> likewise using LDBL_IBM128_VERSION for __*ieee128 aliases if you add
> support for it being used as a new long double format. And adding the
> support to glibc means increasing the minimum GCC version for building
> glibc for those ABIs to one that supports _Float128 for those ABIs.
Glibc is outside of my direct influence sphere ;-) This does sound like
a reasonable plan to me though.
Segher
next prev parent reply other threads:[~2021-10-06 18:40 UTC|newest]
Thread overview: 75+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-04 10:07 Jakub Jelinek
2021-10-04 11:24 ` Richard Biener
2021-10-04 11:36 ` Jakub Jelinek
2021-10-04 12:31 ` Jakub Jelinek
2021-10-04 14:14 ` Jakub Jelinek
2021-10-04 16:47 ` Joseph Myers
2021-10-04 18:33 ` Segher Boessenkool
2021-10-04 19:24 ` Joseph Myers
2021-10-05 17:43 ` Segher Boessenkool
2021-10-14 19:39 ` Bill Schmidt
2021-10-15 0:26 ` Segher Boessenkool
2021-10-05 20:16 ` Thomas Koenig
2021-10-05 21:54 ` Segher Boessenkool
2021-10-06 6:59 ` Thomas Koenig
2021-10-06 15:17 ` Segher Boessenkool
2021-10-06 15:41 ` Jakub Jelinek
2021-10-06 16:07 ` Segher Boessenkool
2021-10-06 16:34 ` Jakub Jelinek
2021-10-06 16:59 ` Segher Boessenkool
2021-10-06 17:07 ` Jakub Jelinek
2021-10-06 17:50 ` Segher Boessenkool
2021-10-06 19:30 ` Peter Bergner
2021-10-06 17:13 ` Joseph Myers
2021-10-06 18:39 ` Segher Boessenkool [this message]
2021-10-06 19:42 ` Joseph Myers
2021-10-06 20:57 ` Segher Boessenkool
2021-10-06 21:55 ` Joseph Myers
2021-10-06 22:03 ` Joseph Myers
2021-10-08 17:53 ` Segher Boessenkool
2021-10-11 20:11 ` Joseph Myers
2021-10-15 0:16 ` Segher Boessenkool
2021-10-06 15:42 ` David Edelsohn
2021-10-06 16:19 ` Segher Boessenkool
2021-10-06 17:38 ` David Edelsohn
2021-10-07 3:42 ` Michael Meissner
2021-10-08 21:10 ` Segher Boessenkool
2021-10-07 9:48 ` Alastair McKinstry
2021-10-07 9:56 ` Andreas Schwab
2021-10-07 10:01 ` Jakub Jelinek
2021-10-07 12:43 ` Alastair McKinstry
2021-10-05 21:53 ` Jonathan Wakely
2021-10-07 3:35 ` Michael Meissner
2021-10-07 6:08 ` Thomas Koenig
2021-10-07 9:40 ` Jakub Jelinek
2021-10-07 15:24 ` Michael Meissner
2021-10-07 15:33 ` Jakub Jelinek
2021-10-08 6:35 ` Thomas Koenig
2021-10-08 7:20 ` Iain Sandoe
2021-10-08 16:26 ` Thomas Koenig
2021-10-08 19:11 ` Iain Sandoe
2021-10-08 22:55 ` Thomas Koenig
2021-10-08 23:18 ` Iain Sandoe
2021-10-09 9:11 ` Thomas Koenig
2021-10-09 9:19 ` Iain Sandoe
2021-10-09 9:25 ` Jakub Jelinek
2021-10-09 7:44 ` Andreas Schwab
2021-10-10 16:14 ` Florian Weimer
2021-10-15 13:50 ` Bill Schmidt
2021-10-15 14:20 ` Jakub Jelinek
2021-10-15 18:05 ` Thomas Koenig
2021-10-15 18:11 ` Jakub Jelinek
2021-10-15 18:58 ` Thomas Koenig
2021-10-15 22:24 ` Segher Boessenkool
2021-10-15 22:36 ` Segher Boessenkool
2021-10-18 19:02 ` Joseph Myers
2021-10-28 3:10 ` Michael Meissner
2021-10-29 3:36 ` libgfortran.so SONAME and powerpc64le-linux ABI changes (work in progress patches) Michael Meissner
2021-10-29 19:07 ` Thomas Koenig
2021-10-29 21:06 ` Michael Meissner
2021-11-01 15:56 ` Bill Schmidt
2021-11-02 15:40 ` Michael Meissner
2021-10-30 0:16 ` libgfortran.so SONAME and powerpc64le-linux ABI changes (2nd patch) Michael Meissner
2021-10-30 9:30 ` Thomas Koenig
2021-10-30 10:03 ` Jakub Jelinek
2021-10-30 10:31 ` Thomas Koenig
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=20211006183919.GK10333@gate.crashing.org \
--to=segher@kernel.crashing.org \
--cc=fortran@gcc.gnu.org \
--cc=gcc@gcc.gnu.org \
--cc=jakub@redhat.com \
--cc=joseph@codesourcery.com \
--cc=jwakely@redhat.com \
--cc=meissner@linux.ibm.com \
--cc=tkoenig@netcologne.de \
--cc=tobias@codesourcery.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.
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 read-only IMAP folder(s) and NNTP newsgroup(s).