/* Nios II R2 CDX ldwm/stwm/push.h/pop.n instruction patterns.
   This file was automatically generated using nios2-ldstwm.sml.
   Please do not edit manually.

   Copyright (C) 2014-2024 Free Software Foundation, Inc.
   Contributed by Mentor Graphics.

   This file is part of GCC.

   GCC is free software; you can redistribute it and/or modify it
   under the terms of the GNU General Public License as published
   by the Free Software Foundation; either version 3, or (at your
   option) any later version.

   GCC is distributed in the hope that it will be useful, but WITHOUT
   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
   License for more details.

   You should have received a copy of the GNU General Public License and
   a copy of the GCC Runtime Library Exception along with this program;
   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
   <http://www.gnu.org/licenses/>.  */

(define_insn "*cdx_push_ra_fp"
  [(match_parallel 0 ""
    [(set (reg:SI SP_REGNO)
          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -4))) (reg:SI RA_REGNO))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -8))) (reg:SI FP_REGNO))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 3
    && (-INTVAL (operands[1]) & 3) == 0
    && (-INTVAL (operands[1]) - 8) <= 60"
{
  operands[2] = GEN_INT (-INTVAL (operands[1]) - 8);
  return "push.n\\t{ra, fp}, %2";
}
  [(set_attr "type" "push")])

(define_insn "*cdx_push_ra"
  [(match_parallel 0 ""
    [(set (reg:SI SP_REGNO)
          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -4))) (reg:SI RA_REGNO))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 2
    && (-INTVAL (operands[1]) & 3) == 0
    && (-INTVAL (operands[1]) - 4) <= 60"
{
  operands[2] = GEN_INT (-INTVAL (operands[1]) - 4);
  return "push.n\\t{ra}, %2";
}
  [(set_attr "type" "push")])

(define_insn "*cdx_pop_fp_ra"
  [(match_parallel 0 "pop_operation"
    [(return)
     (set (reg:SI SP_REGNO)
          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
     (set (reg:SI RA_REGNO) (match_operand:SI 2 "stack_memory_operand" ""))
     (set (reg:SI FP_REGNO) (match_operand:SI 3 "stack_memory_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 4"
{
  rtx x = XEXP (operands[3], 0);
  operands[3] = REG_P (x) ? const0_rtx : XEXP (x, 1);
  return "pop.n\\t{fp, ra}, %3";
}
  [(set_attr "type" "pop")])

(define_insn "*cdx_pop_ra"
  [(match_parallel 0 "pop_operation"
    [(return)
     (set (reg:SI SP_REGNO)
          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
     (set (reg:SI RA_REGNO) (match_operand:SI 2 "stack_memory_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 3"
{
  rtx x = XEXP (operands[2], 0);
  operands[2] = REG_P (x) ? const0_rtx : XEXP (x, 1);
  return "pop.n\\t{ra}, %2";
}
  [(set_attr "type" "pop")])

(define_insn "*cdx_push_ra_fp_r16"
  [(match_parallel 0 ""
    [(set (reg:SI SP_REGNO)
          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -4))) (reg:SI RA_REGNO))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -8))) (reg:SI FP_REGNO))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -12))) (reg:SI 16))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 4
    && (-INTVAL (operands[1]) & 3) == 0
    && (-INTVAL (operands[1]) - 12) <= 60"
{
  operands[2] = GEN_INT (-INTVAL (operands[1]) - 12);
  return "push.n\\t{ra, fp, r16}, %2";
}
  [(set_attr "type" "push")])

(define_insn "*cdx_push_ra_r16"
  [(match_parallel 0 ""
    [(set (reg:SI SP_REGNO)
          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -4))) (reg:SI RA_REGNO))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -8))) (reg:SI 16))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 3
    && (-INTVAL (operands[1]) & 3) == 0
    && (-INTVAL (operands[1]) - 8) <= 60"
{
  operands[2] = GEN_INT (-INTVAL (operands[1]) - 8);
  return "push.n\\t{ra, r16}, %2";
}
  [(set_attr "type" "push")])

(define_insn "*cdx_pop_r16_fp_ra"
  [(match_parallel 0 "pop_operation"
    [(return)
     (set (reg:SI SP_REGNO)
          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
     (set (reg:SI RA_REGNO) (match_operand:SI 2 "stack_memory_operand" ""))
     (set (reg:SI FP_REGNO) (match_operand:SI 3 "stack_memory_operand" ""))
     (set (reg:SI 16) (match_operand:SI 4 "stack_memory_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 5"
{
  rtx x = XEXP (operands[4], 0);
  operands[4] = REG_P (x) ? const0_rtx : XEXP (x, 1);
  return "pop.n\\t{r16, fp, ra}, %4";
}
  [(set_attr "type" "pop")])

(define_insn "*cdx_pop_r16_ra"
  [(match_parallel 0 "pop_operation"
    [(return)
     (set (reg:SI SP_REGNO)
          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
     (set (reg:SI RA_REGNO) (match_operand:SI 2 "stack_memory_operand" ""))
     (set (reg:SI 16) (match_operand:SI 3 "stack_memory_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 4"
{
  rtx x = XEXP (operands[3], 0);
  operands[3] = REG_P (x) ? const0_rtx : XEXP (x, 1);
  return "pop.n\\t{r16, ra}, %3";
}
  [(set_attr "type" "pop")])

(define_insn "*cdx_push_ra_fp_r17_r16"
  [(match_parallel 0 ""
    [(set (reg:SI SP_REGNO)
          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -4))) (reg:SI RA_REGNO))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -8))) (reg:SI FP_REGNO))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -12))) (reg:SI 17))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -16))) (reg:SI 16))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 5
    && (-INTVAL (operands[1]) & 3) == 0
    && (-INTVAL (operands[1]) - 16) <= 60"
{
  operands[2] = GEN_INT (-INTVAL (operands[1]) - 16);
  return "push.n\\t{ra, fp, r17, r16}, %2";
}
  [(set_attr "type" "push")])

(define_insn "*cdx_push_ra_r17_r16"
  [(match_parallel 0 ""
    [(set (reg:SI SP_REGNO)
          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -4))) (reg:SI RA_REGNO))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -8))) (reg:SI 17))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -12))) (reg:SI 16))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 4
    && (-INTVAL (operands[1]) & 3) == 0
    && (-INTVAL (operands[1]) - 12) <= 60"
{
  operands[2] = GEN_INT (-INTVAL (operands[1]) - 12);
  return "push.n\\t{ra, r17, r16}, %2";
}
  [(set_attr "type" "push")])

(define_insn "*cdx_pop_r16_r17_fp_ra"
  [(match_parallel 0 "pop_operation"
    [(return)
     (set (reg:SI SP_REGNO)
          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
     (set (reg:SI RA_REGNO) (match_operand:SI 2 "stack_memory_operand" ""))
     (set (reg:SI FP_REGNO) (match_operand:SI 3 "stack_memory_operand" ""))
     (set (reg:SI 17) (match_operand:SI 4 "stack_memory_operand" ""))
     (set (reg:SI 16) (match_operand:SI 5 "stack_memory_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 6"
{
  rtx x = XEXP (operands[5], 0);
  operands[5] = REG_P (x) ? const0_rtx : XEXP (x, 1);
  return "pop.n\\t{r16, r17, fp, ra}, %5";
}
  [(set_attr "type" "pop")])

(define_insn "*cdx_pop_r16_r17_ra"
  [(match_parallel 0 "pop_operation"
    [(return)
     (set (reg:SI SP_REGNO)
          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
     (set (reg:SI RA_REGNO) (match_operand:SI 2 "stack_memory_operand" ""))
     (set (reg:SI 17) (match_operand:SI 3 "stack_memory_operand" ""))
     (set (reg:SI 16) (match_operand:SI 4 "stack_memory_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 5"
{
  rtx x = XEXP (operands[4], 0);
  operands[4] = REG_P (x) ? const0_rtx : XEXP (x, 1);
  return "pop.n\\t{r16, r17, ra}, %4";
}
  [(set_attr "type" "pop")])

(define_insn "*cdx_push_ra_fp_r18_r17_r16"
  [(match_parallel 0 ""
    [(set (reg:SI SP_REGNO)
          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -4))) (reg:SI RA_REGNO))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -8))) (reg:SI FP_REGNO))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -12))) (reg:SI 18))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -16))) (reg:SI 17))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -20))) (reg:SI 16))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 6
    && (-INTVAL (operands[1]) & 3) == 0
    && (-INTVAL (operands[1]) - 20) <= 60"
{
  operands[2] = GEN_INT (-INTVAL (operands[1]) - 20);
  return "push.n\\t{ra, fp, r18, r17, r16}, %2";
}
  [(set_attr "type" "push")])

(define_insn "*cdx_push_ra_r18_r17_r16"
  [(match_parallel 0 ""
    [(set (reg:SI SP_REGNO)
          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -4))) (reg:SI RA_REGNO))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -8))) (reg:SI 18))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -12))) (reg:SI 17))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -16))) (reg:SI 16))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 5
    && (-INTVAL (operands[1]) & 3) == 0
    && (-INTVAL (operands[1]) - 16) <= 60"
{
  operands[2] = GEN_INT (-INTVAL (operands[1]) - 16);
  return "push.n\\t{ra, r18, r17, r16}, %2";
}
  [(set_attr "type" "push")])

(define_insn "*cdx_pop_r16_r17_r18_fp_ra"
  [(match_parallel 0 "pop_operation"
    [(return)
     (set (reg:SI SP_REGNO)
          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
     (set (reg:SI RA_REGNO) (match_operand:SI 2 "stack_memory_operand" ""))
     (set (reg:SI FP_REGNO) (match_operand:SI 3 "stack_memory_operand" ""))
     (set (reg:SI 18) (match_operand:SI 4 "stack_memory_operand" ""))
     (set (reg:SI 17) (match_operand:SI 5 "stack_memory_operand" ""))
     (set (reg:SI 16) (match_operand:SI 6 "stack_memory_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 7"
{
  rtx x = XEXP (operands[6], 0);
  operands[6] = REG_P (x) ? const0_rtx : XEXP (x, 1);
  return "pop.n\\t{r16, r17, r18, fp, ra}, %6";
}
  [(set_attr "type" "pop")])

(define_insn "*cdx_pop_r16_r17_r18_ra"
  [(match_parallel 0 "pop_operation"
    [(return)
     (set (reg:SI SP_REGNO)
          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
     (set (reg:SI RA_REGNO) (match_operand:SI 2 "stack_memory_operand" ""))
     (set (reg:SI 18) (match_operand:SI 3 "stack_memory_operand" ""))
     (set (reg:SI 17) (match_operand:SI 4 "stack_memory_operand" ""))
     (set (reg:SI 16) (match_operand:SI 5 "stack_memory_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 6"
{
  rtx x = XEXP (operands[5], 0);
  operands[5] = REG_P (x) ? const0_rtx : XEXP (x, 1);
  return "pop.n\\t{r16, r17, r18, ra}, %5";
}
  [(set_attr "type" "pop")])

(define_insn "*cdx_push_ra_fp_r19_r18_r17_r16"
  [(match_parallel 0 ""
    [(set (reg:SI SP_REGNO)
          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -4))) (reg:SI RA_REGNO))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -8))) (reg:SI FP_REGNO))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -12))) (reg:SI 19))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -16))) (reg:SI 18))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -20))) (reg:SI 17))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -24))) (reg:SI 16))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 7
    && (-INTVAL (operands[1]) & 3) == 0
    && (-INTVAL (operands[1]) - 24) <= 60"
{
  operands[2] = GEN_INT (-INTVAL (operands[1]) - 24);
  return "push.n\\t{ra, fp, r19, r18, r17, r16}, %2";
}
  [(set_attr "type" "push")])

(define_insn "*cdx_push_ra_r19_r18_r17_r16"
  [(match_parallel 0 ""
    [(set (reg:SI SP_REGNO)
          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -4))) (reg:SI RA_REGNO))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -8))) (reg:SI 19))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -12))) (reg:SI 18))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -16))) (reg:SI 17))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -20))) (reg:SI 16))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 6
    && (-INTVAL (operands[1]) & 3) == 0
    && (-INTVAL (operands[1]) - 20) <= 60"
{
  operands[2] = GEN_INT (-INTVAL (operands[1]) - 20);
  return "push.n\\t{ra, r19, r18, r17, r16}, %2";
}
  [(set_attr "type" "push")])

