public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug target/63594] [5 Regression] ICE: in ix86_vector_duplicate_value, at config/i386/i386.c:39831 with -mavx512f
       [not found] <bug-63594-4@http.gcc.gnu.org/bugzilla/>
@ 2014-10-19 19:04 ` ubizjak at gmail dot com
  2014-10-20  9:15 ` jakub at gcc dot gnu.org
                   ` (11 subsequent siblings)
  12 siblings, 0 replies; 13+ messages in thread
From: ubizjak at gmail dot com @ 2014-10-19 19:04 UTC (permalink / raw)
  To: gcc-bugs

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

Uroš Bizjak <ubizjak at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2014-10-19
                 CC|                            |kyukhin at gcc dot gnu.org
   Target Milestone|---                         |5.0
     Ever confirmed|0                           |1

--- Comment #1 from Uroš Bizjak <ubizjak at gmail dot com> ---
Confirmed, adding CC.
>From gcc-bugs-return-464457-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Sun Oct 19 19:04:19 2014
Return-Path: <gcc-bugs-return-464457-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 19495 invoked by alias); 19 Oct 2014 19:04:18 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 19463 invoked by uid 48); 19 Oct 2014 19:04:15 -0000
From: "ubizjak at gmail dot com" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug target/63590] wrong code with -mstringop-strategy=vector_loop
Date: Sun, 19 Oct 2014 19:37:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: target
X-Bugzilla-Version: 5.0
X-Bugzilla-Keywords: wrong-code
X-Bugzilla-Severity: normal
X-Bugzilla-Who: ubizjak at gmail dot com
X-Bugzilla-Status: NEW
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org
X-Bugzilla-Target-Milestone: 4.9.3
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields: bug_status cf_reconfirmed_on cc target_milestone everconfirmed
Message-ID: <bug-63590-4-TQ1tNzYhHI@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-63590-4@http.gcc.gnu.org/bugzilla/>
References: <bug-63590-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2014-10/txt/msg01478.txt.bz2
Content-length: 626

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

Uroš Bizjak <ubizjak at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2014-10-19
                 CC|                            |kyukhin at gcc dot gnu.org
   Target Milestone|---                         |4.9.3
     Ever confirmed|0                           |1

--- Comment #1 from Uroš Bizjak <ubizjak at gmail dot com> ---
Confirmed, adding CC.
>From gcc-bugs-return-464458-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Sun Oct 19 19:37:08 2014
Return-Path: <gcc-bugs-return-464458-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 28955 invoked by alias); 19 Oct 2014 19:37:08 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 28925 invoked by uid 48); 19 Oct 2014 19:37:04 -0000
From: "evgeniya.maenkova at gmail dot com" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug tree-optimization/54488] tree loop invariant motion uses an excessive amount of memory
Date: Sun, 19 Oct 2014 19:39:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: tree-optimization
X-Bugzilla-Version: 4.8.0
X-Bugzilla-Keywords: memory-hog
X-Bugzilla-Severity: normal
X-Bugzilla-Who: evgeniya.maenkova at gmail dot com
X-Bugzilla-Status: UNCONFIRMED
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org
X-Bugzilla-Target-Milestone: ---
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields:
Message-ID: <bug-54488-4-wRQnMcVrg3@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-54488-4@http.gcc.gnu.org/bugzilla/>
References: <bug-54488-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2014-10/txt/msg01479.txt.bz2
Content-length: 196

https://gcc.gnu.org/bugzilla/show_bug.cgi?idT488

--- Comment #4 from Evgeniya Maenkova <evgeniya.maenkova at gmail dot com> ---
My gcc version for now: gcc (GCC) 5.0.0 20140908 (experimental)


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

* [Bug target/63594] [5 Regression] ICE: in ix86_vector_duplicate_value, at config/i386/i386.c:39831 with -mavx512f
       [not found] <bug-63594-4@http.gcc.gnu.org/bugzilla/>
  2014-10-19 19:04 ` [Bug target/63594] [5 Regression] ICE: in ix86_vector_duplicate_value, at config/i386/i386.c:39831 with -mavx512f ubizjak at gmail dot com
