|
|
@ -1,70 +0,0 @@ |
|
|
|
see |
|
|
|
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=13685 |
|
|
|
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28621 |
|
|
|
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27537 |
|
|
|
|
|
|
|
Index: gcc-4.1.1/gcc/testsuite/gcc.target/i386/pr13685.c
|
|
|
|
===================================================================
|
|
|
|
--- gcc-4.1.1/gcc/testsuite/gcc.target/i386/pr13685.c (Revision 0)
|
|
|
|
+++ gcc-4.1.1/gcc/testsuite/gcc.target/i386/pr13685.c (Revision 116870)
|
|
|
|
@@ -0,0 +1,39 @@
|
|
|
|
+/* PR target/13685 */
|
|
|
|
+/* { dg-do run } */
|
|
|
|
+/* { dg-options "-Os -msse" } */
|
|
|
|
+#include <stdlib.h>
|
|
|
|
+#include <stdio.h>
|
|
|
|
+#include <xmmintrin.h>
|
|
|
|
+#include "../../gcc.dg/i386-cpuid.h"
|
|
|
|
+
|
|
|
|
+void foo (__m128 *, __m64 *, int);
|
|
|
|
+
|
|
|
|
+__m128 xmm0 = { 0 };
|
|
|
|
+__m64 mm0 = { 0 };
|
|
|
|
+
|
|
|
|
+int
|
|
|
|
+main ()
|
|
|
|
+{
|
|
|
|
+ unsigned long cpu_facilities = i386_cpuid ();
|
|
|
|
+
|
|
|
|
+ if ((cpu_facilities & (bit_MMX | bit_SSE | bit_CMOV))
|
|
|
|
+ != (bit_MMX | bit_SSE | bit_CMOV))
|
|
|
|
+ /* If host has no SSE support, pass. */
|
|
|
|
+ return 0;
|
|
|
|
+
|
|
|
|
+ foo (&xmm0, &mm0, 4);
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void
|
|
|
|
+foo (__m128 *dst, __m64 *src, int n)
|
|
|
|
+{
|
|
|
|
+ __m128 xmm0 = { 0 };
|
|
|
|
+ while (n > 64)
|
|
|
|
+ {
|
|
|
|
+ puts ("");
|
|
|
|
+ xmm0 = _mm_cvtpi32_ps (xmm0, *src);
|
|
|
|
+ *dst = xmm0;
|
|
|
|
+ n--;
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
Index: gcc-4.1.1/gcc/config/i386/i386.c
|
|
|
|
===================================================================
|
|
|
|
--- gcc-4.1.1/gcc/config/i386/i386.c (Revision 116859)
|
|
|
|
+++ gcc-4.1.1/gcc/config/i386/i386.c (Revision 116870)
|
|
|
|
@@ -1899,12 +1899,10 @@
|
|
|
|
} |
|
|
|
|
|
|
|
/* Validate -mpreferred-stack-boundary= value, or provide default. |
|
|
|
- The default of 128 bits is for Pentium III's SSE __m128, but we
|
|
|
|
- don't want additional code to keep the stack aligned when
|
|
|
|
- optimizing for code size. */
|
|
|
|
- ix86_preferred_stack_boundary = (optimize_size
|
|
|
|
- ? TARGET_64BIT ? 128 : 32
|
|
|
|
- : 128);
|
|
|
|
+ The default of 128 bits is for Pentium III's SSE __m128. We can't
|
|
|
|
+ change it because of optimize_size. Otherwise, we can't mix object
|
|
|
|
+ files compiled with -Os and -On. */
|
|
|
|
+ ix86_preferred_stack_boundary = 128;
|
|
|
|
if (ix86_preferred_stack_boundary_string) |
|
|
|
{ |
|
|
|
i = atoi (ix86_preferred_stack_boundary_string); |