This is the mail archive of the
gcc-cvs@gcc.gnu.org
mailing list for the GCC project.
r243063 - in /branches/ARM/sve-branch/gcc: conf...
- From: rsandifo at gcc dot gnu dot org
- To: gcc-cvs at gcc dot gnu dot org
- Date: Wed, 30 Nov 2016 19:08:22 -0000
- Subject: r243063 - in /branches/ARM/sve-branch/gcc: conf...
Author: rsandifo
Date: Wed Nov 30 19:08:22 2016
New Revision: 243063
URL: https://gcc.gnu.org/viewcvs?rev=243063&root=gcc&view=rev
Log:
SLP reductions with variable-length vectors
[Branch only patch -- not intended for trunk in its current state]
Two things prevented us from using SLP reductions with variable-length
vectors:
(1) Previously we had no way of constructing the initial vector.
This patch does it by creating a vector full of the neutral
identity value and then using INSR to insert any non-identity
inputs (which are needed for double reductions).
(2) Previously the epilogue would extract the vector elements
associated with each SLP statement and do scalar arithmetic
on these individual elements. The patch instead creates
a reduction vector for each SLP statement, replacing the
elements for other SLP statements with the identity value.
It then uses a hardware reduction instruction on each vector.
Added:
branches/ARM/sve-branch/gcc/testsuite/gcc.target/aarch64/sve_slp_5.c
branches/ARM/sve-branch/gcc/testsuite/gcc.target/aarch64/sve_slp_5_run.c
branches/ARM/sve-branch/gcc/testsuite/gcc.target/aarch64/sve_slp_6.c
branches/ARM/sve-branch/gcc/testsuite/gcc.target/aarch64/sve_slp_6_run.c
branches/ARM/sve-branch/gcc/testsuite/gcc.target/aarch64/sve_slp_7.c
branches/ARM/sve-branch/gcc/testsuite/gcc.target/aarch64/sve_slp_7_run.c
Modified:
branches/ARM/sve-branch/gcc/config/aarch64/aarch64-sve.md
branches/ARM/sve-branch/gcc/config/aarch64/aarch64.md
branches/ARM/sve-branch/gcc/doc/md.texi
branches/ARM/sve-branch/gcc/internal-fn.def
branches/ARM/sve-branch/gcc/optabs.def
branches/ARM/sve-branch/gcc/testsuite/gcc.dg/vect/pr37027.c
branches/ARM/sve-branch/gcc/testsuite/gcc.dg/vect/pr67790.c
branches/ARM/sve-branch/gcc/testsuite/gcc.dg/vect/slp-reduc-1.c
branches/ARM/sve-branch/gcc/testsuite/gcc.dg/vect/slp-reduc-2.c
branches/ARM/sve-branch/gcc/testsuite/gcc.dg/vect/slp-reduc-3.c
branches/ARM/sve-branch/gcc/testsuite/gcc.dg/vect/slp-reduc-5.c
branches/ARM/sve-branch/gcc/testsuite/gcc.dg/vect/slp-reduc-6.c
branches/ARM/sve-branch/gcc/tree-vect-loop.c
branches/ARM/sve-branch/gcc/tree-vect-slp.c