public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/65494] New: [5.0 Regression] Loop is not vectorized because of operand canonicalization.
@ 2015-03-20 15:29 ysrumyan at gmail dot com
  2015-03-20 16:04 ` [Bug tree-optimization/65494] " ysrumyan at gmail dot com
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: ysrumyan at gmail dot com @ 2015-03-20 15:29 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 65494
           Summary: [5.0 Regression] Loop is not vectorized because of
                    operand canonicalization.
           Product: gcc
           Version: 5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ysrumyan at gmail dot com

5.0 compiler is not vectorized simple loop extracted from geekbench but 4.9
compiler does. This is caused by different operand ordering after loop
unrolling (I pointed out essential part of tree):
4.9              5.0
_105=_86+_1      _105=_86+_1
_109=_90+_63     _109=_63+_90
_21=_6+_82       _21=_6+_82

Test-case is attached.


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

* [Bug tree-optimization/65494] [5.0 Regression] Loop is not vectorized because of operand canonicalization.
  2015-03-20 15:29 [Bug tree-optimization/65494] New: [5.0 Regression] Loop is not vectorized because of operand canonicalization ysrumyan at gmail dot com
@ 2015-03-20 16:04 ` ysrumyan at gmail dot com
  2015-03-20 16:43 ` jakub at gcc dot gnu.org
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: ysrumyan at gmail dot com @ 2015-03-20 16:04 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #1 from Yuri Rumyantsev <ysrumyan at gmail dot com> ---
Created attachment 35072
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=35072&action=edit
test-case to reproduce

The following options are used to reproduce:  -Ofast -funroll-loops


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

* [Bug tree-optimization/65494] [5.0 Regression] Loop is not vectorized because of operand canonicalization.
  2015-03-20 15:29 [Bug tree-optimization/65494] New: [5.0 Regression] Loop is not vectorized because of operand canonicalization ysrumyan at gmail dot com
  2015-03-20 16:04 ` [Bug tree-optimization/65494] " ysrumyan at gmail dot com
