From: John David Anglin <dave.anglin@bell.net>
To: Roger Sayle <roger@nextmovesoftware.com>,
'GCC Patches' <gcc-patches@gcc.gnu.org>
Subject: Re: [PATCH] hppa: Improve expansion of ashldi3 when !TARGET_64BIT
Date: Sat, 12 Sep 2020 11:41:31 -0400 [thread overview]
Message-ID: <1be8bfcf-8d25-623f-a921-c6f7437dd209@bell.net> (raw)
In-Reply-To: <001501d678db$56a34580$03e9d080$@nextmovesoftware.com>
Committed.
Regards,
Dave
On 2020-08-22 7:24 p.m., Roger Sayle wrote:
> Hi Dave,
> I actually think using plus_xor_ior operator is useful. It means that if combine,
> inlining or some other RTL simplification generates these variants, these forms
> will still be recognized by the backend. It's more typing, but the compiler produces
> better code.
>
> Here's what I have so far, but please feel free to modify anything. I'll leave the
> rest to you.
>
> With this patch:
>
> unsigned long long rotl4(unsigned long long x)
> {
> return (x<<4) | (x>>60);
> }
>
> unsigned long long rotr4(unsigned long long x)
> {
> return (x<<60) | (x>>4);
> }
>
> which previously generated:
>
> rotl4: depd,z %r26,59,60,%r28
> extrd,u %r26,3,4,%r26
> bve (%r2)
> or %r26,%r28,%r28
>
> rotr4: extrd,u %r26,59,60,%r28
> depd,z %r26,3,4,%r26
> bve (%r2)
> or %r26,%r28,%r28
>
> now produces:
>
> rotl4: bve (%r2)
> shrpd %r26,%r26,60,%r28
>
> rotr4: bve (%r2)
> shrpd %r26,%r26,4,%r28
>
>
> I'm guessing this is very similar to what you were thinking (or what I described previously).
>
> Many thanks again for trying out these patches/suggestions for me.
>
> Best regards,
> Roger
> --
>
> -----Original Message-----
> From: John David Anglin <dave.anglin@bell.net>
> Sent: 22 August 2020 23:09
> To: Roger Sayle <roger@nextmovesoftware.com>; 'GCC Patches' <gcc-patches@gcc.gnu.org>
> Cc: 'Jeff Law' <law@redhat.com>
> Subject: Re: [PATCH] hppa: Improve expansion of ashldi3 when !TARGET_64BIT
>
> On 2020-08-22 12:01 p.m., Roger Sayle wrote:
>> I suspect that the issue with the 64-bit patterns is that the second
>> variant of pa.md's define_insn "shrpdi4" is unlikely ever to match as
>> (minus:DI (const_int 64) x) is never "canonical" when x is itself a
>> CONST_INT. Splitting this define_insn into two (or three see below)
>> separate forms; the first as it currently is and the second (as you
>> suggest) with
>> "TARGET_64BIT
>> && INTVAL (operands[3]) + INTVAL (operands[4]) == 64"
>> should do the trick.
> I will go ahead and add the basic patterns. It seems it would be best if I avoid using the "plus_xor_ior_operator". It also seems the 32-bit patterns should avoid it.
>> My first impression was that the DImode shrpd instructions would be
>> most useful for implementing TI mode shifts, but that TI mode isn't
>> supported by hppa64. But then I noticed that the more immediate
>> benefit would be in supporting rotrdi3 and rotldi3 on TARGET_64BIT
>> that currently don't have expanders nor insns defined. Here GCC
>> currently generates three instructions where a single shrpd would be
>> optimal.
> It turns out we now need to support TI mode and __int128 for libgomp. The hppa64-hpux target won't boot without it. I had just added a change to support TI mode but it's untested.
>
> Regards,
> Dave
>
> --
> John David Anglin dave.anglin@bell.net
>
--
John David Anglin dave.anglin@bell.net
next prev parent reply other threads:[~2020-09-12 15:41 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-21 12:53 Roger Sayle
2020-08-21 19:00 ` John David Anglin
2020-08-22 8:52 ` Roger Sayle
2020-08-22 12:57 ` John David Anglin
2020-08-22 16:01 ` Roger Sayle
2020-08-22 22:09 ` John David Anglin
2020-08-22 23:24 ` Roger Sayle
2020-08-26 20:08 ` Jeff Law
2020-08-26 20:33 ` John David Anglin
2020-08-26 21:23 ` Roger Sayle
2020-08-26 21:30 ` Jeff Law
2020-08-27 0:31 ` John David Anglin
2020-08-27 7:16 ` Roger Sayle
2020-08-27 10:33 ` Richard Biener
2020-09-12 15:41 ` John David Anglin [this message]
2020-08-25 14:05 ` Jeff Law
2020-08-25 14:35 ` John David Anglin
2020-08-24 15:42 ` Jeff Law
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=1be8bfcf-8d25-623f-a921-c6f7437dd209@bell.net \
--to=dave.anglin@bell.net \
--cc=gcc-patches@gcc.gnu.org \
--cc=roger@nextmovesoftware.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).