re PR target/28825 (return (vector float) { a, a, b, b } generates unwanted MMX insns)
authorStuart Hastings <stuart@apple.com>
Wed, 23 Aug 2006 21:41:35 +0000 (21:41 +0000)
committerStuart Hastings <stuart@gcc.gnu.org>
Wed, 23 Aug 2006 21:41:35 +0000 (21:41 +0000)
PR 28825
* gcc/config/i386/i386.c (ix86_expand_vector_init_duplicate,
ix86_expand_vector_init_one_nonzero): Remove TARGET_SSE test.
* gcc.target/i386/20060821-1.c: New.

From-SVN: r116356

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

index 195c92b9929fb93a6d7b748be41ed0805c6251e7..a15af37cb51e3dcb69f2fd2356c9e0af567ea13b 100644 (file)
@@ -1,3 +1,9 @@
+2006-08-23  Stuart Hastings  <stuart@apple.com>
+
+       PR 28825
+       * gcc/config/i386/i386.c (ix86_expand_vector_init_duplicate,
+       ix86_expand_vector_init_one_nonzero): Remove TARGET_SSE test.
+
 2006-08-21  Geoffrey Keating  <geoffk@apple.com>
 
        PR debug/28692
index 5161ddaa693ce7ba3611301a584cb59afcdab813..a7f3c0d8078305bfb5462aee69fcbe2edf52dcbc 100644 (file)
@@ -17928,7 +17928,7 @@ ix86_expand_vector_init_duplicate (bool mmx_ok, enum machine_mode mode,
     {
     case V2SImode:
     case V2SFmode:
-      if (!mmx_ok && !TARGET_SSE)
+      if (!mmx_ok)
        return false;
       /* FALLTHRU */
 
@@ -18067,7 +18067,7 @@ ix86_expand_vector_init_one_nonzero (bool mmx_ok, enum machine_mode mode,
     {
     case V2SFmode:
     case V2SImode:
-      if (!mmx_ok && !TARGET_SSE)
+      if (!mmx_ok)
        return false;
       /* FALLTHRU */
 
index 7c1cb9419e9a473fde489df0c6da3fcf657be303..45cf402e21b337e627aa9004d4e2616e8f66c5c2 100644 (file)
@@ -1,3 +1,8 @@
+2006-08-23  Stuart Hastings  <stuart@apple.com>
+
+       PR 28825
+       * gcc.target/i386/20060821-1.c: New.
+
 2006-08-23  Danny Smith  <dannysmith@users.sourceforge.net>
 
        gcc.dg/attr-invalid.c:  Insert an " |directive" substitution into 
diff --git a/gcc/testsuite/gcc.target/i386/20060821-1.c b/gcc/testsuite/gcc.target/i386/20060821-1.c
new file mode 100644 (file)
index 0000000..56e980f
--- /dev/null
@@ -0,0 +1,9 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -msse3 -S" } */
+/* { dg-final { scan-assembler-not "%mm" } } */
+/* PR 28825 */
+#include <pmmintrin.h>
+__m128 ggg(float* m)
+{
+  return (__m128) {m[0], m[5], m[10], m[10]};
+}