(define_insn "*cdx_pop_r16_r17_r18_r19_fp_ra"
  [(match_parallel 0 "pop_operation"
    [(return)
     (set (reg:SI SP_REGNO)
          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
     (set (reg:SI RA_REGNO) (match_operand:SI 2 "stack_memory_operand" ""))
     (set (reg:SI FP_REGNO) (match_operand:SI 3 "stack_memory_operand" ""))
     (set (reg:SI 19) (match_operand:SI 4 "stack_memory_operand" ""))
     (set (reg:SI 18) (match_operand:SI 5 "stack_memory_operand" ""))
     (set (reg:SI 17) (match_operand:SI 6 "stack_memory_operand" ""))
     (set (reg:SI 16) (match_operand:SI 7 "stack_memory_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 8"
{
  rtx x = XEXP (operands[7], 0);
  operands[7] = REG_P (x) ? const0_rtx : XEXP (x, 1);
  return "pop.n\\t{r16, r17, r18, r19, fp, ra}, %7";
}
  [(set_attr "type" "pop")])

(define_insn "*cdx_pop_r16_r17_r18_r19_ra"
  [(match_parallel 0 "pop_operation"
    [(return)
     (set (reg:SI SP_REGNO)
          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
     (set (reg:SI RA_REGNO) (match_operand:SI 2 "stack_memory_operand" ""))
     (set (reg:SI 19) (match_operand:SI 3 "stack_memory_operand" ""))
     (set (reg:SI 18) (match_operand:SI 4 "stack_memory_operand" ""))
     (set (reg:SI 17) (match_operand:SI 5 "stack_memory_operand" ""))
     (set (reg:SI 16) (match_operand:SI 6 "stack_memory_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 7"
{
  rtx x = XEXP (operands[6], 0);
  operands[6] = REG_P (x) ? const0_rtx : XEXP (x, 1);
  return "pop.n\\t{r16, r17, r18, r19, ra}, %6";
}
  [(set_attr "type" "pop")])

(define_insn "*cdx_push_ra_fp_r20_r19_r18_r17_r16"
  [(match_parallel 0 ""
    [(set (reg:SI SP_REGNO)
          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -4))) (reg:SI RA_REGNO))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -8))) (reg:SI FP_REGNO))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -12))) (reg:SI 20))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -16))) (reg:SI 19))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -20))) (reg:SI 18))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -24))) (reg:SI 17))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -28))) (reg:SI 16))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 8
    && (-INTVAL (operands[1]) & 3) == 0
    && (-INTVAL (operands[1]) - 28) <= 60"
{
  operands[2] = GEN_INT (-INTVAL (operands[1]) - 28);
  return "push.n\\t{ra, fp, r20, r19, r18, r17, r16}, %2";
}
  [(set_attr "type" "push")])

(define_insn "*cdx_push_ra_r20_r19_r18_r17_r16"
  [(match_parallel 0 ""
    [(set (reg:SI SP_REGNO)
          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -4))) (reg:SI RA_REGNO))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -8))) (reg:SI 20))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -12))) (reg:SI 19))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -16))) (reg:SI 18))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -20))) (reg:SI 17))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -24))) (reg:SI 16))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 7
    && (-INTVAL (operands[1]) & 3) == 0
    && (-INTVAL (operands[1]) - 24) <= 60"
{
  operands[2] = GEN_INT (-INTVAL (operands[1]) - 24);
  return "push.n\\t{ra, r20, r19, r18, r17, r16}, %2";
}
  [(set_attr "type" "push")])

(define_insn "*cdx_pop_r16_r17_r18_r19_r20_fp_ra"
  [(match_parallel 0 "pop_operation"
    [(return)
     (set (reg:SI SP_REGNO)
          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
     (set (reg:SI RA_REGNO) (match_operand:SI 2 "stack_memory_operand" ""))
     (set (reg:SI FP_REGNO) (match_operand:SI 3 "stack_memory_operand" ""))
     (set (reg:SI 20) (match_operand:SI 4 "stack_memory_operand" ""))
     (set (reg:SI 19) (match_operand:SI 5 "stack_memory_operand" ""))
     (set (reg:SI 18) (match_operand:SI 6 "stack_memory_operand" ""))
     (set (reg:SI 17) (match_operand:SI 7 "stack_memory_operand" ""))
     (set (reg:SI 16) (match_operand:SI 8 "stack_memory_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 9"
{
  rtx x = XEXP (operands[8], 0);
  operands[8] = REG_P (x) ? const0_rtx : XEXP (x, 1);
  return "pop.n\\t{r16, r17, r18, r19, r20, fp, ra}, %8";
}
  [(set_attr "type" "pop")])

(define_insn "*cdx_pop_r16_r17_r18_r19_r20_ra"
  [(match_parallel 0 "pop_operation"
    [(return)
     (set (reg:SI SP_REGNO)
          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
     (set (reg:SI RA_REGNO) (match_operand:SI 2 "stack_memory_operand" ""))
     (set (reg:SI 20) (match_operand:SI 3 "stack_memory_operand" ""))
     (set (reg:SI 19) (match_operand:SI 4 "stack_memory_operand" ""))
     (set (reg:SI 18) (match_operand:SI 5 "stack_memory_operand" ""))
     (set (reg:SI 17) (match_operand:SI 6 "stack_memory_operand" ""))
     (set (reg:SI 16) (match_operand:SI 7 "stack_memory_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 8"
{
  rtx x = XEXP (operands[7], 0);
  operands[7] = REG_P (x) ? const0_rtx : XEXP (x, 1);
  return "pop.n\\t{r16, r17, r18, r19, r20, ra}, %7";
}
  [(set_attr "type" "pop")])

(define_insn "*cdx_push_ra_fp_r21_r20_r19_r18_r17_r16"
  [(match_parallel 0 ""
    [(set (reg:SI SP_REGNO)
          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -4))) (reg:SI RA_REGNO))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -8))) (reg:SI FP_REGNO))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -12))) (reg:SI 21))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -16))) (reg:SI 20))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -20))) (reg:SI 19))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -24))) (reg:SI 18))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -28))) (reg:SI 17))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -32))) (reg:SI 16))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 9
    && (-INTVAL (operands[1]) & 3) == 0
    && (-INTVAL (operands[1]) - 32) <= 60"
{
  operands[2] = GEN_INT (-INTVAL (operands[1]) - 32);
  return "push.n\\t{ra, fp, r21, r20, r19, r18, r17, r16}, %2";
}
  [(set_attr "type" "push")])

(define_insn "*cdx_push_ra_r21_r20_r19_r18_r17_r16"
  [(match_parallel 0 ""
    [(set (reg:SI SP_REGNO)
          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -4))) (reg:SI RA_REGNO))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -8))) (reg:SI 21))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -12))) (reg:SI 20))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -16))) (reg:SI 19))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -20))) (reg:SI 18))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -24))) (reg:SI 17))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -28))) (reg:SI 16))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 8
    && (-INTVAL (operands[1]) & 3) == 0
    && (-INTVAL (operands[1]) - 28) <= 60"
{
  operands[2] = GEN_INT (-INTVAL (operands[1]) - 28);
  return "push.n\\t{ra, r21, r20, r19, r18, r17, r16}, %2";
}
  [(set_attr "type" "push")])

(define_insn "*cdx_pop_r16_r17_r18_r19_r20_r21_fp_ra"
  [(match_parallel 0 "pop_operation"
    [(return)
     (set (reg:SI SP_REGNO)
          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
     (set (reg:SI RA_REGNO) (match_operand:SI 2 "stack_memory_operand" ""))
     (set (reg:SI FP_REGNO) (match_operand:SI 3 "stack_memory_operand" ""))
     (set (reg:SI 21) (match_operand:SI 4 "stack_memory_operand" ""))
     (set (reg:SI 20) (match_operand:SI 5 "stack_memory_operand" ""))
     (set (reg:SI 19) (match_operand:SI 6 "stack_memory_operand" ""))
     (set (reg:SI 18) (match_operand:SI 7 "stack_memory_operand" ""))
     (set (reg:SI 17) (match_operand:SI 8 "stack_memory_operand" ""))
     (set (reg:SI 16) (match_operand:SI 9 "stack_memory_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 10"
{
  rtx x = XEXP (operands[9], 0);
  operands[9] = REG_P (x) ? const0_rtx : XEXP (x, 1);
  return "pop.n\\t{r16, r17, r18, r19, r20, r21, fp, ra}, %9";
}
  [(set_attr "type" "pop")])

(define_insn "*cdx_pop_r16_r17_r18_r19_r20_r21_ra"
  [(match_parallel 0 "pop_operation"
    [(return)
     (set (reg:SI SP_REGNO)
          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
     (set (reg:SI RA_REGNO) (match_operand:SI 2 "stack_memory_operand" ""))
     (set (reg:SI 21) (match_operand:SI 3 "stack_memory_operand" ""))
     (set (reg:SI 20) (match_operand:SI 4 "stack_memory_operand" ""))
     (set (reg:SI 19) (match_operand:SI 5 "stack_memory_operand" ""))
     (set (reg:SI 18) (match_operand:SI 6 "stack_memory_operand" ""))
     (set (reg:SI 17) (match_operand:SI 7 "stack_memory_operand" ""))
     (set (reg:SI 16) (match_operand:SI 8 "stack_memory_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 9"
{
  rtx x = XEXP (operands[8], 0);
  operands[8] = REG_P (x) ? const0_rtx : XEXP (x, 1);
  return "pop.n\\t{r16, r17, r18, r19, r20, r21, ra}, %8";
}
  [(set_attr "type" "pop")])

(define_insn "*cdx_push_ra_fp_r22_r21_r20_r19_r18_r17_r16"
  [(match_parallel 0 ""
    [(set (reg:SI SP_REGNO)
          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -4))) (reg:SI RA_REGNO))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -8))) (reg:SI FP_REGNO))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -12))) (reg:SI 22))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -16))) (reg:SI 21))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -20))) (reg:SI 20))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -24))) (reg:SI 19))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -28))) (reg:SI 18))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -32))) (reg:SI 17))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -36))) (reg:SI 16))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 10
    && (-INTVAL (operands[1]) & 3) == 0
    && (-INTVAL (operands[1]) - 36) <= 60"
{
  operands[2] = GEN_INT (-INTVAL (operands[1]) - 36);
  return "push.n\\t{ra, fp, r22, r21, r20, r19, r18, r17, r16}, %2";
}
  [(set_attr "type" "push")])

(define_insn "*cdx_push_ra_r22_r21_r20_r19_r18_r17_r16"
  [(match_parallel 0 ""
    [(set (reg:SI SP_REGNO)
          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -4))) (reg:SI RA_REGNO))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -8))) (reg:SI 22))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -12))) (reg:SI 21))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -16))) (reg:SI 20))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -20))) (reg:SI 19))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -24))) (reg:SI 18))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -28))) (reg:SI 17))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -32))) (reg:SI 16))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 9
    && (-INTVAL (operands[1]) & 3) == 0
    && (-INTVAL (operands[1]) - 32) <= 60"
{
  operands[2] = GEN_INT (-INTVAL (operands[1]) - 32);
  return "push.n\\t{ra, r22, r21, r20, r19, r18, r17, r16}, %2";
}
  [(set_attr "type" "push")])

(define_insn "*cdx_pop_r16_r17_r18_r19_r20_r21_r22_fp_ra"
  [(match_parallel 0 "pop_operation"
    [(return)
     (set (reg:SI SP_REGNO)
          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
     (set (reg:SI RA_REGNO) (match_operand:SI 2 "stack_memory_operand" ""))
     (set (reg:SI FP_REGNO) (match_operand:SI 3 "stack_memory_operand" ""))
     (set (reg:SI 22) (match_operand:SI 4 "stack_memory_operand" ""))
     (set (reg:SI 21) (match_operand:SI 5 "stack_memory_operand" ""))
     (set (reg:SI 20) (match_operand:SI 6 "stack_memory_operand" ""))
     (set (reg:SI 19) (match_operand:SI 7 "stack_memory_operand" ""))
     (set (reg:SI 18) (match_operand:SI 8 "stack_memory_operand" ""))
     (set (reg:SI 17) (match_operand:SI 9 "stack_memory_operand" ""))
     (set (reg:SI 16) (match_operand:SI 10 "stack_memory_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 11"
{
  rtx x = XEXP (operands[10], 0);
  operands[10] = REG_P (x) ? const0_rtx : XEXP (x, 1);
  return "pop.n\\t{r16, r17, r18, r19, r20, r21, r22, fp, ra}, %10";
}
  [(set_attr "type" "pop")])

(define_insn "*cdx_pop_r16_r17_r18_r19_r20_r21_r22_ra"
  [(match_parallel 0 "pop_operation"
    [(return)
     (set (reg:SI SP_REGNO)
          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
     (set (reg:SI RA_REGNO) (match_operand:SI 2 "stack_memory_operand" ""))
     (set (reg:SI 22) (match_operand:SI 3 "stack_memory_operand" ""))
     (set (reg:SI 21) (match_operand:SI 4 "stack_memory_operand" ""))
     (set (reg:SI 20) (match_operand:SI 5 "stack_memory_operand" ""))
     (set (reg:SI 19) (match_operand:SI 6 "stack_memory_operand" ""))
     (set (reg:SI 18) (match_operand:SI 7 "stack_memory_operand" ""))
     (set (reg:SI 17) (match_operand:SI 8 "stack_memory_operand" ""))
     (set (reg:SI 16) (match_operand:SI 9 "stack_memory_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 10"
{
  rtx x = XEXP (operands[9], 0);
  operands[9] = REG_P (x) ? const0_rtx : XEXP (x, 1);
  return "pop.n\\t{r16, r17, r18, r19, r20, r21, r22, ra}, %9";
}
  [(set_attr "type" "pop")])

(define_insn "*cdx_push_ra_fp_r23_r22_r21_r20_r19_r18_r17_r16"
  [(match_parallel 0 ""
    [(set (reg:SI SP_REGNO)
          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -4))) (reg:SI RA_REGNO))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -8))) (reg:SI FP_REGNO))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -12))) (reg:SI 23))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -16))) (reg:SI 22))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -20))) (reg:SI 21))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -24))) (reg:SI 20))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -28))) (reg:SI 19))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -32))) (reg:SI 18))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -36))) (reg:SI 17))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -40))) (reg:SI 16))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 11
    && (-INTVAL (operands[1]) & 3) == 0
    && (-INTVAL (operands[1]) - 40) <= 60"
{
  operands[2] = GEN_INT (-INTVAL (operands[1]) - 40);
  return "push.n\\t{ra, fp, r23, r22, r21, r20, r19, r18, r17, r16}, %2";
}
  [(set_attr "type" "push")])