@ 2014-10-20  9:15 ` jakub at gcc dot gnu.org
  2014-10-20 10:39 ` jakub at gcc dot gnu.org
                   ` (10 subsequent siblings)
  12 siblings, 0 replies; 13+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-10-20  9:15 UTC (permalink / raw)
  To: gcc-bugs

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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
More thorough testcase (should be tested with different ISAs):
#define C1 c
#define C2 C1, C1
#define C4 C2, C2
#define C8 C4, C4
#define C16 C8, C8
#define C32 C16, C16
#define C64 C32, C32
#define C_(n) n
#define C(n) C_(C##n)

#define T(t,s) \
typedef t v##t##s __attribute__ ((__vector_size__ (s * sizeof (t)))); \
v##t##s test##t##s (t c) \
{ \
  v##t##s v = { C(s) }; \
  return v; \
}

typedef long long llong;

T(char, 64)
T(char, 32)
T(char, 16)
T(char, 8)
T(short, 32)
T(short, 16)
T(short, 8)
T(short, 4)
T(int, 16)
T(int, 8)
T(int, 4)
T(int, 2)
T(float, 16)
T(float, 8)
T(float, 4)
T(float, 2)
T(llong, 8)
T(llong, 4)
T(llong, 2)
T(double, 8)
T(double, 4)
T(double, 2)

Started with r216401, -mavx512f of course doesn't include the avx512bw
broadcast needed for the V64QI or V32HI duplicates.


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

* [Bug target/63594] [5 Regression] ICE: in ix86_vector_duplicate_value, at config/i386/i386.c:39831 with -mavx512f
       [not found] <bug-63594-4@http.gcc.gnu.org/bugzilla/>
  2014-10-19 19:04 ` [Bug target/63594] [5 Regression] ICE: in ix86_vector_duplicate_value, at config/i386/i386.c:39831 with -mavx512f ubizjak at gmail dot com
  2014-10-20  9:15 ` jakub at gcc dot gnu.org
@ 2014-10-20 10:39 ` jakub at gcc dot gnu.org
  2014-10-20 12:50 ` kyukhin at gcc dot gnu.org
                   ` (9 subsequent siblings)
  12 siblings, 0 replies; 13+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-10-20 10:39 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Created attachment 33761
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=33761&action=edit
WIP patch for discussions

>From what I see, if TARGET_AVX512BW is not defined, then we obviously can't use
ix86_vector_duplicate_value, but need two instructions (either it can be
QI->V32QI / HI->V16HI broadcast followed by concat of the two parts, or
QI->V16QI / HI->V8HI broadcast followed by concat of the 4 parts together).
But, it seems even for -mavx2 or -mavx we actually generate terrible code,
for -mavx2 there is no point in using 2 instructions when in theory
vpbroadcast{b,w} should handle it alone just fine.
The patch enables all of that, but unfortunately we generate perhaps not so
good code with it, e.g. for -mavx2 in testchar32, we spill the argument always
to memory, and then broadcast it from memory, even when vmovd + broadcast from
register could have been used.
And in testchar16, for some reason we spill into memory, and broadcast from
vmovd result (so the spill is totally useless).
Uros/Kyrill, any thoughts on this?


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

* [Bug target/63594] [5 Regression] ICE: in ix86_vector_duplicate_value, at config/i386/i386.c:39831 with -mavx512f
       [not found] <bug-63594-4@http.gcc.gnu.org/bugzilla/>
                   ` (2 preceding siblings ...)
  2014-10-20 10:39 ` jakub at gcc dot gnu.org
