From b8be8876caf6bd18a0f1088f78876a6b49ad2c52 Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Wed, 24 Mar 1993 10:53:14 -0700 Subject: [PATCH] pa.md (sh[123\add): Collapse into a single pattern. * pa.md (sh[123\add): Collapse into a single pattern. (sh[123]add for reload): Likewise. * pa.c (shadd_operand): New function. (print_operand): Handle "%O" for shadd patterns. From-SVN: r3866 --- gcc/config/pa/pa.md | 48 +++++---------------------------------------- 1 file changed, 5 insertions(+), 43 deletions(-) diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md index 11a08302c96..ed528b41580 100644 --- a/gcc/config/pa/pa.md +++ b/gcc/config/pa/pa.md @@ -2336,61 +2336,23 @@ (define_insn "" [(set (match_operand:SI 0 "register_operand" "=r") (plus:SI (mult:SI (match_operand:SI 2 "register_operand" "r") - (const_int 2)) + (match_operand:SI 3 "shadd_operand" "")) (match_operand:SI 1 "register_operand" "r")))] "" - "sh1add %2,%1,%0") + "sh%O3add %2,%1,%0") -(define_insn "" - [(set (match_operand:SI 0 "register_operand" "=r") - (plus:SI (mult:SI (match_operand:SI 2 "register_operand" "r") - (const_int 4)) - (match_operand:SI 1 "register_operand" "r")))] - "" - "sh2add %2,%1,%0") - -(define_insn "" - [(set (match_operand:SI 0 "register_operand" "=r") - (plus:SI (mult:SI (match_operand:SI 2 "register_operand" "r") - (const_int 8)) - (match_operand:SI 1 "register_operand" "r")))] - "" - "sh3add %2,%1,%0") - -;; These variants of the above insns can occur if the first operand +;; This variant of the above insn can occur if the first operand ;; is the frame pointer. This is a kludge, but there doesn't ;; seem to be a way around it. Only recognize them while reloading. (define_insn "" [(set (match_operand:SI 0 "register_operand" "=&r") (plus:SI (plus:SI (mult:SI (match_operand:SI 2 "register_operand" "r") - (const_int 2)) - (match_operand:SI 1 "register_operand" "r")) - (match_operand:SI 3 "const_int_operand" "rJ")))] - "reload_in_progress" - "sh1add %2,%1,%0\;add%I3 %3,%0,%0" - [(set_attr "type" "multi") - (set_attr "length" "2")]) - -(define_insn "" - [(set (match_operand:SI 0 "register_operand" "=&r") - (plus:SI (plus:SI (mult:SI (match_operand:SI 2 "register_operand" "r") - (const_int 4)) - (match_operand:SI 1 "register_operand" "r")) - (match_operand:SI 3 "const_int_operand" "rJ")))] - "reload_in_progress" - "sh2add %2,%1,%0\;add%I3 %3,%0,%0" - [(set_attr "type" "multi") - (set_attr "length" "2")]) - -(define_insn "" - [(set (match_operand:SI 0 "register_operand" "=&r") - (plus:SI (plus:SI (mult:SI (match_operand:SI 2 "register_operand" "r") - (const_int 8)) + (match_operand:SI 4 "shadd_operand" "")) (match_operand:SI 1 "register_operand" "r")) (match_operand:SI 3 "const_int_operand" "rJ")))] "reload_in_progress" - "sh3add %2,%1,%0\;add%I3 %3,%0,%0" + "sh%O4add %2,%1,%0\;add%I3 %3,%0,%0" [(set_attr "type" "multi") (set_attr "length" "2")]) -- 2.30.2