johannes    03/01/08 18:04:43

  Modified:    live/gcc3/gcc/config/rs6000 rs6000.md
  Log:
  Bug #: 3141176
  Submitted by: dalej
  Reviewed by: david edelsohn
  Import FSF fix.
  
  Revision  Changes    Path
  1.85      +103 -5    src/live/gcc3/gcc/config/rs6000/rs6000.md
  
  Index: rs6000.md
  ===================================================================
  RCS file: /cvs/Darwin/src/live/gcc3/gcc/config/rs6000/rs6000.md,v
  retrieving revision 1.84
  retrieving revision 1.85
  diff -u -r1.84 -r1.85
  --- rs6000.md 2002/12/09 20:06:42     1.84
  +++ rs6000.md 2003/01/09 02:04:42     1.85
  @@ -9855,15 +9855,113 @@
     "{stsi|stswi} %2,%P1,%O0"
     [(set_attr "type" "store")])
   
  -(define_insn "*store_multiple_string"
  +(define_insn "*stmsi8"
     [(match_parallel 0 "store_multiple_operation"
  -                [(set (mem:SI (match_operand:SI 1 "gpc_reg_operand" "b"))
  -                      (match_operand:SI 2 "gpc_reg_operand" "r"))
  -                 (clobber (match_scratch:SI 3 "X"))])]
  -  "TARGET_STRING && ! TARGET_POWER"
  +    [(set (mem:SI (match_operand:SI 1 "gpc_reg_operand" "b"))
  +       (match_operand:SI 2 "gpc_reg_operand" "r"))
  +     (clobber (match_scratch:SI 3 "X"))
  +     (set (mem:SI (plus:SI (match_dup 1) (const_int 4)))
  +       (match_operand:SI 4 "gpc_reg_operand" "r"))
  +     (set (mem:SI (plus:SI (match_dup 1) (const_int 8)))
  +       (match_operand:SI 5 "gpc_reg_operand" "r"))
  +     (set (mem:SI (plus:SI (match_dup 1) (const_int 12)))
  +       (match_operand:SI 6 "gpc_reg_operand" "r"))
  +     (set (mem:SI (plus:SI (match_dup 1) (const_int 16)))
  +       (match_operand:SI 7 "gpc_reg_operand" "r"))
  +     (set (mem:SI (plus:SI (match_dup 1) (const_int 20)))
  +       (match_operand:SI 8 "gpc_reg_operand" "r"))
  +     (set (mem:SI (plus:SI (match_dup 1) (const_int 24)))
  +       (match_operand:SI 9 "gpc_reg_operand" "r"))
  +     (set (mem:SI (plus:SI (match_dup 1) (const_int 28)))
  +       (match_operand:SI 10 "gpc_reg_operand" "r"))])]
  +  "TARGET_STRING && !TARGET_POWER && XVECLEN (operands[0], 0) == 9"
     "{stsi|stswi} %2,%1,%O0"
     [(set_attr "type" "store")])
   
  +(define_insn "*stmsi7"
  +  [(match_parallel 0 "store_multiple_operation"
  +    [(set (mem:SI (match_operand:SI 1 "gpc_reg_operand" "b"))
  +       (match_operand:SI 2 "gpc_reg_operand" "r"))
  +     (clobber (match_scratch:SI 3 "X"))
  +     (set (mem:SI (plus:SI (match_dup 1) (const_int 4)))
  +       (match_operand:SI 4 "gpc_reg_operand" "r"))
  +     (set (mem:SI (plus:SI (match_dup 1) (const_int 8)))
  +       (match_operand:SI 5 "gpc_reg_operand" "r"))
  +     (set (mem:SI (plus:SI (match_dup 1) (const_int 12)))
  +       (match_operand:SI 6 "gpc_reg_operand" "r"))
  +     (set (mem:SI (plus:SI (match_dup 1) (const_int 16)))
  +       (match_operand:SI 7 "gpc_reg_operand" "r"))
  +     (set (mem:SI (plus:SI (match_dup 1) (const_int 20)))
  +       (match_operand:SI 8 "gpc_reg_operand" "r"))
  +     (set (mem:SI (plus:SI (match_dup 1) (const_int 24)))
  +       (match_operand:SI 9 "gpc_reg_operand" "r"))])]
  +  "TARGET_STRING && !TARGET_POWER && XVECLEN (operands[0], 0) == 8"
  +  "{stsi|stswi} %2,%1,%O0"
  +  [(set_attr "type" "store")])
  +
  +(define_insn "*stmsi6"
  +  [(match_parallel 0 "store_multiple_operation"
  +    [(set (mem:SI (match_operand:SI 1 "gpc_reg_operand" "b"))
  +       (match_operand:SI 2 "gpc_reg_operand" "r"))
  +     (clobber (match_scratch:SI 3 "X"))
  +     (set (mem:SI (plus:SI (match_dup 1) (const_int 4)))
  +       (match_operand:SI 4 "gpc_reg_operand" "r"))
  +     (set (mem:SI (plus:SI (match_dup 1) (const_int 8)))
  +       (match_operand:SI 5 "gpc_reg_operand" "r"))
  +     (set (mem:SI (plus:SI (match_dup 1) (const_int 12)))
  +       (match_operand:SI 6 "gpc_reg_operand" "r"))
  +     (set (mem:SI (plus:SI (match_dup 1) (const_int 16)))
  +       (match_operand:SI 7 "gpc_reg_operand" "r"))
  +     (set (mem:SI (plus:SI (match_dup 1) (const_int 20)))
  +       (match_operand:SI 8 "gpc_reg_operand" "r"))])]
  +  "TARGET_STRING && !TARGET_POWER && XVECLEN (operands[0], 0) == 7"
  +  "{stsi|stswi} %2,%1,%O0"
  +  [(set_attr "type" "store")])
  +
  +(define_insn "*stmsi5"
  +  [(match_parallel 0 "store_multiple_operation"
  +    [(set (mem:SI (match_operand:SI 1 "gpc_reg_operand" "b"))
  +       (match_operand:SI 2 "gpc_reg_operand" "r"))
  +     (clobber (match_scratch:SI 3 "X"))
  +     (set (mem:SI (plus:SI (match_dup 1) (const_int 4)))
  +       (match_operand:SI 4 "gpc_reg_operand" "r"))
  +     (set (mem:SI (plus:SI (match_dup 1) (const_int 8)))
  +       (match_operand:SI 5 "gpc_reg_operand" "r"))
  +     (set (mem:SI (plus:SI (match_dup 1) (const_int 12)))
  +       (match_operand:SI 6 "gpc_reg_operand" "r"))
  +     (set (mem:SI (plus:SI (match_dup 1) (const_int 16)))
  +       (match_operand:SI 7 "gpc_reg_operand" "r"))])]
  +  "TARGET_STRING && !TARGET_POWER && XVECLEN (operands[0], 0) == 6"
  +  "{stsi|stswi} %2,%1,%O0"
  +  [(set_attr "type" "store")])
  +
  +(define_insn "*stmsi4"
  +  [(match_parallel 0 "store_multiple_operation"
  +    [(set (mem:SI (match_operand:SI 1 "gpc_reg_operand" "b"))
  +       (match_operand:SI 2 "gpc_reg_operand" "r"))
  +     (clobber (match_scratch:SI 3 "X"))
  +     (set (mem:SI (plus:SI (match_dup 1) (const_int 4)))
  +       (match_operand:SI 4 "gpc_reg_operand" "r"))
  +     (set (mem:SI (plus:SI (match_dup 1) (const_int 8)))
  +       (match_operand:SI 5 "gpc_reg_operand" "r"))
  +     (set (mem:SI (plus:SI (match_dup 1) (const_int 12)))
  +       (match_operand:SI 6 "gpc_reg_operand" "r"))])]
  +  "TARGET_STRING && !TARGET_POWER && XVECLEN (operands[0], 0) == 5"
  +  "{stsi|stswi} %2,%1,%O0"
  +  [(set_attr "type" "store")])
  +
  +(define_insn "*stmsi3"
  +  [(match_parallel 0 "store_multiple_operation"
  +    [(set (mem:SI (match_operand:SI 1 "gpc_reg_operand" "b"))
  +       (match_operand:SI 2 "gpc_reg_operand" "r"))
  +     (clobber (match_scratch:SI 3 "X"))
  +     (set (mem:SI (plus:SI (match_dup 1) (const_int 4)))
  +       (match_operand:SI 4 "gpc_reg_operand" "r"))
  +     (set (mem:SI (plus:SI (match_dup 1) (const_int 8)))
  +       (match_operand:SI 5 "gpc_reg_operand" "r"))])]
  +  "TARGET_STRING && !TARGET_POWER && XVECLEN (operands[0], 0) == 4"
  +  "{stsi|stswi} %2,%1,%O0"
  +  [(set_attr "type" "store")])
   
   ;; String/block move insn.
   ;; Argument 0 is the destination
  
  
  


Reply via email to