]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
backport: re PR target/87550 (Intrinsics for rdpmc (__rdpmc, __builtin_ia32_rdpmc...
authorJakub Jelinek <jakub@redhat.com>
Fri, 12 Oct 2018 17:34:07 +0000 (19:34 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Fri, 12 Oct 2018 17:34:07 +0000 (19:34 +0200)
Backported from mainline
2018-10-10  Jakub Jelinek  <jakub@redhat.com>

PR target/87550
* config/i386/i386.c (bdesc_args): Move IX86_BUILTIN_RDPMC
from here to ...
(bdesc_special_args): ... here.

* gcc.target/i386/pr87550.c: New test.

From-SVN: r265122

gcc/ChangeLog
gcc/config/i386/i386.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/i386/pr87550.c [new file with mode: 0644]

index d579428c62c037b2c181c7afa32fd7a45ef0807f..b764bdd47d4aa5a75bb7aa0b12085292aa1765d1 100644 (file)
@@ -1,6 +1,13 @@
 2018-10-12  Jakub Jelinek  <jakub@redhat.com>
 
        Backported from mainline
+       2018-10-10  Jakub Jelinek  <jakub@redhat.com>
+
+       PR target/87550
+       * config/i386/i386.c (bdesc_args): Move IX86_BUILTIN_RDPMC
+       from here to ...
+       (bdesc_special_args): ... here.
+
        2018-09-12  Jakub Jelinek  <jakub@redhat.com>
 
        PR middle-end/87248
index e9935eb012685eb31debe065ec79a8a84463f356..35ce385e040d653ecd95fb9a0e5fc73c60550051 100644 (file)
@@ -33509,6 +33509,7 @@ static const struct builtin_description bdesc_special_args[] =
 {
   { 0, CODE_FOR_nothing, "__builtin_ia32_rdtsc", IX86_BUILTIN_RDTSC, UNKNOWN, (int) UINT64_FTYPE_VOID },
   { 0, CODE_FOR_nothing, "__builtin_ia32_rdtscp", IX86_BUILTIN_RDTSCP, UNKNOWN, (int) UINT64_FTYPE_PUNSIGNED },
+  { 0, CODE_FOR_nothing, "__builtin_ia32_rdpmc", IX86_BUILTIN_RDPMC, UNKNOWN, (int) UINT64_FTYPE_INT },
   { 0, CODE_FOR_pause, "__builtin_ia32_pause", IX86_BUILTIN_PAUSE, UNKNOWN, (int) VOID_FTYPE_VOID },
 
   /* 80387 (for use internally for atomic compound assignment).  */
@@ -33806,7 +33807,6 @@ static const struct builtin_description bdesc_args[] =
 {
   { 0, CODE_FOR_bsr, "__builtin_ia32_bsrsi", IX86_BUILTIN_BSRSI, UNKNOWN, (int) INT_FTYPE_INT },
   { OPTION_MASK_ISA_64BIT, CODE_FOR_bsr_rex64, "__builtin_ia32_bsrdi", IX86_BUILTIN_BSRDI, UNKNOWN, (int) INT64_FTYPE_INT64 },
-  { 0, CODE_FOR_nothing, "__builtin_ia32_rdpmc", IX86_BUILTIN_RDPMC, UNKNOWN, (int) UINT64_FTYPE_INT },
   { 0, CODE_FOR_rotlqi3, "__builtin_ia32_rolqi", IX86_BUILTIN_ROLQI, UNKNOWN, (int) UINT8_FTYPE_UINT8_INT },
   { 0, CODE_FOR_rotlhi3, "__builtin_ia32_rolhi", IX86_BUILTIN_ROLHI, UNKNOWN, (int) UINT16_FTYPE_UINT16_INT },
   { 0, CODE_FOR_rotrqi3, "__builtin_ia32_rorqi", IX86_BUILTIN_RORQI, UNKNOWN, (int) UINT8_FTYPE_UINT8_INT },
index af7055fcbb3245857d0faa667a3f3936802d88b0..3c3ff112cd21f598871f3c89a5a456c3e3630762 100644 (file)
@@ -1,6 +1,11 @@
 2018-10-12  Jakub Jelinek  <jakub@redhat.com>
 
        Backported from mainline
+       2018-10-10  Jakub Jelinek  <jakub@redhat.com>
+
+       PR target/87550
+       * gcc.target/i386/pr87550.c: New test.
+
        2018-09-12  Jakub Jelinek  <jakub@redhat.com>
 
        PR middle-end/87248
diff --git a/gcc/testsuite/gcc.target/i386/pr87550.c b/gcc/testsuite/gcc.target/i386/pr87550.c
new file mode 100644 (file)
index 0000000..ef77e32
--- /dev/null
@@ -0,0 +1,21 @@
+/* PR target/87550 */
+/* { dg-do compile } */
+/* { dg-options "-O2" } */
+
+#include <x86intrin.h>
+
+int
+foo (int x)
+{
+  return __rdtsc () + __rdtsc ();
+}
+
+/* { dg-final { scan-assembler-times "\trdtsc\[\n\r]" 2 } } */
+
+int
+bar (int x)
+{
+  return __rdpmc (0) + __rdpmc (0);
+}
+
+/* { dg-final { scan-assembler-times "\trdpmc\[\n\r]" 2 } } */