Index: i386.md
===================================================================
--- i386.md	(revision 165750)
+++ i386.md	(working copy)
@@ -1602,6 +1602,20 @@
 
 ;; Push/pop instructions.
 
+(define_insn "*push<mode>2"
+  [(set (match_operand:DWI 0 "push_operand" "=<")
+	(match_operand:DWI 1 "general_no_elim_operand" "riF*m"))]
+  ""
+  "#")
+
+(define_split
+  [(set (match_operand:TI 0 "push_operand" "")
+        (match_operand:TI 1 "general_operand" ""))]
+  "TARGET_64BIT && reload_completed
+   && !SSE_REG_P (operands[1])"
+  [(const_int 0)]
+  "ix86_split_long_move (operands); DONE;")
+
 (define_insn "*pushdi2_rex64"
   [(set (match_operand:DI 0 "push_operand" "=<,!<")
 	(match_operand:DI 1 "general_no_elim_operand" "re*m,n"))]
@@ -1660,12 +1674,6 @@
 						   GEN_INT (4)));
 })
 
-(define_insn "*pushdi2"
-  [(set (match_operand:DI 0 "push_operand" "=<")
-	(match_operand:DI 1 "general_no_elim_operand" "riF*m"))]
-  "!TARGET_64BIT"
-  "#")
-
 (define_split
   [(set (match_operand:DI 0 "push_operand" "")
         (match_operand:DI 1 "general_operand" ""))]
