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>
* 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
get_vectype_for_scalar_type_and_size instead of
get_vectype_for_scalar_type.
......
......@@ -2720,6 +2720,7 @@ static gimple *
vect_synth_mult_by_constant (tree op, tree val,
stmt_vec_info stmt_vinfo)
{
vec_info *vinfo = stmt_vinfo->vinfo;
tree itype = TREE_TYPE (op);
machine_mode mode = TYPE_MODE (itype);
struct algorithm alg;
......@@ -2738,7 +2739,7 @@ vect_synth_mult_by_constant (tree op, tree val,
/* Targets that don't support vector shifts but support vector additions
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);
/* 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,
either as shift by a scalar or by a vector. */
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;
......
......@@ -1634,7 +1634,7 @@ extern void vect_get_load_cost (stmt_vec_info, int, bool,
stmt_vector_for_cost *, bool);
extern void vect_get_store_cost (stmt_vec_info, int,
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_checked (tree, const vec_perm_indices &);
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