(define_insn "*cdx_push_ra_r23_r22_r21_r20_r19_r18_r17_r16"
  [(match_parallel 0 ""
    [(set (reg:SI SP_REGNO)
          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -4))) (reg:SI RA_REGNO))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -8))) (reg:SI 23))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -12))) (reg:SI 22))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -16))) (reg:SI 21))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -20))) (reg:SI 20))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -24))) (reg:SI 19))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -28))) (reg:SI 18))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -32))) (reg:SI 17))
     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -36))) (reg:SI 16))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 10
    && (-INTVAL (operands[1]) & 3) == 0
    && (-INTVAL (operands[1]) - 36) <= 60"
{
  operands[2] = GEN_INT (-INTVAL (operands[1]) - 36);
  return "push.n\\t{ra, r23, r22, r21, r20, r19, r18, r17, r16}, %2";
}
  [(set_attr "type" "push")])

(define_insn "*cdx_pop_r16_r17_r18_r19_r20_r21_r22_r23_fp_ra"
  [(match_parallel 0 "pop_operation"
    [(return)
     (set (reg:SI SP_REGNO)
          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
     (set (reg:SI RA_REGNO) (match_operand:SI 2 "stack_memory_operand" ""))
     (set (reg:SI FP_REGNO) (match_operand:SI 3 "stack_memory_operand" ""))
     (set (reg:SI 23) (match_operand:SI 4 "stack_memory_operand" ""))
     (set (reg:SI 22) (match_operand:SI 5 "stack_memory_operand" ""))
     (set (reg:SI 21) (match_operand:SI 6 "stack_memory_operand" ""))
     (set (reg:SI 20) (match_operand:SI 7 "stack_memory_operand" ""))
     (set (reg:SI 19) (match_operand:SI 8 "stack_memory_operand" ""))
     (set (reg:SI 18) (match_operand:SI 9 "stack_memory_operand" ""))
     (set (reg:SI 17) (match_operand:SI 10 "stack_memory_operand" ""))
     (set (reg:SI 16) (match_operand:SI 11 "stack_memory_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 12"
{
  rtx x = XEXP (operands[11], 0);
  operands[11] = REG_P (x) ? const0_rtx : XEXP (x, 1);
  return "pop.n\\t{r16, r17, r18, r19, r20, r21, r22, r23, fp, ra}, %11";
}
  [(set_attr "type" "pop")])

(define_insn "*cdx_pop_r16_r17_r18_r19_r20_r21_r22_r23_ra"
  [(match_parallel 0 "pop_operation"
    [(return)
     (set (reg:SI SP_REGNO)
          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
     (set (reg:SI RA_REGNO) (match_operand:SI 2 "stack_memory_operand" ""))
     (set (reg:SI 23) (match_operand:SI 3 "stack_memory_operand" ""))
     (set (reg:SI 22) (match_operand:SI 4 "stack_memory_operand" ""))
     (set (reg:SI 21) (match_operand:SI 5 "stack_memory_operand" ""))
     (set (reg:SI 20) (match_operand:SI 6 "stack_memory_operand" ""))
     (set (reg:SI 19) (match_operand:SI 7 "stack_memory_operand" ""))
     (set (reg:SI 18) (match_operand:SI 8 "stack_memory_operand" ""))
     (set (reg:SI 17) (match_operand:SI 9 "stack_memory_operand" ""))
     (set (reg:SI 16) (match_operand:SI 10 "stack_memory_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 11"
{
  rtx x = XEXP (operands[10], 0);
  operands[10] = REG_P (x) ? const0_rtx : XEXP (x, 1);
  return "pop.n\\t{r16, r17, r18, r19, r20, r21, r22, r23, ra}, %10";
}
  [(set_attr "type" "pop")])

(define_insn "*cdx_ldwm1_inc_wb_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 2 "register_operand" "+&r")
          (plus:SI (match_dup 2) (const_int 4)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_dup 2)))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 3"
   "ldwm\\t{%1}, (%2)++, writeback, ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm1_inc_wb"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 2 "register_operand" "+&r")
          (plus:SI (match_dup 2) (const_int 4)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_dup 2)))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 2"
   "ldwm\\t{%1}, (%2)++, writeback"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm1_inc_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_operand:SI 2 "register_operand" "r")))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 2"
   "ldwm\\t{%1}, (%2)++, ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm1_inc"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_operand:SI 2 "register_operand" "r")))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 1"
   "ldwm\\t{%1}, (%2)++"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm1_dec_wb_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 2 "register_operand" "+&r")
          (plus:SI (match_dup 2) (const_int -4)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 2) (const_int -4))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 3"
   "ldwm\\t{%1}, --(%2), writeback, ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm1_dec_wb"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 2 "register_operand" "+&r")
          (plus:SI (match_dup 2) (const_int -4)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 2) (const_int -4))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 2"
   "ldwm\\t{%1}, --(%2), writeback"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm1_dec_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_operand:SI 2 "register_operand" "r") (const_int -4))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 2"
   "ldwm\\t{%1}, --(%2), ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm1_dec"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_operand:SI 2 "register_operand" "r") (const_int -4))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 1"
   "ldwm\\t{%1}, --(%2)"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm2_inc_wb_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 3 "register_operand" "+&r")
          (plus:SI (match_dup 3) (const_int 8)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_dup 3)))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 3) (const_int 4))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 4"
   "ldwm\\t{%1, %2}, (%3)++, writeback, ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm2_inc_wb"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 3 "register_operand" "+&r")
          (plus:SI (match_dup 3) (const_int 8)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_dup 3)))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 3) (const_int 4))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 3"
   "ldwm\\t{%1, %2}, (%3)++, writeback"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm2_inc_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_operand:SI 3 "register_operand" "r")))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 3) (const_int 4))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 3"
   "ldwm\\t{%1, %2}, (%3)++, ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm2_inc"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_operand:SI 3 "register_operand" "r")))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 3) (const_int 4))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 2"
   "ldwm\\t{%1, %2}, (%3)++"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm2_dec_wb_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 3 "register_operand" "+&r")
          (plus:SI (match_dup 3) (const_int -8)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 3) (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 3) (const_int -8))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 4"
   "ldwm\\t{%1, %2}, --(%3), writeback, ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm2_dec_wb"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 3 "register_operand" "+&r")
          (plus:SI (match_dup 3) (const_int -8)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 3) (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 3) (const_int -8))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 3"
   "ldwm\\t{%1, %2}, --(%3), writeback"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm2_dec_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_operand:SI 3 "register_operand" "r") (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 3) (const_int -8))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 3"
   "ldwm\\t{%1, %2}, --(%3), ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm2_dec"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_operand:SI 3 "register_operand" "r") (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 3) (const_int -8))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 2"
   "ldwm\\t{%1, %2}, --(%3)"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm3_inc_wb_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 4 "register_operand" "+&r")
          (plus:SI (match_dup 4) (const_int 12)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_dup 4)))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 4) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 4) (const_int 8))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 5"
   "ldwm\\t{%1, %2, %3}, (%4)++, writeback, ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm3_inc_wb"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 4 "register_operand" "+&r")
          (plus:SI (match_dup 4) (const_int 12)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_dup 4)))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 4) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 4) (const_int 8))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 4"
   "ldwm\\t{%1, %2, %3}, (%4)++, writeback"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm3_inc_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_operand:SI 4 "register_operand" "r")))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 4) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 4) (const_int 8))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 4"
   "ldwm\\t{%1, %2, %3}, (%4)++, ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm3_inc"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_operand:SI 4 "register_operand" "r")))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 4) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 4) (const_int 8))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 3"
   "ldwm\\t{%1, %2, %3}, (%4)++"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm3_dec_wb_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 4 "register_operand" "+&r")
          (plus:SI (match_dup 4) (const_int -12)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 4) (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 4) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 4) (const_int -12))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 5"
   "ldwm\\t{%1, %2, %3}, --(%4), writeback, ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm3_dec_wb"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 4 "register_operand" "+&r")
          (plus:SI (match_dup 4) (const_int -12)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 4) (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 4) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 4) (const_int -12))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 4"
   "ldwm\\t{%1, %2, %3}, --(%4), writeback"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm3_dec_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_operand:SI 4 "register_operand" "r") (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 4) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 4) (const_int -12))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 4"
   "ldwm\\t{%1, %2, %3}, --(%4), ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm3_dec"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_operand:SI 4 "register_operand" "r") (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 4) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 4) (const_int -12))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 3"
   "ldwm\\t{%1, %2, %3}, --(%4)"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm4_inc_wb_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 5 "register_operand" "+&r")
          (plus:SI (match_dup 5) (const_int 16)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_dup 5)))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 5) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 5) (const_int 8))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 5) (const_int 12))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 6"
   "ldwm\\t{%1, %2, %3, %4}, (%5)++, writeback, ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm4_inc_wb"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 5 "register_operand" "+&r")
          (plus:SI (match_dup 5) (const_int 16)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_dup 5)))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 5) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 5) (const_int 8))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 5) (const_int 12))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 5"
   "ldwm\\t{%1, %2, %3, %4}, (%5)++, writeback"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm4_inc_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_operand:SI 5 "register_operand" "r")))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 5) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 5) (const_int 8))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 5) (const_int 12))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 5"
   "ldwm\\t{%1, %2, %3, %4}, (%5)++, ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm4_inc"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_operand:SI 5 "register_operand" "r")))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 5) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 5) (const_int 8))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 5) (const_int 12))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 4"
   "ldwm\\t{%1, %2, %3, %4}, (%5)++"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm4_dec_wb_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 5 "register_operand" "+&r")
          (plus:SI (match_dup 5) (const_int -16)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 5) (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 5) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 5) (const_int -12))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 5) (const_int -16))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 6"
   "ldwm\\t{%1, %2, %3, %4}, --(%5), writeback, ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm4_dec_wb"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 5 "register_operand" "+&r")
          (plus:SI (match_dup 5) (const_int -16)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 5) (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 5) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 5) (const_int -12))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 5) (const_int -16))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 5"
   "ldwm\\t{%1, %2, %3, %4}, --(%5), writeback"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm4_dec_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_operand:SI 5 "register_operand" "r") (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 5) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 5) (const_int -12))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 5) (const_int -16))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 5"
   "ldwm\\t{%1, %2, %3, %4}, --(%5), ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm4_dec"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_operand:SI 5 "register_operand" "r") (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 5) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 5) (const_int -12))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 5) (const_int -16))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 4"
   "ldwm\\t{%1, %2, %3, %4}, --(%5)"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm5_inc_wb_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 6 "register_operand" "+&r")
          (plus:SI (match_dup 6) (const_int 20)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_dup 6)))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 6) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 6) (const_int 8))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 6) (const_int 12))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 6) (const_int 16))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 7"
   "ldwm\\t{%1, %2, %3, %4, %5}, (%6)++, writeback, ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm5_inc_wb"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 6 "register_operand" "+&r")
          (plus:SI (match_dup 6) (const_int 20)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_dup 6)))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 6) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 6) (const_int 8))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 6) (const_int 12))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 6) (const_int 16))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 6"
   "ldwm\\t{%1, %2, %3, %4, %5}, (%6)++, writeback"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm5_inc_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_operand:SI 6 "register_operand" "r")))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 6) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 6) (const_int 8))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 6) (const_int 12))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 6) (const_int 16))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 6"
   "ldwm\\t{%1, %2, %3, %4, %5}, (%6)++, ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm5_inc"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_operand:SI 6 "register_operand" "r")))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 6) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 6) (const_int 8))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 6) (const_int 12))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 6) (const_int 16))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 5"
   "ldwm\\t{%1, %2, %3, %4, %5}, (%6)++"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm5_dec_wb_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 6 "register_operand" "+&r")
          (plus:SI (match_dup 6) (const_int -20)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 6) (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 6) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 6) (const_int -12))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 6) (const_int -16))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 6) (const_int -20))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 7"
   "ldwm\\t{%1, %2, %3, %4, %5}, --(%6), writeback, ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm5_dec_wb"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 6 "register_operand" "+&r")
          (plus:SI (match_dup 6) (const_int -20)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 6) (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 6) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 6) (const_int -12))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 6) (const_int -16))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 6) (const_int -20))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 6"
   "ldwm\\t{%1, %2, %3, %4, %5}, --(%6), writeback"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm5_dec_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_operand:SI 6 "register_operand" "r") (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 6) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 6) (const_int -12))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 6) (const_int -16))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 6) (const_int -20))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 6"
   "ldwm\\t{%1, %2, %3, %4, %5}, --(%6), ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm5_dec"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_operand:SI 6 "register_operand" "r") (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 6) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 6) (const_int -12))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 6) (const_int -16))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 6) (const_int -20))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 5"
   "ldwm\\t{%1, %2, %3, %4, %5}, --(%6)"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm6_inc_wb_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 7 "register_operand" "+&r")
          (plus:SI (match_dup 7) (const_int 24)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_dup 7)))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int 8))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int 12))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int 16))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int 20))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 8"
   "ldwm\\t{%1, %2, %3, %4, %5, %6}, (%7)++, writeback, ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm6_inc_wb"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 7 "register_operand" "+&r")
          (plus:SI (match_dup 7) (const_int 24)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_dup 7)))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int 8))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int 12))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int 16))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int 20))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 7"
   "ldwm\\t{%1, %2, %3, %4, %5, %6}, (%7)++, writeback"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm6_inc_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_operand:SI 7 "register_operand" "r")))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int 8))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int 12))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int 16))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int 20))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 7"
   "ldwm\\t{%1, %2, %3, %4, %5, %6}, (%7)++, ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm6_inc"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_operand:SI 7 "register_operand" "r")))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int 8))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int 12))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int 16))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int 20))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 6"
   "ldwm\\t{%1, %2, %3, %4, %5, %6}, (%7)++"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm6_dec_wb_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 7 "register_operand" "+&r")
          (plus:SI (match_dup 7) (const_int -24)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int -12))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int -16))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int -20))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int -24))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 8"
   "ldwm\\t{%1, %2, %3, %4, %5, %6}, --(%7), writeback, ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm6_dec_wb"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 7 "register_operand" "+&r")
          (plus:SI (match_dup 7) (const_int -24)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int -12))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int -16))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int -20))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int -24))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 7"
   "ldwm\\t{%1, %2, %3, %4, %5, %6}, --(%7), writeback"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm6_dec_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_operand:SI 7 "register_operand" "r") (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int -12))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int -16))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int -20))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int -24))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 7"
   "ldwm\\t{%1, %2, %3, %4, %5, %6}, --(%7), ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm6_dec"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_operand:SI 7 "register_operand" "r") (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int -12))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int -16))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int -20))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 7) (const_int -24))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 6"
   "ldwm\\t{%1, %2, %3, %4, %5, %6}, --(%7)"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm7_inc_wb_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 8 "register_operand" "+&r")
          (plus:SI (match_dup 8) (const_int 28)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_dup 8)))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int 8))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int 12))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int 16))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int 20))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int 24))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 9"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7}, (%8)++, writeback, ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm7_inc_wb"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 8 "register_operand" "+&r")
          (plus:SI (match_dup 8) (const_int 28)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_dup 8)))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int 8))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int 12))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int 16))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int 20))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int 24))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 8"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7}, (%8)++, writeback"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm7_inc_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_operand:SI 8 "register_operand" "r")))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int 8))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int 12))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int 16))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int 20))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int 24))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 8"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7}, (%8)++, ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm7_inc"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_operand:SI 8 "register_operand" "r")))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int 8))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int 12))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int 16))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int 20))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int 24))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 7"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7}, (%8)++"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm7_dec_wb_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 8 "register_operand" "+&r")
          (plus:SI (match_dup 8) (const_int -28)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int -12))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int -16))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int -20))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int -24))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int -28))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 9"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7}, --(%8), writeback, ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm7_dec_wb"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 8 "register_operand" "+&r")
          (plus:SI (match_dup 8) (const_int -28)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int -12))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int -16))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int -20))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int -24))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int -28))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 8"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7}, --(%8), writeback"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm7_dec_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_operand:SI 8 "register_operand" "r") (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int -12))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int -16))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int -20))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int -24))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int -28))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 8"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7}, --(%8), ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm7_dec"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_operand:SI 8 "register_operand" "r") (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int -12))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int -16))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int -20))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int -24))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 8) (const_int -28))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 7"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7}, --(%8)"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm8_inc_wb_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 9 "register_operand" "+&r")
          (plus:SI (match_dup 9) (const_int 32)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_dup 9)))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int 8))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int 12))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int 16))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int 20))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int 24))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int 28))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 10"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8}, (%9)++, writeback, ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm8_inc_wb"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 9 "register_operand" "+&r")
          (plus:SI (match_dup 9) (const_int 32)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_dup 9)))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int 8))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int 12))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int 16))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int 20))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int 24))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int 28))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 9"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8}, (%9)++, writeback"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm8_inc_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_operand:SI 9 "register_operand" "r")))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int 8))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int 12))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int 16))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int 20))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int 24))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int 28))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 9"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8}, (%9)++, ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm8_inc"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_operand:SI 9 "register_operand" "r")))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int 8))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int 12))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int 16))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int 20))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int 24))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int 28))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 8"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8}, (%9)++"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm8_dec_wb_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 9 "register_operand" "+&r")
          (plus:SI (match_dup 9) (const_int -32)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int -12))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int -16))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int -20))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int -24))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int -28))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int -32))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 10"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8}, --(%9), writeback, ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm8_dec_wb"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 9 "register_operand" "+&r")
          (plus:SI (match_dup 9) (const_int -32)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int -12))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int -16))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int -20))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int -24))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int -28))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int -32))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 9"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8}, --(%9), writeback"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm8_dec_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_operand:SI 9 "register_operand" "r") (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int -12))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int -16))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int -20))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int -24))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int -28))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int -32))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 9"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8}, --(%9), ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm8_dec"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_operand:SI 9 "register_operand" "r") (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int -12))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int -16))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int -20))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int -24))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int -28))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 9) (const_int -32))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 8"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8}, --(%9)"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm9_inc_wb_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 10 "register_operand" "+&r")
          (plus:SI (match_dup 10) (const_int 36)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_dup 10)))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int 8))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int 12))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int 16))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int 20))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int 24))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int 28))))
     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int 32))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 11"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9}, (%10)++, writeback, ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm9_inc_wb"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 10 "register_operand" "+&r")
          (plus:SI (match_dup 10) (const_int 36)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_dup 10)))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int 8))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int 12))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int 16))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int 20))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int 24))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int 28))))
     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int 32))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 10"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9}, (%10)++, writeback"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm9_inc_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_operand:SI 10 "register_operand" "r")))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int 8))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int 12))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int 16))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int 20))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int 24))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int 28))))
     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int 32))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 10"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9}, (%10)++, ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm9_inc"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_operand:SI 10 "register_operand" "r")))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int 8))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int 12))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int 16))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int 20))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int 24))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int 28))))
     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int 32))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 9"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9}, (%10)++"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm9_dec_wb_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 10 "register_operand" "+&r")
          (plus:SI (match_dup 10) (const_int -36)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int -12))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int -16))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int -20))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int -24))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int -28))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int -32))))
     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int -36))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 11"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9}, --(%10), writeback, ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm9_dec_wb"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 10 "register_operand" "+&r")
          (plus:SI (match_dup 10) (const_int -36)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int -12))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int -16))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int -20))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int -24))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int -28))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int -32))))
     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int -36))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 10"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9}, --(%10), writeback"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm9_dec_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_operand:SI 10 "register_operand" "r") (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int -12))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int -16))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int -20))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int -24))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int -28))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int -32))))
     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int -36))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 10"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9}, --(%10), ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm9_dec"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_operand:SI 10 "register_operand" "r") (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int -12))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int -16))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int -20))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int -24))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int -28))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int -32))))
     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 10) (const_int -36))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 9"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9}, --(%10)"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm10_inc_wb_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 11 "register_operand" "+&r")
          (plus:SI (match_dup 11) (const_int 40)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_dup 11)))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int 8))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int 12))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int 16))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int 20))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int 24))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int 28))))
     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int 32))))
     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int 36))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 12"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10}, (%11)++, writeback, ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm10_inc_wb"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 11 "register_operand" "+&r")
          (plus:SI (match_dup 11) (const_int 40)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_dup 11)))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int 8))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int 12))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int 16))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int 20))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int 24))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int 28))))
     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int 32))))
     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int 36))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 11"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10}, (%11)++, writeback"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm10_inc_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_operand:SI 11 "register_operand" "r")))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int 8))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int 12))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int 16))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int 20))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int 24))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int 28))))
     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int 32))))
     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int 36))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 11"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10}, (%11)++, ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm10_inc"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_operand:SI 11 "register_operand" "r")))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int 8))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int 12))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int 16))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int 20))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int 24))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int 28))))
     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int 32))))
     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int 36))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 10"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10}, (%11)++"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm10_dec_wb_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 11 "register_operand" "+&r")
          (plus:SI (match_dup 11) (const_int -40)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -12))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -16))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -20))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -24))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -28))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -32))))
     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -36))))
     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -40))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 12"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10}, --(%11), writeback, ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm10_dec_wb"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 11 "register_operand" "+&r")
          (plus:SI (match_dup 11) (const_int -40)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -12))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -16))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -20))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -24))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -28))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -32))))
     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -36))))
     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -40))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 11"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10}, --(%11), writeback"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm10_dec_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_operand:SI 11 "register_operand" "r") (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -12))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -16))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -20))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -24))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -28))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -32))))
     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -36))))
     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -40))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 11"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10}, --(%11), ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm10_dec"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_operand:SI 11 "register_operand" "r") (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -12))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -16))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -20))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -24))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -28))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -32))))
     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -36))))
     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 11) (const_int -40))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 10"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10}, --(%11)"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm11_inc_wb_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 12 "register_operand" "+&r")
          (plus:SI (match_dup 12) (const_int 44)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_dup 12)))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 8))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 12))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 16))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 20))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 24))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 28))))
     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 32))))
     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 36))))
     (set (match_operand:SI 11 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 40))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 13"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11}, (%12)++, writeback, ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm11_inc_wb"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 12 "register_operand" "+&r")
          (plus:SI (match_dup 12) (const_int 44)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_dup 12)))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 8))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 12))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 16))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 20))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 24))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 28))))
     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 32))))
     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 36))))
     (set (match_operand:SI 11 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 40))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 12"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11}, (%12)++, writeback"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm11_inc_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_operand:SI 12 "register_operand" "r")))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 8))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 12))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 16))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 20))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 24))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 28))))
     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 32))))
     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 36))))
     (set (match_operand:SI 11 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 40))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 12"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11}, (%12)++, ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm11_inc"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_operand:SI 12 "register_operand" "r")))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 8))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 12))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 16))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 20))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 24))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 28))))
     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 32))))
     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 36))))
     (set (match_operand:SI 11 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int 40))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 11"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11}, (%12)++"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm11_dec_wb_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 12 "register_operand" "+&r")
          (plus:SI (match_dup 12) (const_int -44)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -12))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -16))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -20))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -24))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -28))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -32))))
     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -36))))
     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -40))))
     (set (match_operand:SI 11 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -44))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 13"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11}, --(%12), writeback, ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm11_dec_wb"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 12 "register_operand" "+&r")
          (plus:SI (match_dup 12) (const_int -44)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -12))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -16))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -20))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -24))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -28))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -32))))
     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -36))))
     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -40))))
     (set (match_operand:SI 11 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -44))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 12"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11}, --(%12), writeback"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm11_dec_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_operand:SI 12 "register_operand" "r") (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -12))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -16))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -20))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -24))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -28))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -32))))
     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -36))))
     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -40))))
     (set (match_operand:SI 11 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -44))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 12"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11}, --(%12), ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm11_dec"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_operand:SI 12 "register_operand" "r") (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -12))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -16))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -20))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -24))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -28))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -32))))
     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -36))))
     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -40))))
     (set (match_operand:SI 11 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 12) (const_int -44))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 11"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11}, --(%12)"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm12_inc_wb_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 13 "register_operand" "+&r")
          (plus:SI (match_dup 13) (const_int 48)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_dup 13)))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 8))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 12))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 16))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 20))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 24))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 28))))
     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 32))))
     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 36))))
     (set (match_operand:SI 11 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 40))))
     (set (match_operand:SI 12 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 44))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 14"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12}, (%13)++, writeback, ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm12_inc_wb"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 13 "register_operand" "+&r")
          (plus:SI (match_dup 13) (const_int 48)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_dup 13)))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 8))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 12))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 16))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 20))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 24))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 28))))
     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 32))))
     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 36))))
     (set (match_operand:SI 11 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 40))))
     (set (match_operand:SI 12 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 44))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 13"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12}, (%13)++, writeback"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm12_inc_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_operand:SI 13 "register_operand" "r")))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 8))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 12))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 16))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 20))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 24))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 28))))
     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 32))))
     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 36))))
     (set (match_operand:SI 11 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 40))))
     (set (match_operand:SI 12 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 44))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 13"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12}, (%13)++, ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm12_inc"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (match_operand:SI 13 "register_operand" "r")))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 4))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 8))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 12))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 16))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 20))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 24))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 28))))
     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 32))))
     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 36))))
     (set (match_operand:SI 11 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 40))))
     (set (match_operand:SI 12 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int 44))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 12"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12}, (%13)++"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm12_dec_wb_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 13 "register_operand" "+&r")
          (plus:SI (match_dup 13) (const_int -48)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -12))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -16))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -20))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -24))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -28))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -32))))
     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -36))))
     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -40))))
     (set (match_operand:SI 11 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -44))))
     (set (match_operand:SI 12 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -48))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 14"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12}, --(%13), writeback, ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm12_dec_wb"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 13 "register_operand" "+&r")
          (plus:SI (match_dup 13) (const_int -48)))
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -12))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -16))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -20))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -24))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -28))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -32))))
     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -36))))
     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -40))))
     (set (match_operand:SI 11 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -44))))
     (set (match_operand:SI 12 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -48))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 13"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12}, --(%13), writeback"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm12_dec_ret"
  [(match_parallel 0 "ldwm_operation"
    [(return)
     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_operand:SI 13 "register_operand" "r") (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -12))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -16))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -20))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -24))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -28))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -32))))
     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -36))))
     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -40))))
     (set (match_operand:SI 11 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -44))))
     (set (match_operand:SI 12 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -48))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 13"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12}, --(%13), ret"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_ldwm12_dec"
  [(match_parallel 0 "ldwm_operation"
    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_operand:SI 13 "register_operand" "r") (const_int -4))))
     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -8))))
     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -12))))
     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -16))))
     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -20))))
     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -24))))
     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -28))))
     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -32))))
     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -36))))
     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -40))))
     (set (match_operand:SI 11 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -44))))
     (set (match_operand:SI 12 "nios2_hard_register_operand" "")
          (mem:SI (plus:SI (match_dup 13) (const_int -48))))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 12"
   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12}, --(%13)"
  [(set_attr "type" "ldwm")])

