This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Fix PR target/19235


On Mon, Jan 03, 2005 at 11:41:04AM +0100, Uros Bizjak wrote:
>    * config/i386/i386.c (*movdf_nointeger): Use 'Y' instead
>    of 'x' constraints.

Not correct.  Part of the bug I was fixing when I caused this
is that we need to be able to load any mode into these registers
regardless of whether we can operate on them.  That's the only
way to be able to create a stable abi.

There *is* a way to load 8 bytes into an xmm register in sse1;
we just need to use it.

I'm testing the following.


r~


Index: config/i386/i386.md
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/i386/i386.md,v
retrieving revision 1.597
diff -c -p -d -u -r1.597 i386.md
--- config/i386/i386.md	3 Jan 2005 09:54:53 -0000	1.597
+++ config/i386/i386.md	3 Jan 2005 21:18:38 -0000
@@ -2500,6 +2500,8 @@
 	  return "movsd\t{%1, %0|%0, %1}";
 	case MODE_V1DF:
 	  return "movlpd\t{%1, %0|%0, %1}";
+	case MODE_V2SF:
+	  return "movlps\t{%1, %0|%0, %1}";
 	default:
 	  abort ();
 	}
@@ -2510,7 +2512,9 @@
 }
   [(set_attr "type" "fmov,fmov,fmov,multi,multi,ssemov,ssemov,ssemov,ssemov")
    (set (attr "mode")
-        (cond [(eq_attr "alternative" "3,4")
+        (cond [(eq_attr "alternative" "0,1,2")
+		 (const_string "DF")
+	       (eq_attr "alternative" "3,4")
 		 (const_string "SI")
 
 	       /* For SSE1, we have many fewer alternatives.  */
@@ -2521,7 +2525,7 @@
 			    (const_string "V4SF")
 			    (const_string "TI"))
 		       ]
-		   (const_string "DI"))
+		   (const_string "V2SF"))
 
 	       /* xorps is one byte shorter.  */
 	       (eq_attr "alternative" "5")


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]