[AArch64] Rename SVE shape "unary_count" to "unary_to_uint"
authorRichard Sandiford <richard.sandiford@arm.com>
Thu, 9 Jan 2020 15:21:47 +0000 (15:21 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Thu, 9 Jan 2020 15:21:47 +0000 (15:21 +0000)
The SVE ACLE shape names use "_int" and "_uint" for arguments that are
signed-integer or unsigned-integer variants of the main vector type.
With SVE2 this variation also becomes common for return values,
which the main SVE2 patch handles using "_to_int" and "_to_uint".
This patch renames the existing unary_count shape to match the
new scheme.

2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* config/aarch64/aarch64-sve-builtins-shapes.h (unary_count): Delete.
(unary_to_uint): Define.
* config/aarch64/aarch64-sve-builtins-shapes.cc (unary_count_def)
(unary_count): Rename to...
(unary_to_uint_def, unary_to_uint): ...this.
* config/aarch64/aarch64-sve-builtins-base.def: Update accordingly.

gcc/testsuite/
* gcc.target/aarch64/sve/acle/general-c/unary_count_1.c: Rename to...
* gcc.target/aarch64/sve/acle/general-c/unary_to_uint_1.c: ...this.
* gcc.target/aarch64/sve/acle/general-c/unary_count_2.c: Rename to...
* gcc.target/aarch64/sve/acle/general-c/unary_to_uint_2.c: ...this.
* gcc.target/aarch64/sve/acle/general-c/unary_count_3.c: Rename to...
* gcc.target/aarch64/sve/acle/general-c/unary_to_uint_3.c: ...this.

From-SVN: r280052

gcc/ChangeLog
gcc/config/aarch64/aarch64-sve-builtins-base.def
gcc/config/aarch64/aarch64-sve-builtins-shapes.cc
gcc/config/aarch64/aarch64-sve-builtins-shapes.h
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_count_1.c [deleted file]
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_count_2.c [deleted file]
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_count_3.c [deleted file]
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_to_uint_1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_to_uint_2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_to_uint_3.c [new file with mode: 0644]

index 1c2a4a92d691108edaa4f21db5de0677ffb658db..ad7f519521c206522d67e1ddf60cf208f0608528 100644 (file)
@@ -1,3 +1,12 @@
+2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * config/aarch64/aarch64-sve-builtins-shapes.h (unary_count): Delete.
+       (unary_to_uint): Define.
+       * config/aarch64/aarch64-sve-builtins-shapes.cc (unary_count_def)
+       (unary_count): Rename to...
+       (unary_to_uint_def, unary_to_uint): ...this.
+       * config/aarch64/aarch64-sve-builtins-base.def: Update accordingly.
+
 2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
 
        * config/aarch64/aarch64-sve-builtins-functions.h
index 4cb7da70977b61f88cb2f5a48707fe3c10e3546e..cd0a9bef08fd5293faf4bce8b4bb6cf8a297f090 100644 (file)
@@ -47,8 +47,8 @@ DEF_SVE_FUNCTION (svbrkpb, binary, b, z)
 DEF_SVE_FUNCTION (svcadd, binary_rotate, all_float, mxz)
 DEF_SVE_FUNCTION (svclasta, clast, all_data, implicit)
 DEF_SVE_FUNCTION (svclastb, clast, all_data, implicit)
-DEF_SVE_FUNCTION (svcls, unary_count, all_signed, mxz)
-DEF_SVE_FUNCTION (svclz, unary_count, all_integer, mxz)
+DEF_SVE_FUNCTION (svcls, unary_to_uint, all_signed, mxz)
+DEF_SVE_FUNCTION (svclz, unary_to_uint, all_integer, mxz)
 DEF_SVE_FUNCTION (svcmla, ternary_rotate, all_float, mxz)
 DEF_SVE_FUNCTION (svcmla_lane, ternary_lane_rotate, hs_float, none)
 DEF_SVE_FUNCTION (svcmpeq, compare_opt_n, all_data, implicit)
@@ -65,7 +65,7 @@ DEF_SVE_FUNCTION (svcmpne, compare_opt_n, all_data, implicit)
 DEF_SVE_FUNCTION (svcmpne_wide, compare_wide_opt_n, bhs_signed, implicit)
 DEF_SVE_FUNCTION (svcmpuo, compare_opt_n, all_float, implicit)
 DEF_SVE_FUNCTION (svcnot, unary, all_integer, mxz)
-DEF_SVE_FUNCTION (svcnt, unary_count, all_data, mxz)
+DEF_SVE_FUNCTION (svcnt, unary_to_uint, all_data, mxz)
 DEF_SVE_FUNCTION (svcntb, count_inherent, none, none)
 DEF_SVE_FUNCTION (svcntb_pat, count_pat, none, none)
 DEF_SVE_FUNCTION (svcntd, count_inherent, none, none)
index 6da093c81bafafebc5e1903e4f26b0b5e0d6a837..69a062124f38ca1b6da7810dd34dc6c861c3f715 100644 (file)
@@ -2104,27 +2104,6 @@ struct unary_convert_def : public overloaded_base<1>
 };
 SHAPE (unary_convert)
 
