diff options
author | Kazu Hirata <kazu@hxi.com> | 2002-02-02 20:57:06 +0000 |
---|---|---|
committer | Kazu Hirata <kazu@gcc.gnu.org> | 2002-02-02 20:57:06 +0000 |
commit | 54175a449d923dddcc5cae267f83a5703998d521 (patch) | |
tree | 086da045349aa74e63c22bae9947b3c6b1ae1fc5 | |
parent | eceb175550b1d405787203d13883d10a27642a50 (diff) | |
download | gcc-54175a449d923dddcc5cae267f83a5703998d521.zip gcc-54175a449d923dddcc5cae267f83a5703998d521.tar.gz gcc-54175a449d923dddcc5cae267f83a5703998d521.tar.bz2 |
h8300.md (one_cmpl patterns): Tighten the predicates of operands[1].
* config/h8300/h8300.md (one_cmpl patterns): Tighten the
predicates of operands[1]. Split the patterns for each
processor variant.
From-SVN: r49446
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/h8300/h8300.md | 66 |
2 files changed, 43 insertions, 29 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 96e4904..b6bff10 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2002-02-02 Kazu Hirata <kazu@hxi.com> + * config/h8300/h8300.md (one_cmpl patterns): Tighten the + predicates of operands[1]. Split the patterns for each + processor variant. + +2002-02-02 Kazu Hirata <kazu@hxi.com> + * config/h8300/h8300.md (xor patterns): Tighten the predicates of operands[1] to register_operand. diff --git a/gcc/config/h8300/h8300.md b/gcc/config/h8300/h8300.md index ba9b2d5..da0f6f1 100644 --- a/gcc/config/h8300/h8300.md +++ b/gcc/config/h8300/h8300.md @@ -1348,47 +1348,55 @@ (define_insn "one_cmplqi2" [(set (match_operand:QI 0 "register_operand" "=r") - (not:QI (match_operand:QI 1 "general_operand" "0")))] + (not:QI (match_operand:QI 1 "register_operand" "0")))] "" "not %X0" [(set_attr "length" "2") (set_attr "cc" "set_znv")]) -(define_insn "one_cmplhi2" +(define_expand "one_cmplhi2" [(set (match_operand:HI 0 "register_operand" "=r") - (not:HI (match_operand:HI 1 "general_operand" "0")))] + (not:HI (match_operand:HI 1 "register_operand" "0")))] "" - "* -{ - if (TARGET_H8300) - return \"not %s0\;not %t0\"; - else - return \"not %T0\"; -}" + "") + +(define_insn "" + [(set (match_operand:HI 0 "register_operand" "=r") + (not:HI (match_operand:HI 1 "register_operand" "0")))] + "TARGET_H8300" + "not %s0\;not %t0" [(set_attr "cc" "clobber") - (set (attr "length") - (if_then_else (eq (symbol_ref "TARGET_H8300H || TARGET_H8300S") - (const_int 0)) - (const_int 4) - (const_int 2)))]) + (set_attr "length" "4")]) + +(define_insn "" + [(set (match_operand:HI 0 "register_operand" "=r") + (not:HI (match_operand:HI 1 "register_operand" "0")))] + "TARGET_H8300H || TARGET_H8300S" + "not %T0" + [(set_attr "cc" "set_znv") + (set_attr "length" "2")]) -(define_insn "one_cmplsi2" +(define_expand "one_cmplsi2" [(set (match_operand:SI 0 "register_operand" "=r") - (not:SI (match_operand:SI 1 "general_operand" "0")))] + (not:SI (match_operand:SI 1 "register_operand" "0")))] "" - "* -{ - if (TARGET_H8300) - return \"not %w0\;not %x0\;not %y0\;not %z0\"; - else - return \"not %S0\"; -}" + "") + +(define_insn "" + [(set (match_operand:SI 0 "register_operand" "=r") + (not:SI (match_operand:SI 1 "register_operand" "0")))] + "TARGET_H8300" + "not %w0\;not %x0\;not %y0\;not %z0" [(set_attr "cc" "clobber") - (set (attr "length") - (if_then_else (eq (symbol_ref "TARGET_H8300H || TARGET_H8300S") - (const_int 0)) - (const_int 8) - (const_int 2)))]) + (set_attr "length" "8")]) + +(define_insn "" + [(set (match_operand:SI 0 "register_operand" "=r") + (not:SI (match_operand:SI 1 "register_operand" "0")))] + "TARGET_H8300H || TARGET_H8300S" + "not %S0" + [(set_attr "cc" "set_znv") + (set_attr "length" "2")]) ;; ---------------------------------------------------------------------- ;; JUMP INSTRUCTIONS |