aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorUros Bizjak <uros@gcc.gnu.org>2009-01-22 13:48:03 +0100
committerUros Bizjak <uros@gcc.gnu.org>2009-01-22 13:48:03 +0100
commit87673f8408b5214dfc58cb4f7255fea96097e5db (patch)
tree2416558286110cf27f48a8955c29ad3eb65ac9ba /gcc
parent963392680fda9affbde3be6ce9c1465c1c732e90 (diff)
downloadgcc-87673f8408b5214dfc58cb4f7255fea96097e5db.zip
gcc-87673f8408b5214dfc58cb4f7255fea96097e5db.tar.gz
gcc-87673f8408b5214dfc58cb4f7255fea96097e5db.tar.bz2
re PR target/38931 (Seg fault when getting instruction latency on a *movsi_1 with an MMX target register)
PR target/38931 * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2. (*movdi_1_rex64): Use type "mmx" for alternative 5. testsuite/ChangeLog: PR target/38931 * gcc.target/i386/pr38931.c: New test. From-SVN: r143567
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/i386/i386.md8
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/i386/pr38931.c23
4 files changed, 39 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e8855f3..8b921a2 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2009-01-22 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/38931
+ * config/i386/i386.md (*movsi_1): Use type "mmx" for alternative 2.
+ (*movdi_1_rex64): Use type "mmx" for alternative 5.
+
2009-01-22 Richard Earnshaw <rearnsha@arm.com>
* arm.h (DATA_ALIGNMENT): Align structures, unions and arrays to
@@ -5,7 +11,7 @@
(LOCAL_ALIGNMENT): Similarly.
2009-01-22 Mark Shinwell <shinwell@codesourcery.com>
- Joseph Myers <joseph@codesourcery.com>
+ Joseph Myers <joseph@codesourcery.com>
* config/arm/arm.c (all_architectures): Add iWMMXt2 entry.
* config/arm/arm-cores.def: New ARM_CORE entry for iWMMXt2.
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 0569f04..6543cf5 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -1534,7 +1534,7 @@
gcc_unreachable ();
}
- case TYPE_MMXADD:
+ case TYPE_MMX:
return "pxor\t%0, %0";
case TYPE_MMXMOV:
@@ -1552,7 +1552,7 @@
}
[(set (attr "type")
(cond [(eq_attr "alternative" "2")
- (const_string "mmxadd")
+ (const_string "mmx")
(eq_attr "alternative" "3,4,5")
(const_string "mmxmov")
(eq_attr "alternative" "6")
@@ -2370,7 +2370,7 @@
case TYPE_SSELOG1:
return "%vpxor\t%0, %d0";
- case TYPE_MMXADD:
+ case TYPE_MMX:
return "pxor\t%0, %0";
case TYPE_MULTI:
@@ -2391,7 +2391,7 @@
}
[(set (attr "type")
(cond [(eq_attr "alternative" "5")
- (const_string "mmxadd")
+ (const_string "mmx")
(eq_attr "alternative" "6,7,8,9,10")
(const_string "mmxmov")
(eq_attr "alternative" "11")
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index df530dd..dde062e 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2009-01-22 Uros Bizjak <ubizjak@gmail.com>
+
+ PR target/38931
+ * gcc.target/i386/pr38931.c: New test.
+
2009-01-22 Dodji Seketeli <dodji@redhat.com>
PR c++/38930
diff --git a/gcc/testsuite/gcc.target/i386/pr38931.c b/gcc/testsuite/gcc.target/i386/pr38931.c
new file mode 100644
index 0000000..dd35dec
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr38931.c
@@ -0,0 +1,23 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -msse" } */
+
+typedef int __m64 __attribute__ ((__vector_size__ (8)));
+
+extern __m64 foo () ;
+
+void bar (const int input_bpl, const unsigned char *input,
+ unsigned char *output, unsigned long x1)
+{
+ unsigned char *pix_end_ptr = output + x1 * 4;
+ __m64 m_original = { 0, 0 };
+ __m64 m_base_addr = __builtin_ia32_vec_init_v2si (0, input_bpl);
+ __m64 m_addr = __builtin_ia32_paddd (m_original, m_base_addr);
+ __m64 *a0 = (__m64 *) input;
+
+ for (; output < pix_end_ptr; output += 4)
+ {
+ a0 = (__m64 *) (input + __builtin_ia32_vec_ext_v2si (m_addr, 0));
+ m_addr = foo ();
+ __builtin_prefetch (a0, 0);
+ }
+}