diff options
author | Richard Sandiford <richard.sandiford@arm.com> | 2019-11-14 14:57:26 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2019-11-14 14:57:26 +0000 |
commit | 95da266b86fcdeff84fcadc5e3cde3d0027e571d (patch) | |
tree | 52b6e4dd3dd096c32a47a7e96a0b5cba544a6e74 /gcc/tree-vectorizer.c | |
parent | 10116ec1c147a76522cafba6b6a5b4ed1cb37b77 (diff) | |
download | gcc-95da266b86fcdeff84fcadc5e3cde3d0027e571d.zip gcc-95da266b86fcdeff84fcadc5e3cde3d0027e571d.tar.gz gcc-95da266b86fcdeff84fcadc5e3cde3d0027e571d.tar.bz2 |
Use build_vector_type_for_mode in get_vectype_for_scalar_type_and_size
Except for one case, get_vectype_for_scalar_type_and_size calculates
what the vector mode should be and then calls build_vector_type,
which recomputes the mode from scratch. This patch makes it use
build_vector_type_for_mode instead.
The exception mentioned above is when preferred_simd_mode returns
an integer mode, which it does if no appropriate vector mode exists.
The integer mode in question is usually word_mode, although epiphany
can return a doubleword mode in some cases.
There's no guarantee that this integer mode is appropriate, since for
example the scalar type could be a float. The traditional behaviour is
therefore to use the integer mode to determine a size only, and leave
mode_for_vector to pick the TYPE_MODE. (Note that it can actually end
up picking a vector mode if the target defines a disabled vector mode.
We therefore still need to check TYPE_MODE after building the type.)
2019-11-14 Richard Sandiford <richard.sandiford@arm.com>
gcc/
* tree-vect-stmts.c (get_vectype_for_scalar_type_and_size): If
targetm.vectorize.preferred_simd_mode returns an integer mode,
use mode_for_vector to decide what the vector type's mode
should actually be. Use build_vector_type_for_mode instead
of build_vector_type.
From-SVN: r278234
Diffstat (limited to 'gcc/tree-vectorizer.c')
0 files changed, 0 insertions, 0 deletions