]> gcc.gnu.org Git - gcc.git/commit
re PR tree-optimization/37027 (SLP loop vectorization missing support for reductions)
authorIra Rosen <irar@il.ibm.com>
Mon, 19 Apr 2010 09:10:45 +0000 (09:10 +0000)
committerIra Rosen <irar@gcc.gnu.org>
Mon, 19 Apr 2010 09:10:45 +0000 (09:10 +0000)
commitb5aeb3bb3e9d1a0ce78fe2d7de9f510a7413605d
tree3e32ed80e44c4287a38f498c1bd5e752b9a57b20
parent5a2fa9e8bf068aaacb57627c058b0d5891763857
re PR tree-optimization/37027 (SLP loop vectorization missing support for reductions)

PR tree-optimization/37027
* tree-vectorizer.h (struct _loop_vec_info): Add new field reductions
and macro to access it.
(vectorizable_reduction): Add argument.
(vect_get_slp_defs): Likewise.
* tree-vect-loop.c (vect_analyze_scalar_cycles_1): Collect reduction
statements for possible use in SLP.
(new_loop_vec_info): Initialize LOOP_VINFO_REDUCTIONS.
(destroy_loop_vec_info): Free LOOP_VINFO_REDUCTIONS.
(vect_create_epilog_for_reduction): Handle SLP. Modify documentation,
add new argument.
(vectorizable_reduction): Likewise.
* tree-vect-stmts.c (vect_get_vec_defs): Update call to
vect_get_slp_defs.
(vectorizable_type_demotion, vectorizable_type_promotion,
vectorizable_store): Likewise.
(vect_analyze_stmt): Update call to vectorizable_reduction.
(vect_transform_stmt): Likewise.
* tree-vect-slp.c (vect_get_and_check_slp_defs): Handle reduction.
(vect_build_slp_tree): Fix indentation. Check that there are no loads
from different interleaving chains in same node.
(vect_slp_rearrange_stmts): New function.
(vect_supported_load_permutation_p): Allow load permutations for
reductions. Call vect_slp_rearrange_stmts() to rearrange statements
inside SLP nodes if necessary.
(vect_analyze_slp_instance): Handle reductions.
(vect_analyze_slp): Try to build SLP instances originating from groups
of reductions.
(vect_detect_hybrid_slp_stmts): Skip reduction statements.
(vect_get_constant_vectors): Create initial vectors for reductions
according to reduction code. Add new argument.
(vect_get_slp_defs): Add new argument, pass it to
vect_get_constant_vectors.
(vect_schedule_slp_instance): Remove SLP tree root statements.

From-SVN: r158506
15 files changed:
gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/vect/pr37027.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/slp-reduc-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/slp-reduc-2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/slp-reduc-3.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/slp-reduc-4.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/slp-reduc-5.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/slp-reduc-6.c [new file with mode: 0644]
gcc/testsuite/lib/target-supports.exp
gcc/tree-vect-loop.c
gcc/tree-vect-patterns.c
gcc/tree-vect-slp.c
gcc/tree-vect-stmts.c
gcc/tree-vectorizer.h
This page took 0.06634 seconds and 5 git commands to generate.