diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index eebf3f81cf04fc565570471b836d9a17a07cd65e..d4f6b6ba725fadbfe330417404767e306ff279a1 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2006-12-03  Uros Bizjak  <ubizjak@gmail.com>
+
+	PR target/30041
+	* config/i386/sse.md ("*sse3_movddup"): Use operands[0] and
+	operands[1] in insn constraint.  Correct type attribute to sselog1.
+
 2006-12-02  H.J. Lu  <hongjiu.lu@intel.com>
 
 	PR target/30040
diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
index 460937ffc0005c2403b186fb38d6f2d590bc216f..a17e7a9cdbc9e6baa50fbe4d39e8ed74f5227b67 100644
--- a/gcc/config/i386/sse.md
+++ b/gcc/config/i386/sse.md
@@ -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