OSDN Git Service

* config/h8300/h8300.md (*addsi3_and_r_1): New.
authorkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 20 Mar 2003 06:43:29 +0000 (06:43 +0000)
committerkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 20 Mar 2003 06:43:29 +0000 (06:43 +0000)
(*addsi3_and_not_r_1): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@64607 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/h8300/h8300.md

index 3dd1e46..43217ac 100644 (file)
@@ -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@.
index 6d19568..785be85 100644 (file)
   [(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"