public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH, i386]: Add _mm_loadu_si64 and _mm_storeu_si64 intrinsics.
@ 2019-03-08 10:07 Uros Bizjak
  2019-03-08 10:36 ` H.J. Lu
  0 siblings, 1 reply; 2+ messages in thread
From: Uros Bizjak @ 2019-03-08 10:07 UTC (permalink / raw)
  To: gcc-patches; +Cc: H. J. Lu

[-- Attachment #1: Type: text/plain, Size: 613 bytes --]

Attached patch adds missing _mm_loadu_si64 and _mm_storeu_si64 intrinsics.

2019-03-08  Uroš Bizjak  <ubizjak@gmail.com>

    PR target/68924
    PR target/78782
    PR target/87558
    * config/i386/emmintrin.h (_mm_loadu_si64): New intrinsic.
    (_mm_storeu_si64): Ditto.

testsuite/ChangeLog:

2019-03-08  Uroš Bizjak  <ubizjak@gmail.com>

    PR target/68924
    PR target/78782
    PR target/87558
    * gcc.target/i386/pr78782.c: New test.
    * gcc.target/i386/pr87558.c: Ditto.

Bootstrapped and regression tested on x86_64-linux-gnu {,-m32}.

HJ, are these changes OK?

Uros.

[-- Attachment #2: 0001-x86-Add-_mm_loadu_si64-and-_mm_storeu_si64-intrinsic.patch --]
[-- Type: text/x-patch, Size: 2865 bytes --]

From 3441130f8c6115cada8fe0e235deb2860d4f0088 Mon Sep 17 00:00:00 2001
From: Uros Bizjak <ubizjak@gmail.com>
Date: Fri, 8 Mar 2019 10:55:36 +0100
Subject: [PATCH] x86: Add _mm_loadu_si64 and _mm_storeu_si64 intrinsics.
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

2019-03-08  Uroš Bizjak  <ubizjak@gmail.com>

	PR target/68924
	PR target/78782
	PR target/87558
	* config/i386/emmintrin.h (_mm_loadu_si64): New intrinsic.
	(_mm_storeu_si64): Ditto.

testsuite/ChangeLog:

2019-03-08  Uroš Bizjak  <ubizjak@gmail.com>

	PR target/68924
	PR target/78782
	PR target/87558
	* gcc.target/i386/pr78782.c: New test.
	* gcc.target/i386/pr87558.c: Ditto.
---
 gcc/config/i386/emmintrin.h             | 12 ++++++++++++
 gcc/testsuite/gcc.target/i386/pr78782.c |  9 +++++++++
 gcc/testsuite/gcc.target/i386/pr87558.c |  9 +++++++++
 3 files changed, 30 insertions(+)
 create mode 100644 gcc/testsuite/gcc.target/i386/pr78782.c
 create mode 100644 gcc/testsuite/gcc.target/i386/pr87558.c

diff --git a/gcc/config/i386/emmintrin.h b/gcc/config/i386/emmintrin.h
index d9bc3f7f28f6..f9e7b33b0ddf 100644
--- a/gcc/config/i386/emmintrin.h
+++ b/gcc/config/i386/emmintrin.h
@@ -709,6 +709,12 @@ _mm_loadl_epi64 (__m128i_u const *__P)
   return _mm_set_epi64 ((__m64)0LL, *(__m64_u *)__P);
 }
 
+extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_loadu_si64 (void const *__P)
+{
+  return _mm_loadl_epi64 ((__m128i_u *)__P);
+}
+
 extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _mm_store_si128 (__m128i *__P, __m128i __B)
 {
@@ -727,6 +733,12 @@ _mm_storel_epi64 (__m128i_u *__P, __m128i __B)
   *(__m64_u *)__P = (__m64) ((__v2di)__B)[0];
 }
 
+extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+_mm_storeu_si64 (void *__P, __m128i __B)
+{
+  _mm_storel_epi64 ((__m128i_u *)__P, __B);
+}
+
 extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
 _mm_movepi64_pi64 (__m128i __B)
 {
diff --git a/gcc/testsuite/gcc.target/i386/pr78782.c b/gcc/testsuite/gcc.target/i386/pr78782.c
new file mode 100644
index 000000000000..e91d953dba92
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr78782.c
@@ -0,0 +1,9 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -msse2" } */
+
+#include <emmintrin.h>
+
+__m128i foo (unsigned char *p)
+{
+  return _mm_loadu_si64 ((void *)p);
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr87558.c b/gcc/testsuite/gcc.target/i386/pr87558.c
new file mode 100644
index 000000000000..c210507d04ff
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr87558.c
@@ -0,0 +1,9 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -msse2" } */
+
+#include <emmintrin.h>
+
+void foo (unsigned char *p, __m128i x)
+{
+  _mm_storeu_si64 ((void *)p, x);
+}
-- 
2.20.1


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH, i386]: Add _mm_loadu_si64 and _mm_storeu_si64 intrinsics.
  2019-03-08 10:07 [PATCH, i386]: Add _mm_loadu_si64 and _mm_storeu_si64 intrinsics Uros Bizjak
@ 2019-03-08 10:36 ` H.J. Lu
  0 siblings, 0 replies; 2+ messages in thread
From: H.J. Lu @ 2019-03-08 10:36 UTC (permalink / raw)
  To: Uros Bizjak; +Cc: GCC Patches

Looks good to me.

Thanks.

On Fri, Mar 8, 2019, 6:04 PM Uros Bizjak <ubizjak@gmail.com> wrote:

> Attached patch adds missing _mm_loadu_si64 and _mm_storeu_si64 intrinsics.
>
> 2019-03-08  Uroš Bizjak  <ubizjak@gmail.com>
>
>     PR target/68924
>     PR target/78782
>     PR target/87558
>     * config/i386/emmintrin.h (_mm_loadu_si64): New intrinsic.
>     (_mm_storeu_si64): Ditto.
>
> testsuite/ChangeLog:
>
> 2019-03-08  Uroš Bizjak  <ubizjak@gmail.com>
>
>     PR target/68924
>     PR target/78782
>     PR target/87558
>     * gcc.target/i386/pr78782.c: New test.
>     * gcc.target/i386/pr87558.c: Ditto.
>
> Bootstrapped and regression tested on x86_64-linux-gnu {,-m32}.
>
> HJ, are these changes OK?
>
> Uros.
>

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2019-03-08 10:18 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-03-08 10:07 [PATCH, i386]: Add _mm_loadu_si64 and _mm_storeu_si64 intrinsics Uros Bizjak
2019-03-08 10:36 ` H.J. Lu

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).