public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: "Kewen.Lin" <linkw@linux.vnet.ibm.com>
To: Segher Boessenkool <segher@kernel.crashing.org>,
	       Jakub Jelinek <jakub@redhat.com>
Cc: gcc-patches@gcc.gnu.org, Bill Schmidt <wschmidt@linux.ibm.com>
Subject: [PATCH v2] rs6000: Add missing prototypes for vec_ld/vec_st
Date: Sat, 19 Jan 2019 13:27:00 -0000	[thread overview]
Message-ID: <15073e6c-f1dd-43cd-e470-dbdb5b780040@linux.vnet.ibm.com> (raw)
In-Reply-To: <20190119010425.GX14180@gate.crashing.org>

Hi Jakub,

Thanks for catching!

Hi Segher,

Thanks for your suggestion, I just had a testing on BE machine and found the vector double related codes also need to be separated to vsx case. The case has been updated as below, is it OK for trunk? 

Thanks for your time in advance!


gcc/testsuite/ChangeLog:

2019-01-19  Kewen Lin  <linkw@gcc.gnu.org>

	* gcc.target/powerpc/altivec_vld_vst_addr.c: Remove.
	* gcc.target/powerpc/altivec_vld_vst_addr-1.c: New test.
	* gcc.target/powerpc/altivec_vld_vst_addr-2.c: Ditto.

---
 .../gcc.target/powerpc/altivec_vld_vst_addr-1.c    | 184 +++++++++++++++
 .../gcc.target/powerpc/altivec_vld_vst_addr-2.c    |  92 ++++++++
 .../gcc.target/powerpc/altivec_vld_vst_addr.c      | 257 ---------------------
 3 files changed, 276 insertions(+), 257 deletions(-)
 create mode 100644 gcc/testsuite/gcc.target/powerpc/altivec_vld_vst_addr-1.c
 create mode 100644 gcc/testsuite/gcc.target/powerpc/altivec_vld_vst_addr-2.c
 delete mode 100644 gcc/testsuite/gcc.target/powerpc/altivec_vld_vst_addr.c

diff --git a/gcc/testsuite/gcc.target/powerpc/altivec_vld_vst_addr-1.c b/gcc/testsuite/gcc.target/powerpc/altivec_vld_vst_addr-1.c
new file mode 100644
index 0000000..eb6d1eb
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/altivec_vld_vst_addr-1.c
@@ -0,0 +1,184 @@
+/* { dg-require-effective-target powerpc_altivec_ok } */
+/* { dg-options "-maltivec" } */
+
+/* Test vec_ld and vec_st can support both scalar and vector
+   type address points, the list is:
+     - address of unsigned char/short/int
+     - address of signed char/short/int
+     - address of float
+     - address of vector unsigned char/short/int
+     - address of vector signed char/short/int
+     - address of vector float */
+#include <altivec.h>
+
+/* Test vec_ld can allow scalar and vector type address. */
+vector unsigned char
+test_vld_scalar_uc (const unsigned char *address)
+{
+  return __builtin_vec_ld (0, address);
+}
+
+vector unsigned short
+test_vld_scalar_us (const unsigned short *address)
+{
+  return __builtin_vec_ld (0, address);
+}
+
+vector unsigned int
+test_vld_scalar_ui (const unsigned int *address)
+{
+  return __builtin_vec_ld (0, address);
+}
+
+vector signed char
+test_vld_scalar_sc (const signed char *address)
+{
+  return __builtin_vec_ld (0, address);
+}
+
+vector signed short
+test_vld_scalar_ss (const signed short *address)
+{
+  return __builtin_vec_ld (0, address);
+}
+
+vector signed int
+test_vld_scalar_si (const signed int *address)
+{
+  return __builtin_vec_ld (0, address);
+}
+
+vector float
+test_vld_scalar_f (const float *address)
+{
+  return __builtin_vec_ld (0, address);
+}
+
+vector unsigned char
+test_vld_vector_uc (const vector unsigned char *address)
+{
+  return __builtin_vec_ld (0, address);
+}
+
+vector unsigned short
+test_vld_vector_us (const vector unsigned short *address)
+{
+  return __builtin_vec_ld (0, address);
+}
+
+vector unsigned int
+test_vld_vector_ui (const vector unsigned int *address)
+{
+  return __builtin_vec_ld (0, address);
+}
+
+vector signed char
+test_vld_vector_sc (const vector signed char *address)
+{
+  return __builtin_vec_ld (0, address);
+}
+
+vector signed short
+test_vld_vector_ss (const vector signed short *address)
+{
+  return __builtin_vec_ld (0, address);
+}
+
+vector signed int
+test_vld_vector_si (const vector signed int *address)
+{
+  return __builtin_vec_ld (0, address);
+}
+
+vector float
+test_vld_vector_f (const vector float *address)
+{
+  return __builtin_vec_ld (0, address);
+}
+
+/* Test vec_st can allow scalar and vector type address. */
+
+void
+test_vst_scalar_uc (vector unsigned char v, unsigned char *address)
+{
+  __builtin_vec_st (v, 0, address);
+}
+
+void
+test_vst_scalar_us (vector unsigned short v, unsigned short *address)
+{
+  __builtin_vec_st (v, 0, address);
+}
+
+void
+test_vst_scalar_ui (vector unsigned int v, unsigned int *address)
+{
+  __builtin_vec_st (v, 0, address);
+}
+
+void
+test_vst_scalar_sc (vector signed char v, signed char *address)
+{
+  __builtin_vec_st (v, 0, address);
+}
+
+void
+test_vst_scalar_ss (vector signed short v, signed short *address)
+{
+  __builtin_vec_st (v, 0, address);
+}
+
+void
+test_vst_scalar_si (vector signed int v, signed int *address)
+{
+  __builtin_vec_st (v, 0, address);
+}
+
+void
+test_vst_scalar_f (vector float v, float *address)
+{
+  __builtin_vec_st (v, 0, address);
+}
+
+void
+test_vst_vector_uc (vector unsigned char v, vector unsigned char *address)
+{
+  __builtin_vec_st (v, 0, address);
+}
+
+void
+test_vst_vector_us (vector unsigned short v, vector unsigned short *address)
+{
+  __builtin_vec_st (v, 0, address);
+}
+
+void
+test_vst_vector_ui (vector unsigned int v, vector unsigned int *address)
+{
+  __builtin_vec_st (v, 0, address);
+}
+
+void
+test_vst_vector_sc (vector signed char v, vector signed char *address)
+{
+  __builtin_vec_st (v, 0, address);
+}
+
+void
+test_vst_vector_ss (vector signed short v, vector signed short *address)
+{
+  __builtin_vec_st (v, 0, address);
+}
+
+void
+test_vst_vector_si (vector signed int v, vector signed int *address)
+{
+  __builtin_vec_st (v, 0, address);
+}
+
+void
+test_vst_vector_f (vector float v, vector float *address)
+{
+  __builtin_vec_st (v, 0, address);
+}
+
diff --git a/gcc/testsuite/gcc.target/powerpc/altivec_vld_vst_addr-2.c b/gcc/testsuite/gcc.target/powerpc/altivec_vld_vst_addr-2.c
new file mode 100644
index 0000000..aecccd0
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/altivec_vld_vst_addr-2.c
@@ -0,0 +1,92 @@
+/* { dg-require-effective-target powerpc_vsx_ok } */
+/* { dg-options "-mvsx" } */
+
+/* Note that vector long long and vector double type require vsx support. */
+
+/* Test vec_ld and vec_st can support both scalar and vector
+   type address points, the list is:
+     - address of unsigned long long
+     - address of signed long long
+     - address of double
+     - address of vector unsigned long long
+     - address of vector signed long long
+     - address of vector double */
+#include <altivec.h>
+
+/* Test vec_ld can allow scalar and vector type address. */
+
+vector unsigned long long
+test_vld_scalar_ul (const unsigned long long *address)
+{
+  return __builtin_vec_ld (0, address);
+}
+
+vector signed long long
+test_vld_scalar_sl (const signed long long *address)
+{
+  return __builtin_vec_ld (0, address);
+}
+
+vector double
+test_vld_scalar_d (const double *address)
+{
+  return __builtin_vec_ld (0, address);
+}
+
+vector unsigned long long
+test_vld_vector_ul (const vector unsigned long long *address)
+{
+  return __builtin_vec_ld (0, address);
+}
+
+vector signed long long
+test_vld_vector_sl (const vector signed long long *address)
+{
+  return __builtin_vec_ld (0, address);
+}
+
+vector double
+test_vld_vector_d (const vector double *address)
+{
+  return __builtin_vec_ld (0, address);
+}
+
+/* Test vec_st can allow scalar and vector type address. */
+
+void
+test_vst_scalar_ul (vector unsigned long long v, unsigned long long *address)
+{
+  __builtin_vec_st (v, 0, address);
+}
+
+void
+test_vst_scalar_sl (vector signed long long v, signed long long *address)
+{
+  __builtin_vec_st (v, 0, address);
+}
+
+void
+test_vst_scalar_d (vector double v, double *address)
+{
+  __builtin_vec_st (v, 0, address);
+}
+
+void
+test_vst_vector_ul (vector unsigned long long v,
+		    vector unsigned long long *address)
+{
+  __builtin_vec_st (v, 0, address);
+}
+
+void
+test_vst_vector_sl (vector signed long long v, vector signed long long *address)
+{
+  __builtin_vec_st (v, 0, address);
+}
+
+void
+test_vst_vector_d (vector double v, vector double *address)
+{
+  __builtin_vec_st (v, 0, address);
+}
+
diff --git a/gcc/testsuite/gcc.target/powerpc/altivec_vld_vst_addr.c b/gcc/testsuite/gcc.target/powerpc/altivec_vld_vst_addr.c
deleted file mode 100644
index bd24864..0000000
--- a/gcc/testsuite/gcc.target/powerpc/altivec_vld_vst_addr.c
+++ /dev/null
@@ -1,257 +0,0 @@
-/* { dg-require-effective-target powerpc_altivec_ok } */
-/* { dg-options "-maltivec" } */
-
-/* Test vec_ld and vec_st can support both scalar and vector
-   type address points, the list is:
-     - address of vector unsigned char/short/int/long long
-     - address of vector signed char/short/int/long long
-     - address of vector double/float
-     - address of unsigned char/short/int/long long
-     - address of signed char/short/int/long long
-     - address of double/float */
-#include <altivec.h>
-
-/* Test vec_ld can allow scalar and vector type address. */
-vector unsigned char
-test_vld_scalar_uc (const unsigned char *address)
-{
-  return __builtin_vec_ld (0, address);
-}
-
-vector unsigned short
-test_vld_scalar_us (const unsigned short *address)
-{
-  return __builtin_vec_ld (0, address);
-}
-
-vector unsigned int
-test_vld_scalar_ui (const unsigned int *address)
-{
-  return __builtin_vec_ld (0, address);
-}
-
-vector unsigned long long
-test_vld_scalar_ul (const unsigned long long *address)
-{
-  return __builtin_vec_ld (0, address);
-}
-
-vector signed char
-test_vld_scalar_sc (const signed char *address)
-{
-  return __builtin_vec_ld (0, address);
-}
-
-vector signed short
-test_vld_scalar_ss (const signed short *address)
-{
-  return __builtin_vec_ld (0, address);
-}
-
-vector signed int
-test_vld_scalar_si (const signed int *address)
-{
-  return __builtin_vec_ld (0, address);
-}
-
-vector signed long long
-test_vld_scalar_sl (const signed long long *address)
-{
-  return __builtin_vec_ld (0, address);
-}
-
-vector unsigned char
-test_vld_vector_uc (const vector unsigned char *address)
-{
-  return __builtin_vec_ld (0, address);
-}
-
-vector unsigned short
-test_vld_vector_us (const vector unsigned short *address)
-{
-  return __builtin_vec_ld (0, address);
-}
-
-vector unsigned int
-test_vld_vector_ui (const vector unsigned int *address)
-{
-  return __builtin_vec_ld (0, address);
-}
-
-vector unsigned long long
-test_vld_vector_ul (const vector unsigned long long *address)
-{
-  return __builtin_vec_ld (0, address);
-}
-
-vector signed char
-test_vld_vector_sc (const vector signed char *address)
-{
-  return __builtin_vec_ld (0, address);
-}
-
-vector signed short
-test_vld_vector_ss (const vector signed short *address)
-{
-  return __builtin_vec_ld (0, address);
-}
-
-vector signed int
-test_vld_vector_si (const vector signed int *address)
-{
-  return __builtin_vec_ld (0, address);
-}
-
-vector signed long long
-test_vld_vector_sl (const vector signed long long *address)
-{
-  return __builtin_vec_ld (0, address);
-}
-
-vector float
-test_vld_scalar_f (const float *address)
-{
-  return __builtin_vec_ld (0, address);
-}
-
-vector double
-test_vld_scalar_d (const double *address)
-{
-  return __builtin_vec_ld (0, address);
-}
-
-vector float
-test_vld_vector_f (const vector float *address)
-{
-  return __builtin_vec_ld (0, address);
-}
-
-vector double
-test_vld_vector_d (const vector double *address)
-{
-  return __builtin_vec_ld (0, address);
-}
-
-/* Test vec_st can allow scalar and vector type address. */
-
-void
-test_vst_scalar_uc (vector unsigned char v, unsigned char *address)
-{
-  __builtin_vec_st (v, 0, address);
-}
-
-void
-test_vst_scalar_us (vector unsigned short v, unsigned short *address)
-{
-  __builtin_vec_st (v, 0, address);
-}
-
-void
-test_vst_scalar_ui (vector unsigned int v, unsigned int *address)
-{
-  __builtin_vec_st (v, 0, address);
-}
-
-void
-test_vst_scalar_ul (vector unsigned long long v, unsigned long long *address)
-{
-  __builtin_vec_st (v, 0, address);
-}
-
-void
-test_vst_scalar_sc (vector signed char v, signed char *address)
-{
-  __builtin_vec_st (v, 0, address);
-}
-
-void
-test_vst_scalar_ss (vector signed short v, signed short *address)
-{
-  __builtin_vec_st (v, 0, address);
-}
-
-void
-test_vst_scalar_si (vector signed int v, signed int *address)
-{
-  __builtin_vec_st (v, 0, address);
-}
-
-void
-test_vst_scalar_sl (vector signed long long v, signed long long *address)
-{
-  __builtin_vec_st (v, 0, address);
-}
-
-void
-test_vst_vector_uc (vector unsigned char v, vector unsigned char *address)
-{
-  __builtin_vec_st (v, 0, address);
-}
-
-void
-test_vst_vector_us (vector unsigned short v, vector unsigned short *address)
-{
-  __builtin_vec_st (v, 0, address);
-}
-
-void
-test_vst_vector_ui (vector unsigned int v, vector unsigned int *address)
-{
-  __builtin_vec_st (v, 0, address);
-}
-
-void
-test_vst_vector_ul (vector unsigned long long v,
-		    vector unsigned long long *address)
-{
-  __builtin_vec_st (v, 0, address);
-}
-
-void
-test_vst_vector_sc (vector signed char v, vector signed char *address)
-{
-  __builtin_vec_st (v, 0, address);
-}
-
-void
-test_vst_vector_ss (vector signed short v, vector signed short *address)
-{
-  __builtin_vec_st (v, 0, address);
-}
-
-void
-test_vst_vector_si (vector signed int v, vector signed int *address)
-{
-  __builtin_vec_st (v, 0, address);
-}
-
-void
-test_vst_vector_sl (vector signed long long v, vector signed long long *address)
-{
-  __builtin_vec_st (v, 0, address);
-}
-
-void
-test_vst_scalar_f (vector float v, float *address)
-{
-  __builtin_vec_st (v, 0, address);
-}
-
-void
-test_vst_vector_f (vector float v, vector float *address)
-{
-  __builtin_vec_st (v, 0, address);
-}
-
-void
-test_vst_scalar_d (vector double v, double *address)
-{
-  __builtin_vec_st (v, 0, address);
-}
-
-void
-test_vst_vector_d (vector double v, vector double *address)
-{
-  __builtin_vec_st (v, 0, address);
-}
-
-- 
2.7.4