@ 2014-10-20 12:50 ` kyukhin at gcc dot gnu.org
  2014-10-20 17:05 ` jakub at gcc dot gnu.org
                   ` (8 subsequent siblings)
  12 siblings, 0 replies; 13+ messages in thread
From: kyukhin at gcc dot gnu.org @ 2014-10-20 12:50 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #4 from Kirill Yukhin <kyukhin at gcc dot gnu.org> ---
(In reply to Jakub Jelinek from comment #3)
> Created attachment 33761 [details]
> WIP patch for discussions
> 
> From what I see, if TARGET_AVX512BW is not defined, then we obviously can't
> use
> ix86_vector_duplicate_value, but need two instructions (either it can be
> QI->V32QI / HI->V16HI broadcast followed by concat of the two parts, or
> QI->V16QI / HI->V8HI broadcast followed by concat of the 4 parts together).
> But, it seems even for -mavx2 or -mavx we actually generate terrible code,
> for -mavx2 there is no point in using 2 instructions when in theory
> vpbroadcast{b,w} should handle it alone just fine.
Right!

> The patch enables all of that, but unfortunately we generate perhaps not so
> good code with it, e.g. for -mavx2 in testchar32, we spill the argument
> always to memory, and then broadcast it from memory, even when vmovd +
> broadcast from register could have been used.
> And in testchar16, for some reason we spill into memory, and broadcast from
> vmovd result (so the spill is totally useless).
I think this is because of subreg:QI of reg:SI.
Before reload we have (for testchar32):
(insn 2 5 3 2 (set (reg:SI 86 [ c ])
        (reg:SI 5 di [ c ])) 1.c:22 90 {*movsi_internal}
     (expr_list:REG_DEAD (reg:SI 5 di [ c ])
        (nil)))
(insn 7 4 12 2 (set (reg:V32QI 88 [ v ])
        (vec_duplicate:V32QI (subreg:QI (reg:SI 86 [ c ]) 0))) 1.c:22 4112
{vec_dupv32qi}
     (expr_list:REG_DEAD (reg:SI 86 [ c ])
        (nil)))

After reload we need to get rid off subreg:
(insn 2 5 3 2 (set (mem/c:SI (plus:DI (reg/f:DI 6 bp)
                (const_int -20 [0xffffffffffffffec])) [8 %sfp+-4 S4 A32])
        (reg:SI 5 di [ c ])) 1.c:22 90 {*movsi_internal}
     (nil))
(insn 7 4 12 2 (set (reg:V32QI 21 xmm0 [orig:88 v ] [88])
        (vec_duplicate:V32QI (mem/c:QI (plus:DI (reg/f:DI 6 bp)
                    (const_int -20 [0xffffffffffffffec])) [8 %sfp+-4 S1 A32])))
1.c:22 4112 {vec_dupv32qi}
     (nil))

> Uros/Kyrill, any thoughts on this?
I like the patch.


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

* [Bug target/63594] [5 Regression] ICE: in ix86_vector_duplicate_value, at config/i386/i386.c:39831 with -mavx512f
       [not found] <bug-63594-4@http.gcc.gnu.org/bugzilla/>
                   ` (3 preceding siblings ...)
  2014-10-20 12:50 ` kyukhin at gcc dot gnu.org
@ 2014-10-20 17:05 ` jakub at gcc dot gnu.org
  2014-10-20 17:16 ` jakub at gcc dot gnu.org
                   ` (7 subsequent siblings)
  12 siblings, 0 replies; 13+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-10-20 17:05 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Better testcase that tests both broadcasts from GPRs and broadcasts from
memory:

#define C1 c
#define C2 C1, C1
#define C4 C2, C2
#define C8 C4, C4
#define C16 C8, C8
#define C32 C16, C16
#define C64 C32, C32
#define C_(n) n
#define C(n) C_(C##n)

#define T(t,s) \
typedef t v##t##s __attribute__ ((__vector_size__ (s * sizeof (t))));    \
v##t##s test##t##s (t c)                        \
{                                    \
  v##t##s v = { C(s) };                            \
  return v;                                \
}                                    \
v##t##s test2##t##s (t *p)                        \
{                                    \
  t c = *p;                                \
  v##t##s v = { C(s) };                            \
  return v;                                \
}

typedef long long llong;

T(char, 64)
T(char, 32)
T(char, 16)
T(char, 8)
T(short, 32)
T(short, 16)
T(short, 8)
T(short, 4)
T(int, 16)
T(int, 8)
T(int, 4)
T(int, 2)
T(float, 16)
T(float, 8)
T(float, 4)
T(float, 2)
T(llong, 8)
T(llong, 4)
T(llong, 2)
T(double, 8)
T(double, 4)
T(double, 2)


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

