From: Richard Biener <rguenther@suse.de>
To: James Greenhalgh <james.greenhalgh@arm.com>
Cc: gcc-patches@gcc.gnu.org, nd@arm.com
Subject: Re: [Patch match.pd] Fold (A / (1 << B)) to (A >> B)
Date: Mon, 12 Jun 2017 13:56:00 -0000 [thread overview]
Message-ID: <alpine.LSU.2.20.1706121553520.22867@zhemvz.fhfr.qr> (raw)
In-Reply-To: <1497273586-9046-1-git-send-email-james.greenhalgh@arm.com>
On Mon, 12 Jun 2017, James Greenhalgh wrote:
>
> Hi,
>
> As subject, for the testcase in the patch:
>
> unsigned long
> f2 (unsigned long a, int b)
> {
> unsigned long x = 1UL << b;
> return a / x;
> }
>
> We currently generate:
>
> f2:
> mov x2, 1
> lsl x1, x2, x1
> udiv x0, x0, x1
> ret
>
> Which could instead be transformed to:
>
> f2:
> lsr x0, x0, x1
> ret
>
> OK?
+ We can't do the same for signed A, as it might be negative, which
would
+ introduce undefined behaviour. */
huh, AFAIR it is _left_ shift of negative values that invokes
undefined behavior.
Note that as you are accepting vectors you need to make sure the
target actually supports arithmetic right shift of vectors
(you only know it supports left shift and division -- so it might
be sort-of-superfluous to check in case there is no arch that supports
those but not the other).
Richard.
> Thanks,
> James
>
> ---
> gcc/
>
> 2017-06-12 James Greenhalgh <james.greenhalgh@arm.com>
>
> * match.pd (A / (1 << B) -> A >> B): New.
>
> gcc/testsuite/
>
> 2017-06-12 James Greenhalgh <james.greenhalgh@arm.com>
>
> * gcc.dg/tree-ssa/forwprop-37.c: New.
>
>
--
Richard Biener <rguenther@suse.de>
SUSE LINUX GmbH, GF: Felix Imendoerffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nuernberg)
next prev parent reply other threads:[~2017-06-12 13:56 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-12 13:20 James Greenhalgh
2017-06-12 13:56 ` Richard Biener [this message]
2017-06-16 9:23 ` James Greenhalgh
2017-06-16 9:41 ` Richard Biener
2017-06-20 15:44 ` James Greenhalgh
2017-06-21 6:59 ` Richard Biener
2017-06-22 8:41 ` James Greenhalgh
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.LSU.2.20.1706121553520.22867@zhemvz.fhfr.qr \
--to=rguenther@suse.de \
--cc=gcc-patches@gcc.gnu.org \
--cc=james.greenhalgh@arm.com \
--cc=nd@arm.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).