r256635 - in /trunk/gcc: ChangeLog testsuite/Ch...

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


Author: rsandifo
Date: Sat Jan 13 18:00:41 2018
New Revision: 256635

URL: https://gcc.gnu.org/viewcvs?rev=256635&root=gcc&view=rev
Log:
Use single-iteration epilogues when peeling for gaps

This patch adds support for fully-masking loops that require peeling
for gaps.  It peels exactly one scalar iteration and uses the masked
loop to handle the rest.  Previously we would fall back on using a
standard unmasked loop instead.

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

gcc/
	* tree-vect-loop-manip.c (vect_gen_scalar_loop_niters): Replace
	vfm1 with a bound_epilog parameter.
	(vect_do_peeling): Update calls accordingly, and move the prologue
	call earlier in the function.  Treat the base bound_epilog as 0 for
	fully-masked loops and retain vf - 1 for other loops.  Add 1 to
	this base when peeling for gaps.
	* tree-vect-loop.c (vect_analyze_loop_2): Allow peeling for gaps
	with fully-masked loops.
	(vect_estimate_min_profitable_iters): Handle the single peeled
	iteration in that case.

gcc/testsuite/
	* gcc.target/aarch64/sve/struct_vect_18.c: Check the number
	of branches.
	* gcc.target/aarch64/sve/struct_vect_19.c: Likewise.
	* gcc.target/aarch64/sve/struct_vect_20.c: New test.
	* gcc.target/aarch64/sve/struct_vect_20_run.c: Likewise.
	* gcc.target/aarch64/sve/struct_vect_21.c: Likewise.
	* gcc.target/aarch64/sve/struct_vect_21_run.c: Likewise.
	* gcc.target/aarch64/sve/struct_vect_22.c: Likewise.
	* gcc.target/aarch64/sve/struct_vect_22_run.c: Likewise.
	* gcc.target/aarch64/sve/struct_vect_23.c: Likewise.
	* gcc.target/aarch64/sve/struct_vect_23_run.c: Likewise.

Added:
    trunk/gcc/testsuite/gcc.target/aarch64/sve/struct_vect_20.c
    trunk/gcc/testsuite/gcc.target/aarch64/sve/struct_vect_20_run.c
    trunk/gcc/testsuite/gcc.target/aarch64/sve/struct_vect_21.c
    trunk/gcc/testsuite/gcc.target/aarch64/sve/struct_vect_21_run.c
    trunk/gcc/testsuite/gcc.target/aarch64/sve/struct_vect_22.c
    trunk/gcc/testsuite/gcc.target/aarch64/sve/struct_vect_22_run.c
    trunk/gcc/testsuite/gcc.target/aarch64/sve/struct_vect_23.c
    trunk/gcc/testsuite/gcc.target/aarch64/sve/struct_vect_23_run.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gcc.target/aarch64/sve/struct_vect_18.c
    trunk/gcc/testsuite/gcc.target/aarch64/sve/struct_vect_19.c
    trunk/gcc/tree-vect-loop-manip.c
    trunk/gcc/tree-vect-loop.c



More information about the Gcc-cvs mailing list