poly_int: vect_get_constant_vectors
For now, vect_get_constant_vectors can only cope with constant-length vectors, although a patch after the main SVE submission relaxes this. This patch adds an appropriate guard for variable-length vectors. The TYPE_VECTOR_SUBPARTS use in vect_get_constant_vectors will then have a to_constant call when TYPE_VECTOR_SUBPARTS becomes a poly_int. 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org> Alan Hayward <alan.hayward@arm.com> David Sherwood <david.sherwood@arm.com> gcc/ * tree-vect-slp.c (vect_get_and_check_slp_defs): Reject constant and extern definitions for variable-length vectors. (vect_get_constant_vectors): Note that the number of units is known to be constant. Co-Authored-By: Alan Hayward <alan.hayward@arm.com> Co-Authored-By: David Sherwood <david.sherwood@arm.com> From-SVN: r256140
This commit is contained in:
parent
062d5ccc11
commit
a23644f23d
2 changed files with 24 additions and 0 deletions
|
@ -1,3 +1,12 @@
|
|||
2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
|
||||
Alan Hayward <alan.hayward@arm.com>
|
||||
David Sherwood <david.sherwood@arm.com>
|
||||
|
||||
* tree-vect-slp.c (vect_get_and_check_slp_defs): Reject
|
||||
constant and extern definitions for variable-length vectors.
|
||||
(vect_get_constant_vectors): Note that the number of units
|
||||
is known to be constant.
|
||||
|
||||
2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
|
||||
Alan Hayward <alan.hayward@arm.com>
|
||||
David Sherwood <david.sherwood@arm.com>
|
||||
|
|
|
@ -405,6 +405,20 @@ again:
|
|||
{
|
||||
case vect_constant_def:
|
||||
case vect_external_def:
|
||||
/* We must already have set a vector size by now. */
|
||||
gcc_checking_assert (maybe_ne (current_vector_size, 0U));
|
||||
if (!current_vector_size.is_constant ())
|
||||
{
|
||||
if (dump_enabled_p ())
|
||||
{
|
||||
dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
|
||||
"Build SLP failed: invalid type of def "
|
||||
"for variable-length SLP ");
|
||||
dump_generic_expr (MSG_MISSED_OPTIMIZATION, TDF_SLIM, oprnd);
|
||||
dump_printf (MSG_MISSED_OPTIMIZATION, "\n");
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
break;
|
||||
|
||||
case vect_reduction_def:
|
||||
|
@ -3233,6 +3247,7 @@ vect_get_constant_vectors (tree op, slp_tree slp_node,
|
|||
= build_same_sized_truth_vector_type (STMT_VINFO_VECTYPE (stmt_vinfo));
|
||||
else
|
||||
vector_type = get_vectype_for_scalar_type (TREE_TYPE (op));
|
||||
/* Enforced by vect_get_and_check_slp_defs. */
|
||||
nunits = TYPE_VECTOR_SUBPARTS (vector_type);
|
||||
|
||||
if (STMT_VINFO_DATA_REF (stmt_vinfo))
|
||||
|
|
Loading…
Add table
Reference in a new issue