public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug rtl-optimization/59754] New: [ree.c] Incorrect merge while working with vector registers
@ 2014-01-10 11:14 kirill.yukhin at intel dot com
  2014-01-10 11:18 ` [Bug rtl-optimization/59754] " kirill.yukhin at intel dot com
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: kirill.yukhin at intel dot com @ 2014-01-10 11:14 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 59754
           Summary: [ree.c] Incorrect merge while working with vector
                    registers
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: rtl-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: kirill.yukhin at intel dot com

Hello,
It seems that this revision:
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@206418
138bc75d-0d04-0410-961f-82ee72b054a4

made bunch of AVX-512F tests failing (at runtime):

The difference in assembler is as following.

For good (prev. rev., testname: gcc.target/i386/avx512f-vpmovzxwd-2.c):
...
        vmovdqa 160(%esp), %ymm0
        movl    $-22854, %eax
        leal    384(%esp), %ebx
        kmovw   %eax, %k1
        xorl    %edx, %edx
        vpmovzxwd       %ymm0, %zmm1
        vmovdqa64       %zmm1, 192(%esp)
        vmovdqa64       256(%esp), %zmm1
        vpmovzxwd       %ymm0, %zmm1{%k1}
        vpmovzxwd       %ymm0, %zmm0{%k1}{z}
        vmovdqa64       %zmm1, 256(%esp)
        vmovdqa64       %zmm0, 320(%esp)
...

For broken:
...
        vpmovzxwd       160(%esp), %zmm1
        movl    $-22854, %eax
        leal    384(%esp), %ebx
        kmovw   %eax, %k1
        xorl    %edx, %edx
        vmovdqa64       %zmm1, %zmm0
        vmovdqa64       %zmm1, 192(%esp)
        vmovdqa64       256(%esp), %zmm1
        vpmovzxwd       %ymm0, %zmm1{%k1}
        vpmovzxwd       %ymm0, %zmm0{%k1}{z}
        vmovdqa64       %zmm1, 256(%esp)
        vmovdqa64       %zmm0, 320(%esp)
...


So it seems that it is allowed to convert:
  (set r0 [mem])
  (set r1 sign_extend (r0))

to:
  (set r1 sign_extend ([mem]))
  (set r0 r1)

IMHO this should work with scalar, but not with vectors.
I suspect eliminating such extends for vector types were
prohibited initially.


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

* [Bug rtl-optimization/59754] [ree.c] Incorrect merge while working with vector registers
  2014-01-10 11:14 [Bug rtl-optimization/59754] New: [ree.c] Incorrect merge while working with vector registers kirill.yukhin at intel dot com
@ 2014-01-10 11:18 ` kirill.yukhin at intel dot com
  2014-01-10 12:56 ` jakub at gcc dot gnu.org
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: kirill.yukhin at intel dot com @ 2014-01-10 11:18 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #1 from Yukhin Kirill <kirill.yukhin at intel dot com> ---
> made bunch of AVX-512F tests failing (at runtime):
FAIL: gcc.target/i386/avx512f-vpmovsxdq-2.c execution test
FAIL: gcc.target/i386/avx512f-vpmovsxwd-2.c execution test
FAIL: gcc.target/i386/avx512f-vpmovzxdq-2.c execution test
FAIL: gcc.target/i386/avx512f-vpmovzxwd-2.c execution test


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

* [Bug rtl-optimization/59754] [ree.c] Incorrect merge while working with vector registers
  2014-01-10 11:14 [Bug rtl-optimization/59754] New: [ree.c] Incorrect merge while working with vector registers kirill.yukhin at intel dot com
  2014-01-10 11:18 ` [Bug rtl-optimization/59754] " kirill.yukhin at intel dot com
@ 2014-01-10 12:56 ` jakub at gcc dot gnu.org
  2014-01-10 21:19 ` law at redhat dot com
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-01-10 12:56 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Created attachment 31795
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=31795&action=edit
gcc49-pr59754.patch

Untested fix.  Tried to think if the other (older) REE transformations aren't
wrong for vector modes, but haven't found anything yet.


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

* [Bug rtl-optimization/59754] [ree.c] Incorrect merge while working with vector registers
  2014-01-10 11:14 [Bug rtl-optimization/59754] New: [ree.c] Incorrect merge while working with vector registers kirill.yukhin at intel dot com
  2014-01-10 11:18 ` [Bug rtl-optimization/59754] " kirill.yukhin at intel dot com
  2014-01-10 12:56 ` jakub at gcc dot gnu.org
@ 2014-01-10 21:19 ` law at redhat dot com
  2014-01-10 21:28 ` jakub at gcc dot gnu.org
  2014-01-10 21:41 ` law at redhat dot com
  4 siblings, 0 replies; 6+ messages in thread
From: law at redhat dot com @ 2014-01-10 21:19 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #3 from Jeffrey A. Law <law at redhat dot com> ---
Kirill, can you verify that Jakub's patch restores proper behaviour for your
tests?  It'd be greatly appreciated.


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

* [Bug rtl-optimization/59754] [ree.c] Incorrect merge while working with vector registers
  2014-01-10 11:14 [Bug rtl-optimization/59754] New: [ree.c] Incorrect merge while working with vector registers kirill.yukhin at intel dot com
                   ` (2 preceding siblings ...)
  2014-01-10 21:19 ` law at redhat dot com
@ 2014-01-10 21:28 ` jakub at gcc dot gnu.org
  2014-01-10 21:41 ` law at redhat dot com
  4 siblings, 0 replies; 6+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-01-10 21:28 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Author: jakub
Date: Fri Jan 10 21:27:52 2014
New Revision: 206542

URL: http://gcc.gnu.org/viewcvs?rev=206542&root=gcc&view=rev
Log:
    PR rtl-optimization/59754
    * ree.c (combine_reaching_defs): Disallow !SCALAR_INT_MODE_P
    modes in the REGNO != REGNO case.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/ree.c


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

* [Bug rtl-optimization/59754] [ree.c] Incorrect merge while working with vector registers
  2014-01-10 11:14 [Bug rtl-optimization/59754] New: [ree.c] Incorrect merge while working with vector registers kirill.yukhin at intel dot com
                   ` (3 preceding siblings ...)
  2014-01-10 21:28 ` jakub at gcc dot gnu.org
@ 2014-01-10 21:41 ` law at redhat dot com
  4 siblings, 0 replies; 6+ messages in thread
From: law at redhat dot com @ 2014-01-10 21:41 UTC (permalink / raw)
  To: gcc-bugs

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

Jeffrey A. Law <law at redhat dot com> changed:

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

--- Comment #5 from Jeffrey A. Law <law at redhat dot com> ---
Should be fixed by Jakub's commit on the trunk.


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

end of thread, other threads:[~2014-01-10 21:41 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-01-10 11:14 [Bug rtl-optimization/59754] New: [ree.c] Incorrect merge while working with vector registers kirill.yukhin at intel dot com
2014-01-10 11:18 ` [Bug rtl-optimization/59754] " kirill.yukhin at intel dot com
2014-01-10 12:56 ` jakub at gcc dot gnu.org
2014-01-10 21:19 ` law at redhat dot com
2014-01-10 21:28 ` jakub at gcc dot gnu.org
2014-01-10 21:41 ` law at redhat dot com

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