* [Bug target/63594] [5 Regression] ICE: in ix86_vector_duplicate_value, at config/i386/i386.c:39831 with -mavx512f
       [not found] <bug-63594-4@http.gcc.gnu.org/bugzilla/>
                   ` (4 preceding siblings ...)
  2014-10-20 17:05 ` jakub at gcc dot gnu.org
@ 2014-10-20 17:16 ` jakub at gcc dot gnu.org
  2014-10-21  9:31 ` jakub at gcc dot gnu.org
                   ` (6 subsequent siblings)
  12 siblings, 0 replies; 13+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-10-20 17:16 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Created attachment 33763
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=33763&action=edit
gcc5-pr63594-wip2.patch

Updated WIP patch, which attempts to generate better code using inter-unit
moves, but have also memory as an alternative, so it allows RA to choose what
is best.  This still generates non-perfect code for V2DI/V4DI loads from GPRs
without -mavx512f (but e.g. vec_concatv2di uses Yi constraint).
And, for AVX512-{F,BW,VL}, I'm surprised that the broadcasts from gprs are done
as different instructions from broadcasts from memory or vector reg, I would
have thought that must have been done using a single insn with alternatives.


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

* [Bug target/63594] [5 Regression] ICE: in ix86_vector_duplicate_value, at config/i386/i386.c:39831 with -mavx512f
       [not found] <bug-63594-4@http.gcc.gnu.org/bugzilla/>
                   ` (5 preceding siblings ...)
  2014-10-20 17:16 ` jakub at gcc dot gnu.org
@ 2014-10-21  9:31 ` jakub at gcc dot gnu.org
  2014-10-22  7:00 ` jakub at gcc dot gnu.org
                   ` (5 subsequent siblings)
  12 siblings, 0 replies; 13+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-10-21  9:31 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Note that this bug shows up in quite a lot of regressions on the trunk, both
x86_64 and i686:
+FAIL: gcc.target/i386/avx-1.c (internal compiler error)
+FAIL: gcc.target/i386/avx-1.c (test for excess errors)
+FAIL: gcc.target/i386/avx-2.c (internal compiler error)
+FAIL: gcc.target/i386/avx-2.c (test for excess errors)
+FAIL: gcc.target/i386/avx512f-vec-init.c (internal compiler error)
+FAIL: gcc.target/i386/avx512f-vec-init.c (test for excess errors)
+UNRESOLVED: gcc.target/i386/avx512f-vec-init.c scan-assembler-times
vbroadcastsd 1
+UNRESOLVED: gcc.target/i386/avx512f-vec-init.c scan-assembler-times
vbroadcastss 1
+UNRESOLVED: gcc.target/i386/avx512f-vec-init.c scan-assembler-times vmovdqa64[
\\\\t]+%zmm 2
+UNRESOLVED: gcc.target/i386/avx512f-vec-init.c scan-assembler-times
vpbroadcastb 2
+UNRESOLVED: gcc.target/i386/avx512f-vec-init.c scan-assembler-times
vpbroadcastd 1
+UNRESOLVED: gcc.target/i386/avx512f-vec-init.c scan-assembler-times
vpbroadcastq 1
+UNRESOLVED: gcc.target/i386/avx512f-vec-init.c scan-assembler-times
vpbroadcastw 2
+FAIL: gcc.target/i386/sse-14.c (internal compiler error)
+FAIL: gcc.target/i386/sse-14.c (test for excess errors)
+FAIL: gcc.target/i386/sse-22.c (internal compiler error)
+FAIL: gcc.target/i386/sse-22.c (test for excess errors)
+FAIL: gcc.target/i386/sse-22a.c (internal compiler error)
+FAIL: gcc.target/i386/sse-22a.c (test for excess errors)
+FAIL: gcc.target/i386/sse-23.c (internal compiler error)
+FAIL: gcc.target/i386/sse-23.c (test for excess errors)
+FAIL: gcc.target/i386/sse-24.c (internal compiler error)
+FAIL: gcc.target/i386/sse-24.c (test for excess errors)

