r256629 - in /trunk/gcc: ChangeLog doc/sourcebu...

rsandifo@gcc.gnu.org rsandifo@gcc.gnu.org
Sat Jan 13 17:59:00 GMT 2018


Author: rsandifo
Date: Sat Jan 13 17:59:23 2018
New Revision: 256629

URL: https://gcc.gnu.org/viewcvs?rev=256629&root=gcc&view=rev
Log:
Allow the number of iterations to be smaller than VF

Fully-masked loops can be profitable even if the iteration
count is smaller than the vectorisation factor.  In this case
we're effectively doing a complete unroll followed by SLP.

The documentation for min-vect-loop-bound says that the
default value was 0, but actually the default and minimum
were 1.  We need it to be 0 for this case since the parameter
counts a whole number of vector iterations.

2018-01-13  Richard Sandiford  <richard.sandiford@linaro.org>
	    Alan Hayward  <alan.hayward@arm.com>
	    David Sherwood  <david.sherwood@arm.com>

gcc/
	* doc/sourcebuild.texi (vect_fully_masked): Document.
	* params.def (PARAM_MIN_VECT_LOOP_BOUND): Change minimum and
	default value to 0.
	* tree-vect-loop.c (vect_analyze_loop_costing): New function,
	split out from...
	(vect_analyze_loop_2): ...here. Don't check the vectorization
	factor against the number of loop iterations if the loop is
	fully-masked.

gcc/testsuite/
	* lib/target-supports.exp (check_effective_target_vect_fully_masked):
	New proc.
	* gcc.dg/vect/slp-3.c: Expect all loops to be vectorized if
	vect_fully_masked.
	* gcc.target/aarch64/sve/loop_add_4.c: New test.
	* gcc.target/aarch64/sve/loop_add_4_run.c: Likewise.
	* gcc.target/aarch64/sve/loop_add_5.c: Likewise.
	* gcc.target/aarch64/sve/loop_add_5_run.c: Likewise.
	* gcc.target/aarch64/sve/miniloop_1.c: Likewise.
	* gcc.target/aarch64/sve/miniloop_2.c: Likewise.

Added:
    trunk/gcc/testsuite/gcc.target/aarch64/sve/loop_add_4.c
    trunk/gcc/testsuite/gcc.target/aarch64/sve/loop_add_4_run.c
    trunk/gcc/testsuite/gcc.target/aarch64/sve/loop_add_5.c
    trunk/gcc/testsuite/gcc.target/aarch64/sve/loop_add_5_run.c
    trunk/gcc/testsuite/gcc.target/aarch64/sve/miniloop_1.c
    trunk/gcc/testsuite/gcc.target/aarch64/sve/miniloop_2.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/doc/sourcebuild.texi
    trunk/gcc/params.def
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gcc.dg/vect/slp-3.c
    trunk/gcc/testsuite/lib/target-supports.exp
    trunk/gcc/tree-vect-loop.c



More information about the Gcc-cvs mailing list