aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKazu Hirata <kazu@cs.umass.edu>2003-03-18 12:50:26 +0000
committerKazu Hirata <kazu@gcc.gnu.org>2003-03-18 12:50:26 +0000
commit1e78888716719edb9b1ba19dd92086ed70fb3613 (patch)
treed088abef8d10956ca7c225064cc91fb91c89d2e4
parent94e001a9a9b38a592b446f6063ffc2da1b9877aa (diff)
downloadgcc-1e78888716719edb9b1ba19dd92086ed70fb3613.zip
gcc-1e78888716719edb9b1ba19dd92086ed70fb3613.tar.gz
gcc-1e78888716719edb9b1ba19dd92086ed70fb3613.tar.bz2
* config/h8300/h8300.md (*iorsi3_two_qi_zext): New.
From-SVN: r64531
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/config/h8300/h8300.md18
2 files changed, 22 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index ca7cc2e..dadb5d8 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/h8300/h8300.md b/gcc/config/h8300/h8300.md
index ccf3d6e..6d19568 100644
--- a/gcc/config/h8300/h8300.md
+++ b/gcc/config/h8300/h8300.md
@@ -2921,6 +2921,24 @@
[(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")