are all because of this, so IMHO this is quite urgent thing to solve.
Note, supposedly in the WIP2 patch supposedly the vec_dup<mode> and the new
define_insns should be moved after the avx512 patterns, so that those trigger
earlier, and as I said, IMHO they really need to be merged so that broadcasts
from gprs are in the same patterns as broadcasts from memory or vector regs,
just different alternatives, but supposedly that can be done incrementally.

I'm also not sure about the v vs. x constraints on the AVX2 insn, supposedly
v is not an option if the mode iterator includes V*QI and V*HI modes, because
then AVX512F doesn't have instructions for that, right?


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

* [Bug target/63594] [5 Regression] ICE: in ix86_vector_duplicate_value, at config/i386/i386.c:39831 with -mavx512f
       [not found] <bug-63594-4@http.gcc.gnu.org/bugzilla/>
                   ` (6 preceding siblings ...)
  2014-10-21  9:31 ` jakub at gcc dot gnu.org
@ 2014-10-22  7:00 ` jakub at gcc dot gnu.org
  2014-10-22  7:24 ` jakub at gcc dot gnu.org
                   ` (4 subsequent siblings)
  12 siblings, 0 replies; 13+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-10-22  7:00 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #8 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Author: jakub
Date: Wed Oct 22 06:58:57 2014
New Revision: 216541

URL: https://gcc.gnu.org/viewcvs?rev=216541&root=gcc&view=rev
Log:
    PR target/63594
    * config/i386/i386.c (ix86_expand_vector_init_duplicate): For
    V{8HI,16QI,16HI,32QI}mode call ix86_vector_duplicate_value
    even for just TARGET_AVX2, not only for
    TARGET_AVX512VL && TARGET_AVX512BW.  For V{32HI,64QI}mode,
    call ix86_vector_duplicate_value only if TARGET_AVX512BW,
    otherwise build it using concatenation of 256-bit
    broadcast.
    * config/i386/sse.md (AVX_VEC_DUP_MODE): Moved after
    avx512 broadcast patterns.
    (vec_dup<mode>): Likewise.  For avx2 use
    v<sseintprefix>broadcast<bcstscalarsuff> instead of
    vbroadcast<ssescalarmodesuffix>.
    (AVX2_VEC_DUP_MODE): New mode iterator.
    (*vec_dup<mode>): New TARGET_AVX2 define_insn with
    AVX2_VEC_DUP_MODE iterator, add a splitter for that.

    * gcc.dg/pr63594-1.c: New test.
    * gcc.dg/pr63594-2.c: New test.
    * gcc.target/i386/sse2-pr63594-1.c: New test.
    * gcc.target/i386/sse2-pr63594-2.c: New test.
    * gcc.target/i386/avx-pr63594-1.c: New test.
    * gcc.target/i386/avx-pr63594-2.c: New test.
    * gcc.target/i386/avx2-pr63594-1.c: New test.
    * gcc.target/i386/avx2-pr63594-2.c: New test.
    * gcc.target/i386/avx512f-pr63594-1.c: New test.
    * gcc.target/i386/avx512f-pr63594-2.c: New test.
    * gcc.target/i386/avx512f-vec-init.c: Adjust expected
    insn counts.

Added:
    trunk/gcc/testsuite/gcc.dg/pr63594-1.c
    trunk/gcc/testsuite/gcc.dg/pr63594-2.c
    trunk/gcc/testsuite/gcc.target/i386/avx-pr63594-1.c
    trunk/gcc/testsuite/gcc.target/i386/avx-pr63594-2.c
    trunk/gcc/testsuite/gcc.target/i386/avx2-pr63594-1.c
    trunk/gcc/testsuite/gcc.target/i386/avx2-pr63594-2.c
    trunk/gcc/testsuite/gcc.target/i386/avx512f-pr63594-1.c
    trunk/gcc/testsuite/gcc.target/i386/avx512f-pr63594-2.c
    trunk/gcc/testsuite/gcc.target/i386/sse2-pr63594-1.c
    trunk/gcc/testsuite/gcc.target/i386/sse2-pr63594-2.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/i386/i386.c
    trunk/gcc/config/i386/sse.md
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gcc.target/i386/avx512f-vec-init.c


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

* [Bug target/63594] [5 Regression] ICE: in ix86_vector_duplicate_value, at config/i386/i386.c:39831 with -mavx512f
       [not found] <bug-63594-4@http.gcc.gnu.org/bugzilla/>
                   ` (7 preceding siblings ...)
  2014-10-22  7:00 ` jakub at gcc dot gnu.org
@ 2014-10-22  7:24 ` jakub at gcc dot gnu.org
  2014-10-24  7:04 ` trippels at gcc dot gnu.org
                   ` (3 subsequent siblings)
  12 siblings, 0 replies; 13+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-10-22  7:24 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #9 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Fixed for AVX2, for AVX512{F,BW,VL} I'm keeping this open, as something needs
