aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2019-10-21 06:40:44 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2019-10-21 06:40:44 +0000
commitdcab2a0d1d4b2c0b4bba6f5e3834ec0678a2a5c8 (patch)
treef525858800f7508c79bed28b27a09f94d413adc0 /gcc
parenta5c3185a503fbdbc1bf05efe8ab9d12850a211c1 (diff)
downloadgcc-dcab2a0d1d4b2c0b4bba6f5e3834ec0678a2a5c8.zip
gcc-dcab2a0d1d4b2c0b4bba6f5e3834ec0678a2a5c8.tar.gz
gcc-dcab2a0d1d4b2c0b4bba6f5e3834ec0678a2a5c8.tar.bz2
Pass a vec_info to vect_supportable_direct_optab_p
2019-10-21 Richard Sandiford <richard.sandiford@arm.com> gcc/ * tree-vect-patterns.c (vect_supportable_direct_optab_p): Take a vec_info. (vect_recog_dot_prod_pattern): Update call accordingly. (vect_recog_sad_pattern, vect_recog_pow_pattern): Likewise. (vect_recog_widen_sum_pattern): Likewise. From-SVN: r277225
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/tree-vect-patterns.c13
2 files changed, 15 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 529a562..d3cba28 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,13 @@
2019-10-21 Richard Sandiford <richard.sandiford@arm.com>
+ * tree-vect-patterns.c (vect_supportable_direct_optab_p): Take
+ a vec_info.
+ (vect_recog_dot_prod_pattern): Update call accordingly.
+ (vect_recog_sad_pattern, vect_recog_pow_pattern): Likewise.
+ (vect_recog_widen_sum_pattern): Likewise.
+
+2019-10-21 Richard Sandiford <richard.sandiford@arm.com>
+
* tree-vectorizer.h (vect_supportable_shift): Take a vec_info.
* tree-vect-stmts.c (vect_supportable_shift): Likewise.
* tree-vect-patterns.c (vect_synth_mult_by_constant): Update call
diff --git a/gcc/tree-vect-patterns.c b/gcc/tree-vect-patterns.c
index 4faa6e7..b0b3163 100644
--- a/gcc/tree-vect-patterns.c
+++ b/gcc/tree-vect-patterns.c
@@ -187,7 +187,7 @@ vect_get_external_def_edge (vec_info *vinfo, tree var)
is nonnull. */
static bool
-vect_supportable_direct_optab_p (tree otype, tree_code code,
+vect_supportable_direct_optab_p (vec_info *, tree otype, tree_code code,
tree itype, tree *vecotype_out,
tree *vecitype_out = NULL)
{
@@ -985,7 +985,7 @@ vect_recog_dot_prod_pattern (stmt_vec_info stmt_vinfo, tree *type_out)
vect_pattern_detected ("vect_recog_dot_prod_pattern", last_stmt);
tree half_vectype;
- if (!vect_supportable_direct_optab_p (type, DOT_PROD_EXPR, half_type,
+ if (!vect_supportable_direct_optab_p (vinfo, type, DOT_PROD_EXPR, half_type,
type_out, &half_vectype))
return NULL;
@@ -1143,7 +1143,7 @@ vect_recog_sad_pattern (stmt_vec_info stmt_vinfo, tree *type_out)
vect_pattern_detected ("vect_recog_sad_pattern", last_stmt);
tree half_vectype;
- if (!vect_supportable_direct_optab_p (sum_type, SAD_EXPR, half_type,
+ if (!vect_supportable_direct_optab_p (vinfo, sum_type, SAD_EXPR, half_type,
type_out, &half_vectype))
return NULL;
@@ -1273,6 +1273,7 @@ vect_recog_widen_mult_pattern (stmt_vec_info last_stmt_info, tree *type_out)
static gimple *
vect_recog_pow_pattern (stmt_vec_info stmt_vinfo, tree *type_out)
{
+ vec_info *vinfo = stmt_vinfo->vinfo;
gimple *last_stmt = stmt_vinfo->stmt;
tree base, exp;
gimple *stmt;
@@ -1366,7 +1367,7 @@ vect_recog_pow_pattern (stmt_vec_info stmt_vinfo, tree *type_out)
|| (TREE_CODE (exp) == REAL_CST
&& real_equal (&TREE_REAL_CST (exp), &dconst2)))
{
- if (!vect_supportable_direct_optab_p (TREE_TYPE (base), MULT_EXPR,
+ if (!vect_supportable_direct_optab_p (vinfo, TREE_TYPE (base), MULT_EXPR,
TREE_TYPE (base), type_out))
return NULL;
@@ -1472,8 +1473,8 @@ vect_recog_widen_sum_pattern (stmt_vec_info stmt_vinfo, tree *type_out)
vect_pattern_detected ("vect_recog_widen_sum_pattern", last_stmt);
- if (!vect_supportable_direct_optab_p (type, WIDEN_SUM_EXPR, unprom0.type,
- type_out))
+ if (!vect_supportable_direct_optab_p (vinfo, type, WIDEN_SUM_EXPR,
+ unprom0.type, type_out))
return NULL;
var = vect_recog_temp_ssa_var (type, NULL);