From: Thomas Koenig <tkoenig@netcologne.de>
To: Jakub Jelinek <jakub@redhat.com>
Cc: Michael Meissner <meissner@linux.ibm.com>,
fortran@gcc.gnu.org, gcc@gcc.gnu.org,
Tobias Burnus <tobias@codesourcery.com>,
Segher Boessenkool <segher@kernel.crashing.org>,
David Edelsohn <dje.gcc@gmail.com>,
Peter Bergner <bergner@linux.ibm.com>,
Bill Schmidt <wschmidt@linux.ibm.com>
Subject: Re: libgfortran.so SONAME and powerpc64le-linux ABI changes (2nd patch)
Date: Sat, 30 Oct 2021 12:31:00 +0200 [thread overview]
Message-ID: <78b71846-512d-19cf-c444-aa6eb758f58c@netcologne.de> (raw)
In-Reply-To: <20211030100326.GK304296@tucnak>
Hi Jakub,
> On Sat, Oct 30, 2021 at 11:30:29AM +0200, Thomas Koenig wrote:
>> - Have a compiler switch which selects between IEEE_QP and IBM_QP.
>> This was a suggestion by Steve Lionel formerly of DEC and Intel,
>> and they did that when they had a few floating point formats on
>> the Alpha to choose from. We would then have to specially annotate
>> the KIND=16 library routines, and also maybe indicate the different
>> argument types in module files. Anything else would be user error.
>> They also had the CONVERT options to go with it.
>>
>> Question: Which option would we want to pursue? I actually think the
>> fourth one (the suggestion by Steve Lionel) is the best one.
>
> That was the last option I was mentioning in the initial mail
> https://gcc.gnu.org/pipermail/gcc/2021-October/237478.html
>
> Copying it here:
>
> Or the last option would be to try to make libgfortran.so.5 ABI compatible
> with both choices on powerpc64le-linux. From quick skimming of libgfortran,
> we have lots of generated functions, which use HAVE_GFC_REAL_16 and
> GFC_REAL_16 etc. macros. So, we could perhaps arrange for the compiler
> to use r16i or r17 instead of r16 in the names when real(kind=16) is the
> IEEE quad on powerpc64le and keep using r16 for the IBM double double.
That is quite doable.
> For the *.F90 generated files, one could achieve it by making sure
> the *r16* files are compiled with -mabi=ibmlongdouble, for
> *r16i* or *r17* with -mabi=ieeelongdouble and otherwise use kind=16 in
> those, for *.c generated files the *GFC_* macros could just ensure that
> it doesn't use long double but __ibm128 or __float128 depending on which one
> is needed.
Yep.
> But then I see e.g. the io routines to just pass in kind and so
> switch (kind) // or len
> {
> case ...:
> *(GFC_REAL_*) = ...;
> }
> etc. Could we just pretend in the compiler to libgfortran ABI that
> powerpc64le-linux real(kind=16) is kind 17 and make sure that if anything
> would actually think it is 17 bytes it uses 16 instead (though, kind=10
> on x86-64 or i686 also isn't 10 bytes but 16 or 12, right?).
That is not something I would like to have, for purposes of cleanness.
We can always switch at run-time to a different function. This
branch should be rather well-predicted, and additional execution
will be insignificant compared to the rest of the I/O.
>
> That solution would most closely match what we do e.g. for C/C++, especially
> libstdc++ or glibc, we already have an option to select that -
> -mabi=ibmlongdouble vs. -mabi=ieeelongdouble and default selected during
> configure. libgfortran would be ABI compatible with both ABIs, but user
> binaries or libraries wouldn't be. Similarly to C, there is no different
> mangling of user symbols.
Hm, there's a difference. I meant that we can select this at compile
time for the user, and we should at least consider adding a flag to
the module files if the routine has been compiled for IBM_QP or IEEE_QP.
We should not change the mangling of the routine names themselves,
I agree.
Best regards
Thomas
prev parent reply other threads:[~2021-10-30 10:31 UTC|newest]
Thread overview: 75+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-10-04 10:07 libgfortran.so SONAME and powerpc64le-linux ABI changes 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
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 [this message]
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=78b71846-512d-19cf-c444-aa6eb758f58c@netcologne.de \
--to=tkoenig@netcologne.de \
--cc=bergner@linux.ibm.com \
--cc=dje.gcc@gmail.com \
--cc=fortran@gcc.gnu.org \
--cc=gcc@gcc.gnu.org \
--cc=jakub@redhat.com \
--cc=meissner@linux.ibm.com \
--cc=segher@kernel.crashing.org \
--cc=tobias@codesourcery.com \
--cc=wschmidt@linux.ibm.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).