to be done about those patterns, Kyrill, can you please take care of that?


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

* [Bug target/63594] [5 Regression] ICE: in ix86_vector_duplicate_value, at config/i386/i386.c:39831 with -mavx512f
       [not found] <bug-63594-4@http.gcc.gnu.org/bugzilla/>
                   ` (8 preceding siblings ...)
  2014-10-22  7:24 ` jakub at gcc dot gnu.org
@ 2014-10-24  7:04 ` trippels at gcc dot gnu.org
  2014-11-18 14:54 ` jakub at gcc dot gnu.org
                   ` (2 subsequent siblings)
  12 siblings, 0 replies; 13+ messages in thread
From: trippels at gcc dot gnu.org @ 2014-10-24  7:04 UTC (permalink / raw)
  To: gcc-bugs

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

Markus Trippelsdorf <trippels at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |trippels at gcc dot gnu.org

--- Comment #10 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
I still see failures on ppc64:

trippels@gcc1-power7 testsuite % ~/gcc_test/usr/local/bin/gcc -c -O2 -Wno-psabi
gcc.dg/pr63594-1.c
gcc.dg/pr63594-1.c: In function ‘test1char64’:
gcc.dg/pr63594-1.c:35:1: warning: GCC vector returned by reference:
non-standard ABI extension with no compatibility guarantee
 T(char, 64)
 ^
trippels@gcc1-power7 testsuite % ~/gcc_test/usr/local/bin/gcc -c -O2 -Wno-psabi
gcc.dg/pr63594-2.c
gcc.dg/pr63594-2.c: In function ‘test1char64’:
gcc.dg/pr63594-2.c:83:1: warning: GCC vector returned by reference:
non-standard ABI extension with no compatibility guarantee
 TESTS
 ^
>From gcc-bugs-return-464886-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Fri Oct 24 07:04:44 2014
Return-Path: <gcc-bugs-return-464886-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 11305 invoked by alias); 24 Oct 2014 07:04:44 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 11263 invoked by uid 48); 24 Oct 2014 07:04:39 -0000
From: "jakub at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug target/63594] [5 Regression] ICE: in ix86_vector_duplicate_value, at config/i386/i386.c:39831 with -mavx512f
Date: Fri, 24 Oct 2014 07:08:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: target
X-Bugzilla-Version: 5.0
X-Bugzilla-Keywords: ice-on-valid-code
X-Bugzilla-Severity: normal
X-Bugzilla-Who: jakub at gcc dot gnu.org
X-Bugzilla-Status: NEW
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org
X-Bugzilla-Target-Milestone: 5.0
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields: cc
Message-ID: <bug-63594-4-hI243wJETH@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-63594-4@http.gcc.gnu.org/bugzilla/>
References: <bug-63594-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2014-10/txt/msg01907.txt.bz2
Content-length: 1227

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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |dje at gcc dot gnu.org

--- Comment #11 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
(In reply to Markus Trippelsdorf from comment #10)
> I still see failures on ppc64:
> 
> trippels@gcc1-power7 testsuite % ~/gcc_test/usr/local/bin/gcc -c -O2
> -Wno-psabi gcc.dg/pr63594-1.c
> gcc.dg/pr63594-1.c: In function ‘test1char64’:
> gcc.dg/pr63594-1.c:35:1: warning: GCC vector returned by reference:
> non-standard ABI extension with no compatibility guarantee
>  T(char, 64)
>  ^
> trippels@gcc1-power7 testsuite % ~/gcc_test/usr/local/bin/gcc -c -O2
> -Wno-psabi gcc.dg/pr63594-2.c
> gcc.dg/pr63594-2.c: In function ‘test1char64’:
> gcc.dg/pr63594-2.c:83:1: warning: GCC vector returned by reference:
> non-standard ABI extension with no compatibility guarantee
>  TESTS
>  ^

That sounds like a rs6000 backend issue, IMNSHO those warnings should be
guarded by OPT_Wpsabi, like they are in other backends.
>From gcc-bugs-return-464887-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org Fri Oct 24 07:08:18 2014
Return-Path: <gcc-bugs-return-464887-listarch-gcc-bugs=gcc.gnu.org@gcc.gnu.org>
Delivered-To: listarch-gcc-bugs@gcc.gnu.org
Received: (qmail 12731 invoked by alias); 24 Oct 2014 07:08:17 -0000
Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm
Precedence: bulk
List-Id: <gcc-bugs.gcc.gnu.org>
List-Archive: <http://gcc.gnu.org/ml/gcc-bugs/>
List-Post: <mailto:gcc-bugs@gcc.gnu.org>
List-Help: <mailto:gcc-bugs-help@gcc.gnu.org>
Sender: gcc-bugs-owner@gcc.gnu.org
Delivered-To: mailing list gcc-bugs@gcc.gnu.org
Received: (qmail 12696 invoked by uid 48); 24 Oct 2014 07:08:13 -0000
From: "trippels at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug bootstrap/63632] [4.9/5 Regression] bootstrap-lto/profiledbootstrap broken by r216566
Date: Fri, 24 Oct 2014 07:14:00 -0000
X-Bugzilla-Reason: CC
X-Bugzilla-Type: changed
X-Bugzilla-Watch-Reason: None
X-Bugzilla-Product: gcc
X-Bugzilla-Component: bootstrap
X-Bugzilla-Version: 5.0
X-Bugzilla-Keywords:
X-Bugzilla-Severity: normal
X-Bugzilla-Who: trippels at gcc dot gnu.org
X-Bugzilla-Status: RESOLVED
X-Bugzilla-Priority: P3
X-Bugzilla-Assigned-To: trippels at gcc dot gnu.org
X-Bugzilla-Target-Milestone: 4.9.2
X-Bugzilla-Flags:
X-Bugzilla-Changed-Fields: bug_status resolution
Message-ID: <bug-63632-4-dYXtMKZtQc@http.gcc.gnu.org/bugzilla/>
In-Reply-To: <bug-63632-4@http.gcc.gnu.org/bugzilla/>
References: <bug-63632-4@http.gcc.gnu.org/bugzilla/>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 7bit
X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/
Auto-Submitted: auto-generated
MIME-Version: 1.0
X-SW-Source: 2014-10/txt/msg01908.txt.bz2
Content-length: 440

https://gcc.gnu.org/bugzilla/show_bug.cgi?idc632

Markus Trippelsdorf <trippels at gcc dot gnu.org> changed:

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

--- Comment #4 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
Fixed.


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

* [Bug target/63594] [5 Regression] ICE: in ix86_vector_duplicate_value, at config/i386/i386.c:39831 with -mavx512f
       [not found] <bug-63594-4@http.gcc.gnu.org/bugzilla/>
                   ` (9 preceding siblings ...)
  2014-10-24  7:04 ` trippels at gcc dot gnu.org
@ 2014-11-18 14:54 ` jakub at gcc dot gnu.org
  2014-11-20 12:38 ` rguenth at gcc dot gnu.org
  2014-12-10  9:01 ` jakub at gcc dot gnu.org
  12 siblings, 0 replies; 13+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-11-18 14:54 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #12 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Kirill, any progress on:
