Commit 5c102b48 by Kazu Hirata Committed by Kazu Hirata

h8300.md (udivmodqi4): Split the pattern into an expander and an anonymous pattern.

	* config/h8300/h8300.md (udivmodqi4): Split the pattern into
	an expander and an anonymous pattern.  Zero out the upper half
	of the dividend in the expander.
	(udivmodqi4): Likewise.

From-SVN: r56923
parent 902c7fdf
2002-09-07 Kazu Hirata <kazu@cs.umass.edu> 2002-09-07 Kazu Hirata <kazu@cs.umass.edu>
* config/h8300/h8300.md (udivmodqi4): Split the pattern into
an expander and an anonymous pattern. Zero out the upper half
of the dividend in the expander.
(udivmodqi4): Likewise.
2002-09-07 Kazu Hirata <kazu@cs.umass.edu>
* config/h8300/h8300.c: Fix formatting. * config/h8300/h8300.c: Fix formatting.
* config/h8300/h8300.h: Likewise. * config/h8300/h8300.h: Likewise.
* config/h8300/h8300.md: Likewise. * config/h8300/h8300.md: Likewise.
......
...@@ -911,7 +911,25 @@ ...@@ -911,7 +911,25 @@
;; DIVIDE/MOD INSTRUCTIONS ;; DIVIDE/MOD INSTRUCTIONS
;; ---------------------------------------------------------------------- ;; ----------------------------------------------------------------------
(define_insn "udivmodqi4" (define_expand "udivmodqi4"
[(set (match_operand:HI 1 "register_operand" "")
(and:HI (match_dup 1)
(const_int 255)))
(parallel [(set (match_operand:QI 0 "register_operand" "")
(truncate:QI
(udiv:HI
(match_dup 1)
(zero_extend:HI
(match_operand:QI 2 "register_operand" "")))))
(set (match_operand:QI 3 "register_operand" "")
(truncate:QI
(umod:HI
(match_dup 1)
(zero_extend:HI (match_dup 2)))))])]
"TARGET_H8300H || TARGET_H8300S"
"")
(define_insn ""
[(set (match_operand:QI 0 "register_operand" "=r") [(set (match_operand:QI 0 "register_operand" "=r")
(truncate:QI (truncate:QI
(udiv:HI (udiv:HI
...@@ -955,7 +973,25 @@ ...@@ -955,7 +973,25 @@
[(set_attr "length" "6") [(set_attr "length" "6")
(set_attr "cc" "clobber")]) (set_attr "cc" "clobber")])
(define_insn "udivmodhi4" (define_expand "udivmodhi4"
[(set (match_operand:SI 1 "register_operand" "")
(and:SI (match_dup 1)
(const_int 65535)))
(parallel [(set (match_operand:HI 0 "register_operand" "")
(truncate:HI
(udiv:SI
(match_dup 1)
(zero_extend:SI
(match_operand:HI 2 "register_operand" "")))))
(set (match_operand:HI 3 "register_operand" "")
(truncate:HI
(umod:SI
(match_dup 1)
(zero_extend:SI (match_dup 2)))))])]
"TARGET_H8300H || TARGET_H8300S"
"")
(define_insn ""
[(set (match_operand:HI 0 "register_operand" "=r") [(set (match_operand:HI 0 "register_operand" "=r")
(truncate:HI (truncate:HI
(udiv:SI (udiv:SI
......
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