OSDN Git Service

* tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
authorirar <irar@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 12 Jul 2009 07:09:07 +0000 (07:09 +0000)
committerirar <irar@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 12 Jul 2009 07:09:07 +0000 (07:09 +0000)
commit7aa0d35066596b3c0fefb385bbe1ee43f75f8ec1
tree7547f479237ee79f26fd81c529e65dfa6d42573b
parent24fb1d3ff6a2ce44db82978089367a2d1e77965e
* tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
with additional argument.
* tree-vectorizer.h (enum vect_def_type): Add
vect_double_reduction_def.
(vect_is_simple_reduction): Add argument.
* tree-vect-loop.c (vect_determine_vectorization_factor): Fix
indentation.
(vect_analyze_scalar_cycles_1): Detect double reduction. Call
vect_is_simple_reduction with additional argument.
(vect_analyze_loop_operations): Handle exit phi nodes in case of
double reduction.
(reduction_code_for_scalar_code): Handle additional codes by
returning ERROR_MARK for them. Fix comment and indentation.
(vect_is_simple_reduction): Fix comment, add argument to specify
double reduction. Detect double reduction.
(get_initial_def_for_induction): Fix indentation.
(get_initial_def_for_reduction): Fix comment and indentation.
Handle double reduction. Create initial definitions that do not
require adjustment if ADJUSTMENT_DEF is NULL. Handle additional cases.
(vect_create_epilog_for_reduction): Fix comment, add argument to
handle double reduction. Use PLUS_EXPR in case of MINUS_EXPR in
epilogue result extraction. Create double reduction phi node and
replace relevant uses.
(vectorizable_reduction): Call vect_is_simple_reduction with
additional argument. Fix indentation. Update epilogue code treatment
according to the changes in reduction_code_for_scalar_code. Check
for double reduction. Call vect_create_epilog_for_reduction with
additional argument.
* tree-vect-stmts.c (process_use): Handle double reduction, update
documentation.
(vect_mark_stmts_to_be_vectorized): Handle double reduction.
(vect_get_vec_def_for_operand): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@149526 138bc75d-0d04-0410-961f-82ee72b054a4
14 files changed:
gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/vect/no-scevccp-outer-2.c
gcc/testsuite/gcc.dg/vect/vect-double-reduc-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-double-reduc-2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-double-reduc-3.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-double-reduc-4.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-double-reduc-5.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-double-reduc-6.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-double-reduc-7.c [new file with mode: 0644]
gcc/tree-parloops.c
gcc/tree-vect-loop.c
gcc/tree-vect-stmts.c
gcc/tree-vectorizer.h