diff options
author | John Wehle <john@feith.com> | 1998-01-17 22:20:32 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1998-01-17 15:20:32 -0700 |
commit | ca097615db39da2a40bc790d6e8b7ebb0d620844 (patch) | |
tree | 8afc7614644f4f76eb97b4b198b91607394552d2 /gcc | |
parent | 4399e7a3244b22aeebef9ceb85d978769709ad47 (diff) | |
download | gcc-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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/i386/i386.md | 43 |
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])); |