aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@linaro.org>2017-09-25 13:26:12 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2017-09-25 13:26:12 +0000
commitf39b92e2c485be81ec154d2986495305d5926688 (patch)
tree7589661abbc6bc69107b22987102175aab90b863 /gcc
parent26993e95b9e5d4c79ee6c9b16307046383590748 (diff)
downloadgcc-f39b92e2c485be81ec154d2986495305d5926688.zip
gcc-f39b92e2c485be81ec154d2986495305d5926688.tar.gz
gcc-f39b92e2c485be81ec154d2986495305d5926688.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/config/aarch64/aarch64.c2
-rw-r--r--gcc/config/arm/arm.c2
-rw-r--r--gcc/target.h4
4 files changed, 13 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f4060b1..b53da53 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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.
diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
index f38540b..9b02c6e 100644
--- a/gcc/config/aarch64/aarch64.c
+++ b/gcc/config/aarch64/aarch64.c
@@ -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);
}
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 3671616..f9c1ce3 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -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);
}
diff --git a/gcc/target.h b/gcc/target.h
index 64e1d68..ac43b16 100644
--- a/gcc/target.h
+++ b/gcc/target.h
@@ -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;