[Bug tree-optimization/67800] [6 Regression] Missed vectorization opportunity on x86 (DOT_PROD_EXPR in non-reduction)

2016-02-28 Thread afomin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67800

afomin at gcc dot gnu.org changed:

   What|Removed |Added

 Status|RESOLVED|CLOSED
 CC||afomin at gcc dot gnu.org

--- Comment #10 from afomin at gcc dot gnu.org ---
Thanks, closing it.

[Bug rtl-optimization/67145] [6 Regression] associativity from pseudo-reg ordering

2016-03-02 Thread afomin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67145

afomin at gcc dot gnu.org changed:

   What|Removed |Added

 CC||afomin at gcc dot gnu.org

--- Comment #17 from afomin at gcc dot gnu.org ---
This regression caused performance loss on EEMBC DEN djpeg* benchmark up to 6%.
But it affects only i686, not x86_64.

[Bug rtl-optimization/70461] New: [6 Regression] Performance regression after r234527

2016-03-30 Thread afomin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70461

Bug ID: 70461
   Summary: [6 Regression] Performance regression after r234527
   Product: gcc
   Version: 6.0
Status: UNCONFIRMED
  Severity: normal
  Priority: P3
 Component: rtl-optimization
  Assignee: unassigned at gcc dot gnu.org
  Reporter: afomin at gcc dot gnu.org
CC: izamyatin at gmail dot com, vmakarov at redhat dot com
  Target Milestone: ---
Target: i686-*-*

Created attachment 38134
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=38134&action=edit
A reproducer

When trying to compile the attached reproducer with -m32 -O2 -march=core-avx2
we generate 12 extra instructions (namely spills & fills) for the hot loop
since r234527.

[Bug rtl-optimization/70461] [6 Regression] Performance regression after r234527

2016-04-04 Thread afomin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70461

Alexander Fomin  changed:

   What|Removed |Added

  Attachment #38134|0   |1
is obsolete||

--- Comment #5 from Alexander Fomin  ---
Created attachment 38184
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=38184&action=edit
Another reproducer

Thanks, performance is back on Core CPUs.

However, I've noticed that given a slightly different testcase compiled with
-m32 -O2 we also generate extra insns for the loop (the degradation can be seen
on some other CPUs, e.g. when specifying -march=slm).

What I see in RTL ira dump is (with some identical lines removed):
+---+
| Before r234527   | After r234527  |
---+-
| Assigning 0 to a26r113   | Assigning 4 to a14r144 |
| Assigning 0 to a27r181   | Assigning 4 to a42r113 |
| Spilling a29r178 for a28r180 | Assigning 4 to a46r137 |
| Assigning 0 to a28r180   | Assigning 4 to a50r128 |
| Assigning 0 to a30r137   | Assigning 4 to a54r121 |
| Assigning 0 to a31r177   | Assigning 4 to a26r113 |
| Spilling a33r174 for a32r176 | Assigning 4 to a30r137 |
| Assigning 0 to a32r176   | Assigning 4 to a34r128 |
| Assigning 0 to a34r128   | Assigning 4 to a38r121 |
| Assigning 0 to a35r173   ||
| Spilling a37r170 for a36r172 ||
| Assigning 0 to a36r172   ||
| Assigning 0 to a38r121   ||
| Assigning 0 to a39r169   ||
| Spilling a41r166 for a40r168 ||
| Assigning 0 to a40r168   ||
| a41(r166,l1)  -- (...) assign memory ||
| a29(r178,l1)  -- (...) assign memory ||
| a33(r174,l1)  -- (...) assign memory ||
| a37(r170,l1)  -- (...) assign memory ||
+--++

Looks like we don't consider spilling and memory more profitable anymore...
Could you please take a look?

[Bug rtl-optimization/70461] [6 Regression] Performance regression after r234527

2016-04-13 Thread afomin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70461

Alexander Fomin  changed:

   What|Removed |Added

 Status|RESOLVED|CLOSED

--- Comment #6 from Alexander Fomin  ---
Please consider my previous comment irrelevant.
I close this one, thanks.

[Bug target/67895] Wrong assembly: incorrect rounding/SAE specifier position

2015-10-09 Thread afomin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67895

--- Comment #1 from afomin at gcc dot gnu.org ---
Author: afomin
Date: Fri Oct  9 15:57:06 2015
New Revision: 228660

URL: https://gcc.gnu.org/viewcvs?rev=228660&root=gcc&view=rev
Log:
AVX512: Fix embedded rounding/SAE specifier position.

gcc/

PR target/67895
* config/i386/sse.md (define_insn "sse_cvtsi2ss"):
Adjust embedded rounding/SAE specifier position.
(define_insn "sse_cvtsi2ssq"): Likewise.
(define_insn "cvtusi232"): Likewise.
(define_insn "cvtusi264"): Likewise.
(define_insn "sse2_cvtsi2sdq"): Likewise.
(define_insn "avx512dq_rangep"):
Likewise.
(define_insn "avx512dq_ranges"): Likewise.

