aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Wehle <john@feith.com>1998-01-17 22:20:32 +0000
committerJeff Law <law@gcc.gnu.org>1998-01-17 15:20:32 -0700
commitca097615db39da2a40bc790d6e8b7ebb0d620844 (patch)
tree8afc7614644f4f76eb97b4b198b91607394552d2
parent4399e7a3244b22aeebef9ceb85d978769709ad47 (diff)
downloadgcc-ca097615db39da2a40bc790d6e8b7ebb0d620844.zip
gcc-ca097615db39da2a40bc790d6e8b7ebb0d620844.tar.gz
gcc-ca097615db39da2a40bc790d6e8b7ebb0d620844.tar.bz2
i386.md: Remove redundant integer push patterns.
* i386.md: Remove redundant integer push patterns. Don't bother checking for TARGET_PUSH_MEMORY when pushing constants or registers. From-SVN: r17401
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/config/i386/i386.md43
2 files changed, 16 insertions, 33 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e856c7f..7fe4599 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+Sat Jan 17 23:22:59 1998 John Wehle (john@feith.com)
+
+ * i386.md: Remove redundant integer push patterns.
+ Don't bother checking for TARGET_PUSH_MEMORY when
+ pushing constants or registers.
+
Sat Jan 17 22:35:39 1998 Mumit Khan <khan@xraylith.wisc.edu>
J.J VanderHeijden <J.J.vanderHeijden@student.utwente.nl>
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 1a9f505..9d1dad5 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -834,23 +834,16 @@
(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.
@@ -911,20 +904,14 @@
(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.
@@ -1038,22 +1025,12 @@
[(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]));