mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-21 05:30:24 +08:00
Change permute index type to unsigned short
This patch changes the element type of (auto_)vec_perm_indices from unsigned char to unsigned short. This is needed for fixed-length 2048-bit SVE. (SVE is variable-length by default, but it's possible to ask for specific vector lengths if you want to.) 2017-09-25 Richard Sandiford <richard.sandiford@linaro.org> gcc/ * target.h (vec_perm_indices): Use unsigned short rather than unsigned char. (auto_vec_perm_indices): Likewise. * config/aarch64/aarch64.c (aarch64_vectorize_vec_perm_const_ok): Use unsigned int rather than unsigned char. * config/arm/arm.c (arm_vectorize_vec_perm_const_ok): Likewise. From-SVN: r253150
This commit is contained in:
parent
26993e95b9
commit
f39b92e2c4
@ -1,3 +1,12 @@
|
||||
2017-09-25 Richard Sandiford <richard.sandiford@linaro.org>
|
||||
|
||||
* target.h (vec_perm_indices): Use unsigned short rather than
|
||||
unsigned char.
|
||||
(auto_vec_perm_indices): Likewise.
|
||||
* config/aarch64/aarch64.c (aarch64_vectorize_vec_perm_const_ok):
|
||||
Use unsigned int rather than unsigned char.
|
||||
* config/arm/arm.c (arm_vectorize_vec_perm_const_ok): Likewise.
|
||||
|
||||
2017-09-25 Richard Biener <rguenther@suse.de>
|
||||
|
||||
* cfgloop.h (sort_sibling_loops): Declare.
|
||||
|
@ -13820,7 +13820,7 @@ aarch64_vectorize_vec_perm_const_ok (machine_mode vmode, vec_perm_indices sel)
|
||||
nelt = sel.length ();
|
||||
for (i = which = 0; i < nelt; ++i)
|
||||
{
|
||||
unsigned char e = d.perm[i];
|
||||
unsigned int e = d.perm[i];
|
||||
gcc_assert (e < 2 * nelt);
|
||||
which |= (e < nelt ? 1 : 2);
|
||||
}
|
||||
|
@ -29261,7 +29261,7 @@ arm_vectorize_vec_perm_const_ok (machine_mode vmode, vec_perm_indices sel)
|
||||
nelt = GET_MODE_NUNITS (d.vmode);
|
||||
for (i = which = 0; i < nelt; ++i)
|
||||
{
|
||||
unsigned char e = d.perm[i];
|
||||
unsigned int e = d.perm[i];
|
||||
gcc_assert (e < 2 * nelt);
|
||||
which |= (e < nelt ? 1 : 2);
|
||||
}
|
||||
|
@ -193,11 +193,11 @@ enum vect_cost_model_location {
|
||||
|
||||
/* The type to use for vector permutes with a constant permute vector.
|
||||
Each entry is an index into the concatenated input vectors. */
|
||||
typedef vec<unsigned char> vec_perm_indices;
|
||||
typedef vec<unsigned short> vec_perm_indices;
|
||||
|
||||
/* Same, but can be used to construct local permute vectors that are
|
||||
automatically freed. */
|
||||
typedef auto_vec<unsigned char, 32> auto_vec_perm_indices;
|
||||
typedef auto_vec<unsigned short, 32> auto_vec_perm_indices;
|
||||
|
||||
/* The target structure. This holds all the backend hooks. */
|
||||
#define DEFHOOKPOD(NAME, DOC, TYPE, INIT) TYPE NAME;
|
||||
|
Loading…
x
Reference in New Issue
Block a user