gcc/testsuite

PR target/67895
* gcc.target/i386/avx512dq-vrangepd-1.c: Adjust assembly regexp.
* gcc.target/i386/avx512dq-vrangeps-1.c: Likewise.
* gcc.target/i386/avx512dq-vrangesd-1.c: Likewise.
* gcc.target/i386/avx512dq-vrangess-1.c: Likewise.
* gcc.target/i386/avx512f-vcvtsi2sd64-1.c: Likewise.
* gcc.target/i386/avx512f-vcvtsi2ss-1.c: Likewise.
* gcc.target/i386/avx512f-vcvtsi2ss64-1.c: Likewise.
* gcc.target/i386/avx512f-vcvtusi2sd64-1.c: Likewise.
* gcc.target/i386/avx512f-vcvtusi2ss-1.c: Likewise.
* gcc.target/i386/avx512f-vcvtusi2ss64-1.c: Likewise.


Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/i386/sse.md
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gcc.target/i386/avx512dq-vrangepd-1.c
trunk/gcc/testsuite/gcc.target/i386/avx512dq-vrangeps-1.c
trunk/gcc/testsuite/gcc.target/i386/avx512dq-vrangesd-1.c
trunk/gcc/testsuite/gcc.target/i386/avx512dq-vrangess-1.c
trunk/gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2sd64-1.c
trunk/gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2ss-1.c
trunk/gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2ss64-1.c
trunk/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd64-1.c
trunk/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss-1.c
trunk/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss64-1.c


[Bug target/69228] Default mask is not allowed for AVX512 prefetch gather/scatter insns

2016-01-13 Thread afomin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69228

--- Comment #1 from afomin at gcc dot gnu.org ---
Author: afomin
Date: Wed Jan 13 14:31:13 2016
New Revision: 232324

URL: https://gcc.gnu.org/viewcvs?rev=232324&root=gcc&view=rev
Log:
AVX512: Restrict default masks for prefetch gather/scatter
instructions.

gcc/

PR target/69228
* config/i386/sse.md (define_expand "avx512pf_gatherpfsf"):
Change first operand predicate from register_or_constm1_operand
to register_operand.
(define_expand "avx512pf_gatherpfdf"): Likewise.
(define_expand "avx512pf_scatterpfsf"): Likewise.
(define_expand "avx512pf_scatterpfdf"): Likewise.
(define_insn "*avx512pf_gatherpfsf"): Remove.
(define_insn "*avx512pf_gatherpfdf"): Likewise.
(define_insn "*avx512pf_scatterpfsf"): Likewise.
(define_insn "*avx512pf_scatterpfdf"): Likewise.
* config/i386/i386.c (ix86_expand_builtin): Remove first operand
comparison with constm1_rtx from vec_prefetch_gen part.

gcc/testsuite

PR target/69228
* gcc.target/i386/avx512pf-vscatterpf0dpd-1.c: Adjust.
* gcc.target/i386/avx512pf-vscatterpf0dps-1.c: Likewise.
* gcc.target/i386/avx512pf-vscatterpf0qpd-1.c: Likewise.
* gcc.target/i386/avx512pf-vscatterpf0qps-1.c: Likewise.
* gcc.target/i386/avx512pf-vscatterpf1dpd-1.c: Likewise.
* gcc.target/i386/avx512pf-vscatterpf1dps-1.c: Likewise.
* gcc.target/i386/avx512pf-vscatterpf1qpd-1.c: Likewise.
* gcc.target/i386/avx512pf-vscatterpf1qps-1.c: Likewise.

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/avx512pf-vscatterpf0dpd-1.c
trunk/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0dps-1.c
trunk/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0qpd-1.c
trunk/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0qps-1.c
trunk/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1dpd-1.c
trunk/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1dps-1.c
trunk/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1qpd-1.c
trunk/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1qps-1.c

[Bug target/69228] Default mask is not allowed for AVX512 prefetch gather/scatter insns

2016-01-15 Thread afomin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69228

--- Comment #4 from afomin at gcc dot gnu.org ---
Author: afomin
Date: Fri Jan 15 11:03:24 2016
New Revision: 232412

URL: https://gcc.gnu.org/viewcvs?rev=232412&root=gcc&view=rev
Log:
Backport from mainline
2016-01-13  Alexander Fomin  

gcc/

PR target/69228
* config/i386/sse.md (define_expand "avx512pf_gatherpfsf"):
Change first operand predicate from register_or_constm1_operand
to register_operand.
(define_expand "avx512pf_gatherpfdf"): Likewise.
(define_expand "avx512pf_scatterpfsf"): Likewise.
(define_expand "avx512pf_scatterpfdf"): Likewise.
(define_insn "*avx512pf_gatherpfsf"): Remove.
(define_insn "*avx512pf_gatherpfdf"): Likewise.
(define_insn "*avx512pf_scatterpfsf"): Likewise.
(define_insn "*avx512pf_scatterpfdf"): Likewise.
* config/i386/i386.c (ix86_expand_builtin): Remove first operand
comparison with constm1_rtx from vec_prefetch_gen part.

