diff options
author | Richard Biener <rguenther@suse.de> | 2017-05-30 13:21:44 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2017-05-30 13:21:44 +0000 |
commit | 1a58f770e487e94227fc75a42eee385d86b7bee9 (patch) | |
tree | 4e4f65b56f2fb31fbf9f45cfc35923077d3fce2c /gcc/tree-vectorizer.h | |
parent | 5b2edf5314c7c8d69f2e38c1ce5aaf381a230b96 (diff) | |
download | gcc-1a58f770e487e94227fc75a42eee385d86b7bee9.zip gcc-1a58f770e487e94227fc75a42eee385d86b7bee9.tar.gz gcc-1a58f770e487e94227fc75a42eee385d86b7bee9.tar.bz2 |
tree-vectorizer.h (struct _stmt_vec_info): Add reduc_type and reduc_def fields.
2017-05-30 Richard Biener <rguenther@suse.de>
* tree-vectorizer.h (struct _stmt_vec_info): Add reduc_type
and reduc_def fields.
(STMT_VINFO_REDUC_TYPE): New define.
(STMT_VINFO_REDUC_DEF): Likewise.
(vect_force_simple_reduction): Adjust prototype.
* tree-vect-loop.c (vect_analyze_scalar_cycles_1): Adjust.
(vect_is_simple_reduction): Remove check_reduction argument.
(vect_force_simple_reduction): Adjust and set
STMT_VINFO_REDUC_TYPE and STMT_VINFO_REDUC_DEF.
(vectorizable_reduction): Do not re-do reduction analysis
but use STMT_VINFO_REDUC_TYPE and STMT_VINFO_REDUC_DEF.
* tree-parloops.c (gather_scalar_reductions): Adjust.
From-SVN: r248685
Diffstat (limited to 'gcc/tree-vectorizer.h')
-rw-r--r-- | gcc/tree-vectorizer.h | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h index dfbe59e..a7f5c6e 100644 --- a/gcc/tree-vectorizer.h +++ b/gcc/tree-vectorizer.h @@ -643,6 +643,13 @@ typedef struct _stmt_vec_info { /* For CONST_COND_REDUCTION, record the reduc code. */ enum tree_code const_cond_reduc_code; + /* On a reduction PHI the reduction type as detected by + vect_force_simple_reduction. */ + enum vect_reduction_type reduc_type; + + /* On a reduction PHI the def returned by vect_force_simple_reduction. */ + gimple *reduc_def; + /* The number of scalar stmt references from active SLP instances. */ unsigned int num_slp_uses; } *stmt_vec_info; @@ -722,6 +729,8 @@ STMT_VINFO_BB_VINFO (stmt_vec_info stmt_vinfo) #define STMT_VINFO_LOOP_PHI_EVOLUTION_PART(S) (S)->loop_phi_evolution_part #define STMT_VINFO_MIN_NEG_DIST(S) (S)->min_neg_dist #define STMT_VINFO_NUM_SLP_USES(S) (S)->num_slp_uses +#define STMT_VINFO_REDUC_TYPE(S) (S)->reduc_type +#define STMT_VINFO_REDUC_DEF(S) (S)->reduc_def #define GROUP_FIRST_ELEMENT(S) (S)->first_element #define GROUP_NEXT_ELEMENT(S) (S)->next_element @@ -1137,7 +1146,7 @@ extern tree vect_create_addr_base_for_vector_ref (gimple *, gimple_seq *, /* In tree-vect-loop.c. */ /* FORNOW: Used in tree-parloops.c. */ extern void destroy_loop_vec_info (loop_vec_info, bool); -extern gimple *vect_force_simple_reduction (loop_vec_info, gimple *, bool, +extern gimple *vect_force_simple_reduction (loop_vec_info, gimple *, bool *, bool); /* Drive for loop analysis stage. */ extern loop_vec_info vect_analyze_loop (struct loop *, loop_vec_info); |