-/* sv<t0:uint>_t svfoo[_t0](sv<t0>_t)
-
-   i.e. a version of "unary" in which the returned vector contains
-   unsigned integers.  */
-struct unary_count_def : public overloaded_base<0>
-{
-  void
-  build (function_builder &b, const function_group_info &group) const OVERRIDE
-  {
-    b.add_overloaded_functions (group, MODE_none);
-    build_all (b, "vu0,v0", group, MODE_none);
-  }
-
-  tree
-  resolve (function_resolver &r) const OVERRIDE
-  {
-    return r.resolve_unary (TYPE_unsigned);
-  }
-};
-SHAPE (unary_count)
-
 /* sv<t0>_t svfoo[_n]_t0(<t0>_t).  */
 struct unary_n_def : public overloaded_base<1>
 {
@@ -2156,6 +2135,27 @@ struct unary_pred_def : public nonoverloaded_base
 };
 SHAPE (unary_pred)
 
+/* sv<t0:uint>_t svfoo[_t0](sv<t0>_t)
+
+   i.e. a version of "unary" in which the returned vector contains
+   unsigned integers.  */
+struct unary_to_uint_def : public overloaded_base<0>
+{
+  void
+  build (function_builder &b, const function_group_info &group) const OVERRIDE
+  {
+    b.add_overloaded_functions (group, MODE_none);
+    build_all (b, "vu0,v0", group, MODE_none);
+  }
+
+  tree
+  resolve (function_resolver &r) const OVERRIDE
+  {
+    return r.resolve_unary (TYPE_unsigned);
+  }
+};
+SHAPE (unary_to_uint)
+
 /* sv<t0>_t svfoo[_t0](sv<t0:uint>_t)
 
    where <t0> always belongs a certain type class, and where <t0:uint>
index e9a429bb3f93f7bb8206688ce33ec433bda6a81a..151371289e2908ccfcebb18f0a0080f38fa70254 100644 (file)
@@ -135,9 +135,9 @@ namespace aarch64_sve
     extern const function_shape *const tmad;
     extern const function_shape *const unary;
     extern const function_shape *const unary_convert;
-    extern const function_shape *const unary_count;
     extern const function_shape *const unary_n;
     extern const function_shape *const unary_pred;
+    extern const function_shape *const unary_to_uint;
     extern const function_shape *const unary_uint;
     extern const function_shape *const unary_widen;
   }
index cdb8e0df72a23e6901eda40f2d511acd32ebe04f..943b632adc7289522bbd1530b168ab45e969a8ad 100644 (file)
@@ -1,3 +1,12 @@
+2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * gcc.target/aarch64/sve/acle/general-c/unary_count_1.c: Rename to...
+       * gcc.target/aarch64/sve/acle/general-c/unary_to_uint_1.c: ...this.
+       * gcc.target/aarch64/sve/acle/general-c/unary_count_2.c: Rename to...
+       * gcc.target/aarch64/sve/acle/general-c/unary_to_uint_2.c: ...this.
+       * gcc.target/aarch64/sve/acle/general-c/unary_count_3.c: Rename to...
+       * gcc.target/aarch64/sve/acle/general-c/unary_to_uint_3.c: ...this.
+
 2020-01-09  Richard Sandiford  <richard.sandiford@arm.com>
 
        * gcc.target/aarch64/sve/acle/general/nrv_1.c: New test.
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_count_1.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_count_1.c
deleted file mode 100644 (file)
index 888b525..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-/* { dg-do compile } */
-
-#include <arm_sve.h>
-
-void
-f1 (svbool_t pg, svint32_t s32, svuint32_t u32, svfloat32_t f32,
-    svint64_t s64, svuint64_t u64)
-{
-  svclz_m (u32, pg); /* { dg-error {too few arguments to function 'svclz_m'} } */
-  svclz_m (u32, pg, s32, s32); /* { dg-error {too many arguments to function 'svclz_m'} } */
-  svclz_m (0, pg, f32); /* { dg-error {passing 'int' to argument 1 of 'svclz_m', which expects an SVE vector type} } */
-  svclz_m (u32, u32, f32); /* { dg-error {passing 'svuint32_t' to argument 2 of 'svclz_m', which expects 'svbool_t'} } */
-  svclz_m (u32, 0, f32); /* { dg-error {passing 'int' to argument 2 of 'svclz_m', which expects 'svbool_t'} } */
-  svclz_m (u32, pg, s32);
-  svclz_m (u32, pg, u32);
-  svclz_m (u32, pg, f32); /* { dg-error {'svclz_m' has no form that takes 'svfloat32_t' arguments} } */
-  svclz_m (u32, pg, pg); /* { dg-error {'svclz_m' has no form that takes 'svbool_t' arguments} } */
-
-  svclz_m (pg, pg, s32); /* { dg-error {passing 'svbool_t' to argument 1 of 'svclz_m', which expects a vector of unsigned integers} } */
-  svclz_m (s32, pg, s32); /* { dg-error {passing 'svint32_t' to argument 1 of 'svclz_m', which expects a vector of unsigned integers} } */
-  svclz_m (f32, pg, s32); /* { dg-error {passing 'svfloat32_t' to argument 1 of 'svclz_m', which expects a vector of unsigned integers} } */
-  svclz_m (s64, pg, s32); /* { dg-error {passing 'svint64_t' to argument 1 of 'svclz_m', which expects a vector of unsigned integers} } */
-  svclz_m (u64, pg, s32); /* { dg-error {arguments 1 and 3 of 'svclz_m' must have the same element size, but the values passed here have type 'svuint64_t' and 'svint32_t' respectively} } */
-}
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_count_2.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_count_2.c
deleted file mode 100644 (file)
index 233e847..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-/* { dg-do compile } */
-/* { dg-options "-flax-vector-conversions" } */
-
-#include <arm_sve.h>
-
-void
-f1 (svbool_t pg, svint32_t s32, svuint32_t u32, svfloat32_t f32,
-    svint64_t s64, svuint64_t u64)
-{
-  svclz_m (u32, pg); /* { dg-error {too few arguments to function 'svclz_m'} } */
-  svclz_m (u32, pg, s32, s32); /* { dg-error {too many arguments to function 'svclz_m'} } */
-  svclz_m (0, pg, f32); /* { dg-error {passing 'int' to argument 1 of 'svclz_m', which expects an SVE vector type} } */
-  svclz_m (u32, u32, f32); /* { dg-error {passing 'svuint32_t' to argument 2 of 'svclz_m', which expects 'svbool_t'} } */
-  svclz_m (u32, 0, f32); /* { dg-error {passing 'int' to argument 2 of 'svclz_m', which expects 'svbool_t'} } */
-  svclz_m (u32, pg, s32);
-  svclz_m (u32, pg, u32);
-  svclz_m (u32, pg, f32); /* { dg-error {'svclz_m' has no form that takes 'svfloat32_t' arguments} } */
-  svclz_m (u32, pg, pg); /* { dg-error {'svclz_m' has no form that takes 'svbool_t' arguments} } */
-
-  svclz_m (pg, pg, s32); /* { dg-error {passing 'svbool_t' to argument 1 of 'svclz_m', which expects a vector of unsigned integers} } */
-  svclz_m (s32, pg, s32); /* { dg-error {passing 'svint32_t' to argument 1 of 'svclz_m', which expects a vector of unsigned integers} } */
-  svclz_m (f32, pg, s32); /* { dg-error {passing 'svfloat32_t' to argument 1 of 'svclz_m', which expects a vector of unsigned integers} } */
-  svclz_m (s64, pg, s32); /* { dg-error {passing 'svint64_t' to argument 1 of 'svclz_m', which expects a vector of unsigned integers} } */
-  svclz_m (u64, pg, s32); /* { dg-error {arguments 1 and 3 of 'svclz_m' must have the same element size, but the values passed here have type 'svuint64_t' and 'svint32_t' respectively} } */
-}
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_count_3.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_count_3.c
deleted file mode 100644 (file)
index da57b07..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-/* { dg-do compile } */
-
-#include <arm_sve.h>
-
-void
-f1 (svbool_t pg, svuint8_t u8)
-{
-  svcnt_x (pg); /* { dg-error {too few arguments to function 'svcnt_x'} } */
-  svcnt_x (pg, u8, u8); /* { dg-error {too many arguments to function 'svcnt_x'} } */
-  svcnt_x (u8, u8); /* { dg-error {passing 'svuint8_t' to argument 1 of 'svcnt_x', which expects 'svbool_t'} } */
-  svcnt_x (pg, pg); /* { dg-error {'svcnt_x' has no form that takes 'svbool_t' arguments} } */
-  svcnt_x (pg, 1); /* { dg-error {passing 'int' to argument 2 of 'svcnt_x', which expects an SVE vector type} } */
-  svcnt_x (pg, u8);
-}
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_to_uint_1.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_to_uint_1.c
new file mode 100644 (file)
index 0000000..888b525
--- /dev/null
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+
+#include <arm_sve.h>
+
+void
+f1 (svbool_t pg, svint32_t s32, svuint32_t u32, svfloat32_t f32,
+    svint64_t s64, svuint64_t u64)
+{
+  svclz_m (u32, pg); /* { dg-error {too few arguments to function 'svclz_m'} } */
+  svclz_m (u32, pg, s32, s32); /* { dg-error {too many arguments to function 'svclz_m'} } */
+  svclz_m (0, pg, f32); /* { dg-error {passing 'int' to argument 1 of 'svclz_m', which expects an SVE vector type} } */
+  svclz_m (u32, u32, f32); /* { dg-error {passing 'svuint32_t' to argument 2 of 'svclz_m', which expects 'svbool_t'} } */
+  svclz_m (u32, 0, f32); /* { dg-error {passing 'int' to argument 2 of 'svclz_m', which expects 'svbool_t'} } */
+  svclz_m (u32, pg, s32);
+  svclz_m (u32, pg, u32);
+  svclz_m (u32, pg, f32); /* { dg-error {'svclz_m' has no form that takes 'svfloat32_t' arguments} } */
+  svclz_m (u32, pg, pg); /* { dg-error {'svclz_m' has no form that takes 'svbool_t' arguments} } */
+
+  svclz_m (pg, pg, s32); /* { dg-error {passing 'svbool_t' to argument 1 of 'svclz_m', which expects a vector of unsigned integers} } */
+  svclz_m (s32, pg, s32); /* { dg-error {passing 'svint32_t' to argument 1 of 'svclz_m', which expects a vector of unsigned integers} } */
+  svclz_m (f32, pg, s32); /* { dg-error {passing 'svfloat32_t' to argument 1 of 'svclz_m', which expects a vector of unsigned integers} } */
+  svclz_m (s64, pg, s32); /* { dg-error {passing 'svint64_t' to argument 1 of 'svclz_m', which expects a vector of unsigned integers} } */
+  svclz_m (u64, pg, s32); /* { dg-error {arguments 1 and 3 of 'svclz_m' must have the same element size, but the values passed here have type 'svuint64_t' and 'svint32_t' respectively} } */
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_to_uint_2.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_to_uint_2.c
new file mode 100644 (file)
index 0000000..233e847
--- /dev/null
@@ -0,0 +1,25 @@
+/* { dg-do compile } */
+/* { dg-options "-flax-vector-conversions" } */
+
+#include <arm_sve.h>
+
+void
+f1 (svbool_t pg, svint32_t s32, svuint32_t u32, svfloat32_t f32,
+    svint64_t s64, svuint64_t u64)
+{
+  svclz_m (u32, pg); /* { dg-error {too few arguments to function 'svclz_m'} } */
+  svclz_m (u32, pg, s32, s32); /* { dg-error {too many arguments to function 'svclz_m'} } */
+  svclz_m (0, pg, f32); /* { dg-error {passing 'int' to argument 1 of 'svclz_m', which expects an SVE vector type} } */
+  svclz_m (u32, u32, f32); /* { dg-error {passing 'svuint32_t' to argument 2 of 'svclz_m', which expects 'svbool_t'} } */
+  svclz_m (u32, 0, f32); /* { dg-error {passing 'int' to argument 2 of 'svclz_m', which expects 'svbool_t'} } */
+  svclz_m (u32, pg, s32);
+  svclz_m (u32, pg, u32);
+  svclz_m (u32, pg, f32); /* { dg-error {'svclz_m' has no form that takes 'svfloat32_t' arguments} } */
+  svclz_m (u32, pg, pg); /* { dg-error {'svclz_m' has no form that takes 'svbool_t' arguments} } */
+
+  svclz_m (pg, pg, s32); /* { dg-error {passing 'svbool_t' to argument 1 of 'svclz_m', which expects a vector of unsigned integers} } */
+  svclz_m (s32, pg, s32); /* { dg-error {passing 'svint32_t' to argument 1 of 'svclz_m', which expects a vector of unsigned integers} } */
+  svclz_m (f32, pg, s32); /* { dg-error {passing 'svfloat32_t' to argument 1 of 'svclz_m', which expects a vector of unsigned integers} } */
+  svclz_m (s64, pg, s32); /* { dg-error {passing 'svint64_t' to argument 1 of 'svclz_m', which expects a vector of unsigned integers} } */
+  svclz_m (u64, pg, s32); /* { dg-error {arguments 1 and 3 of 'svclz_m' must have the same element size, but the values passed here have type 'svuint64_t' and 'svint32_t' respectively} } */
+}
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_to_uint_3.c b/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/unary_to_uint_3.c
new file mode 100644 (file)
index 0000000..da57b07
--- /dev/null
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+
+#include <arm_sve.h>
+
+void
+f1 (svbool_t pg, svuint8_t u8)
+{
+  svcnt_x (pg); /* { dg-error {too few arguments to function 'svcnt_x'} } */
+  svcnt_x (pg, u8, u8); /* { dg-error {too many arguments to function 'svcnt_x'} } */
+  svcnt_x (u8, u8); /* { dg-error {passing 'svuint8_t' to argument 1 of 'svcnt_x', which expects 'svbool_t'} } */
+  svcnt_x (pg, pg); /* { dg-error {'svcnt_x' has no form that takes 'svbool_t' arguments} } */
+  svcnt_x (pg, 1); /* { dg-error {passing 'int' to argument 2 of 'svcnt_x', which expects an SVE vector type} } */
+  svcnt_x (pg, u8);
+}