diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f9f0023a485cda81ea3629ec90e05632bc06f6c1..8962b81ddaa10d52d35ed4d9b9599d39939963b5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2007-09-09  H.J. Lu  <hongjiu.lu@intel.com>
+
+	* i386.md (*floatsisf2_mixed_vector): Use cvtdq2ps instead
+	of cvtpq2ps.
+	(*floatsisf2_sse_vector): Likewise.
+
 2007-09-09  Krister Walfridsson  <cato@df.lth.se>
 
 	* config/netbsd.h (HANDLE_PRAGMA_PACK_PUSH_POP): Define to 1.
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 352f67dea7262a1a336c6d9e60d5cfc966b640d5..3ddf7dc54fad80b2d48955d91363e79200467b34 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -4819,7 +4819,7 @@
   "TARGET_MIX_SSE_I387 && !flag_trapping_math 
    && TARGET_USE_VECTOR_CONVERTS && !optimize_size"
   "@
-   cvtpq2ps\t{%1, %0|%0, %1}
+   cvtdq2ps\t{%1, %0|%0, %1}
    fild%z1\t%1
    #"
   [(set_attr "type" "sseicvt,fmov,multi")
@@ -4896,7 +4896,7 @@
 	(float:SF (match_operand:SI 1 "register_operand" "x")))]
   "!flag_trapping_math && TARGET_USE_VECTOR_CONVERTS && !optimize_size
    && !TARGET_INTER_UNIT_MOVES"
-  "cvtpq2ps\t{%1, %0|%0, %1}"
+  "cvtdq2ps\t{%1, %0|%0, %1}"
   [(set_attr "type" "sseicvt")
    (set_attr "mode" "SF")
    (set_attr "athlon_decode" "double")