summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>2003-03-20 06:43:29 +0000
committerkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>2003-03-20 06:43:29 +0000
commit73dc612c22bfdb66adfe8ec3c53f7ab2e435fd7f (patch)
tree0a3dd4501da6eb64dbcd0654948e98418fbc4e99
parentaa73c668694db964b2d3bbd99861d9cd8adf226f (diff)
downloadgcc-73dc612c22bfdb66adfe8ec3c53f7ab2e435fd7f.tar.gz
* config/h8300/h8300.md (*addsi3_and_r_1): New.
(*addsi3_and_not_r_1): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@64607 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/h8300/h8300.md46
2 files changed, 51 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3dd1e4694b5..43217ac1404 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2003-03-20 Kazu Hirata <kazu@cs.umass.edu>
+
+ * config/h8300/h8300.md (*addsi3_and_r_1): New.
+ (*addsi3_and_not_r_1): Likewise.
+
2003-03-19 Loren James Rittle <ljrittle@acm.org>
* Makefile.in (STRICT2_WARN): Add @WERROR@.
diff --git a/gcc/config/h8300/h8300.md b/gcc/config/h8300/h8300.md
index 6d19568a636..785be85c894 100644
--- a/gcc/config/h8300/h8300.md
+++ b/gcc/config/h8300/h8300.md
@@ -2855,6 +2855,52 @@
[(set_attr "cc" "clobber")
(set_attr "length" "2")])
+(define_insn_and_split "*addsi3_and_r_1"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (plus:SI (and:SI (match_operand:SI 1 "register_operand" "r")
+ (const_int 1))
+ (match_operand:SI 2 "register_operand" "0")))]
+ "(TARGET_H8300H || TARGET_H8300S)"
+ "#"
+ "&& reload_completed"
+ [(set (cc0)
+ (zero_extract:SI (match_dup 1)
+ (const_int 1)
+ (const_int 0)))
+ (set (pc)
+ (if_then_else (eq (cc0)
+ (const_int 0))
+ (label_ref (match_dup 3))
+ (pc)))
+ (set (match_dup 2)
+ (plus:SI (match_dup 2)
+ (const_int 1)))
+ (match_dup 3)]
+ "operands[3] = gen_label_rtx ();")
+
+(define_insn_and_split "*addsi3_and_not_r_1"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (plus:SI (and:SI (not:SI (match_operand:SI 1 "register_operand" "r"))
+ (const_int 1))
+ (match_operand:SI 2 "register_operand" "0")))]
+ "(TARGET_H8300H || TARGET_H8300S)"
+ "#"
+ "&& reload_completed"
+ [(set (cc0)
+ (zero_extract:SI (match_dup 1)
+ (const_int 1)
+ (const_int 0)))
+ (set (pc)
+ (if_then_else (ne (cc0)
+ (const_int 0))
+ (label_ref (match_dup 3))
+ (pc)))
+ (set (match_dup 2)
+ (plus:SI (match_dup 2)
+ (const_int 1)))
+ (match_dup 3)]
+ "operands[3] = gen_label_rtx ();")
+
;; ior:HI
(define_insn "*iorhi3_ashift_8"