summaryrefslogtreecommitdiff
path: root/gcc/tree-parloops.c
diff options
context:
space:
mode:
authorirar <irar@138bc75d-0d04-0410-961f-82ee72b054a4>2009-07-12 07:09:07 +0000
committerirar <irar@138bc75d-0d04-0410-961f-82ee72b054a4>2009-07-12 07:09:07 +0000
commit7aa0d35066596b3c0fefb385bbe1ee43f75f8ec1 (patch)
tree7547f479237ee79f26fd81c529e65dfa6d42573b /gcc/tree-parloops.c
parent24fb1d3ff6a2ce44db82978089367a2d1e77965e (diff)
downloadgcc-7aa0d35066596b3c0fefb385bbe1ee43f75f8ec1.tar.gz
* 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
Diffstat (limited to 'gcc/tree-parloops.c')
-rw-r--r--gcc/tree-parloops.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/tree-parloops.c b/gcc/tree-parloops.c
index 5f11fc77a1b..28c96a26f59 100644
--- a/gcc/tree-parloops.c
+++ b/gcc/tree-parloops.c
@@ -284,13 +284,15 @@ loop_parallel_p (struct loop *loop, htab_t reduction_list,
{
gimple phi = gsi_stmt (gsi);
gimple reduc_stmt = NULL;
+ bool dummy;
/* ??? TODO: Change this into a generic function that
recognizes reductions. */
if (!is_gimple_reg (PHI_RESULT (phi)))
continue;
if (simple_loop_info)
- reduc_stmt = vect_is_simple_reduction (simple_loop_info, phi, true);
+ reduc_stmt = vect_is_simple_reduction (simple_loop_info, phi, true,
+ &dummy);
/* Create a reduction_info struct, initialize it and insert it to
the reduction list. */