(define_insn "*cdx_stwm1_inc_wb"
  [(match_parallel 0 "stwm_operation"
    [(set (match_operand:SI 2 "register_operand" "+&r")
          (plus:SI (match_dup 2) (const_int 4)))
     (set (mem:SI (match_dup 2))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 2"
   "stwm\\t{%1}, (%2)++, writeback"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm1_inc"
  [(match_parallel 0 "stwm_operation"
    [(set (mem:SI (match_operand:SI 2 "register_operand" "r"))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 1"
   "stwm\\t{%1}, (%2)++"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm1_dec_wb"
  [(match_parallel 0 "stwm_operation"
    [(set (match_operand:SI 2 "register_operand" "+&r")
          (plus:SI (match_dup 2) (const_int -4)))
     (set (mem:SI (plus:SI (match_dup 2) (const_int -4)))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 2"
   "stwm\\t{%1}, --(%2), writeback"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm1_dec"
  [(match_parallel 0 "stwm_operation"
    [(set (mem:SI (plus:SI (match_operand:SI 2 "register_operand" "r") (const_int -4)))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 1"
   "stwm\\t{%1}, --(%2)"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm2_inc_wb"
  [(match_parallel 0 "stwm_operation"
    [(set (match_operand:SI 3 "register_operand" "+&r")
          (plus:SI (match_dup 3) (const_int 8)))
     (set (mem:SI (match_dup 3))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 3) (const_int 4)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 3"
   "stwm\\t{%1, %2}, (%3)++, writeback"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm2_inc"
  [(match_parallel 0 "stwm_operation"
    [(set (mem:SI (match_operand:SI 3 "register_operand" "r"))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 3) (const_int 4)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 2"
   "stwm\\t{%1, %2}, (%3)++"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm2_dec_wb"
  [(match_parallel 0 "stwm_operation"
    [(set (match_operand:SI 3 "register_operand" "+&r")
          (plus:SI (match_dup 3) (const_int -8)))
     (set (mem:SI (plus:SI (match_dup 3) (const_int -4)))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 3) (const_int -8)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 3"
   "stwm\\t{%1, %2}, --(%3), writeback"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm2_dec"
  [(match_parallel 0 "stwm_operation"
    [(set (mem:SI (plus:SI (match_operand:SI 3 "register_operand" "r") (const_int -4)))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 3) (const_int -8)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 2"
   "stwm\\t{%1, %2}, --(%3)"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm3_inc_wb"
  [(match_parallel 0 "stwm_operation"
    [(set (match_operand:SI 4 "register_operand" "+&r")
          (plus:SI (match_dup 4) (const_int 12)))
     (set (mem:SI (match_dup 4))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 4) (const_int 4)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 4) (const_int 8)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 4"
   "stwm\\t{%1, %2, %3}, (%4)++, writeback"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm3_inc"
  [(match_parallel 0 "stwm_operation"
    [(set (mem:SI (match_operand:SI 4 "register_operand" "r"))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 4) (const_int 4)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 4) (const_int 8)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 3"
   "stwm\\t{%1, %2, %3}, (%4)++"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm3_dec_wb"
  [(match_parallel 0 "stwm_operation"
    [(set (match_operand:SI 4 "register_operand" "+&r")
          (plus:SI (match_dup 4) (const_int -12)))
     (set (mem:SI (plus:SI (match_dup 4) (const_int -4)))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 4) (const_int -8)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 4) (const_int -12)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 4"
   "stwm\\t{%1, %2, %3}, --(%4), writeback"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm3_dec"
  [(match_parallel 0 "stwm_operation"
    [(set (mem:SI (plus:SI (match_operand:SI 4 "register_operand" "r") (const_int -4)))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 4) (const_int -8)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 4) (const_int -12)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 3"
   "stwm\\t{%1, %2, %3}, --(%4)"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm4_inc_wb"
  [(match_parallel 0 "stwm_operation"
    [(set (match_operand:SI 5 "register_operand" "+&r")
          (plus:SI (match_dup 5) (const_int 16)))
     (set (mem:SI (match_dup 5))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 5) (const_int 4)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 5) (const_int 8)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 5) (const_int 12)))
          (match_operand:SI 4 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 5"
   "stwm\\t{%1, %2, %3, %4}, (%5)++, writeback"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm4_inc"
  [(match_parallel 0 "stwm_operation"
    [(set (mem:SI (match_operand:SI 5 "register_operand" "r"))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 5) (const_int 4)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 5) (const_int 8)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 5) (const_int 12)))
          (match_operand:SI 4 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 4"
   "stwm\\t{%1, %2, %3, %4}, (%5)++"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm4_dec_wb"
  [(match_parallel 0 "stwm_operation"
    [(set (match_operand:SI 5 "register_operand" "+&r")
          (plus:SI (match_dup 5) (const_int -16)))
     (set (mem:SI (plus:SI (match_dup 5) (const_int -4)))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 5) (const_int -8)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 5) (const_int -12)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 5) (const_int -16)))
          (match_operand:SI 4 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 5"
   "stwm\\t{%1, %2, %3, %4}, --(%5), writeback"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm4_dec"
  [(match_parallel 0 "stwm_operation"
    [(set (mem:SI (plus:SI (match_operand:SI 5 "register_operand" "r") (const_int -4)))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 5) (const_int -8)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 5) (const_int -12)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 5) (const_int -16)))
          (match_operand:SI 4 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 4"
   "stwm\\t{%1, %2, %3, %4}, --(%5)"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm5_inc_wb"
  [(match_parallel 0 "stwm_operation"
    [(set (match_operand:SI 6 "register_operand" "+&r")
          (plus:SI (match_dup 6) (const_int 20)))
     (set (mem:SI (match_dup 6))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 6) (const_int 4)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 6) (const_int 8)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 6) (const_int 12)))
          (match_operand:SI 4 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 6) (const_int 16)))
          (match_operand:SI 5 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 6"
   "stwm\\t{%1, %2, %3, %4, %5}, (%6)++, writeback"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm5_inc"
  [(match_parallel 0 "stwm_operation"
    [(set (mem:SI (match_operand:SI 6 "register_operand" "r"))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 6) (const_int 4)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 6) (const_int 8)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 6) (const_int 12)))
          (match_operand:SI 4 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 6) (const_int 16)))
          (match_operand:SI 5 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 5"
   "stwm\\t{%1, %2, %3, %4, %5}, (%6)++"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm5_dec_wb"
  [(match_parallel 0 "stwm_operation"
    [(set (match_operand:SI 6 "register_operand" "+&r")
          (plus:SI (match_dup 6) (const_int -20)))
     (set (mem:SI (plus:SI (match_dup 6) (const_int -4)))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 6) (const_int -8)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 6) (const_int -12)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 6) (const_int -16)))
          (match_operand:SI 4 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 6) (const_int -20)))
          (match_operand:SI 5 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 6"
   "stwm\\t{%1, %2, %3, %4, %5}, --(%6), writeback"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm5_dec"
  [(match_parallel 0 "stwm_operation"
    [(set (mem:SI (plus:SI (match_operand:SI 6 "register_operand" "r") (const_int -4)))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 6) (const_int -8)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 6) (const_int -12)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 6) (const_int -16)))
          (match_operand:SI 4 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 6) (const_int -20)))
          (match_operand:SI 5 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 5"
   "stwm\\t{%1, %2, %3, %4, %5}, --(%6)"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm6_inc_wb"
  [(match_parallel 0 "stwm_operation"
    [(set (match_operand:SI 7 "register_operand" "+&r")
          (plus:SI (match_dup 7) (const_int 24)))
     (set (mem:SI (match_dup 7))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 7) (const_int 4)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 7) (const_int 8)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 7) (const_int 12)))
          (match_operand:SI 4 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 7) (const_int 16)))
          (match_operand:SI 5 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 7) (const_int 20)))
          (match_operand:SI 6 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 7"
   "stwm\\t{%1, %2, %3, %4, %5, %6}, (%7)++, writeback"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm6_inc"
  [(match_parallel 0 "stwm_operation"
    [(set (mem:SI (match_operand:SI 7 "register_operand" "r"))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 7) (const_int 4)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 7) (const_int 8)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 7) (const_int 12)))
          (match_operand:SI 4 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 7) (const_int 16)))
          (match_operand:SI 5 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 7) (const_int 20)))
          (match_operand:SI 6 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 6"
   "stwm\\t{%1, %2, %3, %4, %5, %6}, (%7)++"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm6_dec_wb"
  [(match_parallel 0 "stwm_operation"
    [(set (match_operand:SI 7 "register_operand" "+&r")
          (plus:SI (match_dup 7) (const_int -24)))
     (set (mem:SI (plus:SI (match_dup 7) (const_int -4)))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 7) (const_int -8)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 7) (const_int -12)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 7) (const_int -16)))
          (match_operand:SI 4 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 7) (const_int -20)))
          (match_operand:SI 5 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 7) (const_int -24)))
          (match_operand:SI 6 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 7"
   "stwm\\t{%1, %2, %3, %4, %5, %6}, --(%7), writeback"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm6_dec"
  [(match_parallel 0 "stwm_operation"
    [(set (mem:SI (plus:SI (match_operand:SI 7 "register_operand" "r") (const_int -4)))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 7) (const_int -8)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 7) (const_int -12)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 7) (const_int -16)))
          (match_operand:SI 4 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 7) (const_int -20)))
          (match_operand:SI 5 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 7) (const_int -24)))
          (match_operand:SI 6 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 6"
   "stwm\\t{%1, %2, %3, %4, %5, %6}, --(%7)"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm7_inc_wb"
  [(match_parallel 0 "stwm_operation"
    [(set (match_operand:SI 8 "register_operand" "+&r")
          (plus:SI (match_dup 8) (const_int 28)))
     (set (mem:SI (match_dup 8))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 8) (const_int 4)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 8) (const_int 8)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 8) (const_int 12)))
          (match_operand:SI 4 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 8) (const_int 16)))
          (match_operand:SI 5 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 8) (const_int 20)))
          (match_operand:SI 6 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 8) (const_int 24)))
          (match_operand:SI 7 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 8"
   "stwm\\t{%1, %2, %3, %4, %5, %6, %7}, (%8)++, writeback"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm7_inc"
  [(match_parallel 0 "stwm_operation"
    [(set (mem:SI (match_operand:SI 8 "register_operand" "r"))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 8) (const_int 4)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 8) (const_int 8)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 8) (const_int 12)))
          (match_operand:SI 4 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 8) (const_int 16)))
          (match_operand:SI 5 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 8) (const_int 20)))
          (match_operand:SI 6 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 8) (const_int 24)))
          (match_operand:SI 7 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 7"
   "stwm\\t{%1, %2, %3, %4, %5, %6, %7}, (%8)++"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm7_dec_wb"
  [(match_parallel 0 "stwm_operation"
    [(set (match_operand:SI 8 "register_operand" "+&r")
          (plus:SI (match_dup 8) (const_int -28)))
     (set (mem:SI (plus:SI (match_dup 8) (const_int -4)))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 8) (const_int -8)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 8) (const_int -12)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 8) (const_int -16)))
          (match_operand:SI 4 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 8) (const_int -20)))
          (match_operand:SI 5 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 8) (const_int -24)))
          (match_operand:SI 6 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 8) (const_int -28)))
          (match_operand:SI 7 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 8"
   "stwm\\t{%1, %2, %3, %4, %5, %6, %7}, --(%8), writeback"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm7_dec"
  [(match_parallel 0 "stwm_operation"
    [(set (mem:SI (plus:SI (match_operand:SI 8 "register_operand" "r") (const_int -4)))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 8) (const_int -8)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 8) (const_int -12)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 8) (const_int -16)))
          (match_operand:SI 4 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 8) (const_int -20)))
          (match_operand:SI 5 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 8) (const_int -24)))
          (match_operand:SI 6 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 8) (const_int -28)))
          (match_operand:SI 7 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 7"
   "stwm\\t{%1, %2, %3, %4, %5, %6, %7}, --(%8)"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm8_inc_wb"
  [(match_parallel 0 "stwm_operation"
    [(set (match_operand:SI 9 "register_operand" "+&r")
          (plus:SI (match_dup 9) (const_int 32)))
     (set (mem:SI (match_dup 9))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 9) (const_int 4)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 9) (const_int 8)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 9) (const_int 12)))
          (match_operand:SI 4 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 9) (const_int 16)))
          (match_operand:SI 5 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 9) (const_int 20)))
          (match_operand:SI 6 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 9) (const_int 24)))
          (match_operand:SI 7 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 9) (const_int 28)))
          (match_operand:SI 8 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 9"
   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8}, (%9)++, writeback"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm8_inc"
  [(match_parallel 0 "stwm_operation"
    [(set (mem:SI (match_operand:SI 9 "register_operand" "r"))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 9) (const_int 4)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 9) (const_int 8)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 9) (const_int 12)))
          (match_operand:SI 4 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 9) (const_int 16)))
          (match_operand:SI 5 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 9) (const_int 20)))
          (match_operand:SI 6 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 9) (const_int 24)))
          (match_operand:SI 7 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 9) (const_int 28)))
          (match_operand:SI 8 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 8"
   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8}, (%9)++"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm8_dec_wb"
  [(match_parallel 0 "stwm_operation"
    [(set (match_operand:SI 9 "register_operand" "+&r")
          (plus:SI (match_dup 9) (const_int -32)))
     (set (mem:SI (plus:SI (match_dup 9) (const_int -4)))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 9) (const_int -8)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 9) (const_int -12)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 9) (const_int -16)))
          (match_operand:SI 4 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 9) (const_int -20)))
          (match_operand:SI 5 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 9) (const_int -24)))
          (match_operand:SI 6 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 9) (const_int -28)))
          (match_operand:SI 7 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 9) (const_int -32)))
          (match_operand:SI 8 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 9"
   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8}, --(%9), writeback"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm8_dec"
  [(match_parallel 0 "stwm_operation"
    [(set (mem:SI (plus:SI (match_operand:SI 9 "register_operand" "r") (const_int -4)))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 9) (const_int -8)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 9) (const_int -12)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 9) (const_int -16)))
          (match_operand:SI 4 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 9) (const_int -20)))
          (match_operand:SI 5 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 9) (const_int -24)))
          (match_operand:SI 6 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 9) (const_int -28)))
          (match_operand:SI 7 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 9) (const_int -32)))
          (match_operand:SI 8 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 8"
   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8}, --(%9)"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm9_inc_wb"
  [(match_parallel 0 "stwm_operation"
    [(set (match_operand:SI 10 "register_operand" "+&r")
          (plus:SI (match_dup 10) (const_int 36)))
     (set (mem:SI (match_dup 10))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 10) (const_int 4)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 10) (const_int 8)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 10) (const_int 12)))
          (match_operand:SI 4 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 10) (const_int 16)))
          (match_operand:SI 5 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 10) (const_int 20)))
          (match_operand:SI 6 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 10) (const_int 24)))
          (match_operand:SI 7 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 10) (const_int 28)))
          (match_operand:SI 8 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 10) (const_int 32)))
          (match_operand:SI 9 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 10"
   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9}, (%10)++, writeback"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm9_inc"
  [(match_parallel 0 "stwm_operation"
    [(set (mem:SI (match_operand:SI 10 "register_operand" "r"))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 10) (const_int 4)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 10) (const_int 8)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 10) (const_int 12)))
          (match_operand:SI 4 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 10) (const_int 16)))
          (match_operand:SI 5 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 10) (const_int 20)))
          (match_operand:SI 6 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 10) (const_int 24)))
          (match_operand:SI 7 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 10) (const_int 28)))
          (match_operand:SI 8 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 10) (const_int 32)))
          (match_operand:SI 9 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 9"
   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9}, (%10)++"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm9_dec_wb"
  [(match_parallel 0 "stwm_operation"
    [(set (match_operand:SI 10 "register_operand" "+&r")
          (plus:SI (match_dup 10) (const_int -36)))
     (set (mem:SI (plus:SI (match_dup 10) (const_int -4)))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 10) (const_int -8)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 10) (const_int -12)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 10) (const_int -16)))
          (match_operand:SI 4 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 10) (const_int -20)))
          (match_operand:SI 5 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 10) (const_int -24)))
          (match_operand:SI 6 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 10) (const_int -28)))
          (match_operand:SI 7 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 10) (const_int -32)))
          (match_operand:SI 8 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 10) (const_int -36)))
          (match_operand:SI 9 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 10"
   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9}, --(%10), writeback"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm9_dec"
  [(match_parallel 0 "stwm_operation"
    [(set (mem:SI (plus:SI (match_operand:SI 10 "register_operand" "r") (const_int -4)))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 10) (const_int -8)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 10) (const_int -12)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 10) (const_int -16)))
          (match_operand:SI 4 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 10) (const_int -20)))
          (match_operand:SI 5 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 10) (const_int -24)))
          (match_operand:SI 6 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 10) (const_int -28)))
          (match_operand:SI 7 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 10) (const_int -32)))
          (match_operand:SI 8 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 10) (const_int -36)))
          (match_operand:SI 9 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 9"
   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9}, --(%10)"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm10_inc_wb"
  [(match_parallel 0 "stwm_operation"
    [(set (match_operand:SI 11 "register_operand" "+&r")
          (plus:SI (match_dup 11) (const_int 40)))
     (set (mem:SI (match_dup 11))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 11) (const_int 4)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 11) (const_int 8)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 11) (const_int 12)))
          (match_operand:SI 4 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 11) (const_int 16)))
          (match_operand:SI 5 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 11) (const_int 20)))
          (match_operand:SI 6 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 11) (const_int 24)))
          (match_operand:SI 7 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 11) (const_int 28)))
          (match_operand:SI 8 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 11) (const_int 32)))
          (match_operand:SI 9 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 11) (const_int 36)))
          (match_operand:SI 10 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 11"
   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10}, (%11)++, writeback"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm10_inc"
  [(match_parallel 0 "stwm_operation"
    [(set (mem:SI (match_operand:SI 11 "register_operand" "r"))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 11) (const_int 4)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 11) (const_int 8)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 11) (const_int 12)))
          (match_operand:SI 4 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 11) (const_int 16)))
          (match_operand:SI 5 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 11) (const_int 20)))
          (match_operand:SI 6 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 11) (const_int 24)))
          (match_operand:SI 7 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 11) (const_int 28)))
          (match_operand:SI 8 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 11) (const_int 32)))
          (match_operand:SI 9 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 11) (const_int 36)))
          (match_operand:SI 10 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 10"
   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10}, (%11)++"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm10_dec_wb"
  [(match_parallel 0 "stwm_operation"
    [(set (match_operand:SI 11 "register_operand" "+&r")
          (plus:SI (match_dup 11) (const_int -40)))
     (set (mem:SI (plus:SI (match_dup 11) (const_int -4)))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 11) (const_int -8)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 11) (const_int -12)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 11) (const_int -16)))
          (match_operand:SI 4 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 11) (const_int -20)))
          (match_operand:SI 5 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 11) (const_int -24)))
          (match_operand:SI 6 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 11) (const_int -28)))
          (match_operand:SI 7 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 11) (const_int -32)))
          (match_operand:SI 8 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 11) (const_int -36)))
          (match_operand:SI 9 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 11) (const_int -40)))
          (match_operand:SI 10 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 11"
   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10}, --(%11), writeback"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm10_dec"
  [(match_parallel 0 "stwm_operation"
    [(set (mem:SI (plus:SI (match_operand:SI 11 "register_operand" "r") (const_int -4)))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 11) (const_int -8)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 11) (const_int -12)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 11) (const_int -16)))
          (match_operand:SI 4 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 11) (const_int -20)))
          (match_operand:SI 5 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 11) (const_int -24)))
          (match_operand:SI 6 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 11) (const_int -28)))
          (match_operand:SI 7 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 11) (const_int -32)))
          (match_operand:SI 8 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 11) (const_int -36)))
          (match_operand:SI 9 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 11) (const_int -40)))
          (match_operand:SI 10 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 10"
   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10}, --(%11)"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm11_inc_wb"
  [(match_parallel 0 "stwm_operation"
    [(set (match_operand:SI 12 "register_operand" "+&r")
          (plus:SI (match_dup 12) (const_int 44)))
     (set (mem:SI (match_dup 12))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int 4)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int 8)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int 12)))
          (match_operand:SI 4 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int 16)))
          (match_operand:SI 5 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int 20)))
          (match_operand:SI 6 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int 24)))
          (match_operand:SI 7 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int 28)))
          (match_operand:SI 8 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int 32)))
          (match_operand:SI 9 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int 36)))
          (match_operand:SI 10 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int 40)))
          (match_operand:SI 11 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 12"
   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11}, (%12)++, writeback"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm11_inc"
  [(match_parallel 0 "stwm_operation"
    [(set (mem:SI (match_operand:SI 12 "register_operand" "r"))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int 4)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int 8)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int 12)))
          (match_operand:SI 4 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int 16)))
          (match_operand:SI 5 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int 20)))
          (match_operand:SI 6 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int 24)))
          (match_operand:SI 7 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int 28)))
          (match_operand:SI 8 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int 32)))
          (match_operand:SI 9 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int 36)))
          (match_operand:SI 10 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int 40)))
          (match_operand:SI 11 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 11"
   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11}, (%12)++"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm11_dec_wb"
  [(match_parallel 0 "stwm_operation"
    [(set (match_operand:SI 12 "register_operand" "+&r")
          (plus:SI (match_dup 12) (const_int -44)))
     (set (mem:SI (plus:SI (match_dup 12) (const_int -4)))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int -8)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int -12)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int -16)))
          (match_operand:SI 4 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int -20)))
          (match_operand:SI 5 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int -24)))
          (match_operand:SI 6 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int -28)))
          (match_operand:SI 7 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int -32)))
          (match_operand:SI 8 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int -36)))
          (match_operand:SI 9 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int -40)))
          (match_operand:SI 10 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int -44)))
          (match_operand:SI 11 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 12"
   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11}, --(%12), writeback"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm11_dec"
  [(match_parallel 0 "stwm_operation"
    [(set (mem:SI (plus:SI (match_operand:SI 12 "register_operand" "r") (const_int -4)))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int -8)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int -12)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int -16)))
          (match_operand:SI 4 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int -20)))
          (match_operand:SI 5 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int -24)))
          (match_operand:SI 6 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int -28)))
          (match_operand:SI 7 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int -32)))
          (match_operand:SI 8 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int -36)))
          (match_operand:SI 9 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int -40)))
          (match_operand:SI 10 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 12) (const_int -44)))
          (match_operand:SI 11 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 11"
   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11}, --(%12)"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm12_inc_wb"
  [(match_parallel 0 "stwm_operation"
    [(set (match_operand:SI 13 "register_operand" "+&r")
          (plus:SI (match_dup 13) (const_int 48)))
     (set (mem:SI (match_dup 13))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int 4)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int 8)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int 12)))
          (match_operand:SI 4 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int 16)))
          (match_operand:SI 5 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int 20)))
          (match_operand:SI 6 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int 24)))
          (match_operand:SI 7 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int 28)))
          (match_operand:SI 8 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int 32)))
          (match_operand:SI 9 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int 36)))
          (match_operand:SI 10 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int 40)))
          (match_operand:SI 11 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int 44)))
          (match_operand:SI 12 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 13"
   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12}, (%13)++, writeback"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm12_inc"
  [(match_parallel 0 "stwm_operation"
    [(set (mem:SI (match_operand:SI 13 "register_operand" "r"))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int 4)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int 8)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int 12)))
          (match_operand:SI 4 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int 16)))
          (match_operand:SI 5 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int 20)))
          (match_operand:SI 6 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int 24)))
          (match_operand:SI 7 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int 28)))
          (match_operand:SI 8 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int 32)))
          (match_operand:SI 9 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int 36)))
          (match_operand:SI 10 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int 40)))
          (match_operand:SI 11 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int 44)))
          (match_operand:SI 12 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 12"
   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12}, (%13)++"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm12_dec_wb"
  [(match_parallel 0 "stwm_operation"
    [(set (match_operand:SI 13 "register_operand" "+&r")
          (plus:SI (match_dup 13) (const_int -48)))
     (set (mem:SI (plus:SI (match_dup 13) (const_int -4)))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int -8)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int -12)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int -16)))
          (match_operand:SI 4 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int -20)))
          (match_operand:SI 5 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int -24)))
          (match_operand:SI 6 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int -28)))
          (match_operand:SI 7 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int -32)))
          (match_operand:SI 8 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int -36)))
          (match_operand:SI 9 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int -40)))
          (match_operand:SI 10 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int -44)))
          (match_operand:SI 11 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int -48)))
          (match_operand:SI 12 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 13"
   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12}, --(%13), writeback"
  [(set_attr "type" "stwm")])

