diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c36374ecf2d419bad7f169ee150601e876eaba38..56acb0ebee671141d48e388c6078ba5cda071977 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2004-08-10  H.J. Lu  <hongjiu.lu@intel.com>
+
+	PR target/16909
+	* config/i386/i386.md (*strsetdi_rex_1): Use DI instead of SI.
+
 2004-08-10  Janis Johnson  <janis187@us.ibm.com>
 
 	* doc/sourcebuild.texi (compat testing): Document available test
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 12c051e010f729709adb24b49597d9762b12a257..31f35176fb84661492f2e4b569b0084d20c10dd1 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -16770,8 +16770,8 @@
   "")
 
 (define_insn "*strsetdi_rex_1"
-  [(set (mem:SI (match_operand:DI 1 "register_operand" "0"))
-	(match_operand:SI 2 "register_operand" "a"))
+  [(set (mem:DI (match_operand:DI 1 "register_operand" "0"))
+	(match_operand:DI 2 "register_operand" "a"))
    (set (match_operand:DI 0 "register_operand" "=D")
 	(plus:DI (match_dup 1)
 		 (const_int 8)))