Commit 5aa58c13 by Richard Kenner

(multiply/multiplu/mulm/mulmu insns): These clobber Q.

From-SVN: r3885
parent cc5ae869
...@@ -1115,7 +1115,8 @@ ...@@ -1115,7 +1115,8 @@
(define_insn "mulsi3" (define_insn "mulsi3"
[(set (match_operand:SI 0 "gpc_reg_operand" "=r") [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
(mult:SI (match_operand:SI 1 "gpc_reg_operand" "%r") (mult:SI (match_operand:SI 1 "gpc_reg_operand" "%r")
(match_operand:SI 2 "gpc_reg_operand" "r")))] (match_operand:SI 2 "gpc_reg_operand" "r")))
(clobber (match_scratch:SI 3 "=&q"))]
"" ""
"multiply %0,%1,%2") "multiply %0,%1,%2")
...@@ -1124,7 +1125,8 @@ ...@@ -1124,7 +1125,8 @@
(subreg:SI (subreg:SI
(mult:DI (mult:DI
(sign_extend:DI (match_operand:SI 1 "gpc_reg_operand" "%r")) (sign_extend:DI (match_operand:SI 1 "gpc_reg_operand" "%r"))
(sign_extend:DI (match_operand:SI 2 "gpc_reg_operand" "r"))) 0))] (sign_extend:DI (match_operand:SI 2 "gpc_reg_operand" "r"))) 0))
(clobber (match_scratch:SI 3 "=&q"))]
"" ""
"multm %0,%1,%2") "multm %0,%1,%2")
...@@ -1133,14 +1135,16 @@ ...@@ -1133,14 +1135,16 @@
(subreg:SI (subreg:SI
(mult:DI (mult:DI
(zero_extend:DI (match_operand:SI 1 "gpc_reg_operand" "%r")) (zero_extend:DI (match_operand:SI 1 "gpc_reg_operand" "%r"))
(zero_extend:DI (match_operand:SI 2 "gpc_reg_operand" "r"))) 0))] (zero_extend:DI (match_operand:SI 2 "gpc_reg_operand" "r"))) 0))
(clobber (match_scratch:SI 3 "=&q"))]
"" ""
"multmu %0,%1,%2") "multmu %0,%1,%2")
(define_insn "mulsidi3" (define_insn "mulsidi3"
[(set (match_operand:DI 0 "gpc_reg_operand" "=r") [(set (match_operand:DI 0 "gpc_reg_operand" "=r")
(mult:DI (sign_extend:DI (match_operand:SI 1 "gpc_reg_operand" "r")) (mult:DI (sign_extend:DI (match_operand:SI 1 "gpc_reg_operand" "r"))
(sign_extend:DI (match_operand:SI 2 "gpc_reg_operand" "r"))))] (sign_extend:DI (match_operand:SI 2 "gpc_reg_operand" "r"))))
(clobber (match_scratch:SI 3 "=&q"))]
"" ""
"multiply %L0,%1,%2\;multm %0,%1,%2" "multiply %L0,%1,%2\;multm %0,%1,%2"
[(set_attr "type" "multi")]) [(set_attr "type" "multi")])
...@@ -1148,14 +1152,17 @@ ...@@ -1148,14 +1152,17 @@
(define_split (define_split
[(set (match_operand:DI 0 "gpc_reg_operand" "") [(set (match_operand:DI 0 "gpc_reg_operand" "")
(mult:DI (sign_extend:DI (match_operand:SI 1 "gpc_reg_operand" "")) (mult:DI (sign_extend:DI (match_operand:SI 1 "gpc_reg_operand" ""))
(sign_extend:DI (match_operand:SI 2 "gpc_reg_operand" ""))))] (sign_extend:DI (match_operand:SI 2 "gpc_reg_operand" ""))))
(clobber (reg:SI 180))]
"reload_completed" "reload_completed"
[(set (match_dup 3) [(parallel [(set (match_dup 3)
(mult:SI (match_dup 1) (match_dup 2))) (mult:SI (match_dup 1) (match_dup 2)))
(set (match_dup 4) (clobber (reg:SI 180))])
(subreg:SI (mult:DI (parallel [(set (match_dup 4)
(sign_extend:DI (match_dup 1)) (subreg:SI (mult:DI
(sign_extend:DI (match_dup 2))) 0))] (sign_extend:DI (match_dup 1))
(sign_extend:DI (match_dup 2))) 0))
(clobber (reg:SI 180))])]
" "
{ operands[3] = operand_subword (operands[0], 1, 1, DImode); { operands[3] = operand_subword (operands[0], 1, 1, DImode);
operands[4] = operand_subword (operands[1], 0, 1, DImode); } ") operands[4] = operand_subword (operands[1], 0, 1, DImode); } ")
...@@ -1163,7 +1170,8 @@ ...@@ -1163,7 +1170,8 @@
(define_insn "umulsidi3" (define_insn "umulsidi3"
[(set (match_operand:DI 0 "gpc_reg_operand" "=r") [(set (match_operand:DI 0 "gpc_reg_operand" "=r")
(mult:DI (zero_extend:DI (match_operand:SI 1 "gpc_reg_operand" "r")) (mult:DI (zero_extend:DI (match_operand:SI 1 "gpc_reg_operand" "r"))
(zero_extend:DI (match_operand:SI 2 "gpc_reg_operand" "r"))))] (zero_extend:DI (match_operand:SI 2 "gpc_reg_operand" "r"))))
(clobber (match_scratch:SI 3 "=&q"))]
"" ""
"multiplu %L0,%1,%2\;multmu %0,%1,%2" "multiplu %L0,%1,%2\;multmu %0,%1,%2"
[(set_attr "type" "multi")]) [(set_attr "type" "multi")])
...@@ -1171,13 +1179,16 @@ ...@@ -1171,13 +1179,16 @@
(define_split (define_split
[(set (match_operand:DI 0 "gpc_reg_operand" "") [(set (match_operand:DI 0 "gpc_reg_operand" "")
(mult:DI (zero_extend:DI (match_operand:SI 1 "gpc_reg_operand" "")) (mult:DI (zero_extend:DI (match_operand:SI 1 "gpc_reg_operand" ""))
(zero_extend:DI (match_operand:SI 2 "gpc_reg_operand" ""))))] (zero_extend:DI (match_operand:SI 2 "gpc_reg_operand" ""))))
(clobber (reg:SI 180))]
"reload_completed" "reload_completed"
[(set (match_dup 3) [(parallel [(set (match_dup 3)
(mult:SI (match_dup 1) (match_dup 2))) (mult:SI (match_dup 1) (match_dup 2)))
(set (match_dup 4) (clobber (reg:SI 180))])
(subreg:SI (mult:DI (zero_extend:DI (match_dup 1)) (parallel [(set (match_dup 4)
(zero_extend:DI (match_dup 2))) 0))] (subreg:SI (mult:DI (zero_extend:DI (match_dup 1))
(zero_extend:DI (match_dup 2))) 0))
(clobber (reg:SI 180))])]
" "
{ operands[3] = operand_subword (operands[0], 1, 1, DImode); { operands[3] = operand_subword (operands[0], 1, 1, DImode);
operands[4] = operand_subword (operands[1], 0, 1, DImode); } ") operands[4] = operand_subword (operands[1], 0, 1, DImode); } ")
......
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