aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKazu Hirata <kazu@cs.umass.edu>2002-12-30 15:35:20 +0000
committerKazu Hirata <kazu@gcc.gnu.org>2002-12-30 15:35:20 +0000
commit3cc3e1cd361db12ffe853e32cd48bb209c83f614 (patch)
tree17b88a618bbceaea1f66fc00f736ad8fa9be385f
parenta6e8d1139de77569a6dfaba1dda8b223afc278a7 (diff)
downloadgcc-3cc3e1cd361db12ffe853e32cd48bb209c83f614.zip
gcc-3cc3e1cd361db12ffe853e32cd48bb209c83f614.tar.gz
gcc-3cc3e1cd361db12ffe853e32cd48bb209c83f614.tar.bz2
* config/h8300/h8300.md (*addsi3_lshiftrt_16_zexthi): New.
From-SVN: r60633
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/config/h8300/h8300.md12
2 files changed, 16 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 022ef30..5549bc11 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,9 @@
2002-12-30 Kazu Hirata <kazu@cs.umass.edu>
+ * config/h8300/h8300.md (*addsi3_lshiftrt_16_zexthi): New.
+
+2002-12-30 Kazu Hirata <kazu@cs.umass.edu>
+
* config/h8300/h8300.c (output_logical_op): Use extu.w if we
are clearing the most significant byte.
(compute_logical_op_length): Update to reflect the change in
diff --git a/gcc/config/h8300/h8300.md b/gcc/config/h8300/h8300.md
index e66662a..1a3fcd5 100644
--- a/gcc/config/h8300/h8300.md
+++ b/gcc/config/h8300/h8300.md
@@ -2329,6 +2329,18 @@
[(set_attr "cc" "set_znv")
(set_attr "length" "6")])
+;; plus:SI
+
+(define_insn "*addsi3_lshiftrt_16_zexthi"
+ [(set (match_operand:SI 0 "register_operand" "=r")
+ (plus:SI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
+ (const_int 16))
+ (zero_extend:SI (match_operand:HI 2 "register_operand" "0"))))]
+ "TARGET_H8300H || TARGET_H8300S"
+ "add.w\t%e1,%f0\;xor.w\t%e0,%e0\;rotxl.w\t%e0,%e0"
+ [(set_attr "cc" "clobber")
+ (set_attr "length" "6")])
+
;; ior:HI
(define_insn "*iorhi3_zext"