This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] PR 14631, common subexpression elimination error with sse2
- From: Scott Robert Ladd <coyote at coyotegulch dot com>
- To: gcc-patches at gcc dot gnu dot org
- Cc: Mark Mitchell <mark at codesourcery dot com>
- Date: Mon, 20 Sep 2004 13:46:32 -0400
- Subject: [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")