pa.md (sh[123\add): Collapse into a single pattern.
authorJeff Law <law@gcc.gnu.org>
Wed, 24 Mar 1993 17:53:14 +0000 (10:53 -0700)
committerJeff Law <law@gcc.gnu.org>
Wed, 24 Mar 1993 17:53:14 +0000 (10:53 -0700)
* 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

index 11a08302c965f1612b0055779f75737499a95935..ed528b415804f87378802a9f3fe5df39f96b7d09 100644 (file)
 (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")])