Bug 6890

Summary: xmmintrin.h, _MM_TRANSPOSE4_PS is broken
Product: gcc Reporter: stephen.kennedy
Component: targetAssignee: Not yet assigned to anyone <unassigned>
Status: RESOLVED FIXED    
Severity: normal CC: gcc-bugs, hubicka
Priority: P3    
Version: 3.1   
Target Milestone: ---   
Host: i386-pc-linux-gnu Target: i386-pc-linux-gnu
Build: i386-pc-linux-gnu Known to work:
Known to fail: Last reconfirmed:

Description stephen.kennedy 2002-05-31 10:56:01 UTC
	the code in _MM_TRANSPOSE4_PS is incorrect.

Release:
3.1 (Debian) (Debian testing/unstable)

Environment:
System: Linux stag 2.4.17-686sk #1 Fri Feb 15 18:08:06 GMT 2002 i686 unknown
Architecture: i686

	
host: i386-pc-linux-gnu
build: i386-pc-linux-gnu
target: i386-pc-linux-gnu
configured with: /mnt/data/gcc-3.1/gcc-3.1-3.1ds2/src/configure -v --enable-languages=c,c++,java,f77,proto,objc,ada --prefix=/usr --mandir=$\(prefix\)/share/man --infodir=$\(prefix\)/share/info --with-gxx-include-dir=$\(prefix\)/include/g++-v3-3.1 --enable-shared --with-system-zlib --enable-long-long --enable-nls --without-included-gettext --enable-clocale=gnu --enable-threads=posix --enable-java-gc=boehm --enable-objc-gc i386-linux

How-To-Repeat:
	n/a
Comment 1 stephen.kennedy 2002-05-31 10:56:01 UTC
Fix:
Apply the following patch

--- xmmintrin.h.old	Fri May 31 18:43:57 2002
+++ xmmintrin.h	Fri May 31 18:31:55 2002
@@ -1049,8 +1049,8 @@
 do {									\
   __v4sf __r0 = (row0), __r1 = (row1), __r2 = (row2), __r3 = (row3);	\
   __v4sf __t0 = __builtin_ia32_shufps (__r0, __r1, 0x44);		\
-  __v4sf __t1 = __builtin_ia32_shufps (__r0, __r1, 0xEE);		\
-  __v4sf __t2 = __builtin_ia32_shufps (__r2, __r3, 0x44);		\
+  __v4sf __t2 = __builtin_ia32_shufps (__r0, __r1, 0xEE);		\
+  __v4sf __t1 = __builtin_ia32_shufps (__r2, __r3, 0x44);		\
   __v4sf __t3 = __builtin_ia32_shufps (__r2, __r3, 0xEE);		\
   (row0) = __builtin_ia32_shufps (__t0, __t1, 0x88);			\
   (row1) = __builtin_ia32_shufps (__t0, __t1, 0xDD);			\
Comment 2 Jan Hubicka 2002-10-22 23:54:48 UTC
From: hubicka@gcc.gnu.org
To: gcc-gnats@gcc.gnu.org
Cc:  
Subject: target/6890
Date: 22 Oct 2002 23:54:48 -0000

 CVSROOT:	/cvs/gcc
 Module name:	egcs
 Changes by:	hubicka@gcc.gnu.org	2002-10-22 16:54:48
 
 Modified files:
 	gcc            : ChangeLog 
 	gcc/config/i386: i386.md xmmintrin.h 
 
 Log message:
 	PR other/8289
 	* xmmintrin.h: Add const to the argument of loads.
 	
 	* i386.md (pushv2di): New pattern.
 	PR target/6890
 	* xmmintrin.h (_MM_TRANSPOSE4_PS): New.
 
 Patches:
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/gcc/ChangeLog.diff?cvsroot=gcc&r1=1.15758&r2=1.15759
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/gcc/config/i386/i386.md.diff?cvsroot=gcc&r1=1.397&r2=1.398
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/gcc/config/i386/xmmintrin.h.diff?cvsroot=gcc&r1=1.17&r2=1.18
 

Comment 3 Jan Hubicka 2002-10-27 02:23:13 UTC
State-Changed-From-To: open->closed
State-Changed-Why: I've commited the fix into both mainline nad 3.2 branch
Comment 4 Jan Hubicka 2002-10-27 09:28:12 UTC
From: hubicka@gcc.gnu.org
To: gcc-gnats@gcc.gnu.org
Cc:  
Subject: target/6890
Date: 27 Oct 2002 09:28:12 -0000

 CVSROOT:	/cvs/gcc
 Module name:	egcs
 Branch: 	gcc-3_2-branch
 Changes by:	hubicka@gcc.gnu.org	2002-10-27 01:28:12
 
 Modified files:
 	gcc            : ChangeLog 
 	gcc/config/i386: xmmintrin.h 
 
 Log message:
 	PR target/6890
 	* xmmintrin.h (_MM_TRANSPOSE4_PS): New.
 
 Patches:
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/gcc/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.13152.2.657.2.107&r2=1.13152.2.657.2.108
 http://gcc.gnu.org/cgi-bin/cvsweb.cgi/egcs/gcc/config/i386/xmmintrin.h.diff?cvsroot=gcc&only_with_tag=gcc-3_2-branch&r1=1.2.18.2&r2=1.2.18.3