"And, for AVX512-{F,BW,VL}, I'm surprised that the broadcasts from gprs are
done as different instructions from broadcasts from memory or vector reg, I
would have thought that must have been done using a single insn with
alternatives."
?


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

* [Bug target/63594] [5 Regression] ICE: in ix86_vector_duplicate_value, at config/i386/i386.c:39831 with -mavx512f
       [not found] <bug-63594-4@http.gcc.gnu.org/bugzilla/>
                   ` (10 preceding siblings ...)
  2014-11-18 14:54 ` jakub at gcc dot gnu.org
@ 2014-11-20 12:38 ` rguenth at gcc dot gnu.org
  2014-12-10  9:01 ` jakub at gcc dot gnu.org
  12 siblings, 0 replies; 13+ messages in thread
From: rguenth at gcc dot gnu.org @ 2014-11-20 12:38 UTC (permalink / raw)
  To: gcc-bugs

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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P3                          |P1


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

* [Bug target/63594] [5 Regression] ICE: in ix86_vector_duplicate_value, at config/i386/i386.c:39831 with -mavx512f
       [not found] <bug-63594-4@http.gcc.gnu.org/bugzilla/>
                   ` (11 preceding siblings ...)
  2014-11-20 12:38 ` rguenth at gcc dot gnu.org
