From: "Kewen.Lin" <linkw@linux.ibm.com>
To: Michael Meissner <meissner@linux.ibm.com>
Cc: gcc-patches@gcc.gnu.org,
Segher Boessenkool <segher@kernel.crashing.org>,
David Edelsohn <dje.gcc@gmail.com>,
Peter Bergner <bergner@linux.ibm.com>,
Will Schmidt <will_schmidt@vnet.ibm.com>
Subject: Re: [PATCH 2/2] Rework 128-bit complex multiply and divide.
Date: Wed, 22 Feb 2023 18:13:07 +0800 [thread overview]
Message-ID: <accb693e-b992-021f-0dbb-207463fb203f@linux.ibm.com> (raw)
In-Reply-To: <Y9yhQQdUaM+z6IYD@toto.the-meissners.org>
Hi Mike,
on 2023/2/3 13:53, Michael Meissner wrote:
> This patch reworks how the complex multiply and divide built-in functions are
> done. Previously we created built-in declarations for doing long double complex
> multiply and divide when long double is IEEE 128-bit. The old code also did not
> support __ibm128 complex multiply and divide if long double is IEEE 128-bit.
>
> This patch was originally posted on December 13th, 2022:
>
> | Date: Tue, 13 Dec 2022 01:21:06 -0500
> | Subject: [PATCH V2] Rework 128-bit complex multiply and divide, PR target/107299
> | Message-ID: <Y5gZ0o1nzCq9MmR9@toto.the-meissners.org>
>
> In terms of history, I wrote the original code just as I was starting to test
> GCC on systems where IEEE 128-bit long double was the default. At the time, we
> had not yet started mangling the built-in function names as a way to bridge
> going from a system with 128-bit IBM long double to 128-bin IEEE long double.
>
> The original code depends on there only being two 128-bit types invovled. With
> the next patch in this series, this assumption will no longer be true. When
> long double is IEEE 128-bit, there will be 2 IEEE 128-bit types (one for the
> explicit __float128/_Float128 type and one for long double).
>
> The problem is we cannot create two separate built-in functions that resolve to
> the same name. This is a requirement of add_builtin_function and the C front
> end. That means for the 3 possible modes (IFmode, KFmode, and TFmode), you can
> only use 2 of them.
>
> This code does not create the built-in declaration with the changed name.
> Instead, it uses the TARGET_MANGLE_DECL_ASSEMBLER_NAME hook to change the name
> before it is written out to the assembler file like it now does for all of the
> other long double built-in functions.
>
> When I wrote these patches, I discovered that __ibm128 complex multiply and
> divide had originally not been supported if long double is IEEE 128-bit as it
> would generate calls to __mulic3 and __divic3. I added tests in the testsuite
> to verify that the correct name (i.e. __multc3 and __divtc3) is used in this
> case.
>
> I had previously sent this patch out on November 1st. Compared to that version,
> this version no longer disables the special mapping when you are building
> libgcc, as it turns out we don't need it.
>
> I tested all 3 patchs for PR target/107299 on:
>
> 1) LE Power10 using --with-cpu=power10 --with-long-double-format=ieee
> 2) LE Power10 using --with-cpu=power10 --with-long-double-format=ibm
> 3) LE Power9 using --with-cpu=power9 --with-long-double-format=ibm
> 4) BE Power8 using --with-cpu=power8 --with-long-double-format=ibm
>
> Once all 3 patches have been applied, we can once again build GCC when long
> double is IEEE 128-bit. There were no other regressions with these patches.
> Can I check these patches into the trunk?
These two above paragraphs look a bit out of date (two patches now). :)
IIUC this patch actually fixes a latent issue, so it is independent of the one
fixing the bootstrapping issue, right? This updated version of patch looks
good to me, but I'd leave the approval to Segher/David. Thanks!
BR,
Kewen
next prev parent reply other threads:[~2023-02-22 10:13 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-03 5:43 [PATCH 0/2] Repost of patches for solving the build on Fedora 36 problem Michael Meissner
2023-02-03 5:49 ` [PATCH 1/2] PR target/107299: Fix build issue when long double is IEEE 128-bit Michael Meissner
2023-02-22 10:37 ` Kewen.Lin
2023-02-22 18:11 ` Michael Meissner
2023-03-02 22:45 ` Ping: " Michael Meissner
2023-03-03 20:56 ` Segher Boessenkool
2023-02-03 5:53 ` [PATCH 2/2] Rework 128-bit complex multiply and divide Michael Meissner
2023-02-22 10:13 ` Kewen.Lin [this message]
2023-02-22 18:01 ` Michael Meissner
2023-03-02 22:46 ` Ping: " Michael Meissner
2023-03-03 21:35 ` Segher Boessenkool
2023-03-09 16:11 ` Michael Meissner
2023-03-09 22:16 ` Segher Boessenkool
2023-03-09 23:23 ` Michael Meissner
2023-03-09 16:42 ` Michael Meissner
2023-02-03 7:42 ` [PATCH 0/2] Repost of patches for solving the build on Fedora 36 problem Richard Biener
2023-02-06 18:28 ` Peter Bergner
2023-02-07 14:22 ` Richard Biener
2023-02-07 14:31 ` Jakub Jelinek
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=accb693e-b992-021f-0dbb-207463fb203f@linux.ibm.com \
--to=linkw@linux.ibm.com \
--cc=bergner@linux.ibm.com \
--cc=dje.gcc@gmail.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=meissner@linux.ibm.com \
--cc=segher@kernel.crashing.org \
--cc=will_schmidt@vnet.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).