aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vectorizer.h
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@linaro.org>2017-09-14 16:30:36 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2017-09-14 16:30:36 +0000
commite8f142e28262a5048c6f40f4bfb6a612d3da55f0 (patch)
treebe4373fc3725870e0d59bf2eddb56c9874962e4d /gcc/tree-vectorizer.h
parentdccf43aed37281a7bb91a7984a75470ad62eb0f1 (diff)
downloadgcc-e8f142e28262a5048c6f40f4bfb6a612d3da55f0.zip
gcc-e8f142e28262a5048c6f40f4bfb6a612d3da55f0.tar.gz
gcc-e8f142e28262a5048c6f40f4bfb6a612d3da55f0.tar.bz2
Add a vect_get_num_copies helper routine
This patch adds a vectoriser helper routine to calculate how many copies of a vector statement we need. At present this is always: LOOP_VINFO_VECT_FACTOR (loop_vinfo) / TYPE_VECTOR_SUBPARTS (vectype) but later patches add other cases. Another benefit of using a helper routine is that it can assert that the division is exact (which it must be). 2017-09-14 Richard Sandiford <richard.sandiford@linaro.org> Alan Hayward <alan.hayward@arm.com> David Sherwood <david.sherwood@arm.com> gcc/ * tree-vectorizer.h (vect_get_num_copies): New function. * tree-vect-data-refs.c (vect_get_data_access_cost): Use it. * tree-vect-loop.c (vectorizable_reduction): Likewise. (vectorizable_induction): Likewise. (vectorizable_live_operation): Likewise. * tree-vect-stmts.c (vectorizable_mask_load_store): Likewise. (vectorizable_bswap): Likewise. (vectorizable_call): Likewise. (vectorizable_conversion): Likewise. (vectorizable_assignment): Likewise. (vectorizable_shift): Likewise. (vectorizable_operation): Likewise. (vectorizable_store): Likewise. (vectorizable_load): Likewise. (vectorizable_condition): Likewise. (vectorizable_comparison): Likewise. (vect_analyze_stmt): Pass the slp node to vectorizable_live_operation. Co-Authored-By: Alan Hayward <alan.hayward@arm.com> Co-Authored-By: David Sherwood <david.sherwood@arm.com> From-SVN: r252764
Diffstat (limited to 'gcc/tree-vectorizer.h')
-rw-r--r--gcc/tree-vectorizer.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h
index 7ed0078..6efcd51 100644
--- a/gcc/tree-vectorizer.h
+++ b/gcc/tree-vectorizer.h
@@ -1076,6 +1076,20 @@ unlimited_cost_model (loop_p loop)
return (flag_vect_cost_model == VECT_COST_MODEL_UNLIMITED);
}
+/* Return the number of copies needed for loop vectorization when
+ a statement operates on vectors of type VECTYPE. This is the
+ vectorization factor divided by the number of elements in
+ VECTYPE and is always known at compile time. */
+
+static inline unsigned int
+vect_get_num_copies (loop_vec_info loop_vinfo, tree vectype)
+{
+ gcc_checking_assert (LOOP_VINFO_VECT_FACTOR (loop_vinfo)
+ % TYPE_VECTOR_SUBPARTS (vectype) == 0);
+ return (LOOP_VINFO_VECT_FACTOR (loop_vinfo)
+ / TYPE_VECTOR_SUBPARTS (vectype));
+}
+
/* Source location */
extern source_location vect_location;