From: cpopetz Date: Tue, 14 Dec 1999 14:48:18 +0000 (+0000) Subject: * config/arm/arm.md (mulsidi3adddi, umulsidi3adddi): New patterns X-Git-Tag: upstream/4.9.2~104183 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=82b85d083a367b761c1fde3d1a8ac61e73b5b13b;p=platform%2Fupstream%2Flinaro-gcc.git * config/arm/arm.md (mulsidi3adddi, umulsidi3adddi): New patterns for long long multiply-accumulate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@30919 138bc75d-0d04-0410-961f-82ee72b054a4 --- 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 + + * config/arm/arm.md (mulsidi3adddi, umulsidi3adddi): New patterns + for long long multiply-accumulate. + Tue Dec 14 13:51:38 MET 1999 Jan Hubicka * 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