Commit d5db6922 by Torbjorn Granlund

(recognizer for general uaddcm): New pattern.

(iorsi3): New DEFINE_EXPAND.
(iorsi3 recognizer for [reg reg]): Now unnamed.
Put output template here, don't call output_ior.

From-SVN: r3635
parent 47cc012b
...@@ -1650,6 +1650,13 @@ ...@@ -1650,6 +1650,13 @@
}" }"
[(set_attr "length" "2")]) [(set_attr "length" "2")])
(define_insn ""
[(set (match_operand:SI 0 "register_operand" "=r")
(plus:SI (not:SI (match_operand:SI 1 "register_operand" "r"))
(match_operand:SI 2 "register_operand" "r")))]
""
"uaddcm %2,%1,%0")
(define_insn "addsi3" (define_insn "addsi3"
[(set (match_operand:SI 0 "register_operand" "=r,r") [(set (match_operand:SI 0 "register_operand" "=r,r")
(plus:SI (match_operand:SI 1 "register_operand" "%r,r") (plus:SI (match_operand:SI 1 "register_operand" "%r,r")
...@@ -1966,6 +1973,18 @@ ...@@ -1966,6 +1973,18 @@
"or %1,%2,%0\;or %R1,%R2,%R0" "or %1,%2,%0\;or %R1,%R2,%R0"
[(set_attr "length" "2")]) [(set_attr "length" "2")])
;; Need a define_expand because we've run out of CONST_OK... characters.
(define_expand "iorsi3"
[(set (match_operand:SI 0 "register_operand" "")
(ior:SI (match_operand:SI 1 "register_operand" "")
(match_operand:SI 2 "arith32_operand" "")))]
""
"
{
if (! (ior_operand (operands[2]) || register_operand (operands[2])))
operands[2] = force_reg (SImode, operands[2]);
}")
(define_insn "" (define_insn ""
[(set (match_operand:SI 0 "register_operand" "=r") [(set (match_operand:SI 0 "register_operand" "=r")
(ior:SI (match_operand:SI 1 "register_operand" "0") (ior:SI (match_operand:SI 1 "register_operand" "0")
...@@ -1973,12 +1992,12 @@ ...@@ -1973,12 +1992,12 @@
"" ""
"* return output_ior (operands); ") "* return output_ior (operands); ")
(define_insn "iorsi3" (define_insn ""
[(set (match_operand:SI 0 "register_operand" "=r") [(set (match_operand:SI 0 "register_operand" "=r")
(ior:SI (match_operand:SI 1 "register_operand" "%r") (ior:SI (match_operand:SI 1 "register_operand" "%r")
(match_operand:SI 2 "register_operand" "r")))] (match_operand:SI 2 "register_operand" "r")))]
"" ""
"* return output_ior (operands); ") "or %1,%2,%0")
(define_expand "xordi3" (define_expand "xordi3"
[(set (match_operand:DI 0 "register_operand" "") [(set (match_operand:DI 0 "register_operand" "")
......
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