aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vectorizer.h
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2022-09-26 09:30:08 +0000
committerGitHub <noreply@github.com>2022-09-26 09:30:08 +0000
commit8ed1bbaa40527c561b25b5dadb963ca404f2da37 (patch)
treeb68241b6d5b2361edc1b6352e503660602c28885 /gcc/tree-vectorizer.h
parent6d98713a7b9cc58573be3e209a27a6c4ce682166 (diff)
parent033a4599350d23d55f5e9a0f9adf497e7f0279e8 (diff)
downloadgcc-8ed1bbaa40527c561b25b5dadb963ca404f2da37.zip
gcc-8ed1bbaa40527c561b25b5dadb963ca404f2da37.tar.gz
gcc-8ed1bbaa40527c561b25b5dadb963ca404f2da37.tar.bz2
Merge #1542
1542: Merge GCC mainline/master into gccrs/master r=philberty a=ibuclaw As per title, pull in the latest and greatest from gcc development. Co-authored-by: Tim Lange <mail@tim-lange.me> Co-authored-by: GCC Administrator <gccadmin@gcc.gnu.org> Co-authored-by: Martin Liska <mliska@suse.cz> Co-authored-by: Javier Miranda <miranda@adacore.com> Co-authored-by: Bob Duff <duff@adacore.com> Co-authored-by: Patrick Bernardi <bernardi@adacore.com> Co-authored-by: Steve Baird <baird@adacore.com> Co-authored-by: Gary Dismukes <dismukes@adacore.com> Co-authored-by: Eric Botcazou <ebotcazou@adacore.com> Co-authored-by: Justin Squirek <squirek@adacore.com> Co-authored-by: Piotr Trojanek <trojanek@adacore.com> Co-authored-by: Joffrey Huguet <huguet@adacore.com> Co-authored-by: Yannick Moy <moy@adacore.com>
Diffstat (limited to 'gcc/tree-vectorizer.h')
-rw-r--r--gcc/tree-vectorizer.h17
1 files changed, 17 insertions, 0 deletions
diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h
index e5fdc9e..5e75ed1 100644
--- a/gcc/tree-vectorizer.h
+++ b/gcc/tree-vectorizer.h
@@ -68,6 +68,15 @@ enum vect_def_type {
vect_unknown_def_type
};
+/* Define operation type of linear/non-linear induction variable. */
+enum vect_induction_op_type {
+ vect_step_op_add = 0,
+ vect_step_op_neg,
+ vect_step_op_mul,
+ vect_step_op_shl,
+ vect_step_op_shr
+};
+
/* Define type of reduction. */
enum vect_reduction_type {
TREE_CODE_REDUCTION,
@@ -154,7 +163,9 @@ struct vect_scalar_ops_slice_hash : typed_noop_remove<vect_scalar_ops_slice>
SLP
************************************************************************/
typedef vec<std::pair<unsigned, unsigned> > lane_permutation_t;
+typedef auto_vec<std::pair<unsigned, unsigned>, 16> auto_lane_permutation_t;
typedef vec<unsigned> load_permutation_t;
+typedef auto_vec<unsigned, 16> auto_load_permutation_t;
/* A computation tree of an SLP instance. Each node corresponds to a group of
stmts to be packed in a SIMD stmt. */
@@ -1188,6 +1199,7 @@ public:
the version here. */
tree loop_phi_evolution_base_unchanged;
tree loop_phi_evolution_part;
+ enum vect_induction_op_type loop_phi_evolution_type;
/* Used for various bookkeeping purposes, generally holding a pointer to
some other stmt S that is in some way "related" to this stmt.
@@ -1421,6 +1433,7 @@ struct gather_scatter_info {
((S)->dr_aux.dr && DR_GROUP_FIRST_ELEMENT(S))
#define STMT_VINFO_LOOP_PHI_EVOLUTION_BASE_UNCHANGED(S) (S)->loop_phi_evolution_base_unchanged
#define STMT_VINFO_LOOP_PHI_EVOLUTION_PART(S) (S)->loop_phi_evolution_part
+#define STMT_VINFO_LOOP_PHI_EVOLUTION_TYPE(S) (S)->loop_phi_evolution_type
#define STMT_VINFO_MIN_NEG_DIST(S) (S)->min_neg_dist
#define STMT_VINFO_REDUC_TYPE(S) (S)->reduc_type
#define STMT_VINFO_REDUC_CODE(S) (S)->reduc_code
@@ -2327,6 +2340,10 @@ extern int vect_get_known_peeling_cost (loop_vec_info, int, int *,
stmt_vector_for_cost *);
extern tree cse_and_gimplify_to_preheader (loop_vec_info, tree);
+/* Nonlinear induction. */
+extern tree vect_peel_nonlinear_iv_init (gimple_seq*, tree, tree,
+ tree, enum vect_induction_op_type);
+
/* In tree-vect-slp.cc. */
extern void vect_slp_init (void);
extern void vect_slp_fini (void);