diff options
author | Richard Earnshaw <rearnsha@arm.com> | 2003-02-28 15:31:21 +0000 |
---|---|---|
committer | Richard Earnshaw <rearnsha@gcc.gnu.org> | 2003-02-28 15:31:21 +0000 |
commit | b8c53e96add72de918819b4d13308715faeaa7af (patch) | |
tree | a7b4e5bf47a4e181aaeb1d5d2d916d511071d77c | |
parent | b93828f33afe9a08ce7c39f87630ee4b2e88bcae (diff) | |
download | gcc-b8c53e96add72de918819b4d13308715faeaa7af.zip gcc-b8c53e96add72de918819b4d13308715faeaa7af.tar.gz gcc-b8c53e96add72de918819b4d13308715faeaa7af.tar.bz2 |
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
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/arm/arm.md | 55 |
2 files changed, 55 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fb08e3a..a059d23 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +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> * config/arm/arm.c (note_invalid_constants): Change parameter type diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index 946064b..e53a526 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -1329,9 +1329,50 @@ (match_operand:HI 1 "s_register_operand" "%r")) (sign_extend:SI (match_operand:HI 2 "s_register_operand" "r"))))] - "TARGET_ARM && arm_is_xscale" + "TARGET_ARM && arm_arch5e" "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" @@ -1341,9 +1382,10 @@ (match_operand:HI 2 "s_register_operand" "%r")) (sign_extend:SI (match_operand:HI 3 "s_register_operand" "r")))))] - "TARGET_ARM && arm_is_xscale" + "TARGET_ARM && arm_arch5e" "smlabb%?\\t%0, %2, %3, %1" - [(set_attr "type" "mult")] + [(set_attr "type" "mult") + (set_attr "predicable" "yes")] ) (define_insn "*mulhidi3adddi" @@ -1354,9 +1396,10 @@ (match_operand:HI 2 "s_register_operand" "%r")) (sign_extend:DI (match_operand:HI 3 "s_register_operand" "r")))))] - "TARGET_ARM && arm_is_xscale" + "TARGET_ARM && arm_arch5e" "smlalbb%?\\t%Q0, %R0, %2, %3" -[(set_attr "type" "mult")]) + [(set_attr "type" "mult") + (set_attr "predicable" "yes")]) (define_insn "*arm_mulsf3" [(set (match_operand:SF 0 "s_register_operand" "=f") |