summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordje <dje@138bc75d-0d04-0410-961f-82ee72b054a4>2003-05-14 16:41:16 +0000
committerdje <dje@138bc75d-0d04-0410-961f-82ee72b054a4>2003-05-14 16:41:16 +0000
commit074b55a01ab52ea1b7d64192b5fee08c9d1f409e (patch)
treec9bfec3438745debd712d3f59b46bc57c90b2e32
parent80abd9e48ad1b4de289b09cc79163ed49ac7b579 (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/config/rs6000/rs6000.md27
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" "")