Commit a5c3185a by Richard Sandiford Committed by Richard Sandiford

Pass a vec_info to vect_supportable_shift

2019-10-21  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* 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
	accordingly.

From-SVN: r277224
parent da157e2e
2019-10-21 Richard Sandiford <richard.sandiford@arm.com> 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
accordingly.
2019-10-21 Richard Sandiford <richard.sandiford@arm.com>
* tree-vectorizer.c (get_vec_alignment_for_array_type): Use * tree-vectorizer.c (get_vec_alignment_for_array_type): Use
get_vectype_for_scalar_type_and_size instead of get_vectype_for_scalar_type_and_size instead of
get_vectype_for_scalar_type. get_vectype_for_scalar_type.
......
...@@ -2720,6 +2720,7 @@ static gimple * ...@@ -2720,6 +2720,7 @@ static gimple *
vect_synth_mult_by_constant (tree op, tree val, vect_synth_mult_by_constant (tree op, tree val,
stmt_vec_info stmt_vinfo) stmt_vec_info stmt_vinfo)
{ {
vec_info *vinfo = stmt_vinfo->vinfo;
tree itype = TREE_TYPE (op); tree itype = TREE_TYPE (op);
machine_mode mode = TYPE_MODE (itype); machine_mode mode = TYPE_MODE (itype);
struct algorithm alg; struct algorithm alg;
...@@ -2738,7 +2739,7 @@ vect_synth_mult_by_constant (tree op, tree val, ...@@ -2738,7 +2739,7 @@ vect_synth_mult_by_constant (tree op, tree val,
/* Targets that don't support vector shifts but support vector additions /* Targets that don't support vector shifts but support vector additions
can synthesize shifts that way. */ can synthesize shifts that way. */
bool synth_shift_p = !vect_supportable_shift (LSHIFT_EXPR, multtype); bool synth_shift_p = !vect_supportable_shift (vinfo, LSHIFT_EXPR, multtype);
HOST_WIDE_INT hwval = tree_to_shwi (val); HOST_WIDE_INT hwval = tree_to_shwi (val);
/* Use MAX_COST here as we don't want to limit the sequence on rtx costs. /* Use MAX_COST here as we don't want to limit the sequence on rtx costs.
......
...@@ -5465,7 +5465,7 @@ vectorizable_assignment (stmt_vec_info stmt_info, gimple_stmt_iterator *gsi, ...@@ -5465,7 +5465,7 @@ vectorizable_assignment (stmt_vec_info stmt_info, gimple_stmt_iterator *gsi,
either as shift by a scalar or by a vector. */ either as shift by a scalar or by a vector. */
bool bool
vect_supportable_shift (enum tree_code code, tree scalar_type) vect_supportable_shift (vec_info *, enum tree_code code, tree scalar_type)
{ {
machine_mode vec_mode; machine_mode vec_mode;
......
...@@ -1634,7 +1634,7 @@ extern void vect_get_load_cost (stmt_vec_info, int, bool, ...@@ -1634,7 +1634,7 @@ extern void vect_get_load_cost (stmt_vec_info, int, bool,
stmt_vector_for_cost *, bool); stmt_vector_for_cost *, bool);
extern void vect_get_store_cost (stmt_vec_info, int, extern void vect_get_store_cost (stmt_vec_info, int,
unsigned int *, stmt_vector_for_cost *); unsigned int *, stmt_vector_for_cost *);
extern bool vect_supportable_shift (enum tree_code, tree); extern bool vect_supportable_shift (vec_info *, enum tree_code, tree);
extern tree vect_gen_perm_mask_any (tree, const vec_perm_indices &); extern tree vect_gen_perm_mask_any (tree, const vec_perm_indices &);
extern tree vect_gen_perm_mask_checked (tree, const vec_perm_indices &); extern tree vect_gen_perm_mask_checked (tree, const vec_perm_indices &);
extern void optimize_mask_stores (class loop*); extern void optimize_mask_stores (class loop*);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment