(umuldi3_highpart): New expander and matcher.

From-SVN: r7592
This commit is contained in:
Torbjorn Granlund 1994-06-29 00:19:15 +00:00
parent 14edc0e4d3
commit 74a6106962

View File

@ -417,6 +417,28 @@
""
"mulq %r1,%r2,%0"
[(set_attr "type" "imulq")])
(define_insn "umuldi3_highpart"
[(set (match_operand:DI 0 "register_operand" "=r")
(truncate:DI
(lshiftrt:TI
(mult:TI (zero_extend:TI (match_operand:DI 1 "register_operand" "r"))
(zero_extend:TI (match_operand:DI 2 "register_operand" "r")))
(const_int 64))))]
""
"umulh %1,%2,%0"
[(set_attr "type" "imulq")])
(define_insn ""
[(set (match_operand:DI 0 "register_operand" "=r")
(truncate:DI
(lshiftrt:TI
(mult:TI (zero_extend:TI (match_operand:DI 1 "register_operand" "r"))
(match_operand:TI 2 "cint8_operand" "I"))
(const_int 64))))]
""
"umulh %1,%2,%0"
[(set_attr "type" "imulq")])
;; The divide and remainder operations always take their inputs from
;; r24 and r25, put their output in r27, and clobber r23 and r28.