diff options
author | Richard Biener <rguenther@suse.de> | 2017-07-03 07:28:28 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2017-07-03 07:28:28 +0000 |
commit | c78e36522d21297b555185f5eeedd6e848eda684 (patch) | |
tree | 7fdd88d9eb9c5f83544cb4ff2ec1df7197ccc648 /gcc/tree-vect-stmts.c | |
parent | bc9f4235bcac6304141c472c94ecedeb9dbbff56 (diff) | |
download | gcc-c78e36522d21297b555185f5eeedd6e848eda684.zip gcc-c78e36522d21297b555185f5eeedd6e848eda684.tar.gz gcc-c78e36522d21297b555185f5eeedd6e848eda684.tar.bz2 |
tree-vect-loop.c (vect_analyze_loop_operations): Also analyze reduction PHIs.
2016-07-03 Richard Biener <rguenther@suse.de>
* tree-vect-loop.c (vect_analyze_loop_operations): Also analyze
reduction PHIs.
(vect_force_simple_reduction): Record reduction def -> phi mapping.
(vectorizable_reduction): Perform reduction PHI creation when
visiting a reduction PHI and adjust and simplify code generation
phase of the reduction op. Cache dts, use fold_binary, not fold_build2.
(vect_transform_loop): Visit reduction PHIs.
* tree-vect-slp.c (vect_get_and_check_slp_defs): Record reduction
defs into the SLP tree.
(vect_build_slp_tree): Reduction defs terminate the recursion.
* tree-vect-stmts.c (vect_get_vec_def_for_operand_1): Allow lookup
of reduction defs.
(vect_get_vec_defs_for_stmt_copy): Export.
(vect_get_vec_defs): Likewise.
* tree-vectorizer.h (struct _stmt_vec_info): Amend reduc_def
purpose.
(vect_get_vec_defs_for_stmt_copy): Declare.
(vect_get_vec_defs): Likewise.
From-SVN: r249897
Diffstat (limited to 'gcc/tree-vect-stmts.c')
-rw-r--r-- | gcc/tree-vect-stmts.c | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c index 9647c11..99c0715 100644 --- a/gcc/tree-vect-stmts.c +++ b/gcc/tree-vect-stmts.c @@ -1367,14 +1367,10 @@ vect_get_vec_def_for_operand_1 (gimple *def_stmt, enum vect_def_type dt) return vec_oprnd; } - /* operand is defined by a loop header phi - reduction */ + /* operand is defined by a loop header phi. */ case vect_reduction_def: case vect_double_reduction_def: case vect_nested_cycle: - /* Code should use get_initial_def_for_reduction. */ - gcc_unreachable (); - - /* operand is defined by loop-header phi - induction. */ case vect_induction_def: { gcc_assert (gimple_code (def_stmt) == GIMPLE_PHI); @@ -1535,7 +1531,7 @@ vect_get_vec_def_for_stmt_copy (enum vect_def_type dt, tree vec_oprnd) /* Get vectorized definitions for the operands to create a copy of an original stmt. See vect_get_vec_def_for_stmt_copy () for details. */ -static void +void vect_get_vec_defs_for_stmt_copy (enum vect_def_type *dt, vec<tree> *vec_oprnds0, vec<tree> *vec_oprnds1) @@ -1554,11 +1550,9 @@ vect_get_vec_defs_for_stmt_copy (enum vect_def_type *dt, } -/* Get vectorized definitions for OP0 and OP1. - REDUC_INDEX is the index of reduction operand in case of reduction, - and -1 otherwise. */ +/* Get vectorized definitions for OP0 and OP1. */ -static void +void vect_get_vec_defs (tree op0, tree op1, gimple *stmt, vec<tree> *vec_oprnds0, vec<tree> *vec_oprnds1, |