public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/56902] New: Fails to SLP with mismatched +/- and negatable constants
@ 2013-04-10  9:46 rguenth at gcc dot gnu.org
  2013-11-11 18:44 ` [Bug tree-optimization/56902] " congh at google dot com
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: rguenth at gcc dot gnu.org @ 2013-04-10  9:46 UTC (permalink / raw)
  To: gcc-bugs


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56902

             Bug #: 56902
           Summary: Fails to SLP with mismatched +/- and negatable
                    constants
    Classification: Unclassified
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Keywords: missed-optimization
          Severity: enhancement
          Priority: P3
         Component: tree-optimization
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: rguenth@gcc.gnu.org
            Blocks: 53947


double x[1024], y[1024], z[1024];
void foo (double w)
{
  int i;
  for (i = 0; i < 1023; i+=2)
    {
      z[i] = x[i] + 3.;
      z[i+1] = x[i+1] + -3.;
    }
}
void bar (double w)
{
  int i;
  for (i = 0; i < 1023; i+=2)
    {
      z[i] = x[i] + w;
      z[i+1] = x[i+1] + -3.;
    }
}
void baz (double w)
{
  int i;
  for (i = 0; i < 1023; i+=2)
    {
      z[i] = x[i] - w;
      z[i+1] = x[i+1] + 3.;
    }
}


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug tree-optimization/56902] Fails to SLP with mismatched +/- and negatable constants
  2013-04-10  9:46 [Bug tree-optimization/56902] New: Fails to SLP with mismatched +/- and negatable constants rguenth at gcc dot gnu.org
@ 2013-11-11 18:44 ` congh at google dot com
  2013-11-13 15:39 ` rguenth at gcc dot gnu.org
  2015-10-22 10:03 ` rguenth at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: congh at google dot com @ 2013-11-11 18:44 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56902

Cong Hou <congh at google dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |congh at google dot com

--- Comment #1 from Cong Hou <congh at google dot com> ---
I just made a patch which supports limited non-isomorphic operations
(operations on even/odd elements are still isomorphic) for SLP. Then the three
loops you listed can be vectorized using SLP by using new VEC_ADDSUB_EXPR or
VEC_SUBADD_EXPR. For x86, SSE3 provides ADDSUBPD/ADDSUBPS instructions which
can do the job, but I also emulated them for SSE (use mask to negate the
even/odd elements and then add).

I think we will need to support more general non-isomorphic operations, which
is more difficult and challenging. But I think the limited support in this
patch is also useful at this time.

I will send the patch later.


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug tree-optimization/56902] Fails to SLP with mismatched +/- and negatable constants
  2013-04-10  9:46 [Bug tree-optimization/56902] New: Fails to SLP with mismatched +/- and negatable constants rguenth at gcc dot gnu.org
  2013-11-11 18:44 ` [Bug tree-optimization/56902] " congh at google dot com
@ 2013-11-13 15:39 ` rguenth at gcc dot gnu.org
  2015-10-22 10:03 ` rguenth at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: rguenth at gcc dot gnu.org @ 2013-11-13 15:39 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56902

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
Created attachment 31209
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=31209&action=edit
hack

Btw, I also had a patch^Whack, see attached.  Also further patches that didn't
get merged to take care of vectorizing PR37021 better.


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Bug tree-optimization/56902] Fails to SLP with mismatched +/- and negatable constants
  2013-04-10  9:46 [Bug tree-optimization/56902] New: Fails to SLP with mismatched +/- and negatable constants rguenth at gcc dot gnu.org
  2013-11-11 18:44 ` [Bug tree-optimization/56902] " congh at google dot com
  2013-11-13 15:39 ` rguenth at gcc dot gnu.org
@ 2015-10-22 10:03 ` rguenth at gcc dot gnu.org
  2 siblings, 0 replies; 4+ messages in thread
From: rguenth at gcc dot gnu.org @ 2015-10-22 10:03 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56902

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
      Known to work|                            |6.0
         Resolution|---                         |FIXED

--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
This is now fixed.  Note + 3. vs. - 3. should be handled more optimally
(PR68050)


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-10-22 10:03 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-04-10  9:46 [Bug tree-optimization/56902] New: Fails to SLP with mismatched +/- and negatable constants rguenth at gcc dot gnu.org
2013-11-11 18:44 ` [Bug tree-optimization/56902] " congh at google dot com
2013-11-13 15:39 ` rguenth at gcc dot gnu.org
2015-10-22 10:03 ` rguenth at gcc dot gnu.org

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).