diff options
author | dje <dje@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-05-14 16:41:16 +0000 |
---|---|---|
committer | dje <dje@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-05-14 16:41:16 +0000 |
commit | 074b55a01ab52ea1b7d64192b5fee08c9d1f409e (patch) | |
tree | c9bfec3438745debd712d3f59b46bc57c90b2e32 | |
parent | 80abd9e48ad1b4de289b09cc79163ed49ac7b579 (diff) | |
download | gcc-074b55a01ab52ea1b7d64192b5fee08c9d1f409e.tar.gz |
* config/rs6000/rs6000.md (movsi_internal2): Use compare for self
move record condition.
(movdi_internal2): Same.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@66806 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.md | 27 |
2 files changed, 20 insertions, 13 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f8af6e71d2c..2de7e1e449d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2003-05-14 David Edelsohn <edelsohn@gnu.org> + + * config/rs6000/rs6000.md (movsi_internal2): Use compare for self + move record condition. + (movdi_internal2): Same. + 2003-05-14 Nathan Sidwell <nathan@codesourcery.com> * gcov-io.h (gcov_write_bytes, gcov_read_bytes): Remove here. diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md index d2149d7a222..b80721d38cc 100644 --- a/gcc/config/rs6000/rs6000.md +++ b/gcc/config/rs6000/rs6000.md @@ -7709,17 +7709,18 @@ }") (define_insn "*movsi_internal2" - [(set (match_operand:CC 2 "cc_reg_operand" "=x,?y") - (compare:CC (match_operand:SI 1 "gpc_reg_operand" "r,r") + [(set (match_operand:CC 2 "cc_reg_operand" "=y,x,?y") + (compare:CC (match_operand:SI 1 "gpc_reg_operand" "0,r,r") (const_int 0))) - (set (match_operand:SI 0 "gpc_reg_operand" "=r,r") (match_dup 1))] + (set (match_operand:SI 0 "gpc_reg_operand" "=r,r,r") (match_dup 1))] "! TARGET_POWERPC64" "@ + {cmpi|cmpwi} %2,%0,0 mr. %0,%1 #" - [(set_attr "type" "compare") - (set_attr "length" "4,8")]) - + [(set_attr "type" "cmp,compare,cmp") + (set_attr "length" "4,4,8")]) + (define_split [(set (match_operand:CC 2 "cc_reg_not_cr0_operand" "") (compare:CC (match_operand:SI 1 "gpc_reg_operand" "") @@ -7731,7 +7732,7 @@ (compare:CC (match_dup 0) (const_int 0)))] "") - + (define_expand "movhi" [(set (match_operand:HI 0 "general_operand" "") (match_operand:HI 1 "any_operand" ""))] @@ -8621,18 +8622,18 @@ FAIL; }") -;; Split a load of a large constant into the appropriate five-instruction (define_insn "*movdi_internal2" - [(set (match_operand:CC 2 "cc_reg_operand" "=x,?y") - (compare:CC (match_operand:DI 1 "gpc_reg_operand" "r,r") + [(set (match_operand:CC 2 "cc_reg_operand" "=y,x,?y") + (compare:CC (match_operand:DI 1 "gpc_reg_operand" "0,r,r") (const_int 0))) - (set (match_operand:DI 0 "gpc_reg_operand" "=r,r") (match_dup 1))] + (set (match_operand:DI 0 "gpc_reg_operand" "=r,r,r") (match_dup 1))] "TARGET_POWERPC64" "@ + cmpdi %2,%0,0 mr. %0,%1 #" - [(set_attr "type" "compare") - (set_attr "length" "4,8")]) + [(set_attr "type" "cmp,compare,cmp") + (set_attr "length" "4,4,8")]) (define_split [(set (match_operand:CC 2 "cc_reg_not_cr0_operand" "") |