OSDN Git Service

* config/h8300/h8300.md (a peephole2): New.
authorkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 20 Mar 2003 16:03:34 +0000 (16:03 +0000)
committerkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 20 Mar 2003 16:03:34 +0000 (16:03 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@64614 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 43217ac..0f58a3f 100644 (file)
@@ -1,5 +1,9 @@
 2003-03-20  Kazu Hirata  <kazu@cs.umass.edu>
 
+       * config/h8300/h8300.md (a peephole2): New.
+
+2003-03-20  Kazu Hirata  <kazu@cs.umass.edu>
+
        * config/h8300/h8300.md (*addsi3_and_r_1): New.
        (*addsi3_and_not_r_1): Likewise.
 
index 785be85..50db771 100644 (file)
 
 (define_peephole2
   [(set (match_operand:SI 0 "register_operand" "")
+       (match_operand:SI 1 "general_operand" ""))
+   (set (match_dup 0)
+       (and:SI (match_dup 0)
+               (match_operand:SI 2 "const_int_qi_operand" "")))]
+  "(TARGET_H8300H || TARGET_H8300S)
+   && !reg_overlap_mentioned_p (operands[0], operands[1])
+   && !(GET_CODE (operands[1]) == MEM && MEM_VOLATILE_P (operands[1]))"
+  [(set (match_dup 0)
+       (const_int 0))
+   (set (strict_low_part (match_dup 3))
+       (match_dup 4))
+   (set (match_dup 0)
+       (and:SI (match_dup 0)
+               (match_dup 5)))]
+  "operands[3] = gen_lowpart (QImode, operands[0]);
+   operands[4] = gen_lowpart (QImode, operands[1]);
+   operands[5] = GEN_INT (~0xff | INTVAL (operands[2]));")
+
+(define_peephole2
+  [(set (match_operand:SI 0 "register_operand" "")
        (match_operand:SI 1 "memory_operand" ""))
    (set (match_dup 0)
        (and:SI (match_dup 0)