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-vectorizer.h | |
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-vectorizer.h')
-rw-r--r-- | gcc/tree-vectorizer.h | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h index 1ab1231..c4a84e8 100644 --- a/gcc/tree-vectorizer.h +++ b/gcc/tree-vectorizer.h @@ -647,7 +647,9 @@ typedef struct _stmt_vec_info { vect_force_simple_reduction. */ enum vect_reduction_type reduc_type; - /* On a reduction PHI the def returned by vect_force_simple_reduction. */ + /* On a reduction PHI the def returned by vect_force_simple_reduction. + On the def returned by vect_force_simple_reduction the + corresponding PHI. */ gimple *reduc_def; /* The number of scalar stmt references from active SLP instances. */ @@ -1078,6 +1080,10 @@ extern void vect_finish_stmt_generation (gimple *, gimple *, extern bool vect_mark_stmts_to_be_vectorized (loop_vec_info); extern tree vect_get_vec_def_for_operand_1 (gimple *, enum vect_def_type); extern tree vect_get_vec_def_for_operand (tree, gimple *, tree = NULL); +extern void vect_get_vec_defs (tree, tree, gimple *, vec<tree> *, + vec<tree> *, slp_tree); +extern void vect_get_vec_defs_for_stmt_copy (enum vect_def_type *, + vec<tree> *, vec<tree> *); extern tree vect_init_vector (gimple *, tree, tree, gimple_stmt_iterator *); extern tree vect_get_vec_def_for_stmt_copy (enum vect_def_type, tree); |