diff options
author | Clinton Popetz <cpopetz@cygnus.com> | 1999-12-14 14:48:18 +0000 |
---|---|---|
committer | Clinton Popetz <cpopetz@gcc.gnu.org> | 1999-12-14 09:48:18 -0500 |
commit | 9e3fc4303ea57e3547a1c938d1897279859ef412 (patch) | |
tree | d2d3074544d6f202620949a2fefdb5700b775436 /gcc | |
parent | 2f12c89d4ce0f6729eee90a81208bcd87af3c0eb (diff) | |
download | gcc-9e3fc4303ea57e3547a1c938d1897279859ef412.zip gcc-9e3fc4303ea57e3547a1c938d1897279859ef412.tar.gz gcc-9e3fc4303ea57e3547a1c938d1897279859ef412.tar.bz2 |
arm.md (mulsidi3adddi, [...]): New patterns for long long multiply-accumulate.
* config/arm/arm.md (mulsidi3adddi, umulsidi3adddi): New patterns
for long long multiply-accumulate.
From-SVN: r30919
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/arm/arm.md | 28 |
2 files changed, 33 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 62f0734..da2ec92 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Tue Dec 14 08:37:27 CST 1999 Clinton Popetz <cpopetz@cygnus.com> + + * config/arm/arm.md (mulsidi3adddi, umulsidi3adddi): New patterns + for long long multiply-accumulate. + Tue Dec 14 13:51:38 MET 1999 Jan Hubicka <hubicka@freesoft.cz> * regclass.c (scan_one_insn): Set loop_cost to 1 when diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index 91795c2..6d760d5 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -965,6 +965,20 @@ [(set_attr "conds" "set") (set_attr "type" "mult")]) +;; Unnamed template to match long long multiply-accumlate (smlal) + +(define_insn "*mulsidi3adddi" + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r,&r") + (plus:DI + (mult:DI (sign_extend:DI + (match_operand:SI 2 "s_register_operand" "r,0,1")) + (sign_extend:DI + (match_operand:SI 1 "s_register_operand" "%r,r,r"))) + (match_dup 0)))] + "arm_fast_multiply" + "smlal%?\\t%Q0, %R0, %1, %2" +[(set_attr "type" "mult")]) + (define_insn "mulsidi3" [(set (match_operand:DI 0 "s_register_operand" "=&r") (mult:DI (sign_extend:DI @@ -985,6 +999,20 @@ "umull%?\\t%Q0, %R0, %1, %2" [(set_attr "type" "mult")]) +;; Unnamed template to match long long unsigned multiply-accumlate (umlal) + +(define_insn "*umulsidi3adddi" + [(set (match_operand:DI 0 "s_register_operand" "=&r,&r,&r") + (plus:DI + (mult:DI (zero_extend:DI + (match_operand:SI 2 "s_register_operand" "r,0,1")) + (zero_extend:DI + (match_operand:SI 1 "s_register_operand" "%r,r,r"))) + (match_dup 0)))] + "arm_fast_multiply" + "umlal%?\\t%Q0, %R0, %1, %2" +[(set_attr "type" "mult")]) + (define_insn "smulsi3_highpart" [(set (match_operand:SI 0 "s_register_operand" "=&r,&r") (truncate:SI |