diff options
author | irar <irar@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-05-18 11:27:51 +0000 |
---|---|---|
committer | irar <irar@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-05-18 11:27:51 +0000 |
commit | 39a5d6b15c715f8e1d7d7e426f352dd01c06181e (patch) | |
tree | 63d6259a36cf4a5e8b5a741f419adf748426312f /gcc/tree-vectorizer.h | |
parent | 21009880c427aa311804f7246923c71038e2d387 (diff) | |
download | gcc-39a5d6b15c715f8e1d7d7e426f352dd01c06181e.tar.gz |
PR tree-optimization/41881
* tree-vectorizer.h (struct _loop_vec_info): Add new field
reduction_chains along with a macro for its access.
* tree-vect-loop.c (new_loop_vec_info): Initialize
reduction chains.
(destroy_loop_vec_info): Free reduction chains.
(vect_analyze_loop_2): Return false if
vect_analyze_slp() returns false.
(vect_is_slp_reduction): New function.
(vect_is_simple_reduction_1): Call
vect_is_slp_reduction.
(vect_create_epilog_for_reduction): Support SLP
reduction chains.
* tree-vect-slp.c (vect_get_and_check_slp_defs): Allow
different definition types for reduction chains.
(vect_supported_load_permutation_p): Don't allow
permutations for reduction chains.
(vect_analyze_slp_instance): Support reduction chains.
(vect_analyze_slp): Try to build SLP instance from
reduction chains.
(vect_get_constant_vectors): Handle reduction chains.
(vect_schedule_slp_instance): Mark the first statement
of the reduction chain as reduction.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@173856 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-vectorizer.h')
-rw-r--r-- | gcc/tree-vectorizer.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h index 1f5e3efe705..a0aed8c849d 100644 --- a/gcc/tree-vectorizer.h +++ b/gcc/tree-vectorizer.h @@ -248,6 +248,10 @@ typedef struct _loop_vec_info { /* Reduction cycles detected in the loop. Used in loop-aware SLP. */ VEC (gimple, heap) *reductions; + /* All reduction chains in the loop, represented by the first + stmt in the chain. */ + VEC (gimple, heap) *reduction_chains; + /* Hash table used to choose the best peeling option. */ htab_t peeling_htab; @@ -277,6 +281,7 @@ typedef struct _loop_vec_info { #define LOOP_VINFO_SLP_INSTANCES(L) (L)->slp_instances #define LOOP_VINFO_SLP_UNROLLING_FACTOR(L) (L)->slp_unrolling_factor #define LOOP_VINFO_REDUCTIONS(L) (L)->reductions +#define LOOP_VINFO_REDUCTION_CHAINS(L) (L)->reduction_chains #define LOOP_VINFO_PEELING_HTAB(L) (L)->peeling_htab #define LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT(L) \ |