On Mon, Dec 11, 2017 at 11:04:28PM +0000, Jeff Law wrote:
> On 11/09/2017 07:20 AM, Richard Sandiford wrote:
> > This patch adds support for vectorising SLP definitions that are
> > constant or external (i.e. from outside the loop) when the vectorisation
> > factor isn't known at compile time.  It can only handle cases where the
> > number of SLP statements is a power of 2.
> > 
> > Tested on aarch64-linux-gnu (with and without SVE), x86_64-linux-gnu
> > and powerpc64le-linux-gnu.  OK to install?
> > 
> > Richard
> > 
> > 
> > 2017-11-09  Richard Sandiford  <richard.sandif...@linaro.org>
> >         Alan Hayward  <alan.hayw...@arm.com>
> >         David Sherwood  <david.sherw...@arm.com>
> > 
> > gcc/
> >     * tree-vect-slp.c: Include gimple-fold.h and internal-fn.h
> >     (can_duplicate_and_interleave_p): New function.
> >     (vect_get_and_check_slp_defs): Take the vector of statements
> >     rather than just the current one.  Remove excess parentheses.
> >     Restriction rejectinon of vect_constant_def and vect_external_def
> >     for variable-length vectors to boolean types, or types for which
> >     can_duplicate_and_interleave_p is false.
> >     (vect_build_slp_tree_2): Update call to vect_get_and_check_slp_defs.
> >     (duplicate_and_interleave): New function.
> >     (vect_get_constant_vectors): Use gimple_build_vector for
> >     constant-length vectors and duplicate_and_interleave for
> >     variable-length vectors.  Don't defer the update when
> >     inserting new statements.
> > 
> > gcc/testsuite/
> >     * gcc.dg/vect/no-scevccp-slp-30.c: Don't XFAIL for vect_variable_length
> >     && vect_load_lanes
> >     * gcc.dg/vect/slp-1.c: Likewise.
> >     * gcc.dg/vect/slp-10.c: Likewise.
> >     * gcc.dg/vect/slp-12b.c: Likewise.
> >     * gcc.dg/vect/slp-12c.c: Likewise.
> >     * gcc.dg/vect/slp-17.c: Likewise.
> >     * gcc.dg/vect/slp-19b.c: Likewise.
> >     * gcc.dg/vect/slp-20.c: Likewise.
> >     * gcc.dg/vect/slp-21.c: Likewise.
> >     * gcc.dg/vect/slp-22.c: Likewise.
> >     * gcc.dg/vect/slp-24-big-array.c: Likewise.
> >     * gcc.dg/vect/slp-24.c: Likewise.
> >     * gcc.dg/vect/slp-28.c: Likewise.
> >     * gcc.dg/vect/slp-39.c: Likewise.
> >     * gcc.dg/vect/slp-6.c: Likewise.
> >     * gcc.dg/vect/slp-7.c: Likewise.
> >     * gcc.dg/vect/slp-cond-1.c: Likewise.
> >     * gcc.dg/vect/slp-cond-2-big-array.c: Likewise.
> >     * gcc.dg/vect/slp-cond-2.c: Likewise.
> >     * gcc.dg/vect/slp-multitypes-1.c: Likewise.
> >     * gcc.dg/vect/slp-multitypes-8.c: Likewise.
> >     * gcc.dg/vect/slp-multitypes-9.c: Likewise.
> >     * gcc.dg/vect/slp-multitypes-10.c: Likewise.
> >     * gcc.dg/vect/slp-multitypes-12.c: Likewise.
> >     * gcc.dg/vect/slp-perm-6.c: Likewise.
> >     * gcc.dg/vect/slp-widen-mult-half.c: Likewise.
> >     * gcc.dg/vect/vect-live-slp-1.c: Likewise.
> >     * gcc.dg/vect/vect-live-slp-2.c: Likewise.
> >     * gcc.dg/vect/pr33953.c: Don't XFAIL for vect_variable_length.
> >     * gcc.dg/vect/slp-12a.c: Likewise.
> >     * gcc.dg/vect/slp-14.c: Likewise.
> >     * gcc.dg/vect/slp-15.c: Likewise.
> >     * gcc.dg/vect/slp-multitypes-2.c: Likewise.
> >     * gcc.dg/vect/slp-multitypes-4.c: Likewise.
> >     * gcc.dg/vect/slp-multitypes-5.c: Likewise.
> >     * gcc.target/aarch64/sve_slp_1.c: New test.
> >     * gcc.target/aarch64/sve_slp_1_run.c: Likewise.
> >     * gcc.target/aarch64/sve_slp_2.c: Likewise.
> >     * gcc.target/aarch64/sve_slp_2_run.c: Likewise.
> >     * gcc.target/aarch64/sve_slp_3.c: Likewise.
> >     * gcc.target/aarch64/sve_slp_3_run.c: Likewise.
> >     * gcc.target/aarch64/sve_slp_4.c: Likewise.
> >     * gcc.target/aarch64/sve_slp_4_run.c: Likewise.
> OK.

The AArch64 tests are OK.

James

Reply via email to