(define_insn "*cdx_stwm12_dec"
  [(match_parallel 0 "stwm_operation"
    [(set (mem:SI (plus:SI (match_operand:SI 13 "register_operand" "r") (const_int -4)))
          (match_operand:SI 1 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int -8)))
          (match_operand:SI 2 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int -12)))
          (match_operand:SI 3 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int -16)))
          (match_operand:SI 4 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int -20)))
          (match_operand:SI 5 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int -24)))
          (match_operand:SI 6 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int -28)))
          (match_operand:SI 7 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int -32)))
          (match_operand:SI 8 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int -36)))
          (match_operand:SI 9 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int -40)))
          (match_operand:SI 10 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int -44)))
          (match_operand:SI 11 "nios2_hard_register_operand" ""))
     (set (mem:SI (plus:SI (match_dup 13) (const_int -48)))
          (match_operand:SI 12 "nios2_hard_register_operand" ""))])]
   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 12"
   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12}, --(%13)"
  [(set_attr "type" "stwm")])

(define_peephole2
  [(match_scratch:SI 24 "r")
   (set (match_operand:SI 0 "register_operand" "")
        (match_operand:SI 12 "memory_operand" ""))
   (set (match_operand:SI 1 "register_operand" "")
        (match_operand:SI 13 "memory_operand" ""))
   (set (match_operand:SI 2 "register_operand" "")
        (match_operand:SI 14 "memory_operand" ""))
   (set (match_operand:SI 3 "register_operand" "")
        (match_operand:SI 15 "memory_operand" ""))
   (set (match_operand:SI 4 "register_operand" "")
        (match_operand:SI 16 "memory_operand" ""))
   (set (match_operand:SI 5 "register_operand" "")
        (match_operand:SI 17 "memory_operand" ""))
   (set (match_operand:SI 6 "register_operand" "")
        (match_operand:SI 18 "memory_operand" ""))
   (set (match_operand:SI 7 "register_operand" "")
        (match_operand:SI 19 "memory_operand" ""))
   (set (match_operand:SI 8 "register_operand" "")
        (match_operand:SI 20 "memory_operand" ""))
   (set (match_operand:SI 9 "register_operand" "")
        (match_operand:SI 21 "memory_operand" ""))
   (set (match_operand:SI 10 "register_operand" "")
        (match_operand:SI 22 "memory_operand" ""))
   (set (match_operand:SI 11 "register_operand" "")
        (match_operand:SI 23 "memory_operand" ""))
   (match_dup 24)]
  "TARGET_HAS_CDX"
  [(const_int 0)]
{
  if (gen_ldstwm_peep (true, 12, operands[24], operands))
    DONE;
  else
    FAIL;
})

