aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStuart Hastings <stuart@apple.com>2006-08-23 21:41:35 +0000
committerStuart Hastings <stuart@gcc.gnu.org>2006-08-23 21:41:35 +0000
commit12b3553fe4111b2f095d2397acbddf4d9b019eac (patch)
treeae71c5d28b287a2b2467e57585892d58e00a64a4
parentb2742484fc283c53ae31a2c227212f963a36124e (diff)
downloadgcc-12b3553fe4111b2f095d2397acbddf4d9b019eac.zip
gcc-12b3553fe4111b2f095d2397acbddf4d9b019eac.tar.gz
gcc-12b3553fe4111b2f095d2397acbddf4d9b019eac.tar.bz2
re PR target/28825 (return (vector float) { a, a, b, b } generates unwanted MMX insns)
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
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/i386/i386.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/i386/20060821-1.c9
4 files changed, 22 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 195c92b..a15af37 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 5161dda..a7f3c0d 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -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 */
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 7c1cb94..45cf402 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 0000000..56e980f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/20060821-1.c
@@ -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]};
+}