gcc/testsuite

PR target/69228
* gcc.target/i386/avx512pf-vscatterpf0dpd-1.c: Adjust.
* gcc.target/i386/avx512pf-vscatterpf0dps-1.c: Likewise.
* gcc.target/i386/avx512pf-vscatterpf0qpd-1.c: Likewise.
* gcc.target/i386/avx512pf-vscatterpf0qps-1.c: Likewise.
* gcc.target/i386/avx512pf-vscatterpf1dpd-1.c: Likewise.
* gcc.target/i386/avx512pf-vscatterpf1dps-1.c: Likewise.
* gcc.target/i386/avx512pf-vscatterpf1qpd-1.c: Likewise.
* gcc.target/i386/avx512pf-vscatterpf1qps-1.c: Likewise.

Modified:
branches/gcc-5-branch/gcc/ChangeLog
branches/gcc-5-branch/gcc/config/i386/i386.c
branches/gcc-5-branch/gcc/config/i386/sse.md
branches/gcc-5-branch/gcc/testsuite/ChangeLog
   
branches/gcc-5-branch/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0dpd-1.c
   
branches/gcc-5-branch/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0dps-1.c
   
branches/gcc-5-branch/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0qpd-1.c
   
branches/gcc-5-branch/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf0qps-1.c
   
branches/gcc-5-branch/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1dpd-1.c
   
branches/gcc-5-branch/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1dps-1.c
   
branches/gcc-5-branch/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1qpd-1.c
   
branches/gcc-5-branch/gcc/testsuite/gcc.target/i386/avx512pf-vscatterpf1qps-1.c

[Bug target/67895] Wrong assembly: incorrect rounding/SAE specifier position

2016-01-18 Thread afomin at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67895

--- Comment #3 from afomin at gcc dot gnu.org ---
Author: afomin
Date: Mon Jan 18 17:09:06 2016
New Revision: 232533

URL: https://gcc.gnu.org/viewcvs?rev=232533&root=gcc&view=rev
Log:
Backport to mainline
2015-10-09  Alexander Fomin  

gcc/

PR target/67895
* config/i386/sse.md (define_insn "sse_cvtsi2ss"):
Adjust embedded rounding/SAE specifier position.
(define_insn "sse_cvtsi2ssq"): Likewise.
(define_insn "cvtusi232"): Likewise.
(define_insn "cvtusi264"): Likewise.
(define_insn "sse2_cvtsi2sdq"): Likewise.
(define_insn "avx512dq_rangep"):
Likewise.
(define_insn "avx512dq_ranges"): Likewise.

gcc/testsuite

PR target/67895
* gcc.target/i386/avx512dq-vrangepd-1.c: Adjust.
* gcc.target/i386/avx512dq-vrangeps-1.c: Likewise.
* gcc.target/i386/avx512dq-vrangesd-1.c: Likewise.
* gcc.target/i386/avx512dq-vrangess-1.c: Likewise.
* gcc.target/i386/avx512f-vcvtsi2sd64-1.c: Likewise.
* gcc.target/i386/avx512f-vcvtsi2ss-1.c: Likewise.
* gcc.target/i386/avx512f-vcvtsi2ss64-1.c: Likewise.
* gcc.target/i386/avx512f-vcvtusi2sd64-1.c: Likewise.
* gcc.target/i386/avx512f-vcvtusi2ss-1.c: Likewise.
* gcc.target/i386/avx512f-vcvtusi2ss64-1.c: Likewise.

Modified:
branches/gcc-5-branch/gcc/ChangeLog
branches/gcc-5-branch/gcc/config/i386/sse.md
branches/gcc-5-branch/gcc/testsuite/ChangeLog
branches/gcc-5-branch/gcc/testsuite/gcc.target/i386/avx512dq-vrangepd-1.c
branches/gcc-5-branch/gcc/testsuite/gcc.target/i386/avx512dq-vrangeps-1.c
branches/gcc-5-branch/gcc/testsuite/gcc.target/i386/avx512dq-vrangesd-1.c
branches/gcc-5-branch/gcc/testsuite/gcc.target/i386/avx512dq-vrangess-1.c
branches/gcc-5-branch/gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2sd64-1.c
branches/gcc-5-branch/gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2ss-1.c
branches/gcc-5-branch/gcc/testsuite/gcc.target/i386/avx512f-vcvtsi2ss64-1.c
   
branches/gcc-5-branch/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2sd64-1.c
branches/gcc-5-branch/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss-1.c
   
branches/gcc-5-branch/gcc/testsuite/gcc.target/i386/avx512f-vcvtusi2ss64-1.c