(define_peephole2
  [(match_scratch:SI 22 "r")
   (set (match_operand:SI 0 "register_operand" "")
        (match_operand:SI 11 "memory_operand" ""))
   (set (match_operand:SI 1 "register_operand" "")
        (match_operand:SI 12 "memory_operand" ""))
   (set (match_operand:SI 2 "register_operand" "")
        (match_operand:SI 13 "memory_operand" ""))
   (set (match_operand:SI 3 "register_operand" "")
        (match_operand:SI 14 "memory_operand" ""))
   (set (match_operand:SI 4 "register_operand" "")
        (match_operand:SI 15 "memory_operand" ""))
   (set (match_operand:SI 5 "register_operand" "")
        (match_operand:SI 16 "memory_operand" ""))
   (set (match_operand:SI 6 "register_operand" "")
        (match_operand:SI 17 "memory_operand" ""))
   (set (match_operand:SI 7 "register_operand" "")
        (match_operand:SI 18 "memory_operand" ""))
   (set (match_operand:SI 8 "register_operand" "")
        (match_operand:SI 19 "memory_operand" ""))
   (set (match_operand:SI 9 "register_operand" "")
        (match_operand:SI 20 "memory_operand" ""))
   (set (match_operand:SI 10 "register_operand" "")
        (match_operand:SI 21 "memory_operand" ""))
   (match_dup 22)]
  "TARGET_HAS_CDX"
  [(const_int 0)]
{
  if (gen_ldstwm_peep (true, 11, operands[22], operands))
    DONE;
  else
    FAIL;
})

