Commit 7ed54790 by Richard Sandiford Committed by Richard Sandiford

Pass a vec_info to get_vectype_for_scalar_type

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

gcc/
	* tree-vectorizer.h (get_vectype_for_scalar_type): Take a vec_info.
	* tree-vect-stmts.c (get_vectype_for_scalar_type): Likewise.
	(vect_prologue_cost_for_slp_op): Update call accordingly.
	(vect_get_vec_def_for_operand, vect_get_gather_scatter_ops)
	(vect_get_strided_load_store_ops, vectorizable_simd_clone_call)
	(vect_supportable_shift, vect_is_simple_cond, vectorizable_comparison)
	(get_mask_type_for_scalar_type): Likewise.
	(vect_get_vector_types_for_stmt): Likewise.
	* tree-vect-data-refs.c (vect_analyze_data_refs): Likewise.
	* tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
	(get_initial_def_for_reduction, build_vect_cond_expr): Likewise.
	* tree-vect-patterns.c (vect_supportable_direct_optab_p): Likewise.
	(vect_split_statement, vect_convert_input): Likewise.
	(vect_recog_widen_op_pattern, vect_recog_pow_pattern): Likewise.
	(vect_recog_over_widening_pattern, vect_recog_mulhs_pattern): Likewise.
	(vect_recog_average_pattern, vect_recog_cast_forwprop_pattern)
	(vect_recog_rotate_pattern, vect_recog_vector_vector_shift_pattern)
	(vect_synth_mult_by_constant, vect_recog_mult_pattern): Likewise.
	(vect_recog_divmod_pattern, vect_recog_mixed_size_cond_pattern)
	(check_bool_pattern, adjust_bool_pattern_cast, adjust_bool_pattern)
	(search_type_for_mask_1, vect_recog_bool_pattern): Likewise.
	(vect_recog_mask_conversion_pattern): Likewise.
	(vect_add_conversion_to_pattern): Likewise.
	(vect_recog_gather_scatter_pattern): Likewise.
	* tree-vect-slp.c (vect_build_slp_tree_2): Likewise.
	(vect_analyze_slp_instance, vect_get_constant_vectors): Likewise.

