Commit b8c53e96 by Richard Earnshaw Committed by Richard Earnshaw

arm.md (mulhisi3, [...]): Enable for any ARMv5e processor, not just for XScale.

* arm.md (mulhisi3, mulhisi3addsi, mulhidi3adddi): Enable for any
ARMv5e processor, not just for XScale.  Instructions are predicable.
(mulhisi3tb, mulhisi3bt, mulhisi3tt): New patterns for ARMv5e.

From-SVN: r63562
parent b93828f3
2003-02-28 Richard Earnshaw <rearnsha@arm.com>
* arm.md (mulhisi3, mulhisi3addsi, mulhidi3adddi): Enable for any
ARMv5e processor, not just for XScale. Instructions are predicable.
(mulhisi3tb, mulhisi3bt, mulhisi3tt): New patterns for ARMv5e.
2003-02-28 Nick Clifton <nickc@redhat.com> 2003-02-28 Nick Clifton <nickc@redhat.com>
* config/arm/arm.c (note_invalid_constants): Change parameter type * config/arm/arm.c (note_invalid_constants): Change parameter type
......
...@@ -1329,9 +1329,50 @@ ...@@ -1329,9 +1329,50 @@
(match_operand:HI 1 "s_register_operand" "%r")) (match_operand:HI 1 "s_register_operand" "%r"))
(sign_extend:SI (sign_extend:SI
(match_operand:HI 2 "s_register_operand" "r"))))] (match_operand:HI 2 "s_register_operand" "r"))))]
"TARGET_ARM && arm_is_xscale" "TARGET_ARM && arm_arch5e"
"smulbb%?\\t%0, %1, %2" "smulbb%?\\t%0, %1, %2"
[(set_attr "type" "mult")] [(set_attr "type" "mult")
(set_attr "predicable" "yes")]
)
(define_insn "*mulhisi3tb"
[(set (match_operand:SI 0 "s_register_operand" "=r")
(mult:SI (ashiftrt:SI
(match_operand:SI 1 "s_register_operand" "r")
(const_int 16))
(sign_extend:SI
(match_operand:HI 2 "s_register_operand" "r"))))]
"TARGET_ARM && arm_arch5e"
"smultb%?\\t%0, %1, %2"
[(set_attr "type" "mult")
(set_attr "predicable" "yes")]
)
(define_insn "*mulhisi3bt"
[(set (match_operand:SI 0 "s_register_operand" "=r")
(mult:SI (sign_extend:SI
(match_operand:HI 1 "s_register_operand" "r"))
(ashiftrt:SI
(match_operand:SI 2 "s_register_operand" "r")
(const_int 16))))]
"TARGET_ARM && arm_arch5e"
"smulbt%?\\t%0, %1, %2"
[(set_attr "type" "mult")
(set_attr "predicable" "yes")]
)
(define_insn "*mulhisi3tt"
[(set (match_operand:SI 0 "s_register_operand" "=r")
(mult:SI (ashiftrt:SI
(match_operand:SI 1 "s_register_operand" "r")
(const_int 16))
(ashiftrt:SI
(match_operand:SI 2 "s_register_operand" "r")
(const_int 16))))]
"TARGET_ARM && arm_arch5e"
"smultt%?\\t%0, %1, %2"
[(set_attr "type" "mult")
(set_attr "predicable" "yes")]
) )
(define_insn "*mulhisi3addsi" (define_insn "*mulhisi3addsi"
...@@ -1341,9 +1382,10 @@ ...@@ -1341,9 +1382,10 @@
(match_operand:HI 2 "s_register_operand" "%r")) (match_operand:HI 2 "s_register_operand" "%r"))
(sign_extend:SI (sign_extend:SI
(match_operand:HI 3 "s_register_operand" "r")))))] (match_operand:HI 3 "s_register_operand" "r")))))]
"TARGET_ARM && arm_is_xscale" "TARGET_ARM && arm_arch5e"
"smlabb%?\\t%0, %2, %3, %1" "smlabb%?\\t%0, %2, %3, %1"
[(set_attr "type" "mult")] [(set_attr "type" "mult")
(set_attr "predicable" "yes")]
) )
(define_insn "*mulhidi3adddi" (define_insn "*mulhidi3adddi"
...@@ -1354,9 +1396,10 @@ ...@@ -1354,9 +1396,10 @@
(match_operand:HI 2 "s_register_operand" "%r")) (match_operand:HI 2 "s_register_operand" "%r"))
(sign_extend:DI (sign_extend:DI
(match_operand:HI 3 "s_register_operand" "r")))))] (match_operand:HI 3 "s_register_operand" "r")))))]
"TARGET_ARM && arm_is_xscale" "TARGET_ARM && arm_arch5e"
"smlalbb%?\\t%Q0, %R0, %2, %3" "smlalbb%?\\t%Q0, %R0, %2, %3"
[(set_attr "type" "mult")]) [(set_attr "type" "mult")
(set_attr "predicable" "yes")])
(define_insn "*arm_mulsf3" (define_insn "*arm_mulsf3"
[(set (match_operand:SF 0 "s_register_operand" "=f") [(set (match_operand:SF 0 "s_register_operand" "=f")
......
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