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]

[PATCH] PR 14631, common subexpression elimination error with sse2


Tested on i686-pc-linux and x86_64-pc-linux

2004-09-20 Scott Robert Ladd <scott.ladd@coyotegulch.com>

	PR 14631
	* config/i386/i386.md (sse2_pinsrw): Changing the pattern of
	sse2_pinsrw from vector_merge to unspec.



Index: i386.md
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/i386/i386.md,v
retrieving revision 1.561
diff -u -3 -p -r1.561 i386.md
--- i386.md	14 Sep 2004 05:21:51 -0000	1.561
+++ i386.md	20 Sep 2004 17:39:52 -0000
@@ -105,6 +105,7 @@
    (UNSPEC_MFENCE		59)
    (UNSPEC_LFENCE		60)
    (UNSPEC_PSADBW		61)
+   (UNSPEC_PINSRW		62)
    (UNSPEC_ADDSUB		71)
    (UNSPEC_HADD			72)
    (UNSPEC_HSUB			73)
@@ -23594,11 +23595,12 @@

 (define_insn "sse2_pinsrw"
   [(set (match_operand:V8HI 0 "register_operand" "=x")
-        (vec_merge:V8HI (match_operand:V8HI 1 "register_operand" "0")
+	(unspec:V8HI [(match_operand:V8HI 1 "register_operand" "0")
 			(vec_duplicate:V8HI
 			 (truncate:HI
 			   (match_operand:SI 2 "nonimmediate_operand" "rm")))
-			(match_operand:SI 3 "const_0_to_255_operand" "N")))]
+			(match_operand:SI 3 "const_0_to_255_operand" "N")]
+			UNSPEC_PINSRW))]
   "TARGET_SSE2"
   "pinsrw\t{%3, %2, %0|%0, %2, %3}"
   [(set_attr "type" "ssecvt")


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