From ade2ac53ff2f259a58eb2e3193d98d3595c21ea0 Mon Sep 17 00:00:00 2001 From: irar Date: Tue, 16 Jun 2009 07:21:12 +0000 Subject: * 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 --- gcc/tree-vect-patterns.c | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) (limited to 'gcc/tree-vect-patterns.c') diff --git a/gcc/tree-vect-patterns.c b/gcc/tree-vect-patterns.c index a41f7b4bcdf..1971e6ad4d3 100644 --- a/gcc/tree-vect-patterns.c +++ b/gcc/tree-vect-patterns.c @@ -319,12 +319,7 @@ vect_recog_dot_prod_pattern (gimple last_stmt, tree *type_in, tree *type_out) /* We don't allow changing the order of the computation in the inner-loop when doing outer-loop vectorization. */ - if (nested_in_vect_loop_p (loop, last_stmt)) - { - if (vect_print_dump_info (REPORT_DETAILS)) - fprintf (vect_dump, "vect_recog_dot_prod_pattern: not allowed."); - return NULL; - } + gcc_assert (!nested_in_vect_loop_p (loop, last_stmt)); return pattern_stmt; } @@ -638,12 +633,7 @@ vect_recog_widen_sum_pattern (gimple last_stmt, tree *type_in, tree *type_out) /* We don't allow changing the order of the computation in the inner-loop when doing outer-loop vectorization. */ - if (nested_in_vect_loop_p (loop, last_stmt)) - { - if (vect_print_dump_info (REPORT_DETAILS)) - fprintf (vect_dump, "vect_recog_widen_sum_pattern: not allowed."); - return NULL; - } + gcc_assert (!nested_in_vect_loop_p (loop, last_stmt)); return pattern_stmt; } -- cgit v1.2.1