@ 2015-03-20 16:43 ` jakub at gcc dot gnu.org
  2015-03-20 16:50 ` [Bug tree-optimization/65494] [5 " jakub at gcc dot gnu.org
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: jakub at gcc dot gnu.org @ 2015-03-20 16:43 UTC (permalink / raw)
  To: gcc-bugs

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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2015-03-20
                 CC|                            |jakub at gcc dot gnu.org
     Ever confirmed|0                           |1

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Started with r216728.


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

* [Bug tree-optimization/65494] [5 Regression] Loop is not vectorized because of operand canonicalization.
  2015-03-20 15:29 [Bug tree-optimization/65494] New: [5.0 Regression] Loop is not vectorized because of operand canonicalization ysrumyan at gmail dot com
  2015-03-20 16:04 ` [Bug tree-optimization/65494] " ysrumyan at gmail dot com
  2015-03-20 16:43 ` jakub at gcc dot gnu.org
@ 2015-03-20 16:50 ` jakub at gcc dot gnu.org
  2015-03-20 17:40 ` jakub at gcc dot gnu.org
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: jakub at gcc dot gnu.org @ 2015-03-20 16:50 UTC (permalink / raw)
  To: gcc-bugs

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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|---                         |5.0
            Summary|[5.0 Regression] Loop is    |[5 Regression] Loop is not
                   |not vectorized because of   |vectorized because of
                   |operand canonicalization.   |operand canonicalization.


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

* [Bug tree-optimization/65494] [5 Regression] Loop is not vectorized because of operand canonicalization.
  2015-03-20 15:29 [Bug tree-optimization/65494] New: [5.0 Regression] Loop is not vectorized because of operand canonicalization ysrumyan at gmail dot com
                   ` (2 preceding siblings ...)
  2015-03-20 16:50 ` [Bug tree-optimization/65494] [5 " jakub at gcc dot gnu.org
@ 2015-03-20 17:40 ` jakub at gcc dot gnu.org
  2015-03-23 10:38 ` rguenth at gcc dot gnu.org
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: jakub at gcc dot gnu.org @ 2015-03-20 17:40 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
vect_build_slp_tree apparently has code to handle (limited number) of
permutations for commutative operands, but even if I bump the && *npermutes < 4
test to && *npermutes < 32, for some reason we still don't handle it (but only
retry 7 times, so don't run into this increased limit).


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

* [Bug tree-optimization/65494] [5 Regression] Loop is not vectorized because of operand canonicalization.
  2015-03-20 15:29 [Bug tree-optimization/65494] New: [5.0 Regression] Loop is not vectorized because of operand canonicalization ysrumyan at gmail dot com
                   ` (3 preceding siblings ...)
  2015-03-20 17:40 ` jakub at gcc dot gnu.org
@ 2015-03-23 10:38 ` rguenth at gcc dot gnu.org
  2015-03-23 13:02 ` rguenth at gcc dot gnu.org
  2015-03-23 14:18 ` rguenth at gcc dot gnu.org
  6 siblings, 0 replies; 8+ messages in thread
From: rguenth at gcc dot gnu.org @ 2015-03-23 10:38 UTC (permalink / raw)
  To: gcc-bugs

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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |missed-optimization
             Status|NEW                         |ASSIGNED
           Assignee|unassigned at gcc dot gnu.org      |rguenth at gcc dot gnu.org

--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
Hmm, for some reason I decided to re-alloc 'matches' before dealing with
children.
Not doing that fixes this bug,


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

* [Bug tree-optimization/65494] [5 Regression] Loop is not vectorized because of operand canonicalization.
  2015-03-20 15:29 [Bug tree-optimization/65494] New: [5.0 Regression] Loop is not vectorized because of operand canonicalization ysrumyan at gmail dot com
                   ` (4 preceding siblings ...)
  2015-03-23 10:38 ` rguenth at gcc dot gnu.org
@ 2015-03-23 13:02 ` rguenth at gcc dot gnu.org
  2015-03-23 14:18 ` rguenth at gcc dot gnu.org
  6 siblings, 0 replies; 8+ messages in thread
From: rguenth at gcc dot gnu.org @ 2015-03-23 13:02 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
Author: rguenth
Date: Mon Mar 23 12:47:54 2015
New Revision: 221592

URL: https://gcc.gnu.org/viewcvs?rev=221592&root=gcc&view=rev
Log:
2015-03-23  Richard Biener  <rguenther@suse.de>

    PR tree-optimization/65494
    * tree-vect-slp.c (vect_build_slp_tree): Do not (re-)allocate
    matches here.
    (vect_analyze_slp_instance): But do that here, always and once.

    * gcc.dg/vect/pr65494.c: New testcase.

Added:
    trunk/gcc/testsuite/gcc.dg/vect/pr65494.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/tree-vect-slp.c


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

* [Bug tree-optimization/65494] [5 Regression] Loop is not vectorized because of operand canonicalization.
  2015-03-20 15:29 [Bug tree-optimization/65494] New: [5.0 Regression] Loop is not vectorized because of operand canonicalization ysrumyan at gmail dot com
                   ` (5 preceding siblings ...)
  2015-03-23 13:02 ` rguenth at gcc dot gnu.org
@ 2015-03-23 14:18 ` rguenth at gcc dot gnu.org
  6 siblings, 0 replies; 8+ messages in thread
From: rguenth at gcc dot gnu.org @ 2015-03-23 14:18 UTC (permalink / raw)
  To: gcc-bugs

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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|---                         |FIXED

--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> ---
Fixed.


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

end of thread, other threads:[~2015-03-23 13:51 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-03-20 15:29 [Bug tree-optimization/65494] New: [5.0 Regression] Loop is not vectorized because of operand canonicalization ysrumyan at gmail dot com
2015-03-20 16:04 ` [Bug tree-optimization/65494] " ysrumyan at gmail dot com
2015-03-20 16:43 ` jakub at gcc dot gnu.org
2015-03-20 16:50 ` [Bug tree-optimization/65494] [5 " jakub at gcc dot gnu.org
2015-03-20 17:40 ` jakub at gcc dot gnu.org
2015-03-23 10:38 ` rguenth at gcc dot gnu.org
2015-03-23 13:02 ` rguenth at gcc dot gnu.org
2015-03-23 14:18 ` 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).