h8300.md (*tst_extzv_bitqi_1_n): Accept the test of bit 7.

* config/h8300/h8300.md (*tst_extzv_bitqi_1_n): Accept the
	test of bit 7.
	(*tst_extzv_memqi_1_n): Likewise.
	(a peephole2): New.

From-SVN: r63558
This commit is contained in:
Kazu Hirata 2003-02-28 13:34:31 +00:00 committed by Kazu Hirata
parent 4480b3dcf6
commit 3c0423169e
2 changed files with 30 additions and 4 deletions

View File

@ -1,3 +1,10 @@
2003-02-28 Kazu Hirata <kazu@cs.umass.edu>
* config/h8300/h8300.md (*tst_extzv_bitqi_1_n): Accept the
test of bit 7.
(*tst_extzv_memqi_1_n): Likewise.
(a peephole2): New.
2002-02-28 Richard Sandiford <rsandifo@redhat.com>
* config/mips/mips.h (CRT_CALL_STATIC_FUNCTION): Wrap in

View File

@ -592,8 +592,7 @@
[(set (cc0) (zero_extract:SI (match_operand:QI 0 "bit_operand" "r,U")
(const_int 1)
(match_operand 1 "const_int_operand" "n,n")))]
"(TARGET_H8300H || TARGET_H8300S)
&& INTVAL (operands[1]) != 7"
"(TARGET_H8300H || TARGET_H8300S)"
"btst %Z1,%Y0"
[(set_attr "length" "2,8")
(set_attr "cc" "set_zn,set_zn")])
@ -604,8 +603,7 @@
(match_operand 1 "const_int_operand" "n")))
(clobber (match_scratch:QI 2 "=&r"))]
"(TARGET_H8300H || TARGET_H8300S)
&& !EXTRA_CONSTRAINT (operands[0], 'U')
&& INTVAL (operands[1]) != 7"
&& !EXTRA_CONSTRAINT (operands[0], 'U')"
"#"
"&& reload_completed"
[(set (match_dup 2)
@ -3514,6 +3512,27 @@
(pc)))]
"")
(define_peephole2
[(set (cc0)
(zero_extract:SI (match_operand:QI 0 "register_operand" "")
(const_int 1)
(const_int 7)))
(set (pc)
(if_then_else (match_operator 1 "eqne_operator"
[(cc0) (const_int 0)])
(label_ref (match_operand 2 "" ""))
(pc)))]
"(TARGET_H8300H || TARGET_H8300S)"
[(set (cc0)
(match_dup 0))
(set (pc)
(if_then_else (match_op_dup 3 [(cc0) (const_int 0)])
(label_ref (match_dup 2))
(pc)))]
"operands[3] = ((GET_CODE (operands[1]) == EQ)
? gen_rtx_GE (VOIDmode, cc0_rtx, const0_rtx)
: gen_rtx_LT (VOIDmode, cc0_rtx, const0_rtx));")
;; (compare (reg:SI) (const_int)) takes 6 bytes, so we try to achieve
;; the equivalent with shorter sequences. Here is the summary. Cases
;; are grouped for each define_peephole2.