]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
x86: Always return pseudo register in ix86_gen_scratch_sse_rtx
authorH.J. Lu <hjl.tools@gmail.com>
Sat, 26 Feb 2022 22:17:23 +0000 (14:17 -0800)
committerH.J. Lu <hjl.tools@gmail.com>
Fri, 4 Mar 2022 03:02:23 +0000 (19:02 -0800)
ix86_gen_scratch_sse_rtx returns XMM7/XMM15/XMM31 as a scratch vector
register to prevent RTL optimizers from removing vector register.  It
introduces a conflict with explicit XMM7/XMM15/XMM31 usage and when it
is called by RTL optimizers, it may introduce conflicting usages of
XMM7/XMM15/XMM31.

Change ix86_gen_scratch_sse_rtx to always return a pseudo register and
xfail x86 tests which are optimized with a hard scratch register.

gcc/

PR target/104704
* config/i386/i386.cc (ix86_gen_scratch_sse_rtx): Always return
a pseudo register.

gcc/testsuite/

PR target/104704
* gcc.target/i386/incoming-11.c: Xfail.
* gcc.target/i386/pieces-memset-3.c: Likewise.
* gcc.target/i386/pieces-memset-37.c: Likewise.
* gcc.target/i386/pieces-memset-39.c: Likewise.
* gcc.target/i386/pieces-memset-46.c: Likewise.
* gcc.target/i386/pieces-memset-47.c: Likewise.
* gcc.target/i386/pieces-memset-48.c: Likewise.
* gcc.target/i386/pr90773-5.c: Likewise.
* gcc.target/i386/pr90773-14.c: Likewise.
* gcc.target/i386/pr90773-17.c: Likewise.
* gcc.target/i386/pr100865-8a.c: Likewise.
* gcc.target/i386/pr100865-8c.c: Likewise.
* gcc.target/i386/pr100865-9c.c: Likewise.
* gcc.target/i386/pieces-memset-21.c: Always expect vzeroupper.
* gcc.target/i386/pr82941-1.c: Likewise.
* gcc.target/i386/pr82942-1.c: Likewise.
* gcc.target/i386/pr82990-1.c: Likewise.
* gcc.target/i386/pr82990-3.c: Likewise.
* gcc.target/i386/pr82990-5.c: Likewise.
* gcc.target/i386/pr100865-11b.c: Expect vmovdqa instead of
vmovdqa64.
* gcc.target/i386/pr100865-12b.c: Likewise.
* gcc.target/i386/pr100865-8b.c: Likewise.
* gcc.target/i386/pr100865-9b.c: Likewise.
* gcc.target/i386/pr104704-1.c: New test.
* gcc.target/i386/pr104704-2.c: Likewise.
* gcc.target/i386/pr104704-3.c: Likewise.
* gcc.target/i386/pr104704-4.c: Likewise.
* gcc.target/i386/pr104704-5.c: Likewise.
* gcc.target/i386/pr104704-6.c: Likewise.

30 files changed:
gcc/config/i386/i386.cc
gcc/testsuite/gcc.target/i386/incoming-11.c
gcc/testsuite/gcc.target/i386/pieces-memset-21.c
gcc/testsuite/gcc.target/i386/pieces-memset-3.c
gcc/testsuite/gcc.target/i386/pieces-memset-37.c
gcc/testsuite/gcc.target/i386/pieces-memset-39.c
gcc/testsuite/gcc.target/i386/pieces-memset-46.c
gcc/testsuite/gcc.target/i386/pieces-memset-47.c
gcc/testsuite/gcc.target/i386/pieces-memset-48.c
gcc/testsuite/gcc.target/i386/pr100865-11b.c
gcc/testsuite/gcc.target/i386/pr100865-12b.c
gcc/testsuite/gcc.target/i386/pr100865-8a.c
gcc/testsuite/gcc.target/i386/pr100865-8b.c
gcc/testsuite/gcc.target/i386/pr100865-8c.c
gcc/testsuite/gcc.target/i386/pr100865-9b.c
gcc/testsuite/gcc.target/i386/pr100865-9c.c
gcc/testsuite/gcc.target/i386/pr104704-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr104704-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr104704-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr104704-4.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr104704-5.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr104704-6.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/pr82941-1.c
gcc/testsuite/gcc.target/i386/pr82942-1.c
gcc/testsuite/gcc.target/i386/pr82990-1.c
gcc/testsuite/gcc.target/i386/pr82990-3.c
gcc/testsuite/gcc.target/i386/pr82990-5.c
gcc/testsuite/gcc.target/i386/pr90773-14.c
gcc/testsuite/gcc.target/i386/pr90773-17.c
gcc/testsuite/gcc.target/i386/pr90773-5.c

index b2bf90576d53ce2f6a66cf1fecdb1fa5c44bf081..95219902694aad8ab42db96c8db5b4052685b138 100644 (file)
@@ -23786,24 +23786,7 @@ ix86_optab_supported_p (int op, machine_mode mode1, machine_mode,
 rtx
 ix86_gen_scratch_sse_rtx (machine_mode mode)
 {
-  if (TARGET_SSE && !lra_in_progress)
-    {
-      unsigned int regno;
-      if (TARGET_64BIT)
-       {
-         /* In 64-bit mode, use XMM31 to avoid vzeroupper and always
-            use XMM31 for CSE.  */
-         if (ix86_hard_regno_mode_ok (LAST_EXT_REX_SSE_REG, mode))
-           regno = LAST_EXT_REX_SSE_REG;
-         else
-           regno = LAST_REX_SSE_REG;
-       }
-      else
-       regno = LAST_SSE_REG;
-      return gen_rtx_REG (mode, regno);
-    }
-  else
-    return gen_reg_rtx (mode);
+  return gen_reg_rtx (mode);
 }
 
 /* Address space support.
index 4b822684b88cc6a0a0eb1718bfaf65df13a0cae9..a06fdee477d7740971c3e4476c6a371b56740a43 100644 (file)
@@ -15,4 +15,4 @@ void f()
        for (i = 0; i < 100; i++) q[i] = 1;
 }
 
-/* { dg-final { scan-assembler-not "andl\[\\t \]*\\$-16,\[\\t \]*%esp" } } */
+/* { dg-final { scan-assembler-not "andl\[\\t \]*\\$-16,\[\\t \]*%esp"  { xfail *-*-* } } } */
index 4e2a7407c8a8c06e3b3a6162ebe9fdbaa588cebe..a04f7eb55c7806b7f79e9b8b4dbebfb9c80f37eb 100644 (file)
@@ -11,8 +11,7 @@ foo (void)
 
 /* { dg-final { scan-assembler-times "vpxor(?:d|)\[ \\t\]+\[^\n\]*%xmm" 1 } } */
 /* { dg-final { scan-assembler-times "vmovdqu(?:64|8)\[ \\t\]+\[^\n\]*%zmm" 1 } } */
-/* { dg-final { scan-assembler-not "vzeroupper" { target { ! ia32 } } } } */
-/* { dg-final { scan-assembler "vzeroupper" { target ia32 } } } */
+/* { dg-final { scan-assembler "vzeroupper" } } */
 /* No need to dynamically realign the stack here.  */
 /* { dg-final { scan-assembler-not "and\[^\n\r]*%\[re\]sp" } } */
 /* Nor use a frame pointer.  */
index 2aed6dbc68e35eafe11ef805b5c5b34639d2cce6..765441a7c4a40d73b6e233dcd11f1656bf82aa26 100644 (file)
@@ -13,6 +13,6 @@ foo (int x)
 /* { dg-final { scan-assembler-times "vinserti64x4\[ \\t\]+\[^\n\]*%zmm" 1 } } */
 /* { dg-final { scan-assembler-times "vmovdqu64\[ \\t\]+\[^\n\]*%zmm" 1 } } */
 /* No need to dynamically realign the stack here.  */
-/* { dg-final { scan-assembler-not "and\[^\n\r]*%\[re\]sp" } } */
+/* { dg-final { scan-assembler-not "and\[^\n\r]*%\[re\]sp" { xfail *-*-* } } } */
 /* Nor use a frame pointer.  */
-/* { dg-final { scan-assembler-not "%\[re\]bp" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-not "%\[re\]bp" { xfail *-*-* } } } */
index fd09bd153ce38f457c58e12360bbc28649b8847e..0c5056be54d88ae6ffa1a943238ef3ca1cfcd596 100644 (file)
@@ -10,6 +10,6 @@ foo (int a1, int a2, int a3, int a4, int a5, int a6, int x, char *dst)
 /* { dg-final { scan-assembler-times "vpbroadcastb\[ \\t\]+\[^\n\]*%ymm" 1 } } */
 /* { dg-final { scan-assembler-times "vmovdqu\[ \\t\]+\[^\n\]*%ymm" 2 } } */
 /* No need to dynamically realign the stack here.  */
-/* { dg-final { scan-assembler-not "and\[^\n\r]*%\[re\]sp" } } */
+/* { dg-final { scan-assembler-not "and\[^\n\r]*%\[re\]sp" { xfail *-*-* } } } */
 /* Nor use a frame pointer.  */
-/* { dg-final { scan-assembler-not "%\[re\]bp" } } */
+/* { dg-final { scan-assembler-not "%\[re\]bp" { xfail *-*-* } } } */
index 0ed88b274bd4742c0b27c6985ac1915ea1642897..e33644c2f10e969eaa96d92bba4519838a9cb0c4 100644 (file)
@@ -11,6 +11,6 @@ foo (int a1, int a2, int a3, int a4, int a5, int a6, int x, char *dst)
 /* { dg-final { scan-assembler-not "vinserti64x4" } } */
 /* { dg-final { scan-assembler-times "vmovdqu8\[ \\t\]+\[^\n\]*%zmm" 1 } } */
 /* No need to dynamically realign the stack here.  */
-/* { dg-final { scan-assembler-not "and\[^\n\r]*%\[re\]sp" } } */
+/* { dg-final { scan-assembler-not "and\[^\n\r]*%\[re\]sp" { xfail *-*-* } } } */
 /* Nor use a frame pointer.  */
-/* { dg-final { scan-assembler-not "%\[re\]bp" } } */
+/* { dg-final { scan-assembler-not "%\[re\]bp" { xfail *-*-* } } } */
index ab7894aa2e6e3e49945b43b370491a06a07ceef6..be1b054eed2b9ce8b2b53862847901ecaa7209e7 100644 (file)
@@ -10,7 +10,7 @@ foo (void)
 }
 
 /* { dg-final { scan-assembler-times "vmovdqu8\[ \\t\]+\[^\n\]*%zmm" 1 } } */
-/* { dg-final { scan-assembler-times "vmovw\[ \\t\]+\[^\n\]*%xmm" 1 } } */
+/* { dg-final { scan-assembler-times "vmovw\[ \\t\]+\[^\n\]*%xmm" 1 { xfail *-*-* } } } */
 /* No need to dynamically realign the stack here.  */
 /* { dg-final { scan-assembler-not "and\[^\n\r]*%\[re\]sp" } } */
 /* Nor use a frame pointer.  */
index 8f2c254ad031548f29671dd7e5fd6d82fc9445e1..78d3290c74fb415bdce75b29d662b005be453dce 100644 (file)
@@ -10,7 +10,7 @@ foo (void)
 }
 
 /* { dg-final { scan-assembler-times "vmovdqu(?:8|)\[ \\t\]+\[^\n\]*%xmm" 4 } } */
-/* { dg-final { scan-assembler-times "vmovw\[ \\t\]+\[^\n\]*%xmm" 1 } } */
+/* { dg-final { scan-assembler-times "vmovw\[ \\t\]+\[^\n\]*%xmm" 1 { xfail *-*-* } } } */
 /* No need to dynamically realign the stack here.  */
 /* { dg-final { scan-assembler-not "and\[^\n\r]*%\[re\]sp" } } */
 /* Nor use a frame pointer.  */
index 9a7da962183d5ef33665bf42b8c101bb2b475390..6342dbb91b00ea85733499f957e65bb7a151be9a 100644 (file)
@@ -10,7 +10,7 @@ foo (void)
 }
 
 /* { dg-final { scan-assembler-times "vmovdqu(?:8|)\[ \\t\]+\[^\n\]*%ymm" 2 } } */
-/* { dg-final { scan-assembler-times "vmovw\[ \\t\]+\[^\n\]*%xmm" 1 } } */
+/* { dg-final { scan-assembler-times "vmovw\[ \\t\]+\[^\n\]*%xmm" 1 { xfail *-*-* } } } */
 /* No need to dynamically realign the stack here.  */
 /* { dg-final { scan-assembler-not "and\[^\n\r]*%\[re\]sp" } } */
 /* Nor use a frame pointer.  */
index 7e458e85cdd4a4275de0264c7efa8ff42f044a32..12d55b9a64242a8a033c52ef4ae1416ada50837c 100644 (file)
@@ -5,4 +5,4 @@
 
 /* { dg-final { scan-assembler-times "movabsq" 1 } } */
 /* { dg-final { scan-assembler-times "vpbroadcastq\[\\t \]+%(?:r|e)\[^\n\]*, %xmm\[0-9\]+" 1 } } */
-/* { dg-final { scan-assembler-times "vmovdqa64\[\\t \]%xmm\[0-9\]+, " 16 } } */
+/* { dg-final { scan-assembler-times "vmovdqa\[\\t \]%xmm\[0-9\]+, " 16 } } */
index dee0cfb016a1b9c4394593df9d2ea8dfd49eeca3..63a5629b90c172f68733b7809841a48fd3c5bbec 100644 (file)
@@ -5,4 +5,4 @@
 
 /* { dg-final { scan-assembler-times "movabsq" 1 } } */
 /* { dg-final { scan-assembler-times "vpbroadcastq\[\\t \]+%(?:r|e)\[^\n\]*, %xmm\[0-9\]+" 1 } } */
-/* { dg-final { scan-assembler-times "vmovdqa64\[\\t \]%xmm\[0-9\]+, " 16 } } */
+/* { dg-final { scan-assembler-times "vmovdqa\[\\t \]%xmm\[0-9\]+, " 16 } } */
index 544a14db6f794a89246acc31c5536112d8d007b5..911b14d4a250b29a37a4f7e9b705205687f3992f 100644 (file)
@@ -20,5 +20,5 @@ foo (void)
     array[i] = MK_CONST128_BROADCAST_SIGNED (-45);
 }
 
-/* { dg-final { scan-assembler-times "(?:vpbroadcastd|vpshufd)\[\\t \]+\[^\n\]*, %xmm\[0-9\]+" 1 } } */
+/* { dg-final { scan-assembler-times "(?:vpbroadcastd|vpshufd)\[\\t \]+\[^\n\]*, %xmm\[0-9\]+" 1 { xfail *-*-* } } } */
 /* { dg-final { scan-assembler-times "vmovdqa\[\\t \]%xmm\[0-9\]+, " 16 } } */
index 4b7dd7cee3e3c91e30f5b02b3f81f902efb9e674..99a10ad83bd085f1bc64e786cd7127770025bed7 100644 (file)
@@ -4,4 +4,4 @@
 #include "pr100865-8a.c"
 
 /* { dg-final { scan-assembler-times "vpbroadcastd\[\\t \]+%(?:r|e)\[^\n\]*, %xmm\[0-9\]+" 1 } } */
-/* { dg-final { scan-assembler-times "vmovdqa64\[\\t \]%xmm\[0-9\]+, " 16 } } */
+/* { dg-final { scan-assembler-times "vmovdqa\[\\t \]%xmm\[0-9\]+, " 16 } } */
index efee048861479e4a1f6374502b615b7301d3dc3a..00682edb8c9f727b210ea412d28f3dac44face27 100644 (file)
@@ -3,5 +3,5 @@
 
 #include "pr100865-8a.c"
 
-/* { dg-final { scan-assembler-times "vpshufd\[\\t \]+\[^\n\]*, %xmm\[0-9\]+" 1 } } */
+/* { dg-final { scan-assembler-times "vpshufd\[\\t \]+\[^\n\]*, %xmm\[0-9\]+" 1 { xfail *-*-* } } } */
 /* { dg-final { scan-assembler-times "vmovdqa\[\\t \]%xmm\[0-9\]+, " 16 } } */
index a315dde7c5201dbed98daf6f289d0c296bcb9c65..146962485258e408a6733fc8a29424126164cee6 100644 (file)
@@ -4,4 +4,4 @@
 #include "pr100865-9a.c"
 
 /* { dg-final { scan-assembler-times "vpbroadcastw\[\\t \]+%(?:r|e)\[^\n\]*, %xmm\[0-9\]+" 1 } } */
-/* { dg-final { scan-assembler-times "vmovdqa64\[\\t \]%xmm\[0-9\]+, " 16 } } */
+/* { dg-final { scan-assembler-times "vmovdqa\[\\t \]%xmm\[0-9\]+, " 16 } } */
index e6f25902c1dfbc49eca7d7d72e8f85786239ab2d..8ffcdc1629d3ae15e9609d95c6c4d39f7315dc36 100644 (file)
@@ -3,5 +3,5 @@
 
 #include "pr100865-9a.c"
 
-/* { dg-final { scan-assembler-times "vpshufd\[\\t \]+\[^\n\]*, %xmm\[0-9\]+" 1 } } */
+/* { dg-final { scan-assembler-times "vpshufd\[\\t \]+\[^\n\]*, %xmm\[0-9\]+" 1 { xfail *-*-* } } } */
 /* { dg-final { scan-assembler-times "vmovdqa\[\\t \]%xmm\[0-9\]+, " 16 } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr104704-1.c b/gcc/testsuite/gcc.target/i386/pr104704-1.c
new file mode 100644 (file)
index 0000000..28c499f
--- /dev/null
@@ -0,0 +1,33 @@
+/* { dg-do run { target { ! ia32 } } } */
+/* { dg-options "-O2 -march=x86-64 -mavx512f" } */
+
+#include <immintrin.h>
+
+__m512d y, z;
+
+int i;
+
+__attribute__((noipa))
+int
+do_test (void)
+{
+  register int xmm31 __asm ("xmm31") = i;
+  asm volatile ("" : "+v" (xmm31));
+  z = y;
+  register int xmm2 __asm ("xmm2") = xmm31;
+  asm volatile ("" : "+v" (xmm2));
+  return xmm2;
+}
+
+__attribute__((target("arch=x86-64")))
+int
+main (void)
+{
+ if (__builtin_cpu_supports ("avx512f"))
+   {
+     i = 4;
+     if (do_test () != 4)
+       __builtin_abort ();
+   }
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr104704-2.c b/gcc/testsuite/gcc.target/i386/pr104704-2.c
new file mode 100644 (file)
index 0000000..79b04b2
--- /dev/null
@@ -0,0 +1,33 @@
+/* { dg-do run { target { ! ia32 } } } */
+/* { dg-options "-O2 -march=x86-64 -mavx2" } */
+
+#include <immintrin.h>
+
+__m256d y, z;
+
+int i;
+
+__attribute__((noipa))
+int
+do_test (void)
+{
+  register int xmm15 __asm ("xmm15") = i;
+  asm volatile ("" : "+v" (xmm15));
+  z = y;
+  register int xmm2 __asm ("xmm2") = xmm15;
+  asm volatile ("" : "+v" (xmm2));
+  return xmm2;
+}
+
+__attribute__((target("arch=x86-64")))
+int
+main (void)
+{
+ if (__builtin_cpu_supports ("avx2"))
+   {
+     i = 4;
+     if (do_test () != 4)
+       __builtin_abort ();
+   }
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr104704-3.c b/gcc/testsuite/gcc.target/i386/pr104704-3.c
new file mode 100644 (file)
index 0000000..d0648d8
--- /dev/null
@@ -0,0 +1,33 @@
+/* { dg-do run { target ia32 } } */
+/* { dg-options "-O2 -march=i686 -msse2" } */
+
+#include <immintrin.h>
+
+__m128d y, z;
+
+int i;
+
+__attribute__((noipa))
+int
+do_test (void)
+{
+  register int xmm7 __asm ("xmm7") = i;
+  asm volatile ("" : "+v" (xmm7));
+  z = y;
+  register int xmm2 __asm ("xmm2") = xmm7;
+  asm volatile ("" : "+v" (xmm2));
+  return xmm2;
+}
+
+__attribute__((target("arch=i486")))
+int
+main (void)
+{
+ if (__builtin_cpu_supports ("sse2"))
+   {
+     i = 4;
+     if (do_test () != 4)
+       __builtin_abort ();
+   }
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr104704-4.c b/gcc/testsuite/gcc.target/i386/pr104704-4.c
new file mode 100644 (file)
index 0000000..c976662
--- /dev/null
@@ -0,0 +1,33 @@
+/* { dg-do run { target { ! ia32 } } } */
+/* { dg-options "-O2 -march=x86-64 -mavx512f" } */
+
+#include <immintrin.h>
+
+char z[128];
+
+int i;
+
+__attribute__((noipa))
+int
+do_test (void)
+{
+  register int xmm31 __asm ("xmm31") = i;
+  asm volatile ("" : "+v" (xmm31));
+  __builtin_memset (&z, 0, sizeof (z));
+  register int xmm2 __asm ("xmm2") = xmm31;
+  asm volatile ("" : "+v" (xmm2));
+  return xmm2;
+}
+
+__attribute__((target("arch=x86-64")))
+int
+main (void)
+{
+ if (__builtin_cpu_supports ("avx512f"))
+   {
+     i = 4;
+     if (do_test () != 4)
+       __builtin_abort ();
+   }
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr104704-5.c b/gcc/testsuite/gcc.target/i386/pr104704-5.c
new file mode 100644 (file)
index 0000000..de9466e
--- /dev/null
@@ -0,0 +1,33 @@
+/* { dg-do run { target { ! ia32 } } } */
+/* { dg-options "-O2 -march=x86-64 -mtune=skylake -mavx2" } */
+
+#include <immintrin.h>
+
+char z[64];
+
+int i;
+
+__attribute__((noipa))
+int
+do_test (void)
+{
+  register int xmm15 __asm ("xmm15") = i;
+  asm volatile ("" : "+v" (xmm15));
+  __builtin_memset (&z, 0, sizeof (z));
+  register int xmm2 __asm ("xmm2") = xmm15;
+  asm volatile ("" : "+v" (xmm2));
+  return xmm2;
+}
+
+__attribute__((target("arch=x86-64")))
+int
+main (void)
+{
+ if (__builtin_cpu_supports ("avx2"))
+   {
+     i = 4;
+     if (do_test () != 4)
+       __builtin_abort ();
+   }
+  return 0;
+}
diff --git a/gcc/testsuite/gcc.target/i386/pr104704-6.c b/gcc/testsuite/gcc.target/i386/pr104704-6.c
new file mode 100644 (file)
index 0000000..e6a4cb8
--- /dev/null
@@ -0,0 +1,33 @@
+/* { dg-do run { target ia32 } } */
+/* { dg-options "-O2 -march=i686 -mtune=skylake -msse2" } */
+
+#include <immintrin.h>
+
+char z[16];
+
+int i;
+
+__attribute__((noipa))
+int
+do_test (void)
+{
+  register int xmm7 __asm ("xmm7") = i;
+  asm volatile ("" : "+v" (xmm7));
+  __builtin_memset (&z, 0, sizeof (z));
+  register int xmm2 __asm ("xmm2") = xmm7;
+  asm volatile ("" : "+v" (xmm2));
+  return xmm2;
+}
+
+__attribute__((target("arch=i486")))
+int
+main (void)
+{
+ if (__builtin_cpu_supports ("sse2"))
+   {
+     i = 4;
+     if (do_test () != 4)
+       __builtin_abort ();
+   }
+  return 0;
+}
index c3be2f5b7977b9fadae5cfb703421a633e41e19f..d7e530d511613d384fa9715e9d75074ec9316eb1 100644 (file)
@@ -11,5 +11,4 @@ pr82941 ()
   z = y;
 }
 
-/* { dg-final { scan-assembler-times "vzeroupper" 1 { target ia32 } } } */
-/* { dg-final { scan-assembler-not "vzeroupper" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "vzeroupper" 1 } } */
index 29ead049a67fb0b53569e1a94b62b7d4fd6e3ab6..9cdf81a9d6033ff3533b0cc2ea1febbab4cb8e66 100644 (file)
@@ -3,5 +3,4 @@
 
 #include "pr82941-1.c"
 
-/* { dg-final { scan-assembler-times "vzeroupper" 1 { target ia32 } } } */
-/* { dg-final { scan-assembler-not "vzeroupper" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "vzeroupper" 1 } } */
index bbf580fea77a7e8c296f98fb935dbb14b3c698d8..ff1d6d40eb2688c431bd234eff554d92d5c25f0f 100644 (file)
@@ -11,5 +11,4 @@ pr82941 ()
   z = y;
 }
 
-/* { dg-final { scan-assembler-times "vzeroupper" 1 { target ia32 } } } */
-/* { dg-final { scan-assembler-not "vzeroupper" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "vzeroupper" 1 } } */
index 89ddb20adb32cfb996aac646914c45b92389a3a2..201fa98d8d413ff23bffecb0deed9073ec2af216 100644 (file)
@@ -3,5 +3,4 @@
 
 #include "pr82941-1.c"
 
-/* { dg-final { scan-assembler-times "vzeroupper" 1 { target ia32 } } } */
-/* { dg-final { scan-assembler-not "vzeroupper" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "vzeroupper" 1 } } */
index b9da0e706b1cf28af9fba763e69335ebad6df968..9932bdc537568e9724e855db308bab071c0f03c9 100644 (file)
@@ -11,5 +11,4 @@ pr82941 ()
   z = y;
 }
 
-/* { dg-final { scan-assembler-times "vzeroupper" 1 { target ia32 } } } */
-/* { dg-final { scan-assembler-not "vzeroupper" { target { ! ia32 } } } } */
+/* { dg-final { scan-assembler-times "vzeroupper" 1 } } */
index 96ee5cb08c1f5bd08298e2b9d47f8b441eda6dd4..60763bb7c37a4a5f8c62b838cf4642a6c98389ac 100644 (file)
@@ -10,4 +10,4 @@ foo (void)
 }
 
 /* { dg-final { scan-assembler-times "movups\[\\t \]+%xmm\[0-9\]+, \\(%\[\^,\]+\\)" 1 } } */
-/* { dg-final { scan-assembler-times "movd\[\\t \]+%xmm\[0-9\]+, 16\\(%\[\^,\]+\\)" 1 } } */
+/* { dg-final { scan-assembler-times "movd\[\\t \]+%xmm\[0-9\]+, 16\\(%\[\^,\]+\\)" 1 { xfail *-*-* } } } */
index 73d5d5abaeeebab9155244b68a36c9ad814da996..570748366f87af5ebb89e7fdf16b494ad4791ecd 100644 (file)
@@ -11,4 +11,4 @@ foo (void)
 
 /* { dg-final { scan-assembler-times "vpbroadcastb" 1 } } */
 /* { dg-final { scan-assembler-times "vmovdqu8\[\\t \]+%xmm\[0-9\]+, \\(%\[\^,\]+\\)" 1 } } */
-/* { dg-final { scan-assembler-times "vmovd\[\\t \]+%xmm\[0-9\]+, 15\\(%\[\^,\]+\\)" 1 } } */
+/* { dg-final { scan-assembler-times "vmovd\[\\t \]+%xmm\[0-9\]+, 16\\(%\[\^,\]+\\)" 1 { xfail *-*-* } } } */
index 27185a236a7eeaa7e765e5f577ad3aab0b933928..9ef96279960de86f866d9fc4fca74b1bbf940937 100644 (file)
@@ -10,4 +10,4 @@ foo (void)
 }
 
 /* { dg-final { scan-assembler-times "movups\[\\t \]+%xmm\[0-9\]+, \\(%\[\^,\]+\\)" 1 } } */
-/* { dg-final { scan-assembler-times "movq\[\\t \]+%xmm\[0-9\]+, 13\\(%\[\^,\]+\\)" 1 } } */
+/* { dg-final { scan-assembler-times "movq\[\\t \]+%xmm\[0-9\]+, 13\\(%\[\^,\]+\\)" 1 { xfail *-*-* } } } */