;; and each is preceded by a corresponding push-insn pattern
;; (since pushes are not general_operands on the 386).
-(define_insn ""
- [(set (match_operand:SI 0 "push_operand" "=<")
- (match_operand:SI 1 "general_operand" "g"))]
- "TARGET_PUSH_MEMORY"
- "push%L0 %1")
-
-;; If not a 386, it is faster to move MEM to a REG and then push, rather than
-;; push MEM directly.
-
(define_insn ""
[(set (match_operand:SI 0 "push_operand" "=<")
(match_operand:SI 1 "nonmemory_operand" "ri"))]
- "!TARGET_PUSH_MEMORY && TARGET_MOVE"
+ ""
"push%L0 %1")
+;; On a 386, it is faster to push MEM directly.
+
(define_insn ""
[(set (match_operand:SI 0 "push_operand" "=<")
- (match_operand:SI 1 "nonmemory_operand" "ri"))]
- "!TARGET_PUSH_MEMORY && !TARGET_MOVE"
+ (match_operand:SI 1 "memory_operand" "m"))]
+ "TARGET_PUSH_MEMORY"
"push%L0 %1")
;; General case of fullword move.
return AS2 (mov%L0,%1,%0);
}")
-(define_insn ""
- [(set (match_operand:HI 0 "push_operand" "=<")
- (match_operand:HI 1 "general_operand" "g"))]
- "TARGET_PUSH_MEMORY"
- "push%W0 %1")
-
(define_insn ""
[(set (match_operand:HI 0 "push_operand" "=<")
(match_operand:HI 1 "nonmemory_operand" "ri"))]
- "!TARGET_PUSH_MEMORY && TARGET_MOVE"
+ ""
"push%W0 %1")
(define_insn ""
[(set (match_operand:HI 0 "push_operand" "=<")
- (match_operand:HI 1 "nonmemory_operand" "ri"))]
- "!TARGET_PUSH_MEMORY && !TARGET_MOVE"
+ (match_operand:HI 1 "memory_operand" "m"))]
+ "TARGET_PUSH_MEMORY"
"push%W0 %1")
;; On i486, an incl and movl are both faster than incw and movw.
[(set (match_operand:QI 0 "push_operand" "=<")
(match_operand:QI 1 "const_int_operand" "n"))]
""
- "* return AS1 (push%W0,%1);")
-
-(define_insn ""
- [(set (match_operand:QI 0 "push_operand" "=<")
- (match_operand:QI 1 "register_operand" "q"))]
- "!TARGET_MOVE"
- "*
-{
- operands[1] = gen_rtx (REG, HImode, REGNO (operands[1]));
- return AS1 (push%W0,%1);
-}")
+ "push%W0,%1")
(define_insn ""
[(set (match_operand:QI 0 "push_operand" "=<")
(match_operand:QI 1 "register_operand" "q"))]
- "TARGET_MOVE"
+ ""
"*
{
operands[1] = gen_rtx (REG, HImode, REGNO (operands[1]));