poly_int: vector_alignment_reachable_p
This patch makes vector_alignment_reachable_p cope with variable-length vectors. 2018-01-03 Richard Sandiford <richard.sandiford@linaro.org> Alan Hayward <alan.hayward@arm.com> David Sherwood <david.sherwood@arm.com> gcc/ * tree-vect-data-refs.c (vector_alignment_reachable_p): Treat the number of units as polynomial. Co-Authored-By: Alan Hayward <alan.hayward@arm.com> Co-Authored-By: David Sherwood <david.sherwood@arm.com> From-SVN: r256132
This commit is contained in:
parent
86e3672871
commit
9031b367ac
2 changed files with 11 additions and 3 deletions
|
@ -1,3 +1,10 @@
|
|||
2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
|
||||
Alan Hayward <alan.hayward@arm.com>
|
||||
David Sherwood <david.sherwood@arm.com>
|
||||
|
||||
* tree-vect-data-refs.c (vector_alignment_reachable_p): Treat the
|
||||
number of units as polynomial.
|
||||
|
||||
2018-01-03 Richard Sandiford <richard.sandiford@linaro.org>
|
||||
Alan Hayward <alan.hayward@arm.com>
|
||||
David Sherwood <david.sherwood@arm.com>
|
||||
|
|
|
@ -1154,16 +1154,17 @@ vector_alignment_reachable_p (struct data_reference *dr)
|
|||
the prolog loop ({VF - misalignment}), is a multiple of the
|
||||
number of the interleaved accesses. */
|
||||
int elem_size, mis_in_elements;
|
||||
int nelements = TYPE_VECTOR_SUBPARTS (vectype);
|
||||
|
||||
/* FORNOW: handle only known alignment. */
|
||||
if (!known_alignment_for_access_p (dr))
|
||||
return false;
|
||||
|
||||
elem_size = GET_MODE_SIZE (TYPE_MODE (vectype)) / nelements;
|
||||
poly_uint64 nelements = TYPE_VECTOR_SUBPARTS (vectype);
|
||||
poly_uint64 vector_size = GET_MODE_SIZE (TYPE_MODE (vectype));
|
||||
elem_size = vector_element_size (vector_size, nelements);
|
||||
mis_in_elements = DR_MISALIGNMENT (dr) / elem_size;
|
||||
|
||||
if ((nelements - mis_in_elements) % GROUP_SIZE (stmt_info))
|
||||
if (!multiple_p (nelements - mis_in_elements, GROUP_SIZE (stmt_info)))
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue