diff options
author | Ira Rosen <ira.rosen@linaro.org> | 2011-08-04 16:47:17 +0000 |
---|---|---|
committer | Ira Rosen <irar@gcc.gnu.org> | 2011-08-04 16:47:17 +0000 |
commit | 1107f3ae0a154985113aa392e451aa5fa9fe7f0a (patch) | |
tree | f97727c3e140e3effeba1ba33adafa64f68719ea /gcc/tree-vectorizer.h | |
parent | 6394830f4797f29b28552a98e5c9031c275041c1 (diff) | |
download | gcc-1107f3ae0a154985113aa392e451aa5fa9fe7f0a.zip gcc-1107f3ae0a154985113aa392e451aa5fa9fe7f0a.tar.gz gcc-1107f3ae0a154985113aa392e451aa5fa9fe7f0a.tar.bz2 |
tree-vectorizer.h (struct _stmt_vec_info): Add new field for pattern def statement, and its access macro.
* tree-vectorizer.h (struct _stmt_vec_info): Add new field for
pattern def statement, and its access macro.
(NUM_PATTERNS): Set to 5.
* tree-vect-loop.c (vect_determine_vectorization_factor): Handle
pattern def statement.
(vect_transform_loop): Likewise.
* tree-vect-patterns.c (vect_vect_recog_func_ptrs): Add new
function vect_recog_over_widening_pattern ().
(vect_operation_fits_smaller_type): New function.
(vect_recog_over_widening_pattern, vect_mark_pattern_stmts):
Likewise.
(vect_pattern_recog_1): Move the code that marks pattern
statements to vect_mark_pattern_stmts (), and call it. Update
documentation.
* tree-vect-stmts.c (vect_supportable_shift): New function.
(vect_analyze_stmt): Handle pattern def statement.
(new_stmt_vec_info): Initialize pattern def statement.
From-SVN: r177409
Diffstat (limited to 'gcc/tree-vectorizer.h')
-rw-r--r-- | gcc/tree-vectorizer.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h index 3f33503..3fe8b62 100644 --- a/gcc/tree-vectorizer.h +++ b/gcc/tree-vectorizer.h @@ -469,6 +469,9 @@ typedef struct _stmt_vec_info { pattern). */ gimple related_stmt; + /* Used to keep a def stmt of a pattern stmt if such exists. */ + gimple pattern_def_stmt; + /* List of datarefs that are known to have the same alignment as the dataref of this stmt. */ VEC(dr_p,heap) *same_align_refs; @@ -536,6 +539,7 @@ typedef struct _stmt_vec_info { #define STMT_VINFO_IN_PATTERN_P(S) (S)->in_pattern_p #define STMT_VINFO_RELATED_STMT(S) (S)->related_stmt +#define STMT_VINFO_PATTERN_DEF_STMT(S) (S)->pattern_def_stmt #define STMT_VINFO_SAME_ALIGN_REFS(S) (S)->same_align_refs #define STMT_VINFO_DEF_TYPE(S) (S)->def_type #define STMT_VINFO_GROUP_FIRST_ELEMENT(S) (S)->first_element @@ -819,6 +823,7 @@ extern bool vectorizable_condition (gimple, gimple_stmt_iterator *, gimple *, extern void vect_get_load_cost (struct data_reference *, int, bool, unsigned int *, unsigned int *); extern void vect_get_store_cost (struct data_reference *, int, unsigned int *); +extern bool vect_supportable_shift (enum tree_code, tree); /* In tree-vect-data-refs.c. */ extern bool vect_can_force_dr_alignment_p (const_tree, unsigned int); @@ -897,7 +902,7 @@ extern void vect_slp_transform_bb (basic_block); Additional pattern recognition functions can (and will) be added in the future. */ typedef gimple (* vect_recog_func_ptr) (VEC (gimple, heap) **, tree *, tree *); -#define NUM_PATTERNS 4 +#define NUM_PATTERNS 5 void vect_pattern_recog (loop_vec_info); /* In tree-vectorizer.c. */ |