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, i386]: Commited: fix PR target/30041


Hello!

Attached patch fixes PR target/30041.

Two problems were found in sse3_movddup pattern:

a) insn constraint referenced non-existent operands[2]
b) type attribute sselog inherently references operands[2]. We have sselog1 type for insn patterns without operand[2].


Patch was bootstrapped on x86_64-pc-linux-gnu (sse3 target) and regression tested for c and c++.

2006-12-03 Uros Bizjak <ubizjak@gmail.com>

       * config/i386/sse.md ("*sse3_movddup"): Use operands[0] and
       operands[1] in insn constraint.  Correct type attribute to sselog1.

Patch was committed to SVN. OK for other branches?

Uros.
Index: sse.md
===================================================================
--- sse.md	(revision 119467)
+++ sse.md	(working copy)
@@ -2167,11 +2167,11 @@
 	    (match_dup 1))
 	  (parallel [(const_int 0)
 		     (const_int 2)])))]
-  "TARGET_SSE3 && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
+  "TARGET_SSE3 && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
   "@
    movddup\t{%1, %0|%0, %1}
    #"
-  [(set_attr "type" "sselog,ssemov")
+  [(set_attr "type" "sselog1,ssemov")
    (set_attr "mode" "V2DF")])
 
 (define_split

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