From-SVN: r277227
parent 1bd5196c
2019-10-21 Richard Sandiford <richard.sandiford@arm.com> 2019-10-21 Richard Sandiford <richard.sandiford@arm.com>
* tree-vectorizer.h (get_vectype_for_scalar_type): Take a vec_info.
* tree-vect-stmts.c (get_vectype_for_scalar_type): Likewise.
(vect_prologue_cost_for_slp_op): Update call accordingly.
(vect_get_vec_def_for_operand, vect_get_gather_scatter_ops)
(vect_get_strided_load_store_ops, vectorizable_simd_clone_call)
(vect_supportable_shift, vect_is_simple_cond, vectorizable_comparison)
(get_mask_type_for_scalar_type): Likewise.
(vect_get_vector_types_for_stmt): Likewise.
* tree-vect-data-refs.c (vect_analyze_data_refs): Likewise.
* tree-vect-loop.c (vect_determine_vectorization_factor): Likewise.
(get_initial_def_for_reduction, build_vect_cond_expr): Likewise.
* tree-vect-patterns.c (vect_supportable_direct_optab_p): Likewise.
(vect_split_statement, vect_convert_input): Likewise.
(vect_recog_widen_op_pattern, vect_recog_pow_pattern): Likewise.
(vect_recog_over_widening_pattern, vect_recog_mulhs_pattern): Likewise.
(vect_recog_average_pattern, vect_recog_cast_forwprop_pattern)
(vect_recog_rotate_pattern, vect_recog_vector_vector_shift_pattern)
(vect_synth_mult_by_constant, vect_recog_mult_pattern): Likewise.
(vect_recog_divmod_pattern, vect_recog_mixed_size_cond_pattern)
(check_bool_pattern, adjust_bool_pattern_cast, adjust_bool_pattern)
(search_type_for_mask_1, vect_recog_bool_pattern): Likewise.
(vect_recog_mask_conversion_pattern): Likewise.
(vect_add_conversion_to_pattern): Likewise.
(vect_recog_gather_scatter_pattern): Likewise.
* tree-vect-slp.c (vect_build_slp_tree_2): Likewise.
(vect_analyze_slp_instance, vect_get_constant_vectors): Likewise.
2019-10-21 Richard Sandiford <richard.sandiford@arm.com>
* tree-vectorizer.h (get_mask_type_for_scalar_type): Take a vec_info. * tree-vectorizer.h (get_mask_type_for_scalar_type): Take a vec_info.
* tree-vect-stmts.c (get_mask_type_for_scalar_type): Likewise. * tree-vect-stmts.c (get_mask_type_for_scalar_type): Likewise.
(vect_check_load_store_mask): Update call accordingly. (vect_check_load_store_mask): Update call accordingly.
......
...@@ -4344,7 +4344,7 @@ vect_analyze_data_refs (vec_info *vinfo, poly_uint64 *min_vf, bool *fatal) ...@@ -4344,7 +4344,7 @@ vect_analyze_data_refs (vec_info *vinfo, poly_uint64 *min_vf, bool *fatal)
/* Set vectype for STMT. */ /* Set vectype for STMT. */
scalar_type = TREE_TYPE (DR_REF (dr)); scalar_type = TREE_TYPE (DR_REF (dr));
STMT_VINFO_VECTYPE (stmt_info) STMT_VINFO_VECTYPE (stmt_info)
= get_vectype_for_scalar_type (scalar_type); = get_vectype_for_scalar_type (vinfo, scalar_type);
if (!STMT_VINFO_VECTYPE (stmt_info)) if (!STMT_VINFO_VECTYPE (stmt_info))
{ {
if (dump_enabled_p ()) if (dump_enabled_p ())
...@@ -4392,7 +4392,8 @@ vect_analyze_data_refs (vec_info *vinfo, poly_uint64 *min_vf, bool *fatal) ...@@ -4392,7 +4392,8 @@ vect_analyze_data_refs (vec_info *vinfo, poly_uint64 *min_vf, bool *fatal)
if (!vect_check_gather_scatter (stmt_info, if (!vect_check_gather_scatter (stmt_info,
as_a <loop_vec_info> (vinfo), as_a <loop_vec_info> (vinfo),
&gs_info) &gs_info)
|| !get_vectype_for_scalar_type (TREE_TYPE (gs_info.offset))) || !get_vectype_for_scalar_type (vinfo,
TREE_TYPE (gs_info.offset)))
{ {
if (fatal) if (fatal)
*fatal = false; *fatal = false;
......
...@@ -327,7 +327,7 @@ vect_determine_vectorization_factor (loop_vec_info loop_vinfo) ...@@ -327,7 +327,7 @@ vect_determine_vectorization_factor (loop_vec_info loop_vinfo)
"get vectype for scalar type: %T\n", "get vectype for scalar type: %T\n",
scalar_type); scalar_type);
vectype = get_vectype_for_scalar_type (scalar_type); vectype = get_vectype_for_scalar_type (loop_vinfo, scalar_type);
if (!vectype) if (!vectype)
return opt_result::failure_at (phi, return opt_result::failure_at (phi,
"not vectorized: unsupported " "not vectorized: unsupported "
...@@ -3774,7 +3774,7 @@ get_initial_def_for_reduction (stmt_vec_info stmt_vinfo, ...@@ -3774,7 +3774,7 @@ get_initial_def_for_reduction (stmt_vec_info stmt_vinfo,
loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_vinfo); loop_vec_info loop_vinfo = STMT_VINFO_LOOP_VINFO (stmt_vinfo);
class loop *loop = LOOP_VINFO_LOOP (loop_vinfo); class loop *loop = LOOP_VINFO_LOOP (loop_vinfo);
tree scalar_type = TREE_TYPE (init_val); tree scalar_type = TREE_TYPE (init_val);
tree vectype = get_vectype_for_scalar_type (scalar_type); tree vectype = get_vectype_for_scalar_type (loop_vinfo, scalar_type);
tree def_for_init; tree def_for_init;
tree init_def; tree init_def;
REAL_VALUE_TYPE real_init_val = dconst0; REAL_VALUE_TYPE real_init_val = dconst0;
...@@ -5555,11 +5555,11 @@ build_vect_cond_expr (enum tree_code code, tree vop[3], tree mask, ...@@ -5555,11 +5555,11 @@ build_vect_cond_expr (enum tree_code code, tree vop[3], tree mask,
corresponds to the type of arguments to the reduction stmt, and should *NOT* corresponds to the type of arguments to the reduction stmt, and should *NOT*
be used to create the vectorized stmt. The right vectype for the vectorized be used to create the vectorized stmt. The right vectype for the vectorized
stmt is obtained from the type of the result X: stmt is obtained from the type of the result X:
get_vectype_for_scalar_type (TREE_TYPE (X)) get_vectype_for_scalar_type (vinfo, TREE_TYPE (X))
This means that, contrary to "regular" reductions (or "regular" stmts in This means that, contrary to "regular" reductions (or "regular" stmts in
general), the following equation: general), the following equation:
STMT_VINFO_VECTYPE == get_vectype_for_scalar_type (TREE_TYPE (X)) STMT_VINFO_VECTYPE == get_vectype_for_scalar_type (vinfo, TREE_TYPE (X))
does *NOT* necessarily hold for reduction patterns. */ does *NOT* necessarily hold for reduction patterns. */
bool bool
......
...@@ -1127,7 +1127,7 @@ vect_build_slp_tree_2 (vec_info *vinfo, ...@@ -1127,7 +1127,7 @@ vect_build_slp_tree_2 (vec_info *vinfo,
if (gphi *stmt = dyn_cast <gphi *> (stmt_info->stmt)) if (gphi *stmt = dyn_cast <gphi *> (stmt_info->stmt))
{ {
tree scalar_type = TREE_TYPE (PHI_RESULT (stmt)); tree scalar_type = TREE_TYPE (PHI_RESULT (stmt));
tree vectype = get_vectype_for_scalar_type (scalar_type); tree vectype = get_vectype_for_scalar_type (vinfo, scalar_type);
if (!vect_record_max_nunits (stmt_info, group_size, vectype, max_nunits)) if (!vect_record_max_nunits (stmt_info, group_size, vectype, max_nunits))
return NULL; return NULL;
...@@ -1926,7 +1926,7 @@ vect_analyze_slp_instance (vec_info *vinfo, ...@@ -1926,7 +1926,7 @@ vect_analyze_slp_instance (vec_info *vinfo,
if (STMT_VINFO_GROUPED_ACCESS (stmt_info)) if (STMT_VINFO_GROUPED_ACCESS (stmt_info))
{ {
scalar_type = TREE_TYPE (DR_REF (dr)); scalar_type = TREE_TYPE (DR_REF (dr));
vectype = get_vectype_for_scalar_type (scalar_type); vectype = get_vectype_for_scalar_type (vinfo, scalar_type);
group_size = DR_GROUP_SIZE (stmt_info); group_size = DR_GROUP_SIZE (stmt_info);
} }
else if (!dr && REDUC_GROUP_FIRST_ELEMENT (stmt_info)) else if (!dr && REDUC_GROUP_FIRST_ELEMENT (stmt_info))
...@@ -3287,6 +3287,7 @@ vect_get_constant_vectors (tree op, slp_tree slp_node, ...@@ -3287,6 +3287,7 @@ vect_get_constant_vectors (tree op, slp_tree slp_node,
{ {
vec<stmt_vec_info> stmts = SLP_TREE_SCALAR_STMTS (slp_node); vec<stmt_vec_info> stmts = SLP_TREE_SCALAR_STMTS (slp_node);
stmt_vec_info stmt_vinfo = stmts[0]; stmt_vec_info stmt_vinfo = stmts[0];
vec_info *vinfo = stmt_vinfo->vinfo;
gimple *stmt = stmt_vinfo->stmt; gimple *stmt = stmt_vinfo->stmt;
unsigned HOST_WIDE_INT nunits; unsigned HOST_WIDE_INT nunits;
tree vec_cst; tree vec_cst;
...@@ -3310,7 +3311,7 @@ vect_get_constant_vectors (tree op, slp_tree slp_node, ...@@ -3310,7 +3311,7 @@ vect_get_constant_vectors (tree op, slp_tree slp_node,
vector_type vector_type
= build_same_sized_truth_vector_type (STMT_VINFO_VECTYPE (stmt_vinfo)); = build_same_sized_truth_vector_type (STMT_VINFO_VECTYPE (stmt_vinfo));
else else
vector_type = get_vectype_for_scalar_type (TREE_TYPE (op)); vector_type = get_vectype_for_scalar_type (vinfo, TREE_TYPE (op));
if (STMT_VINFO_DATA_REF (stmt_vinfo)) if (STMT_VINFO_DATA_REF (stmt_vinfo))
{ {
......
...@@ -796,6 +796,7 @@ vect_prologue_cost_for_slp_op (slp_tree node, stmt_vec_info stmt_info, ...@@ -796,6 +796,7 @@ vect_prologue_cost_for_slp_op (slp_tree node, stmt_vec_info stmt_info,
unsigned opno, enum vect_def_type dt, unsigned opno, enum vect_def_type dt,
stmt_vector_for_cost *cost_vec) stmt_vector_for_cost *cost_vec)
{ {
vec_info *vinfo = stmt_info->vinfo;
gimple *stmt = SLP_TREE_SCALAR_STMTS (node)[0]->stmt; gimple *stmt = SLP_TREE_SCALAR_STMTS (node)[0]->stmt;
tree op = gimple_op (stmt, opno); tree op = gimple_op (stmt, opno);
unsigned prologue_cost = 0; unsigned prologue_cost = 0;
...@@ -803,7 +804,7 @@ vect_prologue_cost_for_slp_op (slp_tree node, stmt_vec_info stmt_info, ...@@ -803,7 +804,7 @@ vect_prologue_cost_for_slp_op (slp_tree node, stmt_vec_info stmt_info,
/* Without looking at the actual initializer a vector of /* Without looking at the actual initializer a vector of
constants can be implemented as load from the constant pool. constants can be implemented as load from the constant pool.
When all elements are the same we can use a splat. */ When all elements are the same we can use a splat. */
tree vectype = get_vectype_for_scalar_type (TREE_TYPE (op)); tree vectype = get_vectype_for_scalar_type (vinfo, TREE_TYPE (op));
unsigned group_size = SLP_TREE_SCALAR_STMTS (node).length (); unsigned group_size = SLP_TREE_SCALAR_STMTS (node).length ();
unsigned num_vects_to_check; unsigned num_vects_to_check;
unsigned HOST_WIDE_INT const_nunits; unsigned HOST_WIDE_INT const_nunits;
...@@ -1610,7 +1611,7 @@ vect_get_vec_def_for_operand (tree op, stmt_vec_info stmt_vinfo, tree vectype) ...@@ -1610,7 +1611,7 @@ vect_get_vec_def_for_operand (tree op, stmt_vec_info stmt_vinfo, tree vectype)
&& VECTOR_BOOLEAN_TYPE_P (stmt_vectype)) && VECTOR_BOOLEAN_TYPE_P (stmt_vectype))
vector_type = build_same_sized_truth_vector_type (stmt_vectype); vector_type = build_same_sized_truth_vector_type (stmt_vectype);
else else
vector_type = get_vectype_for_scalar_type (TREE_TYPE (op)); vector_type = get_vectype_for_scalar_type (loop_vinfo, TREE_TYPE (op));
gcc_assert (vector_type); gcc_assert (vector_type);
return vect_init_vector (stmt_vinfo, op, vector_type, NULL); return vect_init_vector (stmt_vinfo, op, vector_type, NULL);
...@@ -2975,6 +2976,7 @@ vect_get_gather_scatter_ops (class loop *loop, stmt_vec_info stmt_info, ...@@ -2975,6 +2976,7 @@ vect_get_gather_scatter_ops (class loop *loop, stmt_vec_info stmt_info,
gather_scatter_info *gs_info, gather_scatter_info *gs_info,
tree *dataref_ptr, tree *vec_offset) tree *dataref_ptr, tree *vec_offset)
{ {
vec_info *vinfo = stmt_info->vinfo;
gimple_seq stmts = NULL; gimple_seq stmts = NULL;
*dataref_ptr = force_gimple_operand (gs_info->base, &stmts, true, NULL_TREE); *dataref_ptr = force_gimple_operand (gs_info->base, &stmts, true, NULL_TREE);
if (stmts != NULL) if (stmts != NULL)
...@@ -2985,7 +2987,7 @@ vect_get_gather_scatter_ops (class loop *loop, stmt_vec_info stmt_info, ...@@ -2985,7 +2987,7 @@ vect_get_gather_scatter_ops (class loop *loop, stmt_vec_info stmt_info,
gcc_assert (!new_bb); gcc_assert (!new_bb);
} }
tree offset_type = TREE_TYPE (gs_info->offset); tree offset_type = TREE_TYPE (gs_info->offset);
tree offset_vectype = get_vectype_for_scalar_type (offset_type); tree offset_vectype = get_vectype_for_scalar_type (vinfo, offset_type);
*vec_offset = vect_get_vec_def_for_operand (gs_info->offset, stmt_info, *vec_offset = vect_get_vec_def_for_operand (gs_info->offset, stmt_info,
offset_vectype); offset_vectype);
} }
...@@ -3020,7 +3022,7 @@ vect_get_strided_load_store_ops (stmt_vec_info stmt_info, ...@@ -3020,7 +3022,7 @@ vect_get_strided_load_store_ops (stmt_vec_info stmt_info,
/* The offset given in GS_INFO can have pointer type, so use the element /* The offset given in GS_INFO can have pointer type, so use the element
type of the vector instead. */ type of the vector instead. */
tree offset_type = TREE_TYPE (gs_info->offset); tree offset_type = TREE_TYPE (gs_info->offset);
tree offset_vectype = get_vectype_for_scalar_type (offset_type); tree offset_vectype = get_vectype_for_scalar_type (loop_vinfo, offset_type);
offset_type = TREE_TYPE (offset_vectype); offset_type = TREE_TYPE (offset_vectype);
/* Calculate X = DR_STEP / SCALE and convert it to the appropriate type. */ /* Calculate X = DR_STEP / SCALE and convert it to the appropriate type. */
...@@ -4101,9 +4103,8 @@ vectorizable_simd_clone_call (stmt_vec_info stmt_info, ...@@ -4101,9 +4103,8 @@ vectorizable_simd_clone_call (stmt_vec_info stmt_info,
|| arginfo[i].dt == vect_external_def) || arginfo[i].dt == vect_external_def)
&& bestn->simdclone->args[i].arg_type == SIMD_CLONE_ARG_TYPE_VECTOR) && bestn->simdclone->args[i].arg_type == SIMD_CLONE_ARG_TYPE_VECTOR)
{ {
arginfo[i].vectype tree arg_type = TREE_TYPE (gimple_call_arg (stmt, i));
= get_vectype_for_scalar_type (TREE_TYPE (gimple_call_arg (stmt, arginfo[i].vectype = get_vectype_for_scalar_type (vinfo, arg_type);
i)));
if (arginfo[i].vectype == NULL if (arginfo[i].vectype == NULL
|| (simd_clone_subparts (arginfo[i].vectype) || (simd_clone_subparts (arginfo[i].vectype)
> bestn->simdclone->simdlen)) > bestn->simdclone->simdlen))
...@@ -5466,7 +5467,7 @@ vectorizable_assignment (stmt_vec_info stmt_info, gimple_stmt_iterator *gsi, ...@@ -5466,7 +5467,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 (vec_info *, enum tree_code code, tree scalar_type) vect_supportable_shift (vec_info *vinfo, enum tree_code code, tree scalar_type)
{ {
machine_mode vec_mode; machine_mode vec_mode;
...@@ -5474,7 +5475,7 @@ vect_supportable_shift (vec_info *, enum tree_code code, tree scalar_type) ...@@ -5474,7 +5475,7 @@ vect_supportable_shift (vec_info *, enum tree_code code, tree scalar_type)
int icode; int icode;
tree vectype; tree vectype;
vectype = get_vectype_for_scalar_type (scalar_type); vectype = get_vectype_for_scalar_type (vinfo, scalar_type);
if (!vectype) if (!vectype)
return false; return false;
...@@ -9763,7 +9764,7 @@ vect_is_simple_cond (tree cond, vec_info *vinfo, ...@@ -9763,7 +9764,7 @@ vect_is_simple_cond (tree cond, vec_info *vinfo,
scalar_type = build_nonstandard_integer_type scalar_type = build_nonstandard_integer_type
(tree_to_uhwi (TYPE_SIZE (TREE_TYPE (vectype))), (tree_to_uhwi (TYPE_SIZE (TREE_TYPE (vectype))),
TYPE_UNSIGNED (scalar_type)); TYPE_UNSIGNED (scalar_type));
*comp_vectype = get_vectype_for_scalar_type (scalar_type); *comp_vectype = get_vectype_for_scalar_type (vinfo, scalar_type);
} }
return true; return true;
...@@ -10359,7 +10360,7 @@ vectorizable_comparison (stmt_vec_info stmt_info, gimple_stmt_iterator *gsi, ...@@ -10359,7 +10360,7 @@ vectorizable_comparison (stmt_vec_info stmt_info, gimple_stmt_iterator *gsi,
/* Invariant comparison. */ /* Invariant comparison. */
if (!vectype) if (!vectype)
{ {
vectype = get_vectype_for_scalar_type (TREE_TYPE (rhs1)); vectype = get_vectype_for_scalar_type (vinfo, TREE_TYPE (rhs1));
if (maybe_ne (TYPE_VECTOR_SUBPARTS (vectype), nunits)) if (maybe_ne (TYPE_VECTOR_SUBPARTS (vectype), nunits))
return false; return false;
} }
...@@ -11140,7 +11141,7 @@ poly_uint64 current_vector_size; ...@@ -11140,7 +11141,7 @@ poly_uint64 current_vector_size;
by the target. */ by the target. */
tree tree
get_vectype_for_scalar_type (tree scalar_type) get_vectype_for_scalar_type (vec_info *, tree scalar_type)
{ {
tree vectype; tree vectype;
vectype = get_vectype_for_scalar_type_and_size (scalar_type, vectype = get_vectype_for_scalar_type_and_size (scalar_type,
...@@ -11157,9 +11158,9 @@ get_vectype_for_scalar_type (tree scalar_type) ...@@ -11157,9 +11158,9 @@ get_vectype_for_scalar_type (tree scalar_type)
of vectors of specified SCALAR_TYPE as supported by target. */ of vectors of specified SCALAR_TYPE as supported by target. */
tree tree
get_mask_type_for_scalar_type (vec_info *, tree scalar_type) get_mask_type_for_scalar_type (vec_info *vinfo, tree scalar_type)
{ {
tree vectype = get_vectype_for_scalar_type (scalar_type); tree vectype = get_vectype_for_scalar_type (vinfo, scalar_type);
if (!vectype) if (!vectype)
return NULL; return NULL;
...@@ -11853,6 +11854,7 @@ vect_get_vector_types_for_stmt (stmt_vec_info stmt_info, ...@@ -11853,6 +11854,7 @@ vect_get_vector_types_for_stmt (stmt_vec_info stmt_info,
tree *stmt_vectype_out, tree *stmt_vectype_out,
tree *nunits_vectype_out) tree *nunits_vectype_out)
{ {
vec_info *vinfo = stmt_info->vinfo;
gimple *stmt = stmt_info->stmt; gimple *stmt = stmt_info->stmt;
*stmt_vectype_out = NULL_TREE; *stmt_vectype_out = NULL_TREE;
...@@ -11919,7 +11921,7 @@ vect_get_vector_types_for_stmt (stmt_vec_info stmt_info, ...@@ -11919,7 +11921,7 @@ vect_get_vector_types_for_stmt (stmt_vec_info stmt_info,
if (dump_enabled_p ()) if (dump_enabled_p ())
dump_printf_loc (MSG_NOTE, vect_location, dump_printf_loc (MSG_NOTE, vect_location,
"get vectype for scalar type: %T\n", scalar_type); "get vectype for scalar type: %T\n", scalar_type);
vectype = get_vectype_for_scalar_type (scalar_type); vectype = get_vectype_for_scalar_type (vinfo, scalar_type);
if (!vectype) if (!vectype)
return opt_result::failure_at (stmt, return opt_result::failure_at (stmt,
"not vectorized:" "not vectorized:"
...@@ -11952,7 +11954,7 @@ vect_get_vector_types_for_stmt (stmt_vec_info stmt_info, ...@@ -11952,7 +11954,7 @@ vect_get_vector_types_for_stmt (stmt_vec_info stmt_info,
if (dump_enabled_p ()) if (dump_enabled_p ())
dump_printf_loc (MSG_NOTE, vect_location, dump_printf_loc (MSG_NOTE, vect_location,
"get vectype for scalar type: %T\n", scalar_type); "get vectype for scalar type: %T\n", scalar_type);
nunits_vectype = get_vectype_for_scalar_type (scalar_type); nunits_vectype = get_vectype_for_scalar_type (vinfo, scalar_type);
} }
if (!nunits_vectype) if (!nunits_vectype)
return opt_result::failure_at (stmt, return opt_result::failure_at (stmt,
......
...@@ -1589,7 +1589,7 @@ extern bool vect_can_advance_ivs_p (loop_vec_info); ...@@ -1589,7 +1589,7 @@ extern bool vect_can_advance_ivs_p (loop_vec_info);
/* In tree-vect-stmts.c. */ /* In tree-vect-stmts.c. */
extern poly_uint64 current_vector_size; extern poly_uint64 current_vector_size;
extern tree get_vectype_for_scalar_type (tree); extern tree get_vectype_for_scalar_type (vec_info *, tree);
extern tree get_vectype_for_scalar_type_and_size (tree, poly_uint64); extern tree get_vectype_for_scalar_type_and_size (tree, poly_uint64);
extern tree get_mask_type_for_scalar_type (vec_info *, tree); extern tree get_mask_type_for_scalar_type (vec_info *, tree);
extern tree get_same_sized_vectype (tree, tree); extern tree get_same_sized_vectype (tree, tree);
......
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