aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorClinton Popetz <cpopetz@cygnus.com>1999-12-14 14:48:18 +0000
committerClinton Popetz <cpopetz@gcc.gnu.org>1999-12-14 09:48:18 -0500
commit9e3fc4303ea57e3547a1c938d1897279859ef412 (patch)
treed2d3074544d6f202620949a2fefdb5700b775436 /gcc
parent2f12c89d4ce0f6729eee90a81208bcd87af3c0eb (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/config/arm/arm.md28
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