From b082bfdb4f6b2823962f7f90ec5a7fe1fc78e3e7 Mon Sep 17 00:00:00 2001 From: Richard Earnshaw Date: Mon, 13 Nov 2000 13:58:51 +0000 Subject: arm.md (mulsidi3adddi, [...]): Revert previous change. * arm.md (mulsidi3adddi, umulsidi3adddi): Revert previous change. Rewrite to avoid use of match_dup. Don't try to tie registers that are not in the same mode. From-SVN: r37425 --- gcc/ChangeLog | 6 ++++++ gcc/config/arm/arm.md | 20 ++++++++++---------- 2 files changed, 16 insertions(+), 10 deletions(-) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 004b958..bb2a1c5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2000-11-13 Richard Earnshaw + + * arm.md (mulsidi3adddi, umulsidi3adddi): Revert previous change. + Rewrite to avoid use of match_dup. Don't try to tie registers that + are not in the same mode. + 2000-11-13 Joseph S. Myers * invoke.texi: Update lists of languages and suffixes supported. diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index a4d7b80..ddd6ace 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -1263,14 +1263,14 @@ ;; Unnamed template to match long long multiply-accumlate (smlal) (define_insn "*mulsidi3adddi" - [(set (match_operand:DI 0 "s_register_operand" "+&r,&r,&r") + [(set (match_operand:DI 0 "s_register_operand" "=&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)))] + (sign_extend:DI (match_operand:SI 2 "s_register_operand" "%r")) + (sign_extend:DI (match_operand:SI 3 "s_register_operand" "r"))) + (match_operand:DI 1 "s_register_operand" "0")))] "TARGET_ARM && arm_fast_multiply" - "smlal%?\\t%Q0, %R0, %1, %2" + "smlal%?\\t%Q0, %R0, %3, %2" [(set_attr "type" "mult") (set_attr "predicable" "yes")] ) @@ -1300,14 +1300,14 @@ ;; Unnamed template to match long long unsigned multiply-accumlate (umlal) (define_insn "*umulsidi3adddi" - [(set (match_operand:DI 0 "s_register_operand" "+&r,&r,&r") + [(set (match_operand:DI 0 "s_register_operand" "=&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)))] + (zero_extend:DI (match_operand:SI 2 "s_register_operand" "%r")) + (zero_extend:DI (match_operand:SI 3 "s_register_operand" "r"))) + (match_operand:DI 1 "s_register_operand" "0")))] "TARGET_ARM && arm_fast_multiply" - "umlal%?\\t%Q0, %R0, %1, %2" + "umlal%?\\t%Q0, %R0, %3, %2" [(set_attr "type" "mult") (set_attr "predicable" "yes")] ) -- cgit v1.1