diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2019-10-21 06:40:44 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2019-10-21 06:40:44 +0000 |
commit | dcab2a0d1d4b2c0b4bba6f5e3834ec0678a2a5c8 (patch) | |
tree | f525858800f7508c79bed28b27a09f94d413adc0 /gcc | |
parent | a5c3185a503fbdbc1bf05efe8ab9d12850a211c1 (diff) | |
download | gcc-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/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/tree-vect-patterns.c | 13 |
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); |