Commit 98dc53e3 by Kazu Hirata Committed by Kazu Hirata

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
parent c226b803
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
......
......@@ -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"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment