diff options
author | Kazu Hirata <kazu@cs.umass.edu> | 2002-11-15 22:16:09 +0000 |
---|---|---|
committer | Kazu Hirata <kazu@gcc.gnu.org> | 2002-11-15 22:16:09 +0000 |
commit | 6368a493210d49dc5be62ad0da59112d23dfd3ee (patch) | |
tree | 60f661e343ab02cd786ae7cf6fdd94d82d49faf0 | |
parent | 737c38d12a975ef81963eb60abf05f73683c308e (diff) | |
download | gcc-6368a493210d49dc5be62ad0da59112d23dfd3ee.zip gcc-6368a493210d49dc5be62ad0da59112d23dfd3ee.tar.gz gcc-6368a493210d49dc5be62ad0da59112d23dfd3ee.tar.bz2 |
* config/h8300/h8300.md (4 anonymous patterns): New.
From-SVN: r59144
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/config/h8300/h8300.md | 42 |
2 files changed, 46 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 92562b2..91f0aff 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2002-11-15 Kazu Hirata <kazu@cs.umass.edu> + + * config/h8300/h8300.md (4 anonymous patterns): New. + 2002-11-15 Geoffrey Keating <geoffk@apple.com> * params.def (GGC_MIN_HEAPSIZE): Fix GGC_ALWAYS_COLLECT problem. diff --git a/gcc/config/h8300/h8300.md b/gcc/config/h8300/h8300.md index f8a8944..d815445 100644 --- a/gcc/config/h8300/h8300.md +++ b/gcc/config/h8300/h8300.md @@ -2229,6 +2229,48 @@ [(set_attr "cc" "clobber") (set_attr "length" "2")]) +;; Storing a part of HImode to QImode. + +(define_insn "" + [(set (match_operand:QI 0 "general_operand_dst" "=rm<") + (subreg:QI (lshiftrt:HI (match_operand:HI 1 "register_operand" "r") + (const_int 8)) 1))] + "" + "mov.b\\t%t1,%R0" + [(set_attr "cc" "set_znv") + (set_attr "length" "8")]) + +;; Storing a part of SImode to QImode. + +(define_insn "" + [(set (match_operand:QI 0 "general_operand_dst" "=rm<") + (subreg:QI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r") + (const_int 8)) 3))] + "" + "mov.b\\t%x1,%R0" + [(set_attr "cc" "set_znv") + (set_attr "length" "8")]) + +(define_insn "" + [(set (match_operand:QI 0 "general_operand_dst" "=rm<") + (subreg:QI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r") + (const_int 16)) 3)) + (clobber (match_scratch:SI 2 "=&r"))] + "TARGET_H8300H || TARGET_H8300S" + "mov.w\\t%e1,%f2\;mov.b\\t%w2,%R0" + [(set_attr "cc" "set_znv") + (set_attr "length" "8")]) + +(define_insn "" + [(set (match_operand:QI 0 "general_operand_dst" "=rm<") + (subreg:QI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r") + (const_int 24)) 3)) + (clobber (match_scratch:SI 2 "=&r"))] + "TARGET_H8300H || TARGET_H8300S" + "mov.w\\t%e1,%f2\;mov.b\\t%x2,%R0" + [(set_attr "cc" "set_znv") + (set_attr "length" "8")]) + (define_insn_and_split "" [(set (pc) (if_then_else (eq (zero_extract:SI (subreg:SI (match_operand:QI 0 "register_operand" "") 0) |