aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vectorizer.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/tree-vectorizer.h')
-rw-r--r--gcc/tree-vectorizer.h11
1 files changed, 10 insertions, 1 deletions
diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h
index 524c86c..ec479d3 100644
--- a/gcc/tree-vectorizer.h
+++ b/gcc/tree-vectorizer.h
@@ -2301,6 +2301,7 @@ extern void duplicate_and_interleave (vec_info *, gimple_seq *, tree,
extern int vect_get_place_in_interleaving_chain (stmt_vec_info, stmt_vec_info);
extern slp_tree vect_create_new_slp_node (unsigned, tree_code);
extern void vect_free_slp_tree (slp_tree);
+extern bool compatible_calls_p (gcall *, gcall *);
/* In tree-vect-patterns.cc. */
extern void
@@ -2339,6 +2340,12 @@ typedef enum _complex_perm_kinds {
typedef hash_map <slp_tree, complex_perm_kinds_t>
slp_tree_to_load_perm_map_t;
+/* Cache from nodes pair to being compatible or not. */
+typedef pair_hash <nofree_ptr_hash <_slp_tree>,
+ nofree_ptr_hash <_slp_tree>> slp_node_hash;
+typedef hash_map <slp_node_hash, bool> slp_compat_nodes_map_t;
+
+
/* Vector pattern matcher base class. All SLP pattern matchers must inherit
from this type. */
@@ -2371,7 +2378,8 @@ class vect_pattern
public:
/* Create a new instance of the pattern matcher class of the given type. */
- static vect_pattern* recognize (slp_tree_to_load_perm_map_t *, slp_tree *);
+ static vect_pattern* recognize (slp_tree_to_load_perm_map_t *,
+ slp_compat_nodes_map_t *, slp_tree *);
/* Build the pattern from the data collected so far. */
virtual void build (vec_info *) = 0;
@@ -2385,6 +2393,7 @@ class vect_pattern
/* Function pointer to create a new pattern matcher from a generic type. */
typedef vect_pattern* (*vect_pattern_decl_t) (slp_tree_to_load_perm_map_t *,
+ slp_compat_nodes_map_t *,
slp_tree *);
/* List of supported pattern matchers. */