({load,store}_multiple): Don't use indirect_operand in define_insn;
authorRichard Kenner <kenner@gcc.gnu.org>
Wed, 28 Jun 1995 15:31:07 +0000 (11:31 -0400)
committerRichard Kenner <kenner@gcc.gnu.org>
Wed, 28 Jun 1995 15:31:07 +0000 (11:31 -0400)
use explicit MEM of register_operand instead.

From-SVN: r10066

gcc/config/rs6000/rs6000.md

index b9a8f707f9840f9e1096d85730670cdaf969c679..549c55d7a5553f9de7158662ca2888c5344ef504 100644 (file)
 (define_insn ""
   [(match_parallel 0 "load_multiple_operation"
                   [(set (match_operand:SI 1 "gpc_reg_operand" "=r")
-                        (match_operand:SI 2 "indirect_operand" "Q"))])]
+                        (mem:SI (match_operand:SI 2 "register_operand" "b")))])]
   "TARGET_STRING"
   "*
 {
   char newload[40];
   int i;
 
-  strcpy (result, \"{lsi|lswi} %1,%P2,%N0\");
+  strcpy (result, \"{lsi|lswi} %1,%2,%N0\");
   for (i = 0; i < XVECLEN (operands[0], 0); i++)
     if (refers_to_regno_p (REGNO (operands[1]) + i,
                           REGNO (operands[1]) + i + 1, operands[2], 0))
       {
        sprintf (newload, \"\;{l|lwz} %d,%d(%d)\",
                 REGNO (operands[1]) + i,
-                i * 4, REGNO (XEXP (operands[2], 0)));
+                i * 4, REGNO (operands[2]));
        strcat (result, newload);
       }
 
 
 (define_insn ""
   [(match_parallel 0 "store_multiple_operation"
-                  [(set (match_operand:SI 1 "indirect_operand" "=Q")
+                  [(set (mem:SI (match_operand:SI 1 "register_operand" "b"))
                         (match_operand:SI 2 "gpc_reg_operand" "r"))
                    (clobber (match_scratch:SI 3 "X"))])]
   "TARGET_STRING && !TARGET_POWER"
-  "{stsi|stswi} %2,%P1,%O0")
+  "{stsi|stswi} %2,%1,%O0")
 
 \f
 ;; String/block move insn.