(define_peephole2
  [(match_scratch:SI 20 "r")
   (set (match_operand:SI 0 "register_operand" "")
        (match_operand:SI 10 "memory_operand" ""))
   (set (match_operand:SI 1 "register_operand" "")
        (match_operand:SI 11 "memory_operand" ""))
   (set (match_operand:SI 2 "register_operand" "")
        (match_operand:SI 12 "memory_operand" ""))
   (set (match_operand:SI 3 "register_operand" "")
        (match_operand:SI 13 "memory_operand" ""))
   (set (match_operand:SI 4 "register_operand" "")
        (match_operand:SI 14 "memory_operand" ""))
   (set (match_operand:SI 5 "register_operand" "")
        (match_operand:SI 15 "memory_operand" ""))
   (set (match_operand:SI 6 "register_operand" "")
        (match_operand:SI 16 "memory_operand" ""))
   (set (match_operand:SI 7 "register_operand" "")
        (match_operand:SI 17 "memory_operand" ""))
   (set (match_operand:SI 8 "register_operand" "")
        (match_operand:SI 18 "memory_operand" ""))
   (set (match_operand:SI 9 "register_operand" "")
        (match_operand:SI 19 "memory_operand" ""))
   (match_dup 20)]
  "TARGET_HAS_CDX"
  [(const_int 0)]
{
  if (gen_ldstwm_peep (true, 10, operands[20], operands))
    DONE;
  else
    FAIL;
})

(define_peephole2
  [(match_scratch:SI 18 "r")
   (set (match_operand:SI 0 "register_operand" "")
        (match_operand:SI 9 "memory_operand" ""))
   (set (match_operand:SI 1 "register_operand" "")
        (match_operand:SI 10 "memory_operand" ""))
   (set (match_operand:SI 2 "register_operand" "")
        (match_operand:SI 11 "memory_operand" ""))
   (set (match_operand:SI 3 "register_operand" "")
        (match_operand:SI 12 "memory_operand" ""))
   (set (match_operand:SI 4 "register_operand" "")
        (match_operand:SI 13 "memory_operand" ""))
   (set (match_operand:SI 5 "register_operand" "")
        (match_operand:SI 14 "memory_operand" ""))
   (set (match_operand:SI 6 "register_operand" "")
        (match_operand:SI 15 "memory_operand" ""))
   (set (match_operand:SI 7 "register_operand" "")
        (match_operand:SI 16 "memory_operand" ""))
   (set (match_operand:SI 8 "register_operand" "")
        (match_operand:SI 17 "memory_operand" ""))
   (match_dup 18)]
  "TARGET_HAS_CDX"
  [(const_int 0)]
{
  if (gen_ldstwm_peep (true, 9, operands[18], operands))
    DONE;
  else
    FAIL;
})

(define_peephole2
  [(match_scratch:SI 16 "r")
   (set (match_operand:SI 0 "register_operand" "")
        (match_operand:SI 8 "memory_operand" ""))
   (set (match_operand:SI 1 "register_operand" "")
        (match_operand:SI 9 "memory_operand" ""))
   (set (match_operand:SI 2 "register_operand" "")
        (match_operand:SI 10 "memory_operand" ""))
   (set (match_operand:SI 3 "register_operand" "")
        (match_operand:SI 11 "memory_operand" ""))
   (set (match_operand:SI 4 "register_operand" "")
        (match_operand:SI 12 "memory_operand" ""))
   (set (match_operand:SI 5 "register_operand" "")
        (match_operand:SI 13 "memory_operand" ""))
   (set (match_operand:SI 6 "register_operand" "")
        (match_operand:SI 14 "memory_operand" ""))
   (set (match_operand:SI 7 "register_operand" "")
        (match_operand:SI 15 "memory_operand" ""))
   (match_dup 16)]
  "TARGET_HAS_CDX"
  [(const_int 0)]
{
  if (gen_ldstwm_peep (true, 8, operands[16], operands))
    DONE;
  else
    FAIL;
})

(define_peephole2
  [(match_scratch:SI 14 "r")
   (set (match_operand:SI 0 "register_operand" "")
        (match_operand:SI 7 "memory_operand" ""))
   (set (match_operand:SI 1 "register_operand" "")
        (match_operand:SI 8 "memory_operand" ""))
   (set (match_operand:SI 2 "register_operand" "")
        (match_operand:SI 9 "memory_operand" ""))
   (set (match_operand:SI 3 "register_operand" "")
        (match_operand:SI 10 "memory_operand" ""))
   (set (match_operand:SI 4 "register_operand" "")
        (match_operand:SI 11 "memory_operand" ""))
   (set (match_operand:SI 5 "register_operand" "")
        (match_operand:SI 12 "memory_operand" ""))
   (set (match_operand:SI 6 "register_operand" "")
        (match_operand:SI 13 "memory_operand" ""))
   (match_dup 14)]
  "TARGET_HAS_CDX"
  [(const_int 0)]
{
  if (gen_ldstwm_peep (true, 7, operands[14], operands))
    DONE;
  else
    FAIL;
})

(define_peephole2
  [(match_scratch:SI 12 "r")
   (set (match_operand:SI 0 "register_operand" "")
        (match_operand:SI 6 "memory_operand" ""))
   (set (match_operand:SI 1 "register_operand" "")
        (match_operand:SI 7 "memory_operand" ""))
   (set (match_operand:SI 2 "register_operand" "")
        (match_operand:SI 8 "memory_operand" ""))
   (set (match_operand:SI 3 "register_operand" "")
        (match_operand:SI 9 "memory_operand" ""))
   (set (match_operand:SI 4 "register_operand" "")
        (match_operand:SI 10 "memory_operand" ""))
   (set (match_operand:SI 5 "register_operand" "")
        (match_operand:SI 11 "memory_operand" ""))
   (match_dup 12)]
  "TARGET_HAS_CDX"
  [(const_int 0)]
{
  if (gen_ldstwm_peep (true, 6, operands[12], operands))
    DONE;
  else
    FAIL;
})

(define_peephole2
  [(match_scratch:SI 10 "r")
   (set (match_operand:SI 0 "register_operand" "")
        (match_operand:SI 5 "memory_operand" ""))
   (set (match_operand:SI 1 "register_operand" "")
        (match_operand:SI 6 "memory_operand" ""))
   (set (match_operand:SI 2 "register_operand" "")
        (match_operand:SI 7 "memory_operand" ""))
   (set (match_operand:SI 3 "register_operand" "")
        (match_operand:SI 8 "memory_operand" ""))
   (set (match_operand:SI 4 "register_operand" "")
        (match_operand:SI 9 "memory_operand" ""))
   (match_dup 10)]
  "TARGET_HAS_CDX"
  [(const_int 0)]
{
  if (gen_ldstwm_peep (true, 5, operands[10], operands))
    DONE;
  else
    FAIL;
})

(define_peephole2
  [(match_scratch:SI 8 "r")
   (set (match_operand:SI 0 "register_operand" "")
        (match_operand:SI 4 "memory_operand" ""))
   (set (match_operand:SI 1 "register_operand" "")
        (match_operand:SI 5 "memory_operand" ""))
   (set (match_operand:SI 2 "register_operand" "")
        (match_operand:SI 6 "memory_operand" ""))
   (set (match_operand:SI 3 "register_operand" "")
        (match_operand:SI 7 "memory_operand" ""))
   (match_dup 8)]
  "TARGET_HAS_CDX"
  [(const_int 0)]
{
  if (gen_ldstwm_peep (true, 4, operands[8], operands))
    DONE;
  else
    FAIL;
})

