h8300.md (*andsi3_lshift_n_sb): New.

* config/h8300/h8300.md (*andsi3_lshift_n_sb): New.
	(*iorsi3_and_lshiftrt_n_sb): Likewise.

From-SVN: r61251
This commit is contained in:
Kazu Hirata 2003-01-13 13:20:27 +00:00 committed by Kazu Hirata
parent c226b80339
commit 98dc53e3af
2 changed files with 34 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2003-01-13 Kazu Hirata <kazu@cs.umass.edu>
* config/h8300/h8300.md (*andsi3_lshift_n_sb): New.
(*iorsi3_and_lshiftrt_n_sb): Likewise.
2003-01-12 Mark Mitchell <mark@codesourcery.com>
PR c++/9264

View File

@ -2598,6 +2598,24 @@
(clobber (scratch:QI))])]
"")
;; Accept (A >> 30) & 2 and the like.
(define_insn "*andsi3_lshiftrt_n_sb"
[(set (match_operand:SI 0 "register_operand" "=r")
(and:SI (lshiftrt:SI (match_operand:SI 1 "register_operand" "0")
(match_operand:SI 2 "const_int_operand" "n"))
(match_operand:SI 3 "single_one_operand" "n")))]
"(TARGET_H8300H || TARGET_H8300S)
&& exact_log2 (INTVAL (operands[3])) < 16
&& INTVAL (operands[2]) + exact_log2 (INTVAL (operands[3])) == 31"
"*
{
operands[3] = GEN_INT (exact_log2 (INTVAL (operands[3])));
return \"shll.l\\t%S0\;xor.l\\t%S0,%S0\;bst\\t%Z3,%Y0\";
}"
[(set_attr "length" "8")
(set_attr "cc" "clobber")])
;; plus:SI
(define_insn "*addsi3_upper"
@ -2711,6 +2729,17 @@
[(set_attr "length" "6")
(set_attr "cc" "set_znv")])
(define_insn "*iorsi3_and_lshiftrt_n_sb"
[(set (match_operand:SI 0 "register_operand" "=r")
(ior:SI (and:SI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
(const_int 30))
(const_int 2))
(match_operand:SI 2 "register_operand" "0")))]
"(TARGET_H8300H || TARGET_H8300S)"
"rotl.l\\t%S1\;rotr.l\\t%S1\;bor\\t#1,%w0\;bst\\t#1,%w0"
[(set_attr "length" "8")
(set_attr "cc" "clobber")])
;; Used to OR the exponent of a float.
(define_insn "*iorsi3_shift"