This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Handle more SLP constant and extern definitions for variable VF


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.sandiford@linaro.org>
> 	    Alan Hayward  <alan.hayward@arm.com>
> 	    David Sherwood  <david.sherwood@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.
jeff


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]