[Bug tree-optimization/67800] [6 Regression] Missed vectorization opportunity on x86 (DOT_PROD_EXPR in non-reduction)
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
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
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
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
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
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
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
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
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