diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f8af6e71d2cb4cbb2167131f2b87182538e5533f..2de7e1e449d2943e1da1fd1d1d0b4bd6ff64ef8b 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 d2149d7a222ff76f5a10eba30c7275c90014e0b2..b80721d38cc06577012435ecca8ef578f7d624b0 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" "")