OSDN Git Service

* tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
authorirar <irar@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 16 Jun 2009 07:21:12 +0000 (07:21 +0000)
committerirar <irar@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 16 Jun 2009 07:21:12 +0000 (07:21 +0000)
commitade2ac53ff2f259a58eb2e3193d98d3595c21ea0
treeaaaf3e70f41a000974285e5e7f0db250fa701499
parent6be7c32c59b3316dd4a5dd78913a24c5d18a44c9
* tree-parloops.c (loop_parallel_p): Call vect_is_simple_reduction
with additional parameter.
* tree-vectorizer.h (enum vect_def_type): Add new value
vect_nested_cycle.
(enum vect_relevant): Add comments.
(vect_is_simple_reduction): Add new argument.
* tree-vect-loop.c (vect_analyze_scalar_cycles_1): Add comments.
Detect nested cycles.
(vect_is_simple_reduction): Update documentation, add an argument to
distinguish inner-loop reduction from nested cycle, detect nested
cycles, fix printings and indentation, don't swap operands in case
of nested cycle.
(get_initial_def_for_reduction): Handle subtraction.
(vect_create_epilog_for_reduction): Add new argument to specify
reduction variable.
(vect_finalize_reduction): Handle subtraction, fix comments.
(vectorizable_reduction): Handle nested cycles. In case of nested cycle
keep track of the reduction variable position. Call
vect_is_simple_reduction with additional parameter. Use original
statement code in reduction epilogue for nested cycle. Call
vect_create_epilog_for_reduction with additional parameter.
* tree-vect-patterns.c (vect_recog_dot_prod_pattern): Assert inner-loop
vectorization.
(vect_recog_widen_sum_pattern): Likewise.
* tree-vect-stmts.c (process_use): Distinguish between nested cycles
and reductions.
(vect_mark_stmts_to_be_vectorized): Likewise.
(vect_get_vec_def_for_operand): Handle nested cycles.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@148518 138bc75d-0d04-0410-961f-82ee72b054a4
15 files changed:
gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/vect/vect-nest-cycle-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-nest-cycle-2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-nest-cycle-3.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/vect/vect-outer-1a.c
gcc/testsuite/gcc.dg/vect/vect-outer-4f.c
gcc/testsuite/gcc.dg/vect/vect-outer-4g.c
gcc/testsuite/gcc.dg/vect/vect-outer-4k.c
gcc/testsuite/gcc.dg/vect/vect-outer-4l.c
gcc/tree-parloops.c
gcc/tree-vect-loop.c
gcc/tree-vect-patterns.c
gcc/tree-vect-stmts.c
gcc/tree-vectorizer.h