(define_peephole2
  [(match_scratch:SI 6 "r")
   (set (match_operand:SI 0 "register_operand" "")
        (match_operand:SI 3 "memory_operand" ""))
   (set (match_operand:SI 1 "register_operand" "")
        (match_operand:SI 4 "memory_operand" ""))
   (set (match_operand:SI 2 "register_operand" "")
        (match_operand:SI 5 "memory_operand" ""))
   (match_dup 6)]
  "TARGET_HAS_CDX"
  [(const_int 0)]
{
  if (gen_ldstwm_peep (true, 3, operands[6], operands))
    DONE;
  else
    FAIL;
})

(define_peephole2
  [(match_scratch:SI 4 "r")
   (set (match_operand:SI 0 "register_operand" "")
        (match_operand:SI 2 "memory_operand" ""))
   (set (match_operand:SI 1 "register_operand" "")
        (match_operand:SI 3 "memory_operand" ""))
   (match_dup 4)]
  "TARGET_HAS_CDX"
  [(const_int 0)]
{
  if (gen_ldstwm_peep (true, 2, operands[4], operands))
    DONE;
  else
    FAIL;
})

(define_peephole2
  [(match_scratch:SI 24 "r")
   (set (match_operand:SI 12 "memory_operand" "")
        (match_operand:SI 0 "register_operand" ""))
   (set (match_operand:SI 13 "memory_operand" "")
        (match_operand:SI 1 "register_operand" ""))
   (set (match_operand:SI 14 "memory_operand" "")
        (match_operand:SI 2 "register_operand" ""))
   (set (match_operand:SI 15 "memory_operand" "")
        (match_operand:SI 3 "register_operand" ""))
   (set (match_operand:SI 16 "memory_operand" "")
        (match_operand:SI 4 "register_operand" ""))
   (set (match_operand:SI 17 "memory_operand" "")
        (match_operand:SI 5 "register_operand" ""))
   (set (match_operand:SI 18 "memory_operand" "")
        (match_operand:SI 6 "register_operand" ""))
   (set (match_operand:SI 19 "memory_operand" "")
        (match_operand:SI 7 "register_operand" ""))
   (set (match_operand:SI 20 "memory_operand" "")
        (match_operand:SI 8 "register_operand" ""))
   (set (match_operand:SI 21 "memory_operand" "")
        (match_operand:SI 9 "register_operand" ""))
   (set (match_operand:SI 22 "memory_operand" "")
        (match_operand:SI 10 "register_operand" ""))
   (set (match_operand:SI 23 "memory_operand" "")
        (match_operand:SI 11 "register_operand" ""))
   (match_dup 24)]
  "TARGET_HAS_CDX"
  [(const_int 0)]
{
  if (gen_ldstwm_peep (false, 12, operands[24], operands))
    DONE;
  else
    FAIL;
})

(define_peephole2
  [(match_scratch:SI 22 "r")
   (set (match_operand:SI 11 "memory_operand" "")
        (match_operand:SI 0 "register_operand" ""))
   (set (match_operand:SI 12 "memory_operand" "")
        (match_operand:SI 1 "register_operand" ""))
   (set (match_operand:SI 13 "memory_operand" "")
        (match_operand:SI 2 "register_operand" ""))
   (set (match_operand:SI 14 "memory_operand" "")
        (match_operand:SI 3 "register_operand" ""))
   (set (match_operand:SI 15 "memory_operand" "")
        (match_operand:SI 4 "register_operand" ""))
   (set (match_operand:SI 16 "memory_operand" "")
        (match_operand:SI 5 "register_operand" ""))
   (set (match_operand:SI 17 "memory_operand" "")
        (match_operand:SI 6 "register_operand" ""))
   (set (match_operand:SI 18 "memory_operand" "")
        (match_operand:SI 7 "register_operand" ""))
   (set (match_operand:SI 19 "memory_operand" "")
        (match_operand:SI 8 "register_operand" ""))
   (set (match_operand:SI 20 "memory_operand" "")
        (match_operand:SI 9 "register_operand" ""))
   (set (match_operand:SI 21 "memory_operand" "")
        (match_operand:SI 10 "register_operand" ""))
   (match_dup 22)]
  "TARGET_HAS_CDX"
  [(const_int 0)]
{
  if (gen_ldstwm_peep (false, 11, operands[22], operands))
    DONE;
  else
    FAIL;
})

(define_peephole2
  [(match_scratch:SI 20 "r")
   (set (match_operand:SI 10 "memory_operand" "")
        (match_operand:SI 0 "register_operand" ""))
   (set (match_operand:SI 11 "memory_operand" "")
        (match_operand:SI 1 "register_operand" ""))
   (set (match_operand:SI 12 "memory_operand" "")
        (match_operand:SI 2 "register_operand" ""))
   (set (match_operand:SI 13 "memory_operand" "")
        (match_operand:SI 3 "register_operand" ""))
   (set (match_operand:SI 14 "memory_operand" "")
        (match_operand:SI 4 "register_operand" ""))
   (set (match_operand:SI 15 "memory_operand" "")
        (match_operand:SI 5 "register_operand" ""))
   (set (match_operand:SI 16 "memory_operand" "")
        (match_operand:SI 6 "register_operand" ""))
   (set (match_operand:SI 17 "memory_operand" "")
        (match_operand:SI 7 "register_operand" ""))
   (set (match_operand:SI 18 "memory_operand" "")
        (match_operand:SI 8 "register_operand" ""))
   (set (match_operand:SI 19 "memory_operand" "")
        (match_operand:SI 9 "register_operand" ""))
   (match_dup 20)]
  "TARGET_HAS_CDX"
  [(const_int 0)]
{
  if (gen_ldstwm_peep (false, 10, operands[20], operands))
    DONE;
  else
    FAIL;
})

(define_peephole2
  [(match_scratch:SI 18 "r")
   (set (match_operand:SI 9 "memory_operand" "")
        (match_operand:SI 0 "register_operand" ""))
   (set (match_operand:SI 10 "memory_operand" "")
        (match_operand:SI 1 "register_operand" ""))
   (set (match_operand:SI 11 "memory_operand" "")
        (match_operand:SI 2 "register_operand" ""))
   (set (match_operand:SI 12 "memory_operand" "")
        (match_operand:SI 3 "register_operand" ""))
   (set (match_operand:SI 13 "memory_operand" "")
        (match_operand:SI 4 "register_operand" ""))
   (set (match_operand:SI 14 "memory_operand" "")
        (match_operand:SI 5 "register_operand" ""))
   (set (match_operand:SI 15 "memory_operand" "")
        (match_operand:SI 6 "register_operand" ""))
   (set (match_operand:SI 16 "memory_operand" "")
        (match_operand:SI 7 "register_operand" ""))
   (set (match_operand:SI 17 "memory_operand" "")
        (match_operand:SI 8 "register_operand" ""))
   (match_dup 18)]
  "TARGET_HAS_CDX"
  [(const_int 0)]
{
  if (gen_ldstwm_peep (false, 9, operands[18], operands))
    DONE;
  else
    FAIL;
})

(define_peephole2
  [(match_scratch:SI 16 "r")
   (set (match_operand:SI 8 "memory_operand" "")
        (match_operand:SI 0 "register_operand" ""))
   (set (match_operand:SI 9 "memory_operand" "")
        (match_operand:SI 1 "register_operand" ""))
   (set (match_operand:SI 10 "memory_operand" "")
        (match_operand:SI 2 "register_operand" ""))
   (set (match_operand:SI 11 "memory_operand" "")
        (match_operand:SI 3 "register_operand" ""))
   (set (match_operand:SI 12 "memory_operand" "")
        (match_operand:SI 4 "register_operand" ""))
   (set (match_operand:SI 13 "memory_operand" "")
        (match_operand:SI 5 "register_operand" ""))
   (set (match_operand:SI 14 "memory_operand" "")
        (match_operand:SI 6 "register_operand" ""))
   (set (match_operand:SI 15 "memory_operand" "")
        (match_operand:SI 7 "register_operand" ""))
   (match_dup 16)]
  "TARGET_HAS_CDX"
  [(const_int 0)]
{
  if (gen_ldstwm_peep (false, 8, operands[16], operands))
    DONE;
  else
    FAIL;
})

(define_peephole2
  [(match_scratch:SI 14 "r")
   (set (match_operand:SI 7 "memory_operand" "")
        (match_operand:SI 0 "register_operand" ""))
   (set (match_operand:SI 8 "memory_operand" "")
        (match_operand:SI 1 "register_operand" ""))
   (set (match_operand:SI 9 "memory_operand" "")
        (match_operand:SI 2 "register_operand" ""))
   (set (match_operand:SI 10 "memory_operand" "")
        (match_operand:SI 3 "register_operand" ""))
   (set (match_operand:SI 11 "memory_operand" "")
        (match_operand:SI 4 "register_operand" ""))
   (set (match_operand:SI 12 "memory_operand" "")
        (match_operand:SI 5 "register_operand" ""))
   (set (match_operand:SI 13 "memory_operand" "")
        (match_operand:SI 6 "register_operand" ""))
   (match_dup 14)]
  "TARGET_HAS_CDX"
  [(const_int 0)]
{
  if (gen_ldstwm_peep (false, 7, operands[14], operands))
    DONE;
  else
    FAIL;
})

(define_peephole2
  [(match_scratch:SI 12 "r")
   (set (match_operand:SI 6 "memory_operand" "")
        (match_operand:SI 0 "register_operand" ""))
   (set (match_operand:SI 7 "memory_operand" "")
        (match_operand:SI 1 "register_operand" ""))
   (set (match_operand:SI 8 "memory_operand" "")
        (match_operand:SI 2 "register_operand" ""))
   (set (match_operand:SI 9 "memory_operand" "")
        (match_operand:SI 3 "register_operand" ""))
   (set (match_operand:SI 10 "memory_operand" "")
        (match_operand:SI 4 "register_operand" ""))
   (set (match_operand:SI 11 "memory_operand" "")
        (match_operand:SI 5 "register_operand" ""))
   (match_dup 12)]
  "TARGET_HAS_CDX"
  [(const_int 0)]
{
  if (gen_ldstwm_peep (false, 6, operands[12], operands))
    DONE;
  else
    FAIL;
})

(define_peephole2
  [(match_scratch:SI 10 "r")
   (set (match_operand:SI 5 "memory_operand" "")
        (match_operand:SI 0 "register_operand" ""))
   (set (match_operand:SI 6 "memory_operand" "")
        (match_operand:SI 1 "register_operand" ""))
   (set (match_operand:SI 7 "memory_operand" "")
        (match_operand:SI 2 "register_operand" ""))
   (set (match_operand:SI 8 "memory_operand" "")
        (match_operand:SI 3 "register_operand" ""))
   (set (match_operand:SI 9 "memory_operand" "")
        (match_operand:SI 4 "register_operand" ""))
   (match_dup 10)]
  "TARGET_HAS_CDX"
  [(const_int 0)]
{
  if (gen_ldstwm_peep (false, 5, operands[10], operands))
    DONE;
  else
    FAIL;
})

(define_peephole2
  [(match_scratch:SI 8 "r")
   (set (match_operand:SI 4 "memory_operand" "")
        (match_operand:SI 0 "register_operand" ""))
   (set (match_operand:SI 5 "memory_operand" "")
        (match_operand:SI 1 "register_operand" ""))
   (set (match_operand:SI 6 "memory_operand" "")
        (match_operand:SI 2 "register_operand" ""))
   (set (match_operand:SI 7 "memory_operand" "")
        (match_operand:SI 3 "register_operand" ""))
   (match_dup 8)]
  "TARGET_HAS_CDX"
  [(const_int 0)]
{
  if (gen_ldstwm_peep (false, 4, operands[8], operands))
    DONE;
  else
    FAIL;
})

(define_peephole2
  [(match_scratch:SI 6 "r")
   (set (match_operand:SI 3 "memory_operand" "")
        (match_operand:SI 0 "register_operand" ""))
   (set (match_operand:SI 4 "memory_operand" "")
        (match_operand:SI 1 "register_operand" ""))
   (set (match_operand:SI 5 "memory_operand" "")
        (match_operand:SI 2 "register_operand" ""))
   (match_dup 6)]
  "TARGET_HAS_CDX"
  [(const_int 0)]
{
  if (gen_ldstwm_peep (false, 3, operands[6], operands))
    DONE;
  else
    FAIL;
})

(define_peephole2
  [(match_scratch:SI 4 "r")
   (set (match_operand:SI 2 "memory_operand" "")
        (match_operand:SI 0 "register_operand" ""))
   (set (match_operand:SI 3 "memory_operand" "")
        (match_operand:SI 1 "register_operand" ""))
   (match_dup 4)]
  "TARGET_HAS_CDX"
  [(const_int 0)]
{
  if (gen_ldstwm_peep (false, 2, operands[4], operands))
    DONE;
  else
    FAIL;
})

