Make less use of get_same_sized_vectype
authorRichard Sandiford <richard.sandiford@arm.com>
Thu, 14 Nov 2019 15:06:34 +0000 (15:06 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Thu, 14 Nov 2019 15:06:34 +0000 (15:06 +0000)
commit2df4150075c03f8a292c40afd3bb25febb673578
treeb1d63cf6e91fb986619e29ab836fbd5b19d2b85e
parent1c84a2d25ecd4c03dde745f36a4762dd45f97c85
Make less use of get_same_sized_vectype

Some callers of get_same_sized_vectype were dealing with operands that
are constant or defined externally, and so have no STMT_VINFO_VECTYPE
available.  Under the current model, using get_same_sized_vectype for
that case is equivalent to using get_vectype_for_scalar_type, since
get_vectype_for_scalar_type always returns vectors of the same size,
once a size is fixed.

Using get_vectype_for_scalar_type is arguably more obvious though:
if we're using the same scalar type as we would for internal
definitions, we should use the same vector type too.  (Constant and
external definitions sometimes let us change the original scalar type
to a "nicer" scalar type, but that isn't what's happening here.)

This is a prerequisite to supporting multiple vector sizes in the same
vec_info.

2019-11-14  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* tree-vect-stmts.c (vectorizable_call): If an operand is
constant or external, use get_vectype_for_scalar_type
rather than get_same_sized_vectype to get its vector type.
(vectorizable_conversion, vectorizable_shift): Likewise.
(vectorizable_operation): Likewise.

From-SVN: r278238
gcc/ChangeLog
gcc/tree-vect-stmts.c