* config/h8300/h8300.md (*iorsi3_two_qi_zext): New.
authorKazu Hirata <kazu@cs.umass.edu>
Tue, 18 Mar 2003 12:50:26 +0000 (12:50 +0000)
committerKazu Hirata <kazu@gcc.gnu.org>
Tue, 18 Mar 2003 12:50:26 +0000 (12:50 +0000)
From-SVN: r64531

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

index ca7cc2ee6270916eb2d09ebdde770617659f52bf..dadb5d81475d76ce3fb7806f59f71cc974264908 100644 (file)
@@ -1,3 +1,7 @@
+2003-03-18  Kazu Hirata  <kazu@cs.umass.edu>
+
+       * config/h8300/h8300.md (*iorsi3_two_qi_zext): New.
+
 2003-03-18  Andreas Schwab  <schwab@suse.de>
 
        * dwarf2out.c (output_file_names): Cast size_t to unsigned long
index ccf3d6ea71d79236a01f5bacb191eee6ae9d2394..6d19568a6363c3954fd3be1090d04c60f190ae21 100644 (file)
   [(set_attr "cc" "clobber")
    (set_attr "length" "2")])
 
+(define_insn_and_split "*iorsi3_two_qi_zext"
+  [(set (match_operand:SI 0 "register_operand" "=&r")
+       (ior:SI (zero_extend:SI (match_operand:QI 1 "memory_operand" "m"))
+
+               (and:SI (ashift:SI (subreg:SI (match_operand:QI 2 "memory_operand" "m") 0)
+                                  (const_int 8))
+                       (const_int 65280))))]
+  "(TARGET_H8300H || TARGET_H8300S)"
+  "#"
+  "&& reload_completed"
+  [(set (match_dup 3)
+       (ior:HI (zero_extend:HI (match_dup 1))
+               (ashift:HI (subreg:HI (match_dup 2) 0)
+                          (const_int 8))))
+   (set (match_dup 0)
+       (zero_extend:SI (match_dup 3)))]
+  "operands[3] = gen_rtx_REG (HImode, REGNO (operands[0]));")
+
 (define_insn "*iorsi3_e2f"
   [(set (match_operand:SI 0 "register_operand" "=r")
        (ior:SI (and:SI (match_operand:SI 1 "register_operand" "0")