From: Joseph Myers <joseph@codesourcery.com>
To: Jakub Jelinek <jakub@redhat.com>
Cc: Segher Boessenkool <segher@kernel.crashing.org>,
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 17:13:59 +0000 [thread overview]
Message-ID: <alpine.DEB.2.22.394.2110061658410.3641536@digraph.polyomino.org.uk> (raw)
In-Reply-To: <20211006163433.GM304296@tucnak>
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.
> 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).
And, then, decide the 32-bit ABIs (hard and soft float), if you want to
support _Float128 there.
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.
--
Joseph S. Myers
joseph@codesourcery.com
next prev parent reply other threads:[~2021-10-06 17:14 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 [this message]
2021-10-06 18:39 ` Segher Boessenkool
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=alpine.DEB.2.22.394.2110061658410.3641536@digraph.polyomino.org.uk \
--to=joseph@codesourcery.com \
--cc=fortran@gcc.gnu.org \
--cc=gcc@gcc.gnu.org \
--cc=jakub@redhat.com \
--cc=jwakely@redhat.com \
--cc=meissner@linux.ibm.com \
--cc=segher@kernel.crashing.org \
--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).