diff options
author | Kazu Hirata <kazu@cs.umass.edu> | 2002-12-12 22:29:10 +0000 |
---|---|---|
committer | Kazu Hirata <kazu@gcc.gnu.org> | 2002-12-12 22:29:10 +0000 |
commit | 7930523de8ea4ce820f4a83b2a87b076b5d0ff37 (patch) | |
tree | 3536215d2e42dc9a4e0a3446c6d0157591ba78a3 | |
parent | 61c85ff12df4cacdc2bc956e3bcc76f555659646 (diff) | |
download | gcc-7930523de8ea4ce820f4a83b2a87b076b5d0ff37.zip gcc-7930523de8ea4ce820f4a83b2a87b076b5d0ff37.tar.gz gcc-7930523de8ea4ce820f4a83b2a87b076b5d0ff37.tar.bz2 |
* config/h8300/h8300.md: Add a new peephole2.
From-SVN: r60082
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/config/h8300/h8300.md | 33 |
2 files changed, 37 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3accc82..bf71fdb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2002-12-12 Kazu Hirata <kazu@cs.umass.edu> + * config/h8300/h8300.md: Add a new peephole2. + +2002-12-12 Kazu Hirata <kazu@cs.umass.edu> + * config/h8300/h8300.md (a peephole2): Accept a constant that's accepted by CONST_OK_FOR_J. diff --git a/gcc/config/h8300/h8300.md b/gcc/config/h8300/h8300.md index ca95f4b..8bc69aa 100644 --- a/gcc/config/h8300/h8300.md +++ b/gcc/config/h8300/h8300.md @@ -2748,3 +2748,36 @@ (plus:SI (match_dup 0) (match_dup 1)))] "") + +;; Turn +;; +;; mov.l er7,er0 +;; add.l #10,er0 (takes 8 bytes) +;; +;; into +;; +;; sub.l er0,er0 +;; add.b #10,r0l +;; add.l er7,er0 (takes 6 bytes) + +(define_peephole2 + [(set (match_operand:SI 0 "register_operand" "") + (match_operand:SI 1 "register_operand" "")) + (set (match_dup 0) + (plus:SI (match_dup 0) + (match_operand:SI 2 "const_int_operand" "")))] + "(TARGET_H8300H || TARGET_H8300S) + && REG_P (operands[0]) && REG_P (operands[1]) + && REGNO (operands[0]) != REGNO (operands[1]) + && !CONST_OK_FOR_L (INTVAL (operands[2])) + && !CONST_OK_FOR_N (INTVAL (operands[2])) + && ((INTVAL (operands[2]) & 0xff) == INTVAL (operands[2]) + || (INTVAL (operands[2]) & 0xff00) == INTVAL (operands[2]) + || INTVAL (operands[2]) == 0xffff + || INTVAL (operands[2]) == 0xfffe)" + [(set (match_dup 0) + (match_dup 2)) + (set (match_dup 0) + (plus:SI (match_dup 0) + (match_dup 1)))] + "") |