@ 2014-12-10  9:01 ` jakub at gcc dot gnu.org
  12 siblings, 0 replies; 13+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-12-10  9:01 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #14 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Author: jakub
Date: Wed Dec 10 09:00:50 2014
New Revision: 218565

URL: https://gcc.gnu.org/viewcvs?rev=218565&root=gcc&view=rev
Log:
    PR target/63594
    * config/i386/sse.md (vec_dupv4sf): Move after
    <mask_codefor><avx512>_vec_dup_gpr<mode><mask_name> pattern.
    (*vec_dupv4si, *vec_dupv2di): Likewise.
    (<mask_codefor><avx512>_vec_dup_mem<mode><mask_name>): Merge into ...
    (<mask_codefor><avx512>_vec_dup_gpr<mode><mask_name>): ... this
    pattern.
    (*vec_dup<mode> AVX2_VEC_DUP_MODE splitter): Disable for
    TARGET_AVX512VL (for QI/HI scalar modes only if TARGET_AVX512BW
    is set too).
    * config/i386/i386.c (enum ix86_builtins): Remove
    IX86_BUILTIN_PBROADCASTQ256_MEM_MASK,
    IX86_BUILTIN_PBROADCASTQ128_MEM_MASK and
    IX86_BUILTIN_PBROADCASTQ512_MEM.
    (bdesc_args): Use __builtin_ia32_pbroadcastq512_gpr_mask,
    __builtin_ia32_pbroadcastq256_gpr_mask and
    __builtin_ia32_pbroadcastq128_gpr_mask instead of *_mem_mask
    regardless of OPTION_MASK_ISA_64BIT.
    * config/i386/avx512fintrin.h (_mm512_set1_epi64,
    _mm512_mask_set1_epi64, _mm512_maskz_set1_epi64): Use *_gpr_mask
    builtins regardless of whether TARGET_64BIT is defined or not.
    * config/i386/avx512vlintrin.h (_mm256_mask_set1_epi64,
    _mm256_maskz_set1_epi64, _mm_mask_set1_epi64, _mm_maskz_set1_epi64):
    Likewise.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/i386/avx512fintrin.h
    trunk/gcc/config/i386/avx512vlintrin.h
    trunk/gcc/config/i386/i386.c
    trunk/gcc/config/i386/sse.md


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

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

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <bug-63594-4@http.gcc.gnu.org/bugzilla/>
2014-10-19 19:04 ` [Bug target/63594] [5 Regression] ICE: in ix86_vector_duplicate_value, at config/i386/i386.c:39831 with -mavx512f ubizjak at gmail dot com
2014-10-20  9:15 ` jakub at gcc dot gnu.org
2014-10-20 10:39 ` jakub at gcc dot gnu.org
2014-10-20 12:50 ` kyukhin at gcc dot gnu.org
2014-10-20 17:05 ` jakub at gcc dot gnu.org
2014-10-20 17:16 ` jakub at gcc dot gnu.org
2014-10-21  9:31 ` jakub at gcc dot gnu.org
2014-10-22  7:00 ` jakub at gcc dot gnu.org
2014-10-22  7:24 ` jakub at gcc dot gnu.org
2014-10-24  7:04 ` trippels at gcc dot gnu.org
2014-11-18 14:54 ` jakub at gcc dot gnu.org
2014-11-20 12:38 ` rguenth at gcc dot gnu.org
2014-12-10  9:01 ` jakub 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).