on 2019/1/19 脡脧脦莽9:04, Segher Boessenkool wrote:
> On Fri, Jan 18, 2019 at 11:15:12PM +0100, Jakub Jelinek wrote:
>> On Wed, Jan 16, 2019 at 10:08:46PM +0800, Kewen.Lin wrote:
>>> 	* gcc.target/powerpc/altivec_vld_vst_addr.c: New test.
>>
>> This test fails on powerpc64-linux, both with -m32 and -m64:
> 
> I missed that.  Thanks Jakub.
> 
> Kewen, please split the "vector long long" tests to a separate testcase,
> and use -mvsx and powerpc_vsx_ok there (instead of -maltivec and
> powerpc_altivec_ok).
> 
> 
> Segher
> 

  reply	other threads:[~2019-01-19 13:27 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-16 14:09 [PATCH] " Kewen.Lin
2019-01-16 17:08 ` Segher Boessenkool
2019-01-18 22:15 ` Jakub Jelinek
2019-01-19  1:05   ` Segher Boessenkool
2019-01-19 13:27     ` Kewen.Lin [this message]
2019-01-19 22:23       ` [PATCH v2] " Segher Boessenkool

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=15073e6c-f1dd-43cd-e470-dbdb5b780040@linux.vnet.ibm.com \
    --to=linkw@linux.vnet.ibm.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=jakub@redhat.com \
    --cc=segher@kernel.crashing.org \
    --cc=wschmidt@linux.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).