xref: /netbsd-src/external/gpl3/gcc.old/dist/gcc/config/nios2/ldstwm.md (revision 2dd295436a0082eb4f8d294f4aa73c223413d0f2)
1/* Nios II R2 CDX ldwm/stwm/push.h/pop.n instruction patterns.
2   This file was automatically generated using nios2-ldstwm.sml.
3   Please do not edit manually.
4
5   Copyright (C) 2014-2020 Free Software Foundation, Inc.
6   Contributed by Mentor Graphics.
7
8   This file is part of GCC.
9
10   GCC is free software; you can redistribute it and/or modify it
11   under the terms of the GNU General Public License as published
12   by the Free Software Foundation; either version 3, or (at your
13   option) any later version.
14
15   GCC is distributed in the hope that it will be useful, but WITHOUT
16   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
17   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
18   License for more details.
19
20   You should have received a copy of the GNU General Public License and
21   a copy of the GCC Runtime Library Exception along with this program;
22   see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
23   <http://www.gnu.org/licenses/>.  */
24
25(define_insn "*cdx_push_ra_fp"
26  [(match_parallel 0 ""
27    [(set (reg:SI SP_REGNO)
28          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
29     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -4))) (reg:SI RA_REGNO))
30     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -8))) (reg:SI FP_REGNO))])]
31   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 3
32    && (-INTVAL (operands[1]) & 3) == 0
33    && (-INTVAL (operands[1]) - 8) <= 60"
34{
35  operands[2] = GEN_INT (-INTVAL (operands[1]) - 8);
36  return "push.n\\t{ra, fp}, %2";
37}
38  [(set_attr "type" "push")])
39
40(define_insn "*cdx_push_ra"
41  [(match_parallel 0 ""
42    [(set (reg:SI SP_REGNO)
43          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
44     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -4))) (reg:SI RA_REGNO))])]
45   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 2
46    && (-INTVAL (operands[1]) & 3) == 0
47    && (-INTVAL (operands[1]) - 4) <= 60"
48{
49  operands[2] = GEN_INT (-INTVAL (operands[1]) - 4);
50  return "push.n\\t{ra}, %2";
51}
52  [(set_attr "type" "push")])
53
54(define_insn "*cdx_pop_fp_ra"
55  [(match_parallel 0 "pop_operation"
56    [(return)
57     (set (reg:SI SP_REGNO)
58          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
59     (set (reg:SI RA_REGNO) (match_operand:SI 2 "stack_memory_operand" ""))
60     (set (reg:SI FP_REGNO) (match_operand:SI 3 "stack_memory_operand" ""))])]
61   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 4"
62{
63  rtx x = XEXP (operands[3], 0);
64  operands[3] = REG_P (x) ? const0_rtx : XEXP (x, 1);
65  return "pop.n\\t{fp, ra}, %3";
66}
67  [(set_attr "type" "pop")])
68
69(define_insn "*cdx_pop_ra"
70  [(match_parallel 0 "pop_operation"
71    [(return)
72     (set (reg:SI SP_REGNO)
73          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
74     (set (reg:SI RA_REGNO) (match_operand:SI 2 "stack_memory_operand" ""))])]
75   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 3"
76{
77  rtx x = XEXP (operands[2], 0);
78  operands[2] = REG_P (x) ? const0_rtx : XEXP (x, 1);
79  return "pop.n\\t{ra}, %2";
80}
81  [(set_attr "type" "pop")])
82
83(define_insn "*cdx_push_ra_fp_r16"
84  [(match_parallel 0 ""
85    [(set (reg:SI SP_REGNO)
86          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
87     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -4))) (reg:SI RA_REGNO))
88     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -8))) (reg:SI FP_REGNO))
89     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -12))) (reg:SI 16))])]
90   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 4
91    && (-INTVAL (operands[1]) & 3) == 0
92    && (-INTVAL (operands[1]) - 12) <= 60"
93{
94  operands[2] = GEN_INT (-INTVAL (operands[1]) - 12);
95  return "push.n\\t{ra, fp, r16}, %2";
96}
97  [(set_attr "type" "push")])
98
99(define_insn "*cdx_push_ra_r16"
100  [(match_parallel 0 ""
101    [(set (reg:SI SP_REGNO)
102          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
103     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -4))) (reg:SI RA_REGNO))
104     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -8))) (reg:SI 16))])]
105   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 3
106    && (-INTVAL (operands[1]) & 3) == 0
107    && (-INTVAL (operands[1]) - 8) <= 60"
108{
109  operands[2] = GEN_INT (-INTVAL (operands[1]) - 8);
110  return "push.n\\t{ra, r16}, %2";
111}
112  [(set_attr "type" "push")])
113
114(define_insn "*cdx_pop_r16_fp_ra"
115  [(match_parallel 0 "pop_operation"
116    [(return)
117     (set (reg:SI SP_REGNO)
118          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
119     (set (reg:SI RA_REGNO) (match_operand:SI 2 "stack_memory_operand" ""))
120     (set (reg:SI FP_REGNO) (match_operand:SI 3 "stack_memory_operand" ""))
121     (set (reg:SI 16) (match_operand:SI 4 "stack_memory_operand" ""))])]
122   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 5"
123{
124  rtx x = XEXP (operands[4], 0);
125  operands[4] = REG_P (x) ? const0_rtx : XEXP (x, 1);
126  return "pop.n\\t{r16, fp, ra}, %4";
127}
128  [(set_attr "type" "pop")])
129
130(define_insn "*cdx_pop_r16_ra"
131  [(match_parallel 0 "pop_operation"
132    [(return)
133     (set (reg:SI SP_REGNO)
134          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
135     (set (reg:SI RA_REGNO) (match_operand:SI 2 "stack_memory_operand" ""))
136     (set (reg:SI 16) (match_operand:SI 3 "stack_memory_operand" ""))])]
137   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 4"
138{
139  rtx x = XEXP (operands[3], 0);
140  operands[3] = REG_P (x) ? const0_rtx : XEXP (x, 1);
141  return "pop.n\\t{r16, ra}, %3";
142}
143  [(set_attr "type" "pop")])
144
145(define_insn "*cdx_push_ra_fp_r17_r16"
146  [(match_parallel 0 ""
147    [(set (reg:SI SP_REGNO)
148          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
149     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -4))) (reg:SI RA_REGNO))
150     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -8))) (reg:SI FP_REGNO))
151     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -12))) (reg:SI 17))
152     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -16))) (reg:SI 16))])]
153   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 5
154    && (-INTVAL (operands[1]) & 3) == 0
155    && (-INTVAL (operands[1]) - 16) <= 60"
156{
157  operands[2] = GEN_INT (-INTVAL (operands[1]) - 16);
158  return "push.n\\t{ra, fp, r17, r16}, %2";
159}
160  [(set_attr "type" "push")])
161
162(define_insn "*cdx_push_ra_r17_r16"
163  [(match_parallel 0 ""
164    [(set (reg:SI SP_REGNO)
165          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
166     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -4))) (reg:SI RA_REGNO))
167     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -8))) (reg:SI 17))
168     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -12))) (reg:SI 16))])]
169   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 4
170    && (-INTVAL (operands[1]) & 3) == 0
171    && (-INTVAL (operands[1]) - 12) <= 60"
172{
173  operands[2] = GEN_INT (-INTVAL (operands[1]) - 12);
174  return "push.n\\t{ra, r17, r16}, %2";
175}
176  [(set_attr "type" "push")])
177
178(define_insn "*cdx_pop_r16_r17_fp_ra"
179  [(match_parallel 0 "pop_operation"
180    [(return)
181     (set (reg:SI SP_REGNO)
182          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
183     (set (reg:SI RA_REGNO) (match_operand:SI 2 "stack_memory_operand" ""))
184     (set (reg:SI FP_REGNO) (match_operand:SI 3 "stack_memory_operand" ""))
185     (set (reg:SI 17) (match_operand:SI 4 "stack_memory_operand" ""))
186     (set (reg:SI 16) (match_operand:SI 5 "stack_memory_operand" ""))])]
187   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 6"
188{
189  rtx x = XEXP (operands[5], 0);
190  operands[5] = REG_P (x) ? const0_rtx : XEXP (x, 1);
191  return "pop.n\\t{r16, r17, fp, ra}, %5";
192}
193  [(set_attr "type" "pop")])
194
195(define_insn "*cdx_pop_r16_r17_ra"
196  [(match_parallel 0 "pop_operation"
197    [(return)
198     (set (reg:SI SP_REGNO)
199          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
200     (set (reg:SI RA_REGNO) (match_operand:SI 2 "stack_memory_operand" ""))
201     (set (reg:SI 17) (match_operand:SI 3 "stack_memory_operand" ""))
202     (set (reg:SI 16) (match_operand:SI 4 "stack_memory_operand" ""))])]
203   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 5"
204{
205  rtx x = XEXP (operands[4], 0);
206  operands[4] = REG_P (x) ? const0_rtx : XEXP (x, 1);
207  return "pop.n\\t{r16, r17, ra}, %4";
208}
209  [(set_attr "type" "pop")])
210
211(define_insn "*cdx_push_ra_fp_r18_r17_r16"
212  [(match_parallel 0 ""
213    [(set (reg:SI SP_REGNO)
214          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
215     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -4))) (reg:SI RA_REGNO))
216     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -8))) (reg:SI FP_REGNO))
217     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -12))) (reg:SI 18))
218     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -16))) (reg:SI 17))
219     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -20))) (reg:SI 16))])]
220   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 6
221    && (-INTVAL (operands[1]) & 3) == 0
222    && (-INTVAL (operands[1]) - 20) <= 60"
223{
224  operands[2] = GEN_INT (-INTVAL (operands[1]) - 20);
225  return "push.n\\t{ra, fp, r18, r17, r16}, %2";
226}
227  [(set_attr "type" "push")])
228
229(define_insn "*cdx_push_ra_r18_r17_r16"
230  [(match_parallel 0 ""
231    [(set (reg:SI SP_REGNO)
232          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
233     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -4))) (reg:SI RA_REGNO))
234     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -8))) (reg:SI 18))
235     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -12))) (reg:SI 17))
236     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -16))) (reg:SI 16))])]
237   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 5
238    && (-INTVAL (operands[1]) & 3) == 0
239    && (-INTVAL (operands[1]) - 16) <= 60"
240{
241  operands[2] = GEN_INT (-INTVAL (operands[1]) - 16);
242  return "push.n\\t{ra, r18, r17, r16}, %2";
243}
244  [(set_attr "type" "push")])
245
246(define_insn "*cdx_pop_r16_r17_r18_fp_ra"
247  [(match_parallel 0 "pop_operation"
248    [(return)
249     (set (reg:SI SP_REGNO)
250          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
251     (set (reg:SI RA_REGNO) (match_operand:SI 2 "stack_memory_operand" ""))
252     (set (reg:SI FP_REGNO) (match_operand:SI 3 "stack_memory_operand" ""))
253     (set (reg:SI 18) (match_operand:SI 4 "stack_memory_operand" ""))
254     (set (reg:SI 17) (match_operand:SI 5 "stack_memory_operand" ""))
255     (set (reg:SI 16) (match_operand:SI 6 "stack_memory_operand" ""))])]
256   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 7"
257{
258  rtx x = XEXP (operands[6], 0);
259  operands[6] = REG_P (x) ? const0_rtx : XEXP (x, 1);
260  return "pop.n\\t{r16, r17, r18, fp, ra}, %6";
261}
262  [(set_attr "type" "pop")])
263
264(define_insn "*cdx_pop_r16_r17_r18_ra"
265  [(match_parallel 0 "pop_operation"
266    [(return)
267     (set (reg:SI SP_REGNO)
268          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
269     (set (reg:SI RA_REGNO) (match_operand:SI 2 "stack_memory_operand" ""))
270     (set (reg:SI 18) (match_operand:SI 3 "stack_memory_operand" ""))
271     (set (reg:SI 17) (match_operand:SI 4 "stack_memory_operand" ""))
272     (set (reg:SI 16) (match_operand:SI 5 "stack_memory_operand" ""))])]
273   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 6"
274{
275  rtx x = XEXP (operands[5], 0);
276  operands[5] = REG_P (x) ? const0_rtx : XEXP (x, 1);
277  return "pop.n\\t{r16, r17, r18, ra}, %5";
278}
279  [(set_attr "type" "pop")])
280
281(define_insn "*cdx_push_ra_fp_r19_r18_r17_r16"
282  [(match_parallel 0 ""
283    [(set (reg:SI SP_REGNO)
284          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
285     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -4))) (reg:SI RA_REGNO))
286     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -8))) (reg:SI FP_REGNO))
287     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -12))) (reg:SI 19))
288     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -16))) (reg:SI 18))
289     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -20))) (reg:SI 17))
290     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -24))) (reg:SI 16))])]
291   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 7
292    && (-INTVAL (operands[1]) & 3) == 0
293    && (-INTVAL (operands[1]) - 24) <= 60"
294{
295  operands[2] = GEN_INT (-INTVAL (operands[1]) - 24);
296  return "push.n\\t{ra, fp, r19, r18, r17, r16}, %2";
297}
298  [(set_attr "type" "push")])
299
300(define_insn "*cdx_push_ra_r19_r18_r17_r16"
301  [(match_parallel 0 ""
302    [(set (reg:SI SP_REGNO)
303          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
304     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -4))) (reg:SI RA_REGNO))
305     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -8))) (reg:SI 19))
306     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -12))) (reg:SI 18))
307     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -16))) (reg:SI 17))
308     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -20))) (reg:SI 16))])]
309   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 6
310    && (-INTVAL (operands[1]) & 3) == 0
311    && (-INTVAL (operands[1]) - 20) <= 60"
312{
313  operands[2] = GEN_INT (-INTVAL (operands[1]) - 20);
314  return "push.n\\t{ra, r19, r18, r17, r16}, %2";
315}
316  [(set_attr "type" "push")])
317
318(define_insn "*cdx_pop_r16_r17_r18_r19_fp_ra"
319  [(match_parallel 0 "pop_operation"
320    [(return)
321     (set (reg:SI SP_REGNO)
322          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
323     (set (reg:SI RA_REGNO) (match_operand:SI 2 "stack_memory_operand" ""))
324     (set (reg:SI FP_REGNO) (match_operand:SI 3 "stack_memory_operand" ""))
325     (set (reg:SI 19) (match_operand:SI 4 "stack_memory_operand" ""))
326     (set (reg:SI 18) (match_operand:SI 5 "stack_memory_operand" ""))
327     (set (reg:SI 17) (match_operand:SI 6 "stack_memory_operand" ""))
328     (set (reg:SI 16) (match_operand:SI 7 "stack_memory_operand" ""))])]
329   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 8"
330{
331  rtx x = XEXP (operands[7], 0);
332  operands[7] = REG_P (x) ? const0_rtx : XEXP (x, 1);
333  return "pop.n\\t{r16, r17, r18, r19, fp, ra}, %7";
334}
335  [(set_attr "type" "pop")])
336
337(define_insn "*cdx_pop_r16_r17_r18_r19_ra"
338  [(match_parallel 0 "pop_operation"
339    [(return)
340     (set (reg:SI SP_REGNO)
341          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
342     (set (reg:SI RA_REGNO) (match_operand:SI 2 "stack_memory_operand" ""))
343     (set (reg:SI 19) (match_operand:SI 3 "stack_memory_operand" ""))
344     (set (reg:SI 18) (match_operand:SI 4 "stack_memory_operand" ""))
345     (set (reg:SI 17) (match_operand:SI 5 "stack_memory_operand" ""))
346     (set (reg:SI 16) (match_operand:SI 6 "stack_memory_operand" ""))])]
347   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 7"
348{
349  rtx x = XEXP (operands[6], 0);
350  operands[6] = REG_P (x) ? const0_rtx : XEXP (x, 1);
351  return "pop.n\\t{r16, r17, r18, r19, ra}, %6";
352}
353  [(set_attr "type" "pop")])
354
355(define_insn "*cdx_push_ra_fp_r20_r19_r18_r17_r16"
356  [(match_parallel 0 ""
357    [(set (reg:SI SP_REGNO)
358          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
359     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -4))) (reg:SI RA_REGNO))
360     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -8))) (reg:SI FP_REGNO))
361     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -12))) (reg:SI 20))
362     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -16))) (reg:SI 19))
363     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -20))) (reg:SI 18))
364     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -24))) (reg:SI 17))
365     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -28))) (reg:SI 16))])]
366   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 8
367    && (-INTVAL (operands[1]) & 3) == 0
368    && (-INTVAL (operands[1]) - 28) <= 60"
369{
370  operands[2] = GEN_INT (-INTVAL (operands[1]) - 28);
371  return "push.n\\t{ra, fp, r20, r19, r18, r17, r16}, %2";
372}
373  [(set_attr "type" "push")])
374
375(define_insn "*cdx_push_ra_r20_r19_r18_r17_r16"
376  [(match_parallel 0 ""
377    [(set (reg:SI SP_REGNO)
378          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
379     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -4))) (reg:SI RA_REGNO))
380     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -8))) (reg:SI 20))
381     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -12))) (reg:SI 19))
382     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -16))) (reg:SI 18))
383     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -20))) (reg:SI 17))
384     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -24))) (reg:SI 16))])]
385   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 7
386    && (-INTVAL (operands[1]) & 3) == 0
387    && (-INTVAL (operands[1]) - 24) <= 60"
388{
389  operands[2] = GEN_INT (-INTVAL (operands[1]) - 24);
390  return "push.n\\t{ra, r20, r19, r18, r17, r16}, %2";
391}
392  [(set_attr "type" "push")])
393
394(define_insn "*cdx_pop_r16_r17_r18_r19_r20_fp_ra"
395  [(match_parallel 0 "pop_operation"
396    [(return)
397     (set (reg:SI SP_REGNO)
398          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
399     (set (reg:SI RA_REGNO) (match_operand:SI 2 "stack_memory_operand" ""))
400     (set (reg:SI FP_REGNO) (match_operand:SI 3 "stack_memory_operand" ""))
401     (set (reg:SI 20) (match_operand:SI 4 "stack_memory_operand" ""))
402     (set (reg:SI 19) (match_operand:SI 5 "stack_memory_operand" ""))
403     (set (reg:SI 18) (match_operand:SI 6 "stack_memory_operand" ""))
404     (set (reg:SI 17) (match_operand:SI 7 "stack_memory_operand" ""))
405     (set (reg:SI 16) (match_operand:SI 8 "stack_memory_operand" ""))])]
406   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 9"
407{
408  rtx x = XEXP (operands[8], 0);
409  operands[8] = REG_P (x) ? const0_rtx : XEXP (x, 1);
410  return "pop.n\\t{r16, r17, r18, r19, r20, fp, ra}, %8";
411}
412  [(set_attr "type" "pop")])
413
414(define_insn "*cdx_pop_r16_r17_r18_r19_r20_ra"
415  [(match_parallel 0 "pop_operation"
416    [(return)
417     (set (reg:SI SP_REGNO)
418          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
419     (set (reg:SI RA_REGNO) (match_operand:SI 2 "stack_memory_operand" ""))
420     (set (reg:SI 20) (match_operand:SI 3 "stack_memory_operand" ""))
421     (set (reg:SI 19) (match_operand:SI 4 "stack_memory_operand" ""))
422     (set (reg:SI 18) (match_operand:SI 5 "stack_memory_operand" ""))
423     (set (reg:SI 17) (match_operand:SI 6 "stack_memory_operand" ""))
424     (set (reg:SI 16) (match_operand:SI 7 "stack_memory_operand" ""))])]
425   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 8"
426{
427  rtx x = XEXP (operands[7], 0);
428  operands[7] = REG_P (x) ? const0_rtx : XEXP (x, 1);
429  return "pop.n\\t{r16, r17, r18, r19, r20, ra}, %7";
430}
431  [(set_attr "type" "pop")])
432
433(define_insn "*cdx_push_ra_fp_r21_r20_r19_r18_r17_r16"
434  [(match_parallel 0 ""
435    [(set (reg:SI SP_REGNO)
436          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
437     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -4))) (reg:SI RA_REGNO))
438     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -8))) (reg:SI FP_REGNO))
439     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -12))) (reg:SI 21))
440     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -16))) (reg:SI 20))
441     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -20))) (reg:SI 19))
442     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -24))) (reg:SI 18))
443     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -28))) (reg:SI 17))
444     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -32))) (reg:SI 16))])]
445   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 9
446    && (-INTVAL (operands[1]) & 3) == 0
447    && (-INTVAL (operands[1]) - 32) <= 60"
448{
449  operands[2] = GEN_INT (-INTVAL (operands[1]) - 32);
450  return "push.n\\t{ra, fp, r21, r20, r19, r18, r17, r16}, %2";
451}
452  [(set_attr "type" "push")])
453
454(define_insn "*cdx_push_ra_r21_r20_r19_r18_r17_r16"
455  [(match_parallel 0 ""
456    [(set (reg:SI SP_REGNO)
457          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
458     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -4))) (reg:SI RA_REGNO))
459     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -8))) (reg:SI 21))
460     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -12))) (reg:SI 20))
461     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -16))) (reg:SI 19))
462     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -20))) (reg:SI 18))
463     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -24))) (reg:SI 17))
464     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -28))) (reg:SI 16))])]
465   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 8
466    && (-INTVAL (operands[1]) & 3) == 0
467    && (-INTVAL (operands[1]) - 28) <= 60"
468{
469  operands[2] = GEN_INT (-INTVAL (operands[1]) - 28);
470  return "push.n\\t{ra, r21, r20, r19, r18, r17, r16}, %2";
471}
472  [(set_attr "type" "push")])
473
474(define_insn "*cdx_pop_r16_r17_r18_r19_r20_r21_fp_ra"
475  [(match_parallel 0 "pop_operation"
476    [(return)
477     (set (reg:SI SP_REGNO)
478          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
479     (set (reg:SI RA_REGNO) (match_operand:SI 2 "stack_memory_operand" ""))
480     (set (reg:SI FP_REGNO) (match_operand:SI 3 "stack_memory_operand" ""))
481     (set (reg:SI 21) (match_operand:SI 4 "stack_memory_operand" ""))
482     (set (reg:SI 20) (match_operand:SI 5 "stack_memory_operand" ""))
483     (set (reg:SI 19) (match_operand:SI 6 "stack_memory_operand" ""))
484     (set (reg:SI 18) (match_operand:SI 7 "stack_memory_operand" ""))
485     (set (reg:SI 17) (match_operand:SI 8 "stack_memory_operand" ""))
486     (set (reg:SI 16) (match_operand:SI 9 "stack_memory_operand" ""))])]
487   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 10"
488{
489  rtx x = XEXP (operands[9], 0);
490  operands[9] = REG_P (x) ? const0_rtx : XEXP (x, 1);
491  return "pop.n\\t{r16, r17, r18, r19, r20, r21, fp, ra}, %9";
492}
493  [(set_attr "type" "pop")])
494
495(define_insn "*cdx_pop_r16_r17_r18_r19_r20_r21_ra"
496  [(match_parallel 0 "pop_operation"
497    [(return)
498     (set (reg:SI SP_REGNO)
499          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
500     (set (reg:SI RA_REGNO) (match_operand:SI 2 "stack_memory_operand" ""))
501     (set (reg:SI 21) (match_operand:SI 3 "stack_memory_operand" ""))
502     (set (reg:SI 20) (match_operand:SI 4 "stack_memory_operand" ""))
503     (set (reg:SI 19) (match_operand:SI 5 "stack_memory_operand" ""))
504     (set (reg:SI 18) (match_operand:SI 6 "stack_memory_operand" ""))
505     (set (reg:SI 17) (match_operand:SI 7 "stack_memory_operand" ""))
506     (set (reg:SI 16) (match_operand:SI 8 "stack_memory_operand" ""))])]
507   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 9"
508{
509  rtx x = XEXP (operands[8], 0);
510  operands[8] = REG_P (x) ? const0_rtx : XEXP (x, 1);
511  return "pop.n\\t{r16, r17, r18, r19, r20, r21, ra}, %8";
512}
513  [(set_attr "type" "pop")])
514
515(define_insn "*cdx_push_ra_fp_r22_r21_r20_r19_r18_r17_r16"
516  [(match_parallel 0 ""
517    [(set (reg:SI SP_REGNO)
518          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
519     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -4))) (reg:SI RA_REGNO))
520     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -8))) (reg:SI FP_REGNO))
521     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -12))) (reg:SI 22))
522     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -16))) (reg:SI 21))
523     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -20))) (reg:SI 20))
524     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -24))) (reg:SI 19))
525     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -28))) (reg:SI 18))
526     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -32))) (reg:SI 17))
527     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -36))) (reg:SI 16))])]
528   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 10
529    && (-INTVAL (operands[1]) & 3) == 0
530    && (-INTVAL (operands[1]) - 36) <= 60"
531{
532  operands[2] = GEN_INT (-INTVAL (operands[1]) - 36);
533  return "push.n\\t{ra, fp, r22, r21, r20, r19, r18, r17, r16}, %2";
534}
535  [(set_attr "type" "push")])
536
537(define_insn "*cdx_push_ra_r22_r21_r20_r19_r18_r17_r16"
538  [(match_parallel 0 ""
539    [(set (reg:SI SP_REGNO)
540          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
541     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -4))) (reg:SI RA_REGNO))
542     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -8))) (reg:SI 22))
543     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -12))) (reg:SI 21))
544     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -16))) (reg:SI 20))
545     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -20))) (reg:SI 19))
546     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -24))) (reg:SI 18))
547     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -28))) (reg:SI 17))
548     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -32))) (reg:SI 16))])]
549   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 9
550    && (-INTVAL (operands[1]) & 3) == 0
551    && (-INTVAL (operands[1]) - 32) <= 60"
552{
553  operands[2] = GEN_INT (-INTVAL (operands[1]) - 32);
554  return "push.n\\t{ra, r22, r21, r20, r19, r18, r17, r16}, %2";
555}
556  [(set_attr "type" "push")])
557
558(define_insn "*cdx_pop_r16_r17_r18_r19_r20_r21_r22_fp_ra"
559  [(match_parallel 0 "pop_operation"
560    [(return)
561     (set (reg:SI SP_REGNO)
562          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
563     (set (reg:SI RA_REGNO) (match_operand:SI 2 "stack_memory_operand" ""))
564     (set (reg:SI FP_REGNO) (match_operand:SI 3 "stack_memory_operand" ""))
565     (set (reg:SI 22) (match_operand:SI 4 "stack_memory_operand" ""))
566     (set (reg:SI 21) (match_operand:SI 5 "stack_memory_operand" ""))
567     (set (reg:SI 20) (match_operand:SI 6 "stack_memory_operand" ""))
568     (set (reg:SI 19) (match_operand:SI 7 "stack_memory_operand" ""))
569     (set (reg:SI 18) (match_operand:SI 8 "stack_memory_operand" ""))
570     (set (reg:SI 17) (match_operand:SI 9 "stack_memory_operand" ""))
571     (set (reg:SI 16) (match_operand:SI 10 "stack_memory_operand" ""))])]
572   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 11"
573{
574  rtx x = XEXP (operands[10], 0);
575  operands[10] = REG_P (x) ? const0_rtx : XEXP (x, 1);
576  return "pop.n\\t{r16, r17, r18, r19, r20, r21, r22, fp, ra}, %10";
577}
578  [(set_attr "type" "pop")])
579
580(define_insn "*cdx_pop_r16_r17_r18_r19_r20_r21_r22_ra"
581  [(match_parallel 0 "pop_operation"
582    [(return)
583     (set (reg:SI SP_REGNO)
584          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
585     (set (reg:SI RA_REGNO) (match_operand:SI 2 "stack_memory_operand" ""))
586     (set (reg:SI 22) (match_operand:SI 3 "stack_memory_operand" ""))
587     (set (reg:SI 21) (match_operand:SI 4 "stack_memory_operand" ""))
588     (set (reg:SI 20) (match_operand:SI 5 "stack_memory_operand" ""))
589     (set (reg:SI 19) (match_operand:SI 6 "stack_memory_operand" ""))
590     (set (reg:SI 18) (match_operand:SI 7 "stack_memory_operand" ""))
591     (set (reg:SI 17) (match_operand:SI 8 "stack_memory_operand" ""))
592     (set (reg:SI 16) (match_operand:SI 9 "stack_memory_operand" ""))])]
593   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 10"
594{
595  rtx x = XEXP (operands[9], 0);
596  operands[9] = REG_P (x) ? const0_rtx : XEXP (x, 1);
597  return "pop.n\\t{r16, r17, r18, r19, r20, r21, r22, ra}, %9";
598}
599  [(set_attr "type" "pop")])
600
601(define_insn "*cdx_push_ra_fp_r23_r22_r21_r20_r19_r18_r17_r16"
602  [(match_parallel 0 ""
603    [(set (reg:SI SP_REGNO)
604          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
605     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -4))) (reg:SI RA_REGNO))
606     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -8))) (reg:SI FP_REGNO))
607     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -12))) (reg:SI 23))
608     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -16))) (reg:SI 22))
609     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -20))) (reg:SI 21))
610     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -24))) (reg:SI 20))
611     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -28))) (reg:SI 19))
612     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -32))) (reg:SI 18))
613     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -36))) (reg:SI 17))
614     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -40))) (reg:SI 16))])]
615   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 11
616    && (-INTVAL (operands[1]) & 3) == 0
617    && (-INTVAL (operands[1]) - 40) <= 60"
618{
619  operands[2] = GEN_INT (-INTVAL (operands[1]) - 40);
620  return "push.n\\t{ra, fp, r23, r22, r21, r20, r19, r18, r17, r16}, %2";
621}
622  [(set_attr "type" "push")])
623
624(define_insn "*cdx_push_ra_r23_r22_r21_r20_r19_r18_r17_r16"
625  [(match_parallel 0 ""
626    [(set (reg:SI SP_REGNO)
627          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
628     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -4))) (reg:SI RA_REGNO))
629     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -8))) (reg:SI 23))
630     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -12))) (reg:SI 22))
631     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -16))) (reg:SI 21))
632     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -20))) (reg:SI 20))
633     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -24))) (reg:SI 19))
634     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -28))) (reg:SI 18))
635     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -32))) (reg:SI 17))
636     (set (mem:SI (plus:SI (reg:SI SP_REGNO) (const_int -36))) (reg:SI 16))])]
637   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 10
638    && (-INTVAL (operands[1]) & 3) == 0
639    && (-INTVAL (operands[1]) - 36) <= 60"
640{
641  operands[2] = GEN_INT (-INTVAL (operands[1]) - 36);
642  return "push.n\\t{ra, r23, r22, r21, r20, r19, r18, r17, r16}, %2";
643}
644  [(set_attr "type" "push")])
645
646(define_insn "*cdx_pop_r16_r17_r18_r19_r20_r21_r22_r23_fp_ra"
647  [(match_parallel 0 "pop_operation"
648    [(return)
649     (set (reg:SI SP_REGNO)
650          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
651     (set (reg:SI RA_REGNO) (match_operand:SI 2 "stack_memory_operand" ""))
652     (set (reg:SI FP_REGNO) (match_operand:SI 3 "stack_memory_operand" ""))
653     (set (reg:SI 23) (match_operand:SI 4 "stack_memory_operand" ""))
654     (set (reg:SI 22) (match_operand:SI 5 "stack_memory_operand" ""))
655     (set (reg:SI 21) (match_operand:SI 6 "stack_memory_operand" ""))
656     (set (reg:SI 20) (match_operand:SI 7 "stack_memory_operand" ""))
657     (set (reg:SI 19) (match_operand:SI 8 "stack_memory_operand" ""))
658     (set (reg:SI 18) (match_operand:SI 9 "stack_memory_operand" ""))
659     (set (reg:SI 17) (match_operand:SI 10 "stack_memory_operand" ""))
660     (set (reg:SI 16) (match_operand:SI 11 "stack_memory_operand" ""))])]
661   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 12"
662{
663  rtx x = XEXP (operands[11], 0);
664  operands[11] = REG_P (x) ? const0_rtx : XEXP (x, 1);
665  return "pop.n\\t{r16, r17, r18, r19, r20, r21, r22, r23, fp, ra}, %11";
666}
667  [(set_attr "type" "pop")])
668
669(define_insn "*cdx_pop_r16_r17_r18_r19_r20_r21_r22_r23_ra"
670  [(match_parallel 0 "pop_operation"
671    [(return)
672     (set (reg:SI SP_REGNO)
673          (plus:SI (reg:SI SP_REGNO) (match_operand 1 "const_int_operand" "")))
674     (set (reg:SI RA_REGNO) (match_operand:SI 2 "stack_memory_operand" ""))
675     (set (reg:SI 23) (match_operand:SI 3 "stack_memory_operand" ""))
676     (set (reg:SI 22) (match_operand:SI 4 "stack_memory_operand" ""))
677     (set (reg:SI 21) (match_operand:SI 5 "stack_memory_operand" ""))
678     (set (reg:SI 20) (match_operand:SI 6 "stack_memory_operand" ""))
679     (set (reg:SI 19) (match_operand:SI 7 "stack_memory_operand" ""))
680     (set (reg:SI 18) (match_operand:SI 8 "stack_memory_operand" ""))
681     (set (reg:SI 17) (match_operand:SI 9 "stack_memory_operand" ""))
682     (set (reg:SI 16) (match_operand:SI 10 "stack_memory_operand" ""))])]
683   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 11"
684{
685  rtx x = XEXP (operands[10], 0);
686  operands[10] = REG_P (x) ? const0_rtx : XEXP (x, 1);
687  return "pop.n\\t{r16, r17, r18, r19, r20, r21, r22, r23, ra}, %10";
688}
689  [(set_attr "type" "pop")])
690
691(define_insn "*cdx_ldwm1_inc_wb_ret"
692  [(match_parallel 0 "ldwm_operation"
693    [(return)
694     (set (match_operand:SI 2 "register_operand" "+&r")
695          (plus:SI (match_dup 2) (const_int 4)))
696     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
697          (mem:SI (match_dup 2)))])]
698   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 3"
699   "ldwm\\t{%1}, (%2)++, writeback, ret"
700  [(set_attr "type" "ldwm")])
701
702(define_insn "*cdx_ldwm1_inc_wb"
703  [(match_parallel 0 "ldwm_operation"
704    [(set (match_operand:SI 2 "register_operand" "+&r")
705          (plus:SI (match_dup 2) (const_int 4)))
706     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
707          (mem:SI (match_dup 2)))])]
708   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 2"
709   "ldwm\\t{%1}, (%2)++, writeback"
710  [(set_attr "type" "ldwm")])
711
712(define_insn "*cdx_ldwm1_inc_ret"
713  [(match_parallel 0 "ldwm_operation"
714    [(return)
715     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
716          (mem:SI (match_operand:SI 2 "register_operand" "r")))])]
717   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 2"
718   "ldwm\\t{%1}, (%2)++, ret"
719  [(set_attr "type" "ldwm")])
720
721(define_insn "*cdx_ldwm1_inc"
722  [(match_parallel 0 "ldwm_operation"
723    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
724          (mem:SI (match_operand:SI 2 "register_operand" "r")))])]
725   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 1"
726   "ldwm\\t{%1}, (%2)++"
727  [(set_attr "type" "ldwm")])
728
729(define_insn "*cdx_ldwm1_dec_wb_ret"
730  [(match_parallel 0 "ldwm_operation"
731    [(return)
732     (set (match_operand:SI 2 "register_operand" "+&r")
733          (plus:SI (match_dup 2) (const_int -4)))
734     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
735          (mem:SI (plus:SI (match_dup 2) (const_int -4))))])]
736   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 3"
737   "ldwm\\t{%1}, --(%2), writeback, ret"
738  [(set_attr "type" "ldwm")])
739
740(define_insn "*cdx_ldwm1_dec_wb"
741  [(match_parallel 0 "ldwm_operation"
742    [(set (match_operand:SI 2 "register_operand" "+&r")
743          (plus:SI (match_dup 2) (const_int -4)))
744     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
745          (mem:SI (plus:SI (match_dup 2) (const_int -4))))])]
746   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 2"
747   "ldwm\\t{%1}, --(%2), writeback"
748  [(set_attr "type" "ldwm")])
749
750(define_insn "*cdx_ldwm1_dec_ret"
751  [(match_parallel 0 "ldwm_operation"
752    [(return)
753     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
754          (mem:SI (plus:SI (match_operand:SI 2 "register_operand" "r") (const_int -4))))])]
755   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 2"
756   "ldwm\\t{%1}, --(%2), ret"
757  [(set_attr "type" "ldwm")])
758
759(define_insn "*cdx_ldwm1_dec"
760  [(match_parallel 0 "ldwm_operation"
761    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
762          (mem:SI (plus:SI (match_operand:SI 2 "register_operand" "r") (const_int -4))))])]
763   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 1"
764   "ldwm\\t{%1}, --(%2)"
765  [(set_attr "type" "ldwm")])
766
767(define_insn "*cdx_ldwm2_inc_wb_ret"
768  [(match_parallel 0 "ldwm_operation"
769    [(return)
770     (set (match_operand:SI 3 "register_operand" "+&r")
771          (plus:SI (match_dup 3) (const_int 8)))
772     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
773          (mem:SI (match_dup 3)))
774     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
775          (mem:SI (plus:SI (match_dup 3) (const_int 4))))])]
776   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 4"
777   "ldwm\\t{%1, %2}, (%3)++, writeback, ret"
778  [(set_attr "type" "ldwm")])
779
780(define_insn "*cdx_ldwm2_inc_wb"
781  [(match_parallel 0 "ldwm_operation"
782    [(set (match_operand:SI 3 "register_operand" "+&r")
783          (plus:SI (match_dup 3) (const_int 8)))
784     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
785          (mem:SI (match_dup 3)))
786     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
787          (mem:SI (plus:SI (match_dup 3) (const_int 4))))])]
788   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 3"
789   "ldwm\\t{%1, %2}, (%3)++, writeback"
790  [(set_attr "type" "ldwm")])
791
792(define_insn "*cdx_ldwm2_inc_ret"
793  [(match_parallel 0 "ldwm_operation"
794    [(return)
795     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
796          (mem:SI (match_operand:SI 3 "register_operand" "r")))
797     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
798          (mem:SI (plus:SI (match_dup 3) (const_int 4))))])]
799   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 3"
800   "ldwm\\t{%1, %2}, (%3)++, ret"
801  [(set_attr "type" "ldwm")])
802
803(define_insn "*cdx_ldwm2_inc"
804  [(match_parallel 0 "ldwm_operation"
805    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
806          (mem:SI (match_operand:SI 3 "register_operand" "r")))
807     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
808          (mem:SI (plus:SI (match_dup 3) (const_int 4))))])]
809   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 2"
810   "ldwm\\t{%1, %2}, (%3)++"
811  [(set_attr "type" "ldwm")])
812
813(define_insn "*cdx_ldwm2_dec_wb_ret"
814  [(match_parallel 0 "ldwm_operation"
815    [(return)
816     (set (match_operand:SI 3 "register_operand" "+&r")
817          (plus:SI (match_dup 3) (const_int -8)))
818     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
819          (mem:SI (plus:SI (match_dup 3) (const_int -4))))
820     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
821          (mem:SI (plus:SI (match_dup 3) (const_int -8))))])]
822   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 4"
823   "ldwm\\t{%1, %2}, --(%3), writeback, ret"
824  [(set_attr "type" "ldwm")])
825
826(define_insn "*cdx_ldwm2_dec_wb"
827  [(match_parallel 0 "ldwm_operation"
828    [(set (match_operand:SI 3 "register_operand" "+&r")
829          (plus:SI (match_dup 3) (const_int -8)))
830     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
831          (mem:SI (plus:SI (match_dup 3) (const_int -4))))
832     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
833          (mem:SI (plus:SI (match_dup 3) (const_int -8))))])]
834   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 3"
835   "ldwm\\t{%1, %2}, --(%3), writeback"
836  [(set_attr "type" "ldwm")])
837
838(define_insn "*cdx_ldwm2_dec_ret"
839  [(match_parallel 0 "ldwm_operation"
840    [(return)
841     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
842          (mem:SI (plus:SI (match_operand:SI 3 "register_operand" "r") (const_int -4))))
843     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
844          (mem:SI (plus:SI (match_dup 3) (const_int -8))))])]
845   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 3"
846   "ldwm\\t{%1, %2}, --(%3), ret"
847  [(set_attr "type" "ldwm")])
848
849(define_insn "*cdx_ldwm2_dec"
850  [(match_parallel 0 "ldwm_operation"
851    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
852          (mem:SI (plus:SI (match_operand:SI 3 "register_operand" "r") (const_int -4))))
853     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
854          (mem:SI (plus:SI (match_dup 3) (const_int -8))))])]
855   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 2"
856   "ldwm\\t{%1, %2}, --(%3)"
857  [(set_attr "type" "ldwm")])
858
859(define_insn "*cdx_ldwm3_inc_wb_ret"
860  [(match_parallel 0 "ldwm_operation"
861    [(return)
862     (set (match_operand:SI 4 "register_operand" "+&r")
863          (plus:SI (match_dup 4) (const_int 12)))
864     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
865          (mem:SI (match_dup 4)))
866     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
867          (mem:SI (plus:SI (match_dup 4) (const_int 4))))
868     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
869          (mem:SI (plus:SI (match_dup 4) (const_int 8))))])]
870   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 5"
871   "ldwm\\t{%1, %2, %3}, (%4)++, writeback, ret"
872  [(set_attr "type" "ldwm")])
873
874(define_insn "*cdx_ldwm3_inc_wb"
875  [(match_parallel 0 "ldwm_operation"
876    [(set (match_operand:SI 4 "register_operand" "+&r")
877          (plus:SI (match_dup 4) (const_int 12)))
878     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
879          (mem:SI (match_dup 4)))
880     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
881          (mem:SI (plus:SI (match_dup 4) (const_int 4))))
882     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
883          (mem:SI (plus:SI (match_dup 4) (const_int 8))))])]
884   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 4"
885   "ldwm\\t{%1, %2, %3}, (%4)++, writeback"
886  [(set_attr "type" "ldwm")])
887
888(define_insn "*cdx_ldwm3_inc_ret"
889  [(match_parallel 0 "ldwm_operation"
890    [(return)
891     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
892          (mem:SI (match_operand:SI 4 "register_operand" "r")))
893     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
894          (mem:SI (plus:SI (match_dup 4) (const_int 4))))
895     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
896          (mem:SI (plus:SI (match_dup 4) (const_int 8))))])]
897   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 4"
898   "ldwm\\t{%1, %2, %3}, (%4)++, ret"
899  [(set_attr "type" "ldwm")])
900
901(define_insn "*cdx_ldwm3_inc"
902  [(match_parallel 0 "ldwm_operation"
903    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
904          (mem:SI (match_operand:SI 4 "register_operand" "r")))
905     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
906          (mem:SI (plus:SI (match_dup 4) (const_int 4))))
907     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
908          (mem:SI (plus:SI (match_dup 4) (const_int 8))))])]
909   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 3"
910   "ldwm\\t{%1, %2, %3}, (%4)++"
911  [(set_attr "type" "ldwm")])
912
913(define_insn "*cdx_ldwm3_dec_wb_ret"
914  [(match_parallel 0 "ldwm_operation"
915    [(return)
916     (set (match_operand:SI 4 "register_operand" "+&r")
917          (plus:SI (match_dup 4) (const_int -12)))
918     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
919          (mem:SI (plus:SI (match_dup 4) (const_int -4))))
920     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
921          (mem:SI (plus:SI (match_dup 4) (const_int -8))))
922     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
923          (mem:SI (plus:SI (match_dup 4) (const_int -12))))])]
924   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 5"
925   "ldwm\\t{%1, %2, %3}, --(%4), writeback, ret"
926  [(set_attr "type" "ldwm")])
927
928(define_insn "*cdx_ldwm3_dec_wb"
929  [(match_parallel 0 "ldwm_operation"
930    [(set (match_operand:SI 4 "register_operand" "+&r")
931          (plus:SI (match_dup 4) (const_int -12)))
932     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
933          (mem:SI (plus:SI (match_dup 4) (const_int -4))))
934     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
935          (mem:SI (plus:SI (match_dup 4) (const_int -8))))
936     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
937          (mem:SI (plus:SI (match_dup 4) (const_int -12))))])]
938   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 4"
939   "ldwm\\t{%1, %2, %3}, --(%4), writeback"
940  [(set_attr "type" "ldwm")])
941
942(define_insn "*cdx_ldwm3_dec_ret"
943  [(match_parallel 0 "ldwm_operation"
944    [(return)
945     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
946          (mem:SI (plus:SI (match_operand:SI 4 "register_operand" "r") (const_int -4))))
947     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
948          (mem:SI (plus:SI (match_dup 4) (const_int -8))))
949     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
950          (mem:SI (plus:SI (match_dup 4) (const_int -12))))])]
951   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 4"
952   "ldwm\\t{%1, %2, %3}, --(%4), ret"
953  [(set_attr "type" "ldwm")])
954
955(define_insn "*cdx_ldwm3_dec"
956  [(match_parallel 0 "ldwm_operation"
957    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
958          (mem:SI (plus:SI (match_operand:SI 4 "register_operand" "r") (const_int -4))))
959     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
960          (mem:SI (plus:SI (match_dup 4) (const_int -8))))
961     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
962          (mem:SI (plus:SI (match_dup 4) (const_int -12))))])]
963   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 3"
964   "ldwm\\t{%1, %2, %3}, --(%4)"
965  [(set_attr "type" "ldwm")])
966
967(define_insn "*cdx_ldwm4_inc_wb_ret"
968  [(match_parallel 0 "ldwm_operation"
969    [(return)
970     (set (match_operand:SI 5 "register_operand" "+&r")
971          (plus:SI (match_dup 5) (const_int 16)))
972     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
973          (mem:SI (match_dup 5)))
974     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
975          (mem:SI (plus:SI (match_dup 5) (const_int 4))))
976     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
977          (mem:SI (plus:SI (match_dup 5) (const_int 8))))
978     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
979          (mem:SI (plus:SI (match_dup 5) (const_int 12))))])]
980   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 6"
981   "ldwm\\t{%1, %2, %3, %4}, (%5)++, writeback, ret"
982  [(set_attr "type" "ldwm")])
983
984(define_insn "*cdx_ldwm4_inc_wb"
985  [(match_parallel 0 "ldwm_operation"
986    [(set (match_operand:SI 5 "register_operand" "+&r")
987          (plus:SI (match_dup 5) (const_int 16)))
988     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
989          (mem:SI (match_dup 5)))
990     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
991          (mem:SI (plus:SI (match_dup 5) (const_int 4))))
992     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
993          (mem:SI (plus:SI (match_dup 5) (const_int 8))))
994     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
995          (mem:SI (plus:SI (match_dup 5) (const_int 12))))])]
996   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 5"
997   "ldwm\\t{%1, %2, %3, %4}, (%5)++, writeback"
998  [(set_attr "type" "ldwm")])
999
1000(define_insn "*cdx_ldwm4_inc_ret"
1001  [(match_parallel 0 "ldwm_operation"
1002    [(return)
1003     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
1004          (mem:SI (match_operand:SI 5 "register_operand" "r")))
1005     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1006          (mem:SI (plus:SI (match_dup 5) (const_int 4))))
1007     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1008          (mem:SI (plus:SI (match_dup 5) (const_int 8))))
1009     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1010          (mem:SI (plus:SI (match_dup 5) (const_int 12))))])]
1011   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 5"
1012   "ldwm\\t{%1, %2, %3, %4}, (%5)++, ret"
1013  [(set_attr "type" "ldwm")])
1014
1015(define_insn "*cdx_ldwm4_inc"
1016  [(match_parallel 0 "ldwm_operation"
1017    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
1018          (mem:SI (match_operand:SI 5 "register_operand" "r")))
1019     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1020          (mem:SI (plus:SI (match_dup 5) (const_int 4))))
1021     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1022          (mem:SI (plus:SI (match_dup 5) (const_int 8))))
1023     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1024          (mem:SI (plus:SI (match_dup 5) (const_int 12))))])]
1025   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 4"
1026   "ldwm\\t{%1, %2, %3, %4}, (%5)++"
1027  [(set_attr "type" "ldwm")])
1028
1029(define_insn "*cdx_ldwm4_dec_wb_ret"
1030  [(match_parallel 0 "ldwm_operation"
1031    [(return)
1032     (set (match_operand:SI 5 "register_operand" "+&r")
1033          (plus:SI (match_dup 5) (const_int -16)))
1034     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
1035          (mem:SI (plus:SI (match_dup 5) (const_int -4))))
1036     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1037          (mem:SI (plus:SI (match_dup 5) (const_int -8))))
1038     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1039          (mem:SI (plus:SI (match_dup 5) (const_int -12))))
1040     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1041          (mem:SI (plus:SI (match_dup 5) (const_int -16))))])]
1042   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 6"
1043   "ldwm\\t{%1, %2, %3, %4}, --(%5), writeback, ret"
1044  [(set_attr "type" "ldwm")])
1045
1046(define_insn "*cdx_ldwm4_dec_wb"
1047  [(match_parallel 0 "ldwm_operation"
1048    [(set (match_operand:SI 5 "register_operand" "+&r")
1049          (plus:SI (match_dup 5) (const_int -16)))
1050     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
1051          (mem:SI (plus:SI (match_dup 5) (const_int -4))))
1052     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1053          (mem:SI (plus:SI (match_dup 5) (const_int -8))))
1054     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1055          (mem:SI (plus:SI (match_dup 5) (const_int -12))))
1056     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1057          (mem:SI (plus:SI (match_dup 5) (const_int -16))))])]
1058   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 5"
1059   "ldwm\\t{%1, %2, %3, %4}, --(%5), writeback"
1060  [(set_attr "type" "ldwm")])
1061
1062(define_insn "*cdx_ldwm4_dec_ret"
1063  [(match_parallel 0 "ldwm_operation"
1064    [(return)
1065     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
1066          (mem:SI (plus:SI (match_operand:SI 5 "register_operand" "r") (const_int -4))))
1067     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1068          (mem:SI (plus:SI (match_dup 5) (const_int -8))))
1069     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1070          (mem:SI (plus:SI (match_dup 5) (const_int -12))))
1071     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1072          (mem:SI (plus:SI (match_dup 5) (const_int -16))))])]
1073   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 5"
1074   "ldwm\\t{%1, %2, %3, %4}, --(%5), ret"
1075  [(set_attr "type" "ldwm")])
1076
1077(define_insn "*cdx_ldwm4_dec"
1078  [(match_parallel 0 "ldwm_operation"
1079    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
1080          (mem:SI (plus:SI (match_operand:SI 5 "register_operand" "r") (const_int -4))))
1081     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1082          (mem:SI (plus:SI (match_dup 5) (const_int -8))))
1083     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1084          (mem:SI (plus:SI (match_dup 5) (const_int -12))))
1085     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1086          (mem:SI (plus:SI (match_dup 5) (const_int -16))))])]
1087   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 4"
1088   "ldwm\\t{%1, %2, %3, %4}, --(%5)"
1089  [(set_attr "type" "ldwm")])
1090
1091(define_insn "*cdx_ldwm5_inc_wb_ret"
1092  [(match_parallel 0 "ldwm_operation"
1093    [(return)
1094     (set (match_operand:SI 6 "register_operand" "+&r")
1095          (plus:SI (match_dup 6) (const_int 20)))
1096     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
1097          (mem:SI (match_dup 6)))
1098     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1099          (mem:SI (plus:SI (match_dup 6) (const_int 4))))
1100     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1101          (mem:SI (plus:SI (match_dup 6) (const_int 8))))
1102     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1103          (mem:SI (plus:SI (match_dup 6) (const_int 12))))
1104     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1105          (mem:SI (plus:SI (match_dup 6) (const_int 16))))])]
1106   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 7"
1107   "ldwm\\t{%1, %2, %3, %4, %5}, (%6)++, writeback, ret"
1108  [(set_attr "type" "ldwm")])
1109
1110(define_insn "*cdx_ldwm5_inc_wb"
1111  [(match_parallel 0 "ldwm_operation"
1112    [(set (match_operand:SI 6 "register_operand" "+&r")
1113          (plus:SI (match_dup 6) (const_int 20)))
1114     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
1115          (mem:SI (match_dup 6)))
1116     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1117          (mem:SI (plus:SI (match_dup 6) (const_int 4))))
1118     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1119          (mem:SI (plus:SI (match_dup 6) (const_int 8))))
1120     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1121          (mem:SI (plus:SI (match_dup 6) (const_int 12))))
1122     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1123          (mem:SI (plus:SI (match_dup 6) (const_int 16))))])]
1124   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 6"
1125   "ldwm\\t{%1, %2, %3, %4, %5}, (%6)++, writeback"
1126  [(set_attr "type" "ldwm")])
1127
1128(define_insn "*cdx_ldwm5_inc_ret"
1129  [(match_parallel 0 "ldwm_operation"
1130    [(return)
1131     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
1132          (mem:SI (match_operand:SI 6 "register_operand" "r")))
1133     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1134          (mem:SI (plus:SI (match_dup 6) (const_int 4))))
1135     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1136          (mem:SI (plus:SI (match_dup 6) (const_int 8))))
1137     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1138          (mem:SI (plus:SI (match_dup 6) (const_int 12))))
1139     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1140          (mem:SI (plus:SI (match_dup 6) (const_int 16))))])]
1141   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 6"
1142   "ldwm\\t{%1, %2, %3, %4, %5}, (%6)++, ret"
1143  [(set_attr "type" "ldwm")])
1144
1145(define_insn "*cdx_ldwm5_inc"
1146  [(match_parallel 0 "ldwm_operation"
1147    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
1148          (mem:SI (match_operand:SI 6 "register_operand" "r")))
1149     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1150          (mem:SI (plus:SI (match_dup 6) (const_int 4))))
1151     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1152          (mem:SI (plus:SI (match_dup 6) (const_int 8))))
1153     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1154          (mem:SI (plus:SI (match_dup 6) (const_int 12))))
1155     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1156          (mem:SI (plus:SI (match_dup 6) (const_int 16))))])]
1157   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 5"
1158   "ldwm\\t{%1, %2, %3, %4, %5}, (%6)++"
1159  [(set_attr "type" "ldwm")])
1160
1161(define_insn "*cdx_ldwm5_dec_wb_ret"
1162  [(match_parallel 0 "ldwm_operation"
1163    [(return)
1164     (set (match_operand:SI 6 "register_operand" "+&r")
1165          (plus:SI (match_dup 6) (const_int -20)))
1166     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
1167          (mem:SI (plus:SI (match_dup 6) (const_int -4))))
1168     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1169          (mem:SI (plus:SI (match_dup 6) (const_int -8))))
1170     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1171          (mem:SI (plus:SI (match_dup 6) (const_int -12))))
1172     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1173          (mem:SI (plus:SI (match_dup 6) (const_int -16))))
1174     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1175          (mem:SI (plus:SI (match_dup 6) (const_int -20))))])]
1176   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 7"
1177   "ldwm\\t{%1, %2, %3, %4, %5}, --(%6), writeback, ret"
1178  [(set_attr "type" "ldwm")])
1179
1180(define_insn "*cdx_ldwm5_dec_wb"
1181  [(match_parallel 0 "ldwm_operation"
1182    [(set (match_operand:SI 6 "register_operand" "+&r")
1183          (plus:SI (match_dup 6) (const_int -20)))
1184     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
1185          (mem:SI (plus:SI (match_dup 6) (const_int -4))))
1186     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1187          (mem:SI (plus:SI (match_dup 6) (const_int -8))))
1188     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1189          (mem:SI (plus:SI (match_dup 6) (const_int -12))))
1190     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1191          (mem:SI (plus:SI (match_dup 6) (const_int -16))))
1192     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1193          (mem:SI (plus:SI (match_dup 6) (const_int -20))))])]
1194   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 6"
1195   "ldwm\\t{%1, %2, %3, %4, %5}, --(%6), writeback"
1196  [(set_attr "type" "ldwm")])
1197
1198(define_insn "*cdx_ldwm5_dec_ret"
1199  [(match_parallel 0 "ldwm_operation"
1200    [(return)
1201     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
1202          (mem:SI (plus:SI (match_operand:SI 6 "register_operand" "r") (const_int -4))))
1203     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1204          (mem:SI (plus:SI (match_dup 6) (const_int -8))))
1205     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1206          (mem:SI (plus:SI (match_dup 6) (const_int -12))))
1207     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1208          (mem:SI (plus:SI (match_dup 6) (const_int -16))))
1209     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1210          (mem:SI (plus:SI (match_dup 6) (const_int -20))))])]
1211   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 6"
1212   "ldwm\\t{%1, %2, %3, %4, %5}, --(%6), ret"
1213  [(set_attr "type" "ldwm")])
1214
1215(define_insn "*cdx_ldwm5_dec"
1216  [(match_parallel 0 "ldwm_operation"
1217    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
1218          (mem:SI (plus:SI (match_operand:SI 6 "register_operand" "r") (const_int -4))))
1219     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1220          (mem:SI (plus:SI (match_dup 6) (const_int -8))))
1221     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1222          (mem:SI (plus:SI (match_dup 6) (const_int -12))))
1223     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1224          (mem:SI (plus:SI (match_dup 6) (const_int -16))))
1225     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1226          (mem:SI (plus:SI (match_dup 6) (const_int -20))))])]
1227   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 5"
1228   "ldwm\\t{%1, %2, %3, %4, %5}, --(%6)"
1229  [(set_attr "type" "ldwm")])
1230
1231(define_insn "*cdx_ldwm6_inc_wb_ret"
1232  [(match_parallel 0 "ldwm_operation"
1233    [(return)
1234     (set (match_operand:SI 7 "register_operand" "+&r")
1235          (plus:SI (match_dup 7) (const_int 24)))
1236     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
1237          (mem:SI (match_dup 7)))
1238     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1239          (mem:SI (plus:SI (match_dup 7) (const_int 4))))
1240     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1241          (mem:SI (plus:SI (match_dup 7) (const_int 8))))
1242     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1243          (mem:SI (plus:SI (match_dup 7) (const_int 12))))
1244     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1245          (mem:SI (plus:SI (match_dup 7) (const_int 16))))
1246     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
1247          (mem:SI (plus:SI (match_dup 7) (const_int 20))))])]
1248   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 8"
1249   "ldwm\\t{%1, %2, %3, %4, %5, %6}, (%7)++, writeback, ret"
1250  [(set_attr "type" "ldwm")])
1251
1252(define_insn "*cdx_ldwm6_inc_wb"
1253  [(match_parallel 0 "ldwm_operation"
1254    [(set (match_operand:SI 7 "register_operand" "+&r")
1255          (plus:SI (match_dup 7) (const_int 24)))
1256     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
1257          (mem:SI (match_dup 7)))
1258     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1259          (mem:SI (plus:SI (match_dup 7) (const_int 4))))
1260     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1261          (mem:SI (plus:SI (match_dup 7) (const_int 8))))
1262     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1263          (mem:SI (plus:SI (match_dup 7) (const_int 12))))
1264     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1265          (mem:SI (plus:SI (match_dup 7) (const_int 16))))
1266     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
1267          (mem:SI (plus:SI (match_dup 7) (const_int 20))))])]
1268   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 7"
1269   "ldwm\\t{%1, %2, %3, %4, %5, %6}, (%7)++, writeback"
1270  [(set_attr "type" "ldwm")])
1271
1272(define_insn "*cdx_ldwm6_inc_ret"
1273  [(match_parallel 0 "ldwm_operation"
1274    [(return)
1275     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
1276          (mem:SI (match_operand:SI 7 "register_operand" "r")))
1277     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1278          (mem:SI (plus:SI (match_dup 7) (const_int 4))))
1279     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1280          (mem:SI (plus:SI (match_dup 7) (const_int 8))))
1281     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1282          (mem:SI (plus:SI (match_dup 7) (const_int 12))))
1283     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1284          (mem:SI (plus:SI (match_dup 7) (const_int 16))))
1285     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
1286          (mem:SI (plus:SI (match_dup 7) (const_int 20))))])]
1287   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 7"
1288   "ldwm\\t{%1, %2, %3, %4, %5, %6}, (%7)++, ret"
1289  [(set_attr "type" "ldwm")])
1290
1291(define_insn "*cdx_ldwm6_inc"
1292  [(match_parallel 0 "ldwm_operation"
1293    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
1294          (mem:SI (match_operand:SI 7 "register_operand" "r")))
1295     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1296          (mem:SI (plus:SI (match_dup 7) (const_int 4))))
1297     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1298          (mem:SI (plus:SI (match_dup 7) (const_int 8))))
1299     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1300          (mem:SI (plus:SI (match_dup 7) (const_int 12))))
1301     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1302          (mem:SI (plus:SI (match_dup 7) (const_int 16))))
1303     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
1304          (mem:SI (plus:SI (match_dup 7) (const_int 20))))])]
1305   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 6"
1306   "ldwm\\t{%1, %2, %3, %4, %5, %6}, (%7)++"
1307  [(set_attr "type" "ldwm")])
1308
1309(define_insn "*cdx_ldwm6_dec_wb_ret"
1310  [(match_parallel 0 "ldwm_operation"
1311    [(return)
1312     (set (match_operand:SI 7 "register_operand" "+&r")
1313          (plus:SI (match_dup 7) (const_int -24)))
1314     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
1315          (mem:SI (plus:SI (match_dup 7) (const_int -4))))
1316     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1317          (mem:SI (plus:SI (match_dup 7) (const_int -8))))
1318     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1319          (mem:SI (plus:SI (match_dup 7) (const_int -12))))
1320     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1321          (mem:SI (plus:SI (match_dup 7) (const_int -16))))
1322     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1323          (mem:SI (plus:SI (match_dup 7) (const_int -20))))
1324     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
1325          (mem:SI (plus:SI (match_dup 7) (const_int -24))))])]
1326   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 8"
1327   "ldwm\\t{%1, %2, %3, %4, %5, %6}, --(%7), writeback, ret"
1328  [(set_attr "type" "ldwm")])
1329
1330(define_insn "*cdx_ldwm6_dec_wb"
1331  [(match_parallel 0 "ldwm_operation"
1332    [(set (match_operand:SI 7 "register_operand" "+&r")
1333          (plus:SI (match_dup 7) (const_int -24)))
1334     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
1335          (mem:SI (plus:SI (match_dup 7) (const_int -4))))
1336     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1337          (mem:SI (plus:SI (match_dup 7) (const_int -8))))
1338     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1339          (mem:SI (plus:SI (match_dup 7) (const_int -12))))
1340     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1341          (mem:SI (plus:SI (match_dup 7) (const_int -16))))
1342     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1343          (mem:SI (plus:SI (match_dup 7) (const_int -20))))
1344     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
1345          (mem:SI (plus:SI (match_dup 7) (const_int -24))))])]
1346   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 7"
1347   "ldwm\\t{%1, %2, %3, %4, %5, %6}, --(%7), writeback"
1348  [(set_attr "type" "ldwm")])
1349
1350(define_insn "*cdx_ldwm6_dec_ret"
1351  [(match_parallel 0 "ldwm_operation"
1352    [(return)
1353     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
1354          (mem:SI (plus:SI (match_operand:SI 7 "register_operand" "r") (const_int -4))))
1355     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1356          (mem:SI (plus:SI (match_dup 7) (const_int -8))))
1357     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1358          (mem:SI (plus:SI (match_dup 7) (const_int -12))))
1359     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1360          (mem:SI (plus:SI (match_dup 7) (const_int -16))))
1361     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1362          (mem:SI (plus:SI (match_dup 7) (const_int -20))))
1363     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
1364          (mem:SI (plus:SI (match_dup 7) (const_int -24))))])]
1365   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 7"
1366   "ldwm\\t{%1, %2, %3, %4, %5, %6}, --(%7), ret"
1367  [(set_attr "type" "ldwm")])
1368
1369(define_insn "*cdx_ldwm6_dec"
1370  [(match_parallel 0 "ldwm_operation"
1371    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
1372          (mem:SI (plus:SI (match_operand:SI 7 "register_operand" "r") (const_int -4))))
1373     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1374          (mem:SI (plus:SI (match_dup 7) (const_int -8))))
1375     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1376          (mem:SI (plus:SI (match_dup 7) (const_int -12))))
1377     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1378          (mem:SI (plus:SI (match_dup 7) (const_int -16))))
1379     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1380          (mem:SI (plus:SI (match_dup 7) (const_int -20))))
1381     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
1382          (mem:SI (plus:SI (match_dup 7) (const_int -24))))])]
1383   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 6"
1384   "ldwm\\t{%1, %2, %3, %4, %5, %6}, --(%7)"
1385  [(set_attr "type" "ldwm")])
1386
1387(define_insn "*cdx_ldwm7_inc_wb_ret"
1388  [(match_parallel 0 "ldwm_operation"
1389    [(return)
1390     (set (match_operand:SI 8 "register_operand" "+&r")
1391          (plus:SI (match_dup 8) (const_int 28)))
1392     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
1393          (mem:SI (match_dup 8)))
1394     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1395          (mem:SI (plus:SI (match_dup 8) (const_int 4))))
1396     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1397          (mem:SI (plus:SI (match_dup 8) (const_int 8))))
1398     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1399          (mem:SI (plus:SI (match_dup 8) (const_int 12))))
1400     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1401          (mem:SI (plus:SI (match_dup 8) (const_int 16))))
1402     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
1403          (mem:SI (plus:SI (match_dup 8) (const_int 20))))
1404     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
1405          (mem:SI (plus:SI (match_dup 8) (const_int 24))))])]
1406   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 9"
1407   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7}, (%8)++, writeback, ret"
1408  [(set_attr "type" "ldwm")])
1409
1410(define_insn "*cdx_ldwm7_inc_wb"
1411  [(match_parallel 0 "ldwm_operation"
1412    [(set (match_operand:SI 8 "register_operand" "+&r")
1413          (plus:SI (match_dup 8) (const_int 28)))
1414     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
1415          (mem:SI (match_dup 8)))
1416     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1417          (mem:SI (plus:SI (match_dup 8) (const_int 4))))
1418     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1419          (mem:SI (plus:SI (match_dup 8) (const_int 8))))
1420     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1421          (mem:SI (plus:SI (match_dup 8) (const_int 12))))
1422     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1423          (mem:SI (plus:SI (match_dup 8) (const_int 16))))
1424     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
1425          (mem:SI (plus:SI (match_dup 8) (const_int 20))))
1426     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
1427          (mem:SI (plus:SI (match_dup 8) (const_int 24))))])]
1428   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 8"
1429   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7}, (%8)++, writeback"
1430  [(set_attr "type" "ldwm")])
1431
1432(define_insn "*cdx_ldwm7_inc_ret"
1433  [(match_parallel 0 "ldwm_operation"
1434    [(return)
1435     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
1436          (mem:SI (match_operand:SI 8 "register_operand" "r")))
1437     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1438          (mem:SI (plus:SI (match_dup 8) (const_int 4))))
1439     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1440          (mem:SI (plus:SI (match_dup 8) (const_int 8))))
1441     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1442          (mem:SI (plus:SI (match_dup 8) (const_int 12))))
1443     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1444          (mem:SI (plus:SI (match_dup 8) (const_int 16))))
1445     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
1446          (mem:SI (plus:SI (match_dup 8) (const_int 20))))
1447     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
1448          (mem:SI (plus:SI (match_dup 8) (const_int 24))))])]
1449   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 8"
1450   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7}, (%8)++, ret"
1451  [(set_attr "type" "ldwm")])
1452
1453(define_insn "*cdx_ldwm7_inc"
1454  [(match_parallel 0 "ldwm_operation"
1455    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
1456          (mem:SI (match_operand:SI 8 "register_operand" "r")))
1457     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1458          (mem:SI (plus:SI (match_dup 8) (const_int 4))))
1459     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1460          (mem:SI (plus:SI (match_dup 8) (const_int 8))))
1461     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1462          (mem:SI (plus:SI (match_dup 8) (const_int 12))))
1463     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1464          (mem:SI (plus:SI (match_dup 8) (const_int 16))))
1465     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
1466          (mem:SI (plus:SI (match_dup 8) (const_int 20))))
1467     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
1468          (mem:SI (plus:SI (match_dup 8) (const_int 24))))])]
1469   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 7"
1470   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7}, (%8)++"
1471  [(set_attr "type" "ldwm")])
1472
1473(define_insn "*cdx_ldwm7_dec_wb_ret"
1474  [(match_parallel 0 "ldwm_operation"
1475    [(return)
1476     (set (match_operand:SI 8 "register_operand" "+&r")
1477          (plus:SI (match_dup 8) (const_int -28)))
1478     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
1479          (mem:SI (plus:SI (match_dup 8) (const_int -4))))
1480     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1481          (mem:SI (plus:SI (match_dup 8) (const_int -8))))
1482     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1483          (mem:SI (plus:SI (match_dup 8) (const_int -12))))
1484     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1485          (mem:SI (plus:SI (match_dup 8) (const_int -16))))
1486     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1487          (mem:SI (plus:SI (match_dup 8) (const_int -20))))
1488     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
1489          (mem:SI (plus:SI (match_dup 8) (const_int -24))))
1490     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
1491          (mem:SI (plus:SI (match_dup 8) (const_int -28))))])]
1492   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 9"
1493   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7}, --(%8), writeback, ret"
1494  [(set_attr "type" "ldwm")])
1495
1496(define_insn "*cdx_ldwm7_dec_wb"
1497  [(match_parallel 0 "ldwm_operation"
1498    [(set (match_operand:SI 8 "register_operand" "+&r")
1499          (plus:SI (match_dup 8) (const_int -28)))
1500     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
1501          (mem:SI (plus:SI (match_dup 8) (const_int -4))))
1502     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1503          (mem:SI (plus:SI (match_dup 8) (const_int -8))))
1504     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1505          (mem:SI (plus:SI (match_dup 8) (const_int -12))))
1506     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1507          (mem:SI (plus:SI (match_dup 8) (const_int -16))))
1508     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1509          (mem:SI (plus:SI (match_dup 8) (const_int -20))))
1510     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
1511          (mem:SI (plus:SI (match_dup 8) (const_int -24))))
1512     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
1513          (mem:SI (plus:SI (match_dup 8) (const_int -28))))])]
1514   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 8"
1515   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7}, --(%8), writeback"
1516  [(set_attr "type" "ldwm")])
1517
1518(define_insn "*cdx_ldwm7_dec_ret"
1519  [(match_parallel 0 "ldwm_operation"
1520    [(return)
1521     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
1522          (mem:SI (plus:SI (match_operand:SI 8 "register_operand" "r") (const_int -4))))
1523     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1524          (mem:SI (plus:SI (match_dup 8) (const_int -8))))
1525     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1526          (mem:SI (plus:SI (match_dup 8) (const_int -12))))
1527     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1528          (mem:SI (plus:SI (match_dup 8) (const_int -16))))
1529     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1530          (mem:SI (plus:SI (match_dup 8) (const_int -20))))
1531     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
1532          (mem:SI (plus:SI (match_dup 8) (const_int -24))))
1533     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
1534          (mem:SI (plus:SI (match_dup 8) (const_int -28))))])]
1535   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 8"
1536   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7}, --(%8), ret"
1537  [(set_attr "type" "ldwm")])
1538
1539(define_insn "*cdx_ldwm7_dec"
1540  [(match_parallel 0 "ldwm_operation"
1541    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
1542          (mem:SI (plus:SI (match_operand:SI 8 "register_operand" "r") (const_int -4))))
1543     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1544          (mem:SI (plus:SI (match_dup 8) (const_int -8))))
1545     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1546          (mem:SI (plus:SI (match_dup 8) (const_int -12))))
1547     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1548          (mem:SI (plus:SI (match_dup 8) (const_int -16))))
1549     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1550          (mem:SI (plus:SI (match_dup 8) (const_int -20))))
1551     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
1552          (mem:SI (plus:SI (match_dup 8) (const_int -24))))
1553     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
1554          (mem:SI (plus:SI (match_dup 8) (const_int -28))))])]
1555   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 7"
1556   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7}, --(%8)"
1557  [(set_attr "type" "ldwm")])
1558
1559(define_insn "*cdx_ldwm8_inc_wb_ret"
1560  [(match_parallel 0 "ldwm_operation"
1561    [(return)
1562     (set (match_operand:SI 9 "register_operand" "+&r")
1563          (plus:SI (match_dup 9) (const_int 32)))
1564     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
1565          (mem:SI (match_dup 9)))
1566     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1567          (mem:SI (plus:SI (match_dup 9) (const_int 4))))
1568     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1569          (mem:SI (plus:SI (match_dup 9) (const_int 8))))
1570     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1571          (mem:SI (plus:SI (match_dup 9) (const_int 12))))
1572     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1573          (mem:SI (plus:SI (match_dup 9) (const_int 16))))
1574     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
1575          (mem:SI (plus:SI (match_dup 9) (const_int 20))))
1576     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
1577          (mem:SI (plus:SI (match_dup 9) (const_int 24))))
1578     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
1579          (mem:SI (plus:SI (match_dup 9) (const_int 28))))])]
1580   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 10"
1581   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8}, (%9)++, writeback, ret"
1582  [(set_attr "type" "ldwm")])
1583
1584(define_insn "*cdx_ldwm8_inc_wb"
1585  [(match_parallel 0 "ldwm_operation"
1586    [(set (match_operand:SI 9 "register_operand" "+&r")
1587          (plus:SI (match_dup 9) (const_int 32)))
1588     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
1589          (mem:SI (match_dup 9)))
1590     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1591          (mem:SI (plus:SI (match_dup 9) (const_int 4))))
1592     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1593          (mem:SI (plus:SI (match_dup 9) (const_int 8))))
1594     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1595          (mem:SI (plus:SI (match_dup 9) (const_int 12))))
1596     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1597          (mem:SI (plus:SI (match_dup 9) (const_int 16))))
1598     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
1599          (mem:SI (plus:SI (match_dup 9) (const_int 20))))
1600     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
1601          (mem:SI (plus:SI (match_dup 9) (const_int 24))))
1602     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
1603          (mem:SI (plus:SI (match_dup 9) (const_int 28))))])]
1604   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 9"
1605   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8}, (%9)++, writeback"
1606  [(set_attr "type" "ldwm")])
1607
1608(define_insn "*cdx_ldwm8_inc_ret"
1609  [(match_parallel 0 "ldwm_operation"
1610    [(return)
1611     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
1612          (mem:SI (match_operand:SI 9 "register_operand" "r")))
1613     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1614          (mem:SI (plus:SI (match_dup 9) (const_int 4))))
1615     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1616          (mem:SI (plus:SI (match_dup 9) (const_int 8))))
1617     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1618          (mem:SI (plus:SI (match_dup 9) (const_int 12))))
1619     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1620          (mem:SI (plus:SI (match_dup 9) (const_int 16))))
1621     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
1622          (mem:SI (plus:SI (match_dup 9) (const_int 20))))
1623     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
1624          (mem:SI (plus:SI (match_dup 9) (const_int 24))))
1625     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
1626          (mem:SI (plus:SI (match_dup 9) (const_int 28))))])]
1627   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 9"
1628   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8}, (%9)++, ret"
1629  [(set_attr "type" "ldwm")])
1630
1631(define_insn "*cdx_ldwm8_inc"
1632  [(match_parallel 0 "ldwm_operation"
1633    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
1634          (mem:SI (match_operand:SI 9 "register_operand" "r")))
1635     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1636          (mem:SI (plus:SI (match_dup 9) (const_int 4))))
1637     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1638          (mem:SI (plus:SI (match_dup 9) (const_int 8))))
1639     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1640          (mem:SI (plus:SI (match_dup 9) (const_int 12))))
1641     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1642          (mem:SI (plus:SI (match_dup 9) (const_int 16))))
1643     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
1644          (mem:SI (plus:SI (match_dup 9) (const_int 20))))
1645     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
1646          (mem:SI (plus:SI (match_dup 9) (const_int 24))))
1647     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
1648          (mem:SI (plus:SI (match_dup 9) (const_int 28))))])]
1649   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 8"
1650   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8}, (%9)++"
1651  [(set_attr "type" "ldwm")])
1652
1653(define_insn "*cdx_ldwm8_dec_wb_ret"
1654  [(match_parallel 0 "ldwm_operation"
1655    [(return)
1656     (set (match_operand:SI 9 "register_operand" "+&r")
1657          (plus:SI (match_dup 9) (const_int -32)))
1658     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
1659          (mem:SI (plus:SI (match_dup 9) (const_int -4))))
1660     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1661          (mem:SI (plus:SI (match_dup 9) (const_int -8))))
1662     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1663          (mem:SI (plus:SI (match_dup 9) (const_int -12))))
1664     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1665          (mem:SI (plus:SI (match_dup 9) (const_int -16))))
1666     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1667          (mem:SI (plus:SI (match_dup 9) (const_int -20))))
1668     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
1669          (mem:SI (plus:SI (match_dup 9) (const_int -24))))
1670     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
1671          (mem:SI (plus:SI (match_dup 9) (const_int -28))))
1672     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
1673          (mem:SI (plus:SI (match_dup 9) (const_int -32))))])]
1674   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 10"
1675   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8}, --(%9), writeback, ret"
1676  [(set_attr "type" "ldwm")])
1677
1678(define_insn "*cdx_ldwm8_dec_wb"
1679  [(match_parallel 0 "ldwm_operation"
1680    [(set (match_operand:SI 9 "register_operand" "+&r")
1681          (plus:SI (match_dup 9) (const_int -32)))
1682     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
1683          (mem:SI (plus:SI (match_dup 9) (const_int -4))))
1684     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1685          (mem:SI (plus:SI (match_dup 9) (const_int -8))))
1686     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1687          (mem:SI (plus:SI (match_dup 9) (const_int -12))))
1688     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1689          (mem:SI (plus:SI (match_dup 9) (const_int -16))))
1690     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1691          (mem:SI (plus:SI (match_dup 9) (const_int -20))))
1692     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
1693          (mem:SI (plus:SI (match_dup 9) (const_int -24))))
1694     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
1695          (mem:SI (plus:SI (match_dup 9) (const_int -28))))
1696     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
1697          (mem:SI (plus:SI (match_dup 9) (const_int -32))))])]
1698   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 9"
1699   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8}, --(%9), writeback"
1700  [(set_attr "type" "ldwm")])
1701
1702(define_insn "*cdx_ldwm8_dec_ret"
1703  [(match_parallel 0 "ldwm_operation"
1704    [(return)
1705     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
1706          (mem:SI (plus:SI (match_operand:SI 9 "register_operand" "r") (const_int -4))))
1707     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1708          (mem:SI (plus:SI (match_dup 9) (const_int -8))))
1709     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1710          (mem:SI (plus:SI (match_dup 9) (const_int -12))))
1711     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1712          (mem:SI (plus:SI (match_dup 9) (const_int -16))))
1713     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1714          (mem:SI (plus:SI (match_dup 9) (const_int -20))))
1715     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
1716          (mem:SI (plus:SI (match_dup 9) (const_int -24))))
1717     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
1718          (mem:SI (plus:SI (match_dup 9) (const_int -28))))
1719     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
1720          (mem:SI (plus:SI (match_dup 9) (const_int -32))))])]
1721   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 9"
1722   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8}, --(%9), ret"
1723  [(set_attr "type" "ldwm")])
1724
1725(define_insn "*cdx_ldwm8_dec"
1726  [(match_parallel 0 "ldwm_operation"
1727    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
1728          (mem:SI (plus:SI (match_operand:SI 9 "register_operand" "r") (const_int -4))))
1729     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1730          (mem:SI (plus:SI (match_dup 9) (const_int -8))))
1731     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1732          (mem:SI (plus:SI (match_dup 9) (const_int -12))))
1733     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1734          (mem:SI (plus:SI (match_dup 9) (const_int -16))))
1735     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1736          (mem:SI (plus:SI (match_dup 9) (const_int -20))))
1737     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
1738          (mem:SI (plus:SI (match_dup 9) (const_int -24))))
1739     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
1740          (mem:SI (plus:SI (match_dup 9) (const_int -28))))
1741     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
1742          (mem:SI (plus:SI (match_dup 9) (const_int -32))))])]
1743   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 8"
1744   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8}, --(%9)"
1745  [(set_attr "type" "ldwm")])
1746
1747(define_insn "*cdx_ldwm9_inc_wb_ret"
1748  [(match_parallel 0 "ldwm_operation"
1749    [(return)
1750     (set (match_operand:SI 10 "register_operand" "+&r")
1751          (plus:SI (match_dup 10) (const_int 36)))
1752     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
1753          (mem:SI (match_dup 10)))
1754     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1755          (mem:SI (plus:SI (match_dup 10) (const_int 4))))
1756     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1757          (mem:SI (plus:SI (match_dup 10) (const_int 8))))
1758     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1759          (mem:SI (plus:SI (match_dup 10) (const_int 12))))
1760     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1761          (mem:SI (plus:SI (match_dup 10) (const_int 16))))
1762     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
1763          (mem:SI (plus:SI (match_dup 10) (const_int 20))))
1764     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
1765          (mem:SI (plus:SI (match_dup 10) (const_int 24))))
1766     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
1767          (mem:SI (plus:SI (match_dup 10) (const_int 28))))
1768     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
1769          (mem:SI (plus:SI (match_dup 10) (const_int 32))))])]
1770   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 11"
1771   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9}, (%10)++, writeback, ret"
1772  [(set_attr "type" "ldwm")])
1773
1774(define_insn "*cdx_ldwm9_inc_wb"
1775  [(match_parallel 0 "ldwm_operation"
1776    [(set (match_operand:SI 10 "register_operand" "+&r")
1777          (plus:SI (match_dup 10) (const_int 36)))
1778     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
1779          (mem:SI (match_dup 10)))
1780     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1781          (mem:SI (plus:SI (match_dup 10) (const_int 4))))
1782     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1783          (mem:SI (plus:SI (match_dup 10) (const_int 8))))
1784     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1785          (mem:SI (plus:SI (match_dup 10) (const_int 12))))
1786     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1787          (mem:SI (plus:SI (match_dup 10) (const_int 16))))
1788     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
1789          (mem:SI (plus:SI (match_dup 10) (const_int 20))))
1790     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
1791          (mem:SI (plus:SI (match_dup 10) (const_int 24))))
1792     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
1793          (mem:SI (plus:SI (match_dup 10) (const_int 28))))
1794     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
1795          (mem:SI (plus:SI (match_dup 10) (const_int 32))))])]
1796   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 10"
1797   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9}, (%10)++, writeback"
1798  [(set_attr "type" "ldwm")])
1799
1800(define_insn "*cdx_ldwm9_inc_ret"
1801  [(match_parallel 0 "ldwm_operation"
1802    [(return)
1803     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
1804          (mem:SI (match_operand:SI 10 "register_operand" "r")))
1805     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1806          (mem:SI (plus:SI (match_dup 10) (const_int 4))))
1807     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1808          (mem:SI (plus:SI (match_dup 10) (const_int 8))))
1809     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1810          (mem:SI (plus:SI (match_dup 10) (const_int 12))))
1811     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1812          (mem:SI (plus:SI (match_dup 10) (const_int 16))))
1813     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
1814          (mem:SI (plus:SI (match_dup 10) (const_int 20))))
1815     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
1816          (mem:SI (plus:SI (match_dup 10) (const_int 24))))
1817     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
1818          (mem:SI (plus:SI (match_dup 10) (const_int 28))))
1819     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
1820          (mem:SI (plus:SI (match_dup 10) (const_int 32))))])]
1821   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 10"
1822   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9}, (%10)++, ret"
1823  [(set_attr "type" "ldwm")])
1824
1825(define_insn "*cdx_ldwm9_inc"
1826  [(match_parallel 0 "ldwm_operation"
1827    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
1828          (mem:SI (match_operand:SI 10 "register_operand" "r")))
1829     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1830          (mem:SI (plus:SI (match_dup 10) (const_int 4))))
1831     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1832          (mem:SI (plus:SI (match_dup 10) (const_int 8))))
1833     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1834          (mem:SI (plus:SI (match_dup 10) (const_int 12))))
1835     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1836          (mem:SI (plus:SI (match_dup 10) (const_int 16))))
1837     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
1838          (mem:SI (plus:SI (match_dup 10) (const_int 20))))
1839     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
1840          (mem:SI (plus:SI (match_dup 10) (const_int 24))))
1841     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
1842          (mem:SI (plus:SI (match_dup 10) (const_int 28))))
1843     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
1844          (mem:SI (plus:SI (match_dup 10) (const_int 32))))])]
1845   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 9"
1846   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9}, (%10)++"
1847  [(set_attr "type" "ldwm")])
1848
1849(define_insn "*cdx_ldwm9_dec_wb_ret"
1850  [(match_parallel 0 "ldwm_operation"
1851    [(return)
1852     (set (match_operand:SI 10 "register_operand" "+&r")
1853          (plus:SI (match_dup 10) (const_int -36)))
1854     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
1855          (mem:SI (plus:SI (match_dup 10) (const_int -4))))
1856     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1857          (mem:SI (plus:SI (match_dup 10) (const_int -8))))
1858     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1859          (mem:SI (plus:SI (match_dup 10) (const_int -12))))
1860     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1861          (mem:SI (plus:SI (match_dup 10) (const_int -16))))
1862     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1863          (mem:SI (plus:SI (match_dup 10) (const_int -20))))
1864     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
1865          (mem:SI (plus:SI (match_dup 10) (const_int -24))))
1866     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
1867          (mem:SI (plus:SI (match_dup 10) (const_int -28))))
1868     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
1869          (mem:SI (plus:SI (match_dup 10) (const_int -32))))
1870     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
1871          (mem:SI (plus:SI (match_dup 10) (const_int -36))))])]
1872   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 11"
1873   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9}, --(%10), writeback, ret"
1874  [(set_attr "type" "ldwm")])
1875
1876(define_insn "*cdx_ldwm9_dec_wb"
1877  [(match_parallel 0 "ldwm_operation"
1878    [(set (match_operand:SI 10 "register_operand" "+&r")
1879          (plus:SI (match_dup 10) (const_int -36)))
1880     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
1881          (mem:SI (plus:SI (match_dup 10) (const_int -4))))
1882     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1883          (mem:SI (plus:SI (match_dup 10) (const_int -8))))
1884     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1885          (mem:SI (plus:SI (match_dup 10) (const_int -12))))
1886     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1887          (mem:SI (plus:SI (match_dup 10) (const_int -16))))
1888     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1889          (mem:SI (plus:SI (match_dup 10) (const_int -20))))
1890     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
1891          (mem:SI (plus:SI (match_dup 10) (const_int -24))))
1892     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
1893          (mem:SI (plus:SI (match_dup 10) (const_int -28))))
1894     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
1895          (mem:SI (plus:SI (match_dup 10) (const_int -32))))
1896     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
1897          (mem:SI (plus:SI (match_dup 10) (const_int -36))))])]
1898   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 10"
1899   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9}, --(%10), writeback"
1900  [(set_attr "type" "ldwm")])
1901
1902(define_insn "*cdx_ldwm9_dec_ret"
1903  [(match_parallel 0 "ldwm_operation"
1904    [(return)
1905     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
1906          (mem:SI (plus:SI (match_operand:SI 10 "register_operand" "r") (const_int -4))))
1907     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1908          (mem:SI (plus:SI (match_dup 10) (const_int -8))))
1909     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1910          (mem:SI (plus:SI (match_dup 10) (const_int -12))))
1911     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1912          (mem:SI (plus:SI (match_dup 10) (const_int -16))))
1913     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1914          (mem:SI (plus:SI (match_dup 10) (const_int -20))))
1915     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
1916          (mem:SI (plus:SI (match_dup 10) (const_int -24))))
1917     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
1918          (mem:SI (plus:SI (match_dup 10) (const_int -28))))
1919     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
1920          (mem:SI (plus:SI (match_dup 10) (const_int -32))))
1921     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
1922          (mem:SI (plus:SI (match_dup 10) (const_int -36))))])]
1923   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 10"
1924   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9}, --(%10), ret"
1925  [(set_attr "type" "ldwm")])
1926
1927(define_insn "*cdx_ldwm9_dec"
1928  [(match_parallel 0 "ldwm_operation"
1929    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
1930          (mem:SI (plus:SI (match_operand:SI 10 "register_operand" "r") (const_int -4))))
1931     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1932          (mem:SI (plus:SI (match_dup 10) (const_int -8))))
1933     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1934          (mem:SI (plus:SI (match_dup 10) (const_int -12))))
1935     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1936          (mem:SI (plus:SI (match_dup 10) (const_int -16))))
1937     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1938          (mem:SI (plus:SI (match_dup 10) (const_int -20))))
1939     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
1940          (mem:SI (plus:SI (match_dup 10) (const_int -24))))
1941     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
1942          (mem:SI (plus:SI (match_dup 10) (const_int -28))))
1943     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
1944          (mem:SI (plus:SI (match_dup 10) (const_int -32))))
1945     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
1946          (mem:SI (plus:SI (match_dup 10) (const_int -36))))])]
1947   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 9"
1948   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9}, --(%10)"
1949  [(set_attr "type" "ldwm")])
1950
1951(define_insn "*cdx_ldwm10_inc_wb_ret"
1952  [(match_parallel 0 "ldwm_operation"
1953    [(return)
1954     (set (match_operand:SI 11 "register_operand" "+&r")
1955          (plus:SI (match_dup 11) (const_int 40)))
1956     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
1957          (mem:SI (match_dup 11)))
1958     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1959          (mem:SI (plus:SI (match_dup 11) (const_int 4))))
1960     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1961          (mem:SI (plus:SI (match_dup 11) (const_int 8))))
1962     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1963          (mem:SI (plus:SI (match_dup 11) (const_int 12))))
1964     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1965          (mem:SI (plus:SI (match_dup 11) (const_int 16))))
1966     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
1967          (mem:SI (plus:SI (match_dup 11) (const_int 20))))
1968     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
1969          (mem:SI (plus:SI (match_dup 11) (const_int 24))))
1970     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
1971          (mem:SI (plus:SI (match_dup 11) (const_int 28))))
1972     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
1973          (mem:SI (plus:SI (match_dup 11) (const_int 32))))
1974     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
1975          (mem:SI (plus:SI (match_dup 11) (const_int 36))))])]
1976   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 12"
1977   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10}, (%11)++, writeback, ret"
1978  [(set_attr "type" "ldwm")])
1979
1980(define_insn "*cdx_ldwm10_inc_wb"
1981  [(match_parallel 0 "ldwm_operation"
1982    [(set (match_operand:SI 11 "register_operand" "+&r")
1983          (plus:SI (match_dup 11) (const_int 40)))
1984     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
1985          (mem:SI (match_dup 11)))
1986     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
1987          (mem:SI (plus:SI (match_dup 11) (const_int 4))))
1988     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
1989          (mem:SI (plus:SI (match_dup 11) (const_int 8))))
1990     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
1991          (mem:SI (plus:SI (match_dup 11) (const_int 12))))
1992     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
1993          (mem:SI (plus:SI (match_dup 11) (const_int 16))))
1994     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
1995          (mem:SI (plus:SI (match_dup 11) (const_int 20))))
1996     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
1997          (mem:SI (plus:SI (match_dup 11) (const_int 24))))
1998     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
1999          (mem:SI (plus:SI (match_dup 11) (const_int 28))))
2000     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
2001          (mem:SI (plus:SI (match_dup 11) (const_int 32))))
2002     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
2003          (mem:SI (plus:SI (match_dup 11) (const_int 36))))])]
2004   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 11"
2005   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10}, (%11)++, writeback"
2006  [(set_attr "type" "ldwm")])
2007
2008(define_insn "*cdx_ldwm10_inc_ret"
2009  [(match_parallel 0 "ldwm_operation"
2010    [(return)
2011     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
2012          (mem:SI (match_operand:SI 11 "register_operand" "r")))
2013     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
2014          (mem:SI (plus:SI (match_dup 11) (const_int 4))))
2015     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
2016          (mem:SI (plus:SI (match_dup 11) (const_int 8))))
2017     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
2018          (mem:SI (plus:SI (match_dup 11) (const_int 12))))
2019     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
2020          (mem:SI (plus:SI (match_dup 11) (const_int 16))))
2021     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
2022          (mem:SI (plus:SI (match_dup 11) (const_int 20))))
2023     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
2024          (mem:SI (plus:SI (match_dup 11) (const_int 24))))
2025     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
2026          (mem:SI (plus:SI (match_dup 11) (const_int 28))))
2027     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
2028          (mem:SI (plus:SI (match_dup 11) (const_int 32))))
2029     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
2030          (mem:SI (plus:SI (match_dup 11) (const_int 36))))])]
2031   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 11"
2032   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10}, (%11)++, ret"
2033  [(set_attr "type" "ldwm")])
2034
2035(define_insn "*cdx_ldwm10_inc"
2036  [(match_parallel 0 "ldwm_operation"
2037    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
2038          (mem:SI (match_operand:SI 11 "register_operand" "r")))
2039     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
2040          (mem:SI (plus:SI (match_dup 11) (const_int 4))))
2041     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
2042          (mem:SI (plus:SI (match_dup 11) (const_int 8))))
2043     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
2044          (mem:SI (plus:SI (match_dup 11) (const_int 12))))
2045     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
2046          (mem:SI (plus:SI (match_dup 11) (const_int 16))))
2047     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
2048          (mem:SI (plus:SI (match_dup 11) (const_int 20))))
2049     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
2050          (mem:SI (plus:SI (match_dup 11) (const_int 24))))
2051     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
2052          (mem:SI (plus:SI (match_dup 11) (const_int 28))))
2053     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
2054          (mem:SI (plus:SI (match_dup 11) (const_int 32))))
2055     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
2056          (mem:SI (plus:SI (match_dup 11) (const_int 36))))])]
2057   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 10"
2058   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10}, (%11)++"
2059  [(set_attr "type" "ldwm")])
2060
2061(define_insn "*cdx_ldwm10_dec_wb_ret"
2062  [(match_parallel 0 "ldwm_operation"
2063    [(return)
2064     (set (match_operand:SI 11 "register_operand" "+&r")
2065          (plus:SI (match_dup 11) (const_int -40)))
2066     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
2067          (mem:SI (plus:SI (match_dup 11) (const_int -4))))
2068     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
2069          (mem:SI (plus:SI (match_dup 11) (const_int -8))))
2070     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
2071          (mem:SI (plus:SI (match_dup 11) (const_int -12))))
2072     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
2073          (mem:SI (plus:SI (match_dup 11) (const_int -16))))
2074     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
2075          (mem:SI (plus:SI (match_dup 11) (const_int -20))))
2076     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
2077          (mem:SI (plus:SI (match_dup 11) (const_int -24))))
2078     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
2079          (mem:SI (plus:SI (match_dup 11) (const_int -28))))
2080     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
2081          (mem:SI (plus:SI (match_dup 11) (const_int -32))))
2082     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
2083          (mem:SI (plus:SI (match_dup 11) (const_int -36))))
2084     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
2085          (mem:SI (plus:SI (match_dup 11) (const_int -40))))])]
2086   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 12"
2087   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10}, --(%11), writeback, ret"
2088  [(set_attr "type" "ldwm")])
2089
2090(define_insn "*cdx_ldwm10_dec_wb"
2091  [(match_parallel 0 "ldwm_operation"
2092    [(set (match_operand:SI 11 "register_operand" "+&r")
2093          (plus:SI (match_dup 11) (const_int -40)))
2094     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
2095          (mem:SI (plus:SI (match_dup 11) (const_int -4))))
2096     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
2097          (mem:SI (plus:SI (match_dup 11) (const_int -8))))
2098     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
2099          (mem:SI (plus:SI (match_dup 11) (const_int -12))))
2100     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
2101          (mem:SI (plus:SI (match_dup 11) (const_int -16))))
2102     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
2103          (mem:SI (plus:SI (match_dup 11) (const_int -20))))
2104     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
2105          (mem:SI (plus:SI (match_dup 11) (const_int -24))))
2106     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
2107          (mem:SI (plus:SI (match_dup 11) (const_int -28))))
2108     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
2109          (mem:SI (plus:SI (match_dup 11) (const_int -32))))
2110     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
2111          (mem:SI (plus:SI (match_dup 11) (const_int -36))))
2112     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
2113          (mem:SI (plus:SI (match_dup 11) (const_int -40))))])]
2114   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 11"
2115   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10}, --(%11), writeback"
2116  [(set_attr "type" "ldwm")])
2117
2118(define_insn "*cdx_ldwm10_dec_ret"
2119  [(match_parallel 0 "ldwm_operation"
2120    [(return)
2121     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
2122          (mem:SI (plus:SI (match_operand:SI 11 "register_operand" "r") (const_int -4))))
2123     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
2124          (mem:SI (plus:SI (match_dup 11) (const_int -8))))
2125     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
2126          (mem:SI (plus:SI (match_dup 11) (const_int -12))))
2127     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
2128          (mem:SI (plus:SI (match_dup 11) (const_int -16))))
2129     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
2130          (mem:SI (plus:SI (match_dup 11) (const_int -20))))
2131     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
2132          (mem:SI (plus:SI (match_dup 11) (const_int -24))))
2133     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
2134          (mem:SI (plus:SI (match_dup 11) (const_int -28))))
2135     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
2136          (mem:SI (plus:SI (match_dup 11) (const_int -32))))
2137     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
2138          (mem:SI (plus:SI (match_dup 11) (const_int -36))))
2139     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
2140          (mem:SI (plus:SI (match_dup 11) (const_int -40))))])]
2141   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 11"
2142   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10}, --(%11), ret"
2143  [(set_attr "type" "ldwm")])
2144
2145(define_insn "*cdx_ldwm10_dec"
2146  [(match_parallel 0 "ldwm_operation"
2147    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
2148          (mem:SI (plus:SI (match_operand:SI 11 "register_operand" "r") (const_int -4))))
2149     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
2150          (mem:SI (plus:SI (match_dup 11) (const_int -8))))
2151     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
2152          (mem:SI (plus:SI (match_dup 11) (const_int -12))))
2153     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
2154          (mem:SI (plus:SI (match_dup 11) (const_int -16))))
2155     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
2156          (mem:SI (plus:SI (match_dup 11) (const_int -20))))
2157     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
2158          (mem:SI (plus:SI (match_dup 11) (const_int -24))))
2159     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
2160          (mem:SI (plus:SI (match_dup 11) (const_int -28))))
2161     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
2162          (mem:SI (plus:SI (match_dup 11) (const_int -32))))
2163     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
2164          (mem:SI (plus:SI (match_dup 11) (const_int -36))))
2165     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
2166          (mem:SI (plus:SI (match_dup 11) (const_int -40))))])]
2167   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 10"
2168   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10}, --(%11)"
2169  [(set_attr "type" "ldwm")])
2170
2171(define_insn "*cdx_ldwm11_inc_wb_ret"
2172  [(match_parallel 0 "ldwm_operation"
2173    [(return)
2174     (set (match_operand:SI 12 "register_operand" "+&r")
2175          (plus:SI (match_dup 12) (const_int 44)))
2176     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
2177          (mem:SI (match_dup 12)))
2178     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
2179          (mem:SI (plus:SI (match_dup 12) (const_int 4))))
2180     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
2181          (mem:SI (plus:SI (match_dup 12) (const_int 8))))
2182     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
2183          (mem:SI (plus:SI (match_dup 12) (const_int 12))))
2184     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
2185          (mem:SI (plus:SI (match_dup 12) (const_int 16))))
2186     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
2187          (mem:SI (plus:SI (match_dup 12) (const_int 20))))
2188     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
2189          (mem:SI (plus:SI (match_dup 12) (const_int 24))))
2190     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
2191          (mem:SI (plus:SI (match_dup 12) (const_int 28))))
2192     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
2193          (mem:SI (plus:SI (match_dup 12) (const_int 32))))
2194     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
2195          (mem:SI (plus:SI (match_dup 12) (const_int 36))))
2196     (set (match_operand:SI 11 "nios2_hard_register_operand" "")
2197          (mem:SI (plus:SI (match_dup 12) (const_int 40))))])]
2198   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 13"
2199   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11}, (%12)++, writeback, ret"
2200  [(set_attr "type" "ldwm")])
2201
2202(define_insn "*cdx_ldwm11_inc_wb"
2203  [(match_parallel 0 "ldwm_operation"
2204    [(set (match_operand:SI 12 "register_operand" "+&r")
2205          (plus:SI (match_dup 12) (const_int 44)))
2206     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
2207          (mem:SI (match_dup 12)))
2208     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
2209          (mem:SI (plus:SI (match_dup 12) (const_int 4))))
2210     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
2211          (mem:SI (plus:SI (match_dup 12) (const_int 8))))
2212     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
2213          (mem:SI (plus:SI (match_dup 12) (const_int 12))))
2214     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
2215          (mem:SI (plus:SI (match_dup 12) (const_int 16))))
2216     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
2217          (mem:SI (plus:SI (match_dup 12) (const_int 20))))
2218     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
2219          (mem:SI (plus:SI (match_dup 12) (const_int 24))))
2220     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
2221          (mem:SI (plus:SI (match_dup 12) (const_int 28))))
2222     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
2223          (mem:SI (plus:SI (match_dup 12) (const_int 32))))
2224     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
2225          (mem:SI (plus:SI (match_dup 12) (const_int 36))))
2226     (set (match_operand:SI 11 "nios2_hard_register_operand" "")
2227          (mem:SI (plus:SI (match_dup 12) (const_int 40))))])]
2228   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 12"
2229   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11}, (%12)++, writeback"
2230  [(set_attr "type" "ldwm")])
2231
2232(define_insn "*cdx_ldwm11_inc_ret"
2233  [(match_parallel 0 "ldwm_operation"
2234    [(return)
2235     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
2236          (mem:SI (match_operand:SI 12 "register_operand" "r")))
2237     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
2238          (mem:SI (plus:SI (match_dup 12) (const_int 4))))
2239     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
2240          (mem:SI (plus:SI (match_dup 12) (const_int 8))))
2241     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
2242          (mem:SI (plus:SI (match_dup 12) (const_int 12))))
2243     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
2244          (mem:SI (plus:SI (match_dup 12) (const_int 16))))
2245     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
2246          (mem:SI (plus:SI (match_dup 12) (const_int 20))))
2247     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
2248          (mem:SI (plus:SI (match_dup 12) (const_int 24))))
2249     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
2250          (mem:SI (plus:SI (match_dup 12) (const_int 28))))
2251     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
2252          (mem:SI (plus:SI (match_dup 12) (const_int 32))))
2253     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
2254          (mem:SI (plus:SI (match_dup 12) (const_int 36))))
2255     (set (match_operand:SI 11 "nios2_hard_register_operand" "")
2256          (mem:SI (plus:SI (match_dup 12) (const_int 40))))])]
2257   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 12"
2258   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11}, (%12)++, ret"
2259  [(set_attr "type" "ldwm")])
2260
2261(define_insn "*cdx_ldwm11_inc"
2262  [(match_parallel 0 "ldwm_operation"
2263    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
2264          (mem:SI (match_operand:SI 12 "register_operand" "r")))
2265     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
2266          (mem:SI (plus:SI (match_dup 12) (const_int 4))))
2267     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
2268          (mem:SI (plus:SI (match_dup 12) (const_int 8))))
2269     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
2270          (mem:SI (plus:SI (match_dup 12) (const_int 12))))
2271     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
2272          (mem:SI (plus:SI (match_dup 12) (const_int 16))))
2273     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
2274          (mem:SI (plus:SI (match_dup 12) (const_int 20))))
2275     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
2276          (mem:SI (plus:SI (match_dup 12) (const_int 24))))
2277     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
2278          (mem:SI (plus:SI (match_dup 12) (const_int 28))))
2279     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
2280          (mem:SI (plus:SI (match_dup 12) (const_int 32))))
2281     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
2282          (mem:SI (plus:SI (match_dup 12) (const_int 36))))
2283     (set (match_operand:SI 11 "nios2_hard_register_operand" "")
2284          (mem:SI (plus:SI (match_dup 12) (const_int 40))))])]
2285   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 11"
2286   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11}, (%12)++"
2287  [(set_attr "type" "ldwm")])
2288
2289(define_insn "*cdx_ldwm11_dec_wb_ret"
2290  [(match_parallel 0 "ldwm_operation"
2291    [(return)
2292     (set (match_operand:SI 12 "register_operand" "+&r")
2293          (plus:SI (match_dup 12) (const_int -44)))
2294     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
2295          (mem:SI (plus:SI (match_dup 12) (const_int -4))))
2296     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
2297          (mem:SI (plus:SI (match_dup 12) (const_int -8))))
2298     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
2299          (mem:SI (plus:SI (match_dup 12) (const_int -12))))
2300     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
2301          (mem:SI (plus:SI (match_dup 12) (const_int -16))))
2302     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
2303          (mem:SI (plus:SI (match_dup 12) (const_int -20))))
2304     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
2305          (mem:SI (plus:SI (match_dup 12) (const_int -24))))
2306     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
2307          (mem:SI (plus:SI (match_dup 12) (const_int -28))))
2308     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
2309          (mem:SI (plus:SI (match_dup 12) (const_int -32))))
2310     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
2311          (mem:SI (plus:SI (match_dup 12) (const_int -36))))
2312     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
2313          (mem:SI (plus:SI (match_dup 12) (const_int -40))))
2314     (set (match_operand:SI 11 "nios2_hard_register_operand" "")
2315          (mem:SI (plus:SI (match_dup 12) (const_int -44))))])]
2316   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 13"
2317   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11}, --(%12), writeback, ret"
2318  [(set_attr "type" "ldwm")])
2319
2320(define_insn "*cdx_ldwm11_dec_wb"
2321  [(match_parallel 0 "ldwm_operation"
2322    [(set (match_operand:SI 12 "register_operand" "+&r")
2323          (plus:SI (match_dup 12) (const_int -44)))
2324     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
2325          (mem:SI (plus:SI (match_dup 12) (const_int -4))))
2326     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
2327          (mem:SI (plus:SI (match_dup 12) (const_int -8))))
2328     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
2329          (mem:SI (plus:SI (match_dup 12) (const_int -12))))
2330     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
2331          (mem:SI (plus:SI (match_dup 12) (const_int -16))))
2332     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
2333          (mem:SI (plus:SI (match_dup 12) (const_int -20))))
2334     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
2335          (mem:SI (plus:SI (match_dup 12) (const_int -24))))
2336     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
2337          (mem:SI (plus:SI (match_dup 12) (const_int -28))))
2338     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
2339          (mem:SI (plus:SI (match_dup 12) (const_int -32))))
2340     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
2341          (mem:SI (plus:SI (match_dup 12) (const_int -36))))
2342     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
2343          (mem:SI (plus:SI (match_dup 12) (const_int -40))))
2344     (set (match_operand:SI 11 "nios2_hard_register_operand" "")
2345          (mem:SI (plus:SI (match_dup 12) (const_int -44))))])]
2346   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 12"
2347   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11}, --(%12), writeback"
2348  [(set_attr "type" "ldwm")])
2349
2350(define_insn "*cdx_ldwm11_dec_ret"
2351  [(match_parallel 0 "ldwm_operation"
2352    [(return)
2353     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
2354          (mem:SI (plus:SI (match_operand:SI 12 "register_operand" "r") (const_int -4))))
2355     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
2356          (mem:SI (plus:SI (match_dup 12) (const_int -8))))
2357     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
2358          (mem:SI (plus:SI (match_dup 12) (const_int -12))))
2359     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
2360          (mem:SI (plus:SI (match_dup 12) (const_int -16))))
2361     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
2362          (mem:SI (plus:SI (match_dup 12) (const_int -20))))
2363     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
2364          (mem:SI (plus:SI (match_dup 12) (const_int -24))))
2365     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
2366          (mem:SI (plus:SI (match_dup 12) (const_int -28))))
2367     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
2368          (mem:SI (plus:SI (match_dup 12) (const_int -32))))
2369     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
2370          (mem:SI (plus:SI (match_dup 12) (const_int -36))))
2371     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
2372          (mem:SI (plus:SI (match_dup 12) (const_int -40))))
2373     (set (match_operand:SI 11 "nios2_hard_register_operand" "")
2374          (mem:SI (plus:SI (match_dup 12) (const_int -44))))])]
2375   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 12"
2376   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11}, --(%12), ret"
2377  [(set_attr "type" "ldwm")])
2378
2379(define_insn "*cdx_ldwm11_dec"
2380  [(match_parallel 0 "ldwm_operation"
2381    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
2382          (mem:SI (plus:SI (match_operand:SI 12 "register_operand" "r") (const_int -4))))
2383     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
2384          (mem:SI (plus:SI (match_dup 12) (const_int -8))))
2385     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
2386          (mem:SI (plus:SI (match_dup 12) (const_int -12))))
2387     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
2388          (mem:SI (plus:SI (match_dup 12) (const_int -16))))
2389     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
2390          (mem:SI (plus:SI (match_dup 12) (const_int -20))))
2391     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
2392          (mem:SI (plus:SI (match_dup 12) (const_int -24))))
2393     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
2394          (mem:SI (plus:SI (match_dup 12) (const_int -28))))
2395     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
2396          (mem:SI (plus:SI (match_dup 12) (const_int -32))))
2397     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
2398          (mem:SI (plus:SI (match_dup 12) (const_int -36))))
2399     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
2400          (mem:SI (plus:SI (match_dup 12) (const_int -40))))
2401     (set (match_operand:SI 11 "nios2_hard_register_operand" "")
2402          (mem:SI (plus:SI (match_dup 12) (const_int -44))))])]
2403   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 11"
2404   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11}, --(%12)"
2405  [(set_attr "type" "ldwm")])
2406
2407(define_insn "*cdx_ldwm12_inc_wb_ret"
2408  [(match_parallel 0 "ldwm_operation"
2409    [(return)
2410     (set (match_operand:SI 13 "register_operand" "+&r")
2411          (plus:SI (match_dup 13) (const_int 48)))
2412     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
2413          (mem:SI (match_dup 13)))
2414     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
2415          (mem:SI (plus:SI (match_dup 13) (const_int 4))))
2416     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
2417          (mem:SI (plus:SI (match_dup 13) (const_int 8))))
2418     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
2419          (mem:SI (plus:SI (match_dup 13) (const_int 12))))
2420     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
2421          (mem:SI (plus:SI (match_dup 13) (const_int 16))))
2422     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
2423          (mem:SI (plus:SI (match_dup 13) (const_int 20))))
2424     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
2425          (mem:SI (plus:SI (match_dup 13) (const_int 24))))
2426     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
2427          (mem:SI (plus:SI (match_dup 13) (const_int 28))))
2428     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
2429          (mem:SI (plus:SI (match_dup 13) (const_int 32))))
2430     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
2431          (mem:SI (plus:SI (match_dup 13) (const_int 36))))
2432     (set (match_operand:SI 11 "nios2_hard_register_operand" "")
2433          (mem:SI (plus:SI (match_dup 13) (const_int 40))))
2434     (set (match_operand:SI 12 "nios2_hard_register_operand" "")
2435          (mem:SI (plus:SI (match_dup 13) (const_int 44))))])]
2436   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 14"
2437   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12}, (%13)++, writeback, ret"
2438  [(set_attr "type" "ldwm")])
2439
2440(define_insn "*cdx_ldwm12_inc_wb"
2441  [(match_parallel 0 "ldwm_operation"
2442    [(set (match_operand:SI 13 "register_operand" "+&r")
2443          (plus:SI (match_dup 13) (const_int 48)))
2444     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
2445          (mem:SI (match_dup 13)))
2446     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
2447          (mem:SI (plus:SI (match_dup 13) (const_int 4))))
2448     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
2449          (mem:SI (plus:SI (match_dup 13) (const_int 8))))
2450     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
2451          (mem:SI (plus:SI (match_dup 13) (const_int 12))))
2452     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
2453          (mem:SI (plus:SI (match_dup 13) (const_int 16))))
2454     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
2455          (mem:SI (plus:SI (match_dup 13) (const_int 20))))
2456     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
2457          (mem:SI (plus:SI (match_dup 13) (const_int 24))))
2458     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
2459          (mem:SI (plus:SI (match_dup 13) (const_int 28))))
2460     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
2461          (mem:SI (plus:SI (match_dup 13) (const_int 32))))
2462     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
2463          (mem:SI (plus:SI (match_dup 13) (const_int 36))))
2464     (set (match_operand:SI 11 "nios2_hard_register_operand" "")
2465          (mem:SI (plus:SI (match_dup 13) (const_int 40))))
2466     (set (match_operand:SI 12 "nios2_hard_register_operand" "")
2467          (mem:SI (plus:SI (match_dup 13) (const_int 44))))])]
2468   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 13"
2469   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12}, (%13)++, writeback"
2470  [(set_attr "type" "ldwm")])
2471
2472(define_insn "*cdx_ldwm12_inc_ret"
2473  [(match_parallel 0 "ldwm_operation"
2474    [(return)
2475     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
2476          (mem:SI (match_operand:SI 13 "register_operand" "r")))
2477     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
2478          (mem:SI (plus:SI (match_dup 13) (const_int 4))))
2479     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
2480          (mem:SI (plus:SI (match_dup 13) (const_int 8))))
2481     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
2482          (mem:SI (plus:SI (match_dup 13) (const_int 12))))
2483     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
2484          (mem:SI (plus:SI (match_dup 13) (const_int 16))))
2485     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
2486          (mem:SI (plus:SI (match_dup 13) (const_int 20))))
2487     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
2488          (mem:SI (plus:SI (match_dup 13) (const_int 24))))
2489     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
2490          (mem:SI (plus:SI (match_dup 13) (const_int 28))))
2491     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
2492          (mem:SI (plus:SI (match_dup 13) (const_int 32))))
2493     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
2494          (mem:SI (plus:SI (match_dup 13) (const_int 36))))
2495     (set (match_operand:SI 11 "nios2_hard_register_operand" "")
2496          (mem:SI (plus:SI (match_dup 13) (const_int 40))))
2497     (set (match_operand:SI 12 "nios2_hard_register_operand" "")
2498          (mem:SI (plus:SI (match_dup 13) (const_int 44))))])]
2499   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 13"
2500   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12}, (%13)++, ret"
2501  [(set_attr "type" "ldwm")])
2502
2503(define_insn "*cdx_ldwm12_inc"
2504  [(match_parallel 0 "ldwm_operation"
2505    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
2506          (mem:SI (match_operand:SI 13 "register_operand" "r")))
2507     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
2508          (mem:SI (plus:SI (match_dup 13) (const_int 4))))
2509     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
2510          (mem:SI (plus:SI (match_dup 13) (const_int 8))))
2511     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
2512          (mem:SI (plus:SI (match_dup 13) (const_int 12))))
2513     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
2514          (mem:SI (plus:SI (match_dup 13) (const_int 16))))
2515     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
2516          (mem:SI (plus:SI (match_dup 13) (const_int 20))))
2517     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
2518          (mem:SI (plus:SI (match_dup 13) (const_int 24))))
2519     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
2520          (mem:SI (plus:SI (match_dup 13) (const_int 28))))
2521     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
2522          (mem:SI (plus:SI (match_dup 13) (const_int 32))))
2523     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
2524          (mem:SI (plus:SI (match_dup 13) (const_int 36))))
2525     (set (match_operand:SI 11 "nios2_hard_register_operand" "")
2526          (mem:SI (plus:SI (match_dup 13) (const_int 40))))
2527     (set (match_operand:SI 12 "nios2_hard_register_operand" "")
2528          (mem:SI (plus:SI (match_dup 13) (const_int 44))))])]
2529   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 12"
2530   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12}, (%13)++"
2531  [(set_attr "type" "ldwm")])
2532
2533(define_insn "*cdx_ldwm12_dec_wb_ret"
2534  [(match_parallel 0 "ldwm_operation"
2535    [(return)
2536     (set (match_operand:SI 13 "register_operand" "+&r")
2537          (plus:SI (match_dup 13) (const_int -48)))
2538     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
2539          (mem:SI (plus:SI (match_dup 13) (const_int -4))))
2540     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
2541          (mem:SI (plus:SI (match_dup 13) (const_int -8))))
2542     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
2543          (mem:SI (plus:SI (match_dup 13) (const_int -12))))
2544     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
2545          (mem:SI (plus:SI (match_dup 13) (const_int -16))))
2546     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
2547          (mem:SI (plus:SI (match_dup 13) (const_int -20))))
2548     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
2549          (mem:SI (plus:SI (match_dup 13) (const_int -24))))
2550     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
2551          (mem:SI (plus:SI (match_dup 13) (const_int -28))))
2552     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
2553          (mem:SI (plus:SI (match_dup 13) (const_int -32))))
2554     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
2555          (mem:SI (plus:SI (match_dup 13) (const_int -36))))
2556     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
2557          (mem:SI (plus:SI (match_dup 13) (const_int -40))))
2558     (set (match_operand:SI 11 "nios2_hard_register_operand" "")
2559          (mem:SI (plus:SI (match_dup 13) (const_int -44))))
2560     (set (match_operand:SI 12 "nios2_hard_register_operand" "")
2561          (mem:SI (plus:SI (match_dup 13) (const_int -48))))])]
2562   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 14"
2563   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12}, --(%13), writeback, ret"
2564  [(set_attr "type" "ldwm")])
2565
2566(define_insn "*cdx_ldwm12_dec_wb"
2567  [(match_parallel 0 "ldwm_operation"
2568    [(set (match_operand:SI 13 "register_operand" "+&r")
2569          (plus:SI (match_dup 13) (const_int -48)))
2570     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
2571          (mem:SI (plus:SI (match_dup 13) (const_int -4))))
2572     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
2573          (mem:SI (plus:SI (match_dup 13) (const_int -8))))
2574     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
2575          (mem:SI (plus:SI (match_dup 13) (const_int -12))))
2576     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
2577          (mem:SI (plus:SI (match_dup 13) (const_int -16))))
2578     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
2579          (mem:SI (plus:SI (match_dup 13) (const_int -20))))
2580     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
2581          (mem:SI (plus:SI (match_dup 13) (const_int -24))))
2582     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
2583          (mem:SI (plus:SI (match_dup 13) (const_int -28))))
2584     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
2585          (mem:SI (plus:SI (match_dup 13) (const_int -32))))
2586     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
2587          (mem:SI (plus:SI (match_dup 13) (const_int -36))))
2588     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
2589          (mem:SI (plus:SI (match_dup 13) (const_int -40))))
2590     (set (match_operand:SI 11 "nios2_hard_register_operand" "")
2591          (mem:SI (plus:SI (match_dup 13) (const_int -44))))
2592     (set (match_operand:SI 12 "nios2_hard_register_operand" "")
2593          (mem:SI (plus:SI (match_dup 13) (const_int -48))))])]
2594   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 13"
2595   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12}, --(%13), writeback"
2596  [(set_attr "type" "ldwm")])
2597
2598(define_insn "*cdx_ldwm12_dec_ret"
2599  [(match_parallel 0 "ldwm_operation"
2600    [(return)
2601     (set (match_operand:SI 1 "nios2_hard_register_operand" "")
2602          (mem:SI (plus:SI (match_operand:SI 13 "register_operand" "r") (const_int -4))))
2603     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
2604          (mem:SI (plus:SI (match_dup 13) (const_int -8))))
2605     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
2606          (mem:SI (plus:SI (match_dup 13) (const_int -12))))
2607     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
2608          (mem:SI (plus:SI (match_dup 13) (const_int -16))))
2609     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
2610          (mem:SI (plus:SI (match_dup 13) (const_int -20))))
2611     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
2612          (mem:SI (plus:SI (match_dup 13) (const_int -24))))
2613     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
2614          (mem:SI (plus:SI (match_dup 13) (const_int -28))))
2615     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
2616          (mem:SI (plus:SI (match_dup 13) (const_int -32))))
2617     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
2618          (mem:SI (plus:SI (match_dup 13) (const_int -36))))
2619     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
2620          (mem:SI (plus:SI (match_dup 13) (const_int -40))))
2621     (set (match_operand:SI 11 "nios2_hard_register_operand" "")
2622          (mem:SI (plus:SI (match_dup 13) (const_int -44))))
2623     (set (match_operand:SI 12 "nios2_hard_register_operand" "")
2624          (mem:SI (plus:SI (match_dup 13) (const_int -48))))])]
2625   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 13"
2626   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12}, --(%13), ret"
2627  [(set_attr "type" "ldwm")])
2628
2629(define_insn "*cdx_ldwm12_dec"
2630  [(match_parallel 0 "ldwm_operation"
2631    [(set (match_operand:SI 1 "nios2_hard_register_operand" "")
2632          (mem:SI (plus:SI (match_operand:SI 13 "register_operand" "r") (const_int -4))))
2633     (set (match_operand:SI 2 "nios2_hard_register_operand" "")
2634          (mem:SI (plus:SI (match_dup 13) (const_int -8))))
2635     (set (match_operand:SI 3 "nios2_hard_register_operand" "")
2636          (mem:SI (plus:SI (match_dup 13) (const_int -12))))
2637     (set (match_operand:SI 4 "nios2_hard_register_operand" "")
2638          (mem:SI (plus:SI (match_dup 13) (const_int -16))))
2639     (set (match_operand:SI 5 "nios2_hard_register_operand" "")
2640          (mem:SI (plus:SI (match_dup 13) (const_int -20))))
2641     (set (match_operand:SI 6 "nios2_hard_register_operand" "")
2642          (mem:SI (plus:SI (match_dup 13) (const_int -24))))
2643     (set (match_operand:SI 7 "nios2_hard_register_operand" "")
2644          (mem:SI (plus:SI (match_dup 13) (const_int -28))))
2645     (set (match_operand:SI 8 "nios2_hard_register_operand" "")
2646          (mem:SI (plus:SI (match_dup 13) (const_int -32))))
2647     (set (match_operand:SI 9 "nios2_hard_register_operand" "")
2648          (mem:SI (plus:SI (match_dup 13) (const_int -36))))
2649     (set (match_operand:SI 10 "nios2_hard_register_operand" "")
2650          (mem:SI (plus:SI (match_dup 13) (const_int -40))))
2651     (set (match_operand:SI 11 "nios2_hard_register_operand" "")
2652          (mem:SI (plus:SI (match_dup 13) (const_int -44))))
2653     (set (match_operand:SI 12 "nios2_hard_register_operand" "")
2654          (mem:SI (plus:SI (match_dup 13) (const_int -48))))])]
2655   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 12"
2656   "ldwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12}, --(%13)"
2657  [(set_attr "type" "ldwm")])
2658
2659(define_insn "*cdx_stwm1_inc_wb"
2660  [(match_parallel 0 "stwm_operation"
2661    [(set (match_operand:SI 2 "register_operand" "+&r")
2662          (plus:SI (match_dup 2) (const_int 4)))
2663     (set (mem:SI (match_dup 2))
2664          (match_operand:SI 1 "nios2_hard_register_operand" ""))])]
2665   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 2"
2666   "stwm\\t{%1}, (%2)++, writeback"
2667  [(set_attr "type" "stwm")])
2668
2669(define_insn "*cdx_stwm1_inc"
2670  [(match_parallel 0 "stwm_operation"
2671    [(set (mem:SI (match_operand:SI 2 "register_operand" "r"))
2672          (match_operand:SI 1 "nios2_hard_register_operand" ""))])]
2673   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 1"
2674   "stwm\\t{%1}, (%2)++"
2675  [(set_attr "type" "stwm")])
2676
2677(define_insn "*cdx_stwm1_dec_wb"
2678  [(match_parallel 0 "stwm_operation"
2679    [(set (match_operand:SI 2 "register_operand" "+&r")
2680          (plus:SI (match_dup 2) (const_int -4)))
2681     (set (mem:SI (plus:SI (match_dup 2) (const_int -4)))
2682          (match_operand:SI 1 "nios2_hard_register_operand" ""))])]
2683   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 2"
2684   "stwm\\t{%1}, --(%2), writeback"
2685  [(set_attr "type" "stwm")])
2686
2687(define_insn "*cdx_stwm1_dec"
2688  [(match_parallel 0 "stwm_operation"
2689    [(set (mem:SI (plus:SI (match_operand:SI 2 "register_operand" "r") (const_int -4)))
2690          (match_operand:SI 1 "nios2_hard_register_operand" ""))])]
2691   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 1"
2692   "stwm\\t{%1}, --(%2)"
2693  [(set_attr "type" "stwm")])
2694
2695(define_insn "*cdx_stwm2_inc_wb"
2696  [(match_parallel 0 "stwm_operation"
2697    [(set (match_operand:SI 3 "register_operand" "+&r")
2698          (plus:SI (match_dup 3) (const_int 8)))
2699     (set (mem:SI (match_dup 3))
2700          (match_operand:SI 1 "nios2_hard_register_operand" ""))
2701     (set (mem:SI (plus:SI (match_dup 3) (const_int 4)))
2702          (match_operand:SI 2 "nios2_hard_register_operand" ""))])]
2703   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 3"
2704   "stwm\\t{%1, %2}, (%3)++, writeback"
2705  [(set_attr "type" "stwm")])
2706
2707(define_insn "*cdx_stwm2_inc"
2708  [(match_parallel 0 "stwm_operation"
2709    [(set (mem:SI (match_operand:SI 3 "register_operand" "r"))
2710          (match_operand:SI 1 "nios2_hard_register_operand" ""))
2711     (set (mem:SI (plus:SI (match_dup 3) (const_int 4)))
2712          (match_operand:SI 2 "nios2_hard_register_operand" ""))])]
2713   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 2"
2714   "stwm\\t{%1, %2}, (%3)++"
2715  [(set_attr "type" "stwm")])
2716
2717(define_insn "*cdx_stwm2_dec_wb"
2718  [(match_parallel 0 "stwm_operation"
2719    [(set (match_operand:SI 3 "register_operand" "+&r")
2720          (plus:SI (match_dup 3) (const_int -8)))
2721     (set (mem:SI (plus:SI (match_dup 3) (const_int -4)))
2722          (match_operand:SI 1 "nios2_hard_register_operand" ""))
2723     (set (mem:SI (plus:SI (match_dup 3) (const_int -8)))
2724          (match_operand:SI 2 "nios2_hard_register_operand" ""))])]
2725   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 3"
2726   "stwm\\t{%1, %2}, --(%3), writeback"
2727  [(set_attr "type" "stwm")])
2728
2729(define_insn "*cdx_stwm2_dec"
2730  [(match_parallel 0 "stwm_operation"
2731    [(set (mem:SI (plus:SI (match_operand:SI 3 "register_operand" "r") (const_int -4)))
2732          (match_operand:SI 1 "nios2_hard_register_operand" ""))
2733     (set (mem:SI (plus:SI (match_dup 3) (const_int -8)))
2734          (match_operand:SI 2 "nios2_hard_register_operand" ""))])]
2735   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 2"
2736   "stwm\\t{%1, %2}, --(%3)"
2737  [(set_attr "type" "stwm")])
2738
2739(define_insn "*cdx_stwm3_inc_wb"
2740  [(match_parallel 0 "stwm_operation"
2741    [(set (match_operand:SI 4 "register_operand" "+&r")
2742          (plus:SI (match_dup 4) (const_int 12)))
2743     (set (mem:SI (match_dup 4))
2744          (match_operand:SI 1 "nios2_hard_register_operand" ""))
2745     (set (mem:SI (plus:SI (match_dup 4) (const_int 4)))
2746          (match_operand:SI 2 "nios2_hard_register_operand" ""))
2747     (set (mem:SI (plus:SI (match_dup 4) (const_int 8)))
2748          (match_operand:SI 3 "nios2_hard_register_operand" ""))])]
2749   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 4"
2750   "stwm\\t{%1, %2, %3}, (%4)++, writeback"
2751  [(set_attr "type" "stwm")])
2752
2753(define_insn "*cdx_stwm3_inc"
2754  [(match_parallel 0 "stwm_operation"
2755    [(set (mem:SI (match_operand:SI 4 "register_operand" "r"))
2756          (match_operand:SI 1 "nios2_hard_register_operand" ""))
2757     (set (mem:SI (plus:SI (match_dup 4) (const_int 4)))
2758          (match_operand:SI 2 "nios2_hard_register_operand" ""))
2759     (set (mem:SI (plus:SI (match_dup 4) (const_int 8)))
2760          (match_operand:SI 3 "nios2_hard_register_operand" ""))])]
2761   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 3"
2762   "stwm\\t{%1, %2, %3}, (%4)++"
2763  [(set_attr "type" "stwm")])
2764
2765(define_insn "*cdx_stwm3_dec_wb"
2766  [(match_parallel 0 "stwm_operation"
2767    [(set (match_operand:SI 4 "register_operand" "+&r")
2768          (plus:SI (match_dup 4) (const_int -12)))
2769     (set (mem:SI (plus:SI (match_dup 4) (const_int -4)))
2770          (match_operand:SI 1 "nios2_hard_register_operand" ""))
2771     (set (mem:SI (plus:SI (match_dup 4) (const_int -8)))
2772          (match_operand:SI 2 "nios2_hard_register_operand" ""))
2773     (set (mem:SI (plus:SI (match_dup 4) (const_int -12)))
2774          (match_operand:SI 3 "nios2_hard_register_operand" ""))])]
2775   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 4"
2776   "stwm\\t{%1, %2, %3}, --(%4), writeback"
2777  [(set_attr "type" "stwm")])
2778
2779(define_insn "*cdx_stwm3_dec"
2780  [(match_parallel 0 "stwm_operation"
2781    [(set (mem:SI (plus:SI (match_operand:SI 4 "register_operand" "r") (const_int -4)))
2782          (match_operand:SI 1 "nios2_hard_register_operand" ""))
2783     (set (mem:SI (plus:SI (match_dup 4) (const_int -8)))
2784          (match_operand:SI 2 "nios2_hard_register_operand" ""))
2785     (set (mem:SI (plus:SI (match_dup 4) (const_int -12)))
2786          (match_operand:SI 3 "nios2_hard_register_operand" ""))])]
2787   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 3"
2788   "stwm\\t{%1, %2, %3}, --(%4)"
2789  [(set_attr "type" "stwm")])
2790
2791(define_insn "*cdx_stwm4_inc_wb"
2792  [(match_parallel 0 "stwm_operation"
2793    [(set (match_operand:SI 5 "register_operand" "+&r")
2794          (plus:SI (match_dup 5) (const_int 16)))
2795     (set (mem:SI (match_dup 5))
2796          (match_operand:SI 1 "nios2_hard_register_operand" ""))
2797     (set (mem:SI (plus:SI (match_dup 5) (const_int 4)))
2798          (match_operand:SI 2 "nios2_hard_register_operand" ""))
2799     (set (mem:SI (plus:SI (match_dup 5) (const_int 8)))
2800          (match_operand:SI 3 "nios2_hard_register_operand" ""))
2801     (set (mem:SI (plus:SI (match_dup 5) (const_int 12)))
2802          (match_operand:SI 4 "nios2_hard_register_operand" ""))])]
2803   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 5"
2804   "stwm\\t{%1, %2, %3, %4}, (%5)++, writeback"
2805  [(set_attr "type" "stwm")])
2806
2807(define_insn "*cdx_stwm4_inc"
2808  [(match_parallel 0 "stwm_operation"
2809    [(set (mem:SI (match_operand:SI 5 "register_operand" "r"))
2810          (match_operand:SI 1 "nios2_hard_register_operand" ""))
2811     (set (mem:SI (plus:SI (match_dup 5) (const_int 4)))
2812          (match_operand:SI 2 "nios2_hard_register_operand" ""))
2813     (set (mem:SI (plus:SI (match_dup 5) (const_int 8)))
2814          (match_operand:SI 3 "nios2_hard_register_operand" ""))
2815     (set (mem:SI (plus:SI (match_dup 5) (const_int 12)))
2816          (match_operand:SI 4 "nios2_hard_register_operand" ""))])]
2817   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 4"
2818   "stwm\\t{%1, %2, %3, %4}, (%5)++"
2819  [(set_attr "type" "stwm")])
2820
2821(define_insn "*cdx_stwm4_dec_wb"
2822  [(match_parallel 0 "stwm_operation"
2823    [(set (match_operand:SI 5 "register_operand" "+&r")
2824          (plus:SI (match_dup 5) (const_int -16)))
2825     (set (mem:SI (plus:SI (match_dup 5) (const_int -4)))
2826          (match_operand:SI 1 "nios2_hard_register_operand" ""))
2827     (set (mem:SI (plus:SI (match_dup 5) (const_int -8)))
2828          (match_operand:SI 2 "nios2_hard_register_operand" ""))
2829     (set (mem:SI (plus:SI (match_dup 5) (const_int -12)))
2830          (match_operand:SI 3 "nios2_hard_register_operand" ""))
2831     (set (mem:SI (plus:SI (match_dup 5) (const_int -16)))
2832          (match_operand:SI 4 "nios2_hard_register_operand" ""))])]
2833   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 5"
2834   "stwm\\t{%1, %2, %3, %4}, --(%5), writeback"
2835  [(set_attr "type" "stwm")])
2836
2837(define_insn "*cdx_stwm4_dec"
2838  [(match_parallel 0 "stwm_operation"
2839    [(set (mem:SI (plus:SI (match_operand:SI 5 "register_operand" "r") (const_int -4)))
2840          (match_operand:SI 1 "nios2_hard_register_operand" ""))
2841     (set (mem:SI (plus:SI (match_dup 5) (const_int -8)))
2842          (match_operand:SI 2 "nios2_hard_register_operand" ""))
2843     (set (mem:SI (plus:SI (match_dup 5) (const_int -12)))
2844          (match_operand:SI 3 "nios2_hard_register_operand" ""))
2845     (set (mem:SI (plus:SI (match_dup 5) (const_int -16)))
2846          (match_operand:SI 4 "nios2_hard_register_operand" ""))])]
2847   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 4"
2848   "stwm\\t{%1, %2, %3, %4}, --(%5)"
2849  [(set_attr "type" "stwm")])
2850
2851(define_insn "*cdx_stwm5_inc_wb"
2852  [(match_parallel 0 "stwm_operation"
2853    [(set (match_operand:SI 6 "register_operand" "+&r")
2854          (plus:SI (match_dup 6) (const_int 20)))
2855     (set (mem:SI (match_dup 6))
2856          (match_operand:SI 1 "nios2_hard_register_operand" ""))
2857     (set (mem:SI (plus:SI (match_dup 6) (const_int 4)))
2858          (match_operand:SI 2 "nios2_hard_register_operand" ""))
2859     (set (mem:SI (plus:SI (match_dup 6) (const_int 8)))
2860          (match_operand:SI 3 "nios2_hard_register_operand" ""))
2861     (set (mem:SI (plus:SI (match_dup 6) (const_int 12)))
2862          (match_operand:SI 4 "nios2_hard_register_operand" ""))
2863     (set (mem:SI (plus:SI (match_dup 6) (const_int 16)))
2864          (match_operand:SI 5 "nios2_hard_register_operand" ""))])]
2865   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 6"
2866   "stwm\\t{%1, %2, %3, %4, %5}, (%6)++, writeback"
2867  [(set_attr "type" "stwm")])
2868
2869(define_insn "*cdx_stwm5_inc"
2870  [(match_parallel 0 "stwm_operation"
2871    [(set (mem:SI (match_operand:SI 6 "register_operand" "r"))
2872          (match_operand:SI 1 "nios2_hard_register_operand" ""))
2873     (set (mem:SI (plus:SI (match_dup 6) (const_int 4)))
2874          (match_operand:SI 2 "nios2_hard_register_operand" ""))
2875     (set (mem:SI (plus:SI (match_dup 6) (const_int 8)))
2876          (match_operand:SI 3 "nios2_hard_register_operand" ""))
2877     (set (mem:SI (plus:SI (match_dup 6) (const_int 12)))
2878          (match_operand:SI 4 "nios2_hard_register_operand" ""))
2879     (set (mem:SI (plus:SI (match_dup 6) (const_int 16)))
2880          (match_operand:SI 5 "nios2_hard_register_operand" ""))])]
2881   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 5"
2882   "stwm\\t{%1, %2, %3, %4, %5}, (%6)++"
2883  [(set_attr "type" "stwm")])
2884
2885(define_insn "*cdx_stwm5_dec_wb"
2886  [(match_parallel 0 "stwm_operation"
2887    [(set (match_operand:SI 6 "register_operand" "+&r")
2888          (plus:SI (match_dup 6) (const_int -20)))
2889     (set (mem:SI (plus:SI (match_dup 6) (const_int -4)))
2890          (match_operand:SI 1 "nios2_hard_register_operand" ""))
2891     (set (mem:SI (plus:SI (match_dup 6) (const_int -8)))
2892          (match_operand:SI 2 "nios2_hard_register_operand" ""))
2893     (set (mem:SI (plus:SI (match_dup 6) (const_int -12)))
2894          (match_operand:SI 3 "nios2_hard_register_operand" ""))
2895     (set (mem:SI (plus:SI (match_dup 6) (const_int -16)))
2896          (match_operand:SI 4 "nios2_hard_register_operand" ""))
2897     (set (mem:SI (plus:SI (match_dup 6) (const_int -20)))
2898          (match_operand:SI 5 "nios2_hard_register_operand" ""))])]
2899   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 6"
2900   "stwm\\t{%1, %2, %3, %4, %5}, --(%6), writeback"
2901  [(set_attr "type" "stwm")])
2902
2903(define_insn "*cdx_stwm5_dec"
2904  [(match_parallel 0 "stwm_operation"
2905    [(set (mem:SI (plus:SI (match_operand:SI 6 "register_operand" "r") (const_int -4)))
2906          (match_operand:SI 1 "nios2_hard_register_operand" ""))
2907     (set (mem:SI (plus:SI (match_dup 6) (const_int -8)))
2908          (match_operand:SI 2 "nios2_hard_register_operand" ""))
2909     (set (mem:SI (plus:SI (match_dup 6) (const_int -12)))
2910          (match_operand:SI 3 "nios2_hard_register_operand" ""))
2911     (set (mem:SI (plus:SI (match_dup 6) (const_int -16)))
2912          (match_operand:SI 4 "nios2_hard_register_operand" ""))
2913     (set (mem:SI (plus:SI (match_dup 6) (const_int -20)))
2914          (match_operand:SI 5 "nios2_hard_register_operand" ""))])]
2915   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 5"
2916   "stwm\\t{%1, %2, %3, %4, %5}, --(%6)"
2917  [(set_attr "type" "stwm")])
2918
2919(define_insn "*cdx_stwm6_inc_wb"
2920  [(match_parallel 0 "stwm_operation"
2921    [(set (match_operand:SI 7 "register_operand" "+&r")
2922          (plus:SI (match_dup 7) (const_int 24)))
2923     (set (mem:SI (match_dup 7))
2924          (match_operand:SI 1 "nios2_hard_register_operand" ""))
2925     (set (mem:SI (plus:SI (match_dup 7) (const_int 4)))
2926          (match_operand:SI 2 "nios2_hard_register_operand" ""))
2927     (set (mem:SI (plus:SI (match_dup 7) (const_int 8)))
2928          (match_operand:SI 3 "nios2_hard_register_operand" ""))
2929     (set (mem:SI (plus:SI (match_dup 7) (const_int 12)))
2930          (match_operand:SI 4 "nios2_hard_register_operand" ""))
2931     (set (mem:SI (plus:SI (match_dup 7) (const_int 16)))
2932          (match_operand:SI 5 "nios2_hard_register_operand" ""))
2933     (set (mem:SI (plus:SI (match_dup 7) (const_int 20)))
2934          (match_operand:SI 6 "nios2_hard_register_operand" ""))])]
2935   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 7"
2936   "stwm\\t{%1, %2, %3, %4, %5, %6}, (%7)++, writeback"
2937  [(set_attr "type" "stwm")])
2938
2939(define_insn "*cdx_stwm6_inc"
2940  [(match_parallel 0 "stwm_operation"
2941    [(set (mem:SI (match_operand:SI 7 "register_operand" "r"))
2942          (match_operand:SI 1 "nios2_hard_register_operand" ""))
2943     (set (mem:SI (plus:SI (match_dup 7) (const_int 4)))
2944          (match_operand:SI 2 "nios2_hard_register_operand" ""))
2945     (set (mem:SI (plus:SI (match_dup 7) (const_int 8)))
2946          (match_operand:SI 3 "nios2_hard_register_operand" ""))
2947     (set (mem:SI (plus:SI (match_dup 7) (const_int 12)))
2948          (match_operand:SI 4 "nios2_hard_register_operand" ""))
2949     (set (mem:SI (plus:SI (match_dup 7) (const_int 16)))
2950          (match_operand:SI 5 "nios2_hard_register_operand" ""))
2951     (set (mem:SI (plus:SI (match_dup 7) (const_int 20)))
2952          (match_operand:SI 6 "nios2_hard_register_operand" ""))])]
2953   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 6"
2954   "stwm\\t{%1, %2, %3, %4, %5, %6}, (%7)++"
2955  [(set_attr "type" "stwm")])
2956
2957(define_insn "*cdx_stwm6_dec_wb"
2958  [(match_parallel 0 "stwm_operation"
2959    [(set (match_operand:SI 7 "register_operand" "+&r")
2960          (plus:SI (match_dup 7) (const_int -24)))
2961     (set (mem:SI (plus:SI (match_dup 7) (const_int -4)))
2962          (match_operand:SI 1 "nios2_hard_register_operand" ""))
2963     (set (mem:SI (plus:SI (match_dup 7) (const_int -8)))
2964          (match_operand:SI 2 "nios2_hard_register_operand" ""))
2965     (set (mem:SI (plus:SI (match_dup 7) (const_int -12)))
2966          (match_operand:SI 3 "nios2_hard_register_operand" ""))
2967     (set (mem:SI (plus:SI (match_dup 7) (const_int -16)))
2968          (match_operand:SI 4 "nios2_hard_register_operand" ""))
2969     (set (mem:SI (plus:SI (match_dup 7) (const_int -20)))
2970          (match_operand:SI 5 "nios2_hard_register_operand" ""))
2971     (set (mem:SI (plus:SI (match_dup 7) (const_int -24)))
2972          (match_operand:SI 6 "nios2_hard_register_operand" ""))])]
2973   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 7"
2974   "stwm\\t{%1, %2, %3, %4, %5, %6}, --(%7), writeback"
2975  [(set_attr "type" "stwm")])
2976
2977(define_insn "*cdx_stwm6_dec"
2978  [(match_parallel 0 "stwm_operation"
2979    [(set (mem:SI (plus:SI (match_operand:SI 7 "register_operand" "r") (const_int -4)))
2980          (match_operand:SI 1 "nios2_hard_register_operand" ""))
2981     (set (mem:SI (plus:SI (match_dup 7) (const_int -8)))
2982          (match_operand:SI 2 "nios2_hard_register_operand" ""))
2983     (set (mem:SI (plus:SI (match_dup 7) (const_int -12)))
2984          (match_operand:SI 3 "nios2_hard_register_operand" ""))
2985     (set (mem:SI (plus:SI (match_dup 7) (const_int -16)))
2986          (match_operand:SI 4 "nios2_hard_register_operand" ""))
2987     (set (mem:SI (plus:SI (match_dup 7) (const_int -20)))
2988          (match_operand:SI 5 "nios2_hard_register_operand" ""))
2989     (set (mem:SI (plus:SI (match_dup 7) (const_int -24)))
2990          (match_operand:SI 6 "nios2_hard_register_operand" ""))])]
2991   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 6"
2992   "stwm\\t{%1, %2, %3, %4, %5, %6}, --(%7)"
2993  [(set_attr "type" "stwm")])
2994
2995(define_insn "*cdx_stwm7_inc_wb"
2996  [(match_parallel 0 "stwm_operation"
2997    [(set (match_operand:SI 8 "register_operand" "+&r")
2998          (plus:SI (match_dup 8) (const_int 28)))
2999     (set (mem:SI (match_dup 8))
3000          (match_operand:SI 1 "nios2_hard_register_operand" ""))
3001     (set (mem:SI (plus:SI (match_dup 8) (const_int 4)))
3002          (match_operand:SI 2 "nios2_hard_register_operand" ""))
3003     (set (mem:SI (plus:SI (match_dup 8) (const_int 8)))
3004          (match_operand:SI 3 "nios2_hard_register_operand" ""))
3005     (set (mem:SI (plus:SI (match_dup 8) (const_int 12)))
3006          (match_operand:SI 4 "nios2_hard_register_operand" ""))
3007     (set (mem:SI (plus:SI (match_dup 8) (const_int 16)))
3008          (match_operand:SI 5 "nios2_hard_register_operand" ""))
3009     (set (mem:SI (plus:SI (match_dup 8) (const_int 20)))
3010          (match_operand:SI 6 "nios2_hard_register_operand" ""))
3011     (set (mem:SI (plus:SI (match_dup 8) (const_int 24)))
3012          (match_operand:SI 7 "nios2_hard_register_operand" ""))])]
3013   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 8"
3014   "stwm\\t{%1, %2, %3, %4, %5, %6, %7}, (%8)++, writeback"
3015  [(set_attr "type" "stwm")])
3016
3017(define_insn "*cdx_stwm7_inc"
3018  [(match_parallel 0 "stwm_operation"
3019    [(set (mem:SI (match_operand:SI 8 "register_operand" "r"))
3020          (match_operand:SI 1 "nios2_hard_register_operand" ""))
3021     (set (mem:SI (plus:SI (match_dup 8) (const_int 4)))
3022          (match_operand:SI 2 "nios2_hard_register_operand" ""))
3023     (set (mem:SI (plus:SI (match_dup 8) (const_int 8)))
3024          (match_operand:SI 3 "nios2_hard_register_operand" ""))
3025     (set (mem:SI (plus:SI (match_dup 8) (const_int 12)))
3026          (match_operand:SI 4 "nios2_hard_register_operand" ""))
3027     (set (mem:SI (plus:SI (match_dup 8) (const_int 16)))
3028          (match_operand:SI 5 "nios2_hard_register_operand" ""))
3029     (set (mem:SI (plus:SI (match_dup 8) (const_int 20)))
3030          (match_operand:SI 6 "nios2_hard_register_operand" ""))
3031     (set (mem:SI (plus:SI (match_dup 8) (const_int 24)))
3032          (match_operand:SI 7 "nios2_hard_register_operand" ""))])]
3033   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 7"
3034   "stwm\\t{%1, %2, %3, %4, %5, %6, %7}, (%8)++"
3035  [(set_attr "type" "stwm")])
3036
3037(define_insn "*cdx_stwm7_dec_wb"
3038  [(match_parallel 0 "stwm_operation"
3039    [(set (match_operand:SI 8 "register_operand" "+&r")
3040          (plus:SI (match_dup 8) (const_int -28)))
3041     (set (mem:SI (plus:SI (match_dup 8) (const_int -4)))
3042          (match_operand:SI 1 "nios2_hard_register_operand" ""))
3043     (set (mem:SI (plus:SI (match_dup 8) (const_int -8)))
3044          (match_operand:SI 2 "nios2_hard_register_operand" ""))
3045     (set (mem:SI (plus:SI (match_dup 8) (const_int -12)))
3046          (match_operand:SI 3 "nios2_hard_register_operand" ""))
3047     (set (mem:SI (plus:SI (match_dup 8) (const_int -16)))
3048          (match_operand:SI 4 "nios2_hard_register_operand" ""))
3049     (set (mem:SI (plus:SI (match_dup 8) (const_int -20)))
3050          (match_operand:SI 5 "nios2_hard_register_operand" ""))
3051     (set (mem:SI (plus:SI (match_dup 8) (const_int -24)))
3052          (match_operand:SI 6 "nios2_hard_register_operand" ""))
3053     (set (mem:SI (plus:SI (match_dup 8) (const_int -28)))
3054          (match_operand:SI 7 "nios2_hard_register_operand" ""))])]
3055   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 8"
3056   "stwm\\t{%1, %2, %3, %4, %5, %6, %7}, --(%8), writeback"
3057  [(set_attr "type" "stwm")])
3058
3059(define_insn "*cdx_stwm7_dec"
3060  [(match_parallel 0 "stwm_operation"
3061    [(set (mem:SI (plus:SI (match_operand:SI 8 "register_operand" "r") (const_int -4)))
3062          (match_operand:SI 1 "nios2_hard_register_operand" ""))
3063     (set (mem:SI (plus:SI (match_dup 8) (const_int -8)))
3064          (match_operand:SI 2 "nios2_hard_register_operand" ""))
3065     (set (mem:SI (plus:SI (match_dup 8) (const_int -12)))
3066          (match_operand:SI 3 "nios2_hard_register_operand" ""))
3067     (set (mem:SI (plus:SI (match_dup 8) (const_int -16)))
3068          (match_operand:SI 4 "nios2_hard_register_operand" ""))
3069     (set (mem:SI (plus:SI (match_dup 8) (const_int -20)))
3070          (match_operand:SI 5 "nios2_hard_register_operand" ""))
3071     (set (mem:SI (plus:SI (match_dup 8) (const_int -24)))
3072          (match_operand:SI 6 "nios2_hard_register_operand" ""))
3073     (set (mem:SI (plus:SI (match_dup 8) (const_int -28)))
3074          (match_operand:SI 7 "nios2_hard_register_operand" ""))])]
3075   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 7"
3076   "stwm\\t{%1, %2, %3, %4, %5, %6, %7}, --(%8)"
3077  [(set_attr "type" "stwm")])
3078
3079(define_insn "*cdx_stwm8_inc_wb"
3080  [(match_parallel 0 "stwm_operation"
3081    [(set (match_operand:SI 9 "register_operand" "+&r")
3082          (plus:SI (match_dup 9) (const_int 32)))
3083     (set (mem:SI (match_dup 9))
3084          (match_operand:SI 1 "nios2_hard_register_operand" ""))
3085     (set (mem:SI (plus:SI (match_dup 9) (const_int 4)))
3086          (match_operand:SI 2 "nios2_hard_register_operand" ""))
3087     (set (mem:SI (plus:SI (match_dup 9) (const_int 8)))
3088          (match_operand:SI 3 "nios2_hard_register_operand" ""))
3089     (set (mem:SI (plus:SI (match_dup 9) (const_int 12)))
3090          (match_operand:SI 4 "nios2_hard_register_operand" ""))
3091     (set (mem:SI (plus:SI (match_dup 9) (const_int 16)))
3092          (match_operand:SI 5 "nios2_hard_register_operand" ""))
3093     (set (mem:SI (plus:SI (match_dup 9) (const_int 20)))
3094          (match_operand:SI 6 "nios2_hard_register_operand" ""))
3095     (set (mem:SI (plus:SI (match_dup 9) (const_int 24)))
3096          (match_operand:SI 7 "nios2_hard_register_operand" ""))
3097     (set (mem:SI (plus:SI (match_dup 9) (const_int 28)))
3098          (match_operand:SI 8 "nios2_hard_register_operand" ""))])]
3099   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 9"
3100   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8}, (%9)++, writeback"
3101  [(set_attr "type" "stwm")])
3102
3103(define_insn "*cdx_stwm8_inc"
3104  [(match_parallel 0 "stwm_operation"
3105    [(set (mem:SI (match_operand:SI 9 "register_operand" "r"))
3106          (match_operand:SI 1 "nios2_hard_register_operand" ""))
3107     (set (mem:SI (plus:SI (match_dup 9) (const_int 4)))
3108          (match_operand:SI 2 "nios2_hard_register_operand" ""))
3109     (set (mem:SI (plus:SI (match_dup 9) (const_int 8)))
3110          (match_operand:SI 3 "nios2_hard_register_operand" ""))
3111     (set (mem:SI (plus:SI (match_dup 9) (const_int 12)))
3112          (match_operand:SI 4 "nios2_hard_register_operand" ""))
3113     (set (mem:SI (plus:SI (match_dup 9) (const_int 16)))
3114          (match_operand:SI 5 "nios2_hard_register_operand" ""))
3115     (set (mem:SI (plus:SI (match_dup 9) (const_int 20)))
3116          (match_operand:SI 6 "nios2_hard_register_operand" ""))
3117     (set (mem:SI (plus:SI (match_dup 9) (const_int 24)))
3118          (match_operand:SI 7 "nios2_hard_register_operand" ""))
3119     (set (mem:SI (plus:SI (match_dup 9) (const_int 28)))
3120          (match_operand:SI 8 "nios2_hard_register_operand" ""))])]
3121   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 8"
3122   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8}, (%9)++"
3123  [(set_attr "type" "stwm")])
3124
3125(define_insn "*cdx_stwm8_dec_wb"
3126  [(match_parallel 0 "stwm_operation"
3127    [(set (match_operand:SI 9 "register_operand" "+&r")
3128          (plus:SI (match_dup 9) (const_int -32)))
3129     (set (mem:SI (plus:SI (match_dup 9) (const_int -4)))
3130          (match_operand:SI 1 "nios2_hard_register_operand" ""))
3131     (set (mem:SI (plus:SI (match_dup 9) (const_int -8)))
3132          (match_operand:SI 2 "nios2_hard_register_operand" ""))
3133     (set (mem:SI (plus:SI (match_dup 9) (const_int -12)))
3134          (match_operand:SI 3 "nios2_hard_register_operand" ""))
3135     (set (mem:SI (plus:SI (match_dup 9) (const_int -16)))
3136          (match_operand:SI 4 "nios2_hard_register_operand" ""))
3137     (set (mem:SI (plus:SI (match_dup 9) (const_int -20)))
3138          (match_operand:SI 5 "nios2_hard_register_operand" ""))
3139     (set (mem:SI (plus:SI (match_dup 9) (const_int -24)))
3140          (match_operand:SI 6 "nios2_hard_register_operand" ""))
3141     (set (mem:SI (plus:SI (match_dup 9) (const_int -28)))
3142          (match_operand:SI 7 "nios2_hard_register_operand" ""))
3143     (set (mem:SI (plus:SI (match_dup 9) (const_int -32)))
3144          (match_operand:SI 8 "nios2_hard_register_operand" ""))])]
3145   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 9"
3146   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8}, --(%9), writeback"
3147  [(set_attr "type" "stwm")])
3148
3149(define_insn "*cdx_stwm8_dec"
3150  [(match_parallel 0 "stwm_operation"
3151    [(set (mem:SI (plus:SI (match_operand:SI 9 "register_operand" "r") (const_int -4)))
3152          (match_operand:SI 1 "nios2_hard_register_operand" ""))
3153     (set (mem:SI (plus:SI (match_dup 9) (const_int -8)))
3154          (match_operand:SI 2 "nios2_hard_register_operand" ""))
3155     (set (mem:SI (plus:SI (match_dup 9) (const_int -12)))
3156          (match_operand:SI 3 "nios2_hard_register_operand" ""))
3157     (set (mem:SI (plus:SI (match_dup 9) (const_int -16)))
3158          (match_operand:SI 4 "nios2_hard_register_operand" ""))
3159     (set (mem:SI (plus:SI (match_dup 9) (const_int -20)))
3160          (match_operand:SI 5 "nios2_hard_register_operand" ""))
3161     (set (mem:SI (plus:SI (match_dup 9) (const_int -24)))
3162          (match_operand:SI 6 "nios2_hard_register_operand" ""))
3163     (set (mem:SI (plus:SI (match_dup 9) (const_int -28)))
3164          (match_operand:SI 7 "nios2_hard_register_operand" ""))
3165     (set (mem:SI (plus:SI (match_dup 9) (const_int -32)))
3166          (match_operand:SI 8 "nios2_hard_register_operand" ""))])]
3167   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 8"
3168   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8}, --(%9)"
3169  [(set_attr "type" "stwm")])
3170
3171(define_insn "*cdx_stwm9_inc_wb"
3172  [(match_parallel 0 "stwm_operation"
3173    [(set (match_operand:SI 10 "register_operand" "+&r")
3174          (plus:SI (match_dup 10) (const_int 36)))
3175     (set (mem:SI (match_dup 10))
3176          (match_operand:SI 1 "nios2_hard_register_operand" ""))
3177     (set (mem:SI (plus:SI (match_dup 10) (const_int 4)))
3178          (match_operand:SI 2 "nios2_hard_register_operand" ""))
3179     (set (mem:SI (plus:SI (match_dup 10) (const_int 8)))
3180          (match_operand:SI 3 "nios2_hard_register_operand" ""))
3181     (set (mem:SI (plus:SI (match_dup 10) (const_int 12)))
3182          (match_operand:SI 4 "nios2_hard_register_operand" ""))
3183     (set (mem:SI (plus:SI (match_dup 10) (const_int 16)))
3184          (match_operand:SI 5 "nios2_hard_register_operand" ""))
3185     (set (mem:SI (plus:SI (match_dup 10) (const_int 20)))
3186          (match_operand:SI 6 "nios2_hard_register_operand" ""))
3187     (set (mem:SI (plus:SI (match_dup 10) (const_int 24)))
3188          (match_operand:SI 7 "nios2_hard_register_operand" ""))
3189     (set (mem:SI (plus:SI (match_dup 10) (const_int 28)))
3190          (match_operand:SI 8 "nios2_hard_register_operand" ""))
3191     (set (mem:SI (plus:SI (match_dup 10) (const_int 32)))
3192          (match_operand:SI 9 "nios2_hard_register_operand" ""))])]
3193   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 10"
3194   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9}, (%10)++, writeback"
3195  [(set_attr "type" "stwm")])
3196
3197(define_insn "*cdx_stwm9_inc"
3198  [(match_parallel 0 "stwm_operation"
3199    [(set (mem:SI (match_operand:SI 10 "register_operand" "r"))
3200          (match_operand:SI 1 "nios2_hard_register_operand" ""))
3201     (set (mem:SI (plus:SI (match_dup 10) (const_int 4)))
3202          (match_operand:SI 2 "nios2_hard_register_operand" ""))
3203     (set (mem:SI (plus:SI (match_dup 10) (const_int 8)))
3204          (match_operand:SI 3 "nios2_hard_register_operand" ""))
3205     (set (mem:SI (plus:SI (match_dup 10) (const_int 12)))
3206          (match_operand:SI 4 "nios2_hard_register_operand" ""))
3207     (set (mem:SI (plus:SI (match_dup 10) (const_int 16)))
3208          (match_operand:SI 5 "nios2_hard_register_operand" ""))
3209     (set (mem:SI (plus:SI (match_dup 10) (const_int 20)))
3210          (match_operand:SI 6 "nios2_hard_register_operand" ""))
3211     (set (mem:SI (plus:SI (match_dup 10) (const_int 24)))
3212          (match_operand:SI 7 "nios2_hard_register_operand" ""))
3213     (set (mem:SI (plus:SI (match_dup 10) (const_int 28)))
3214          (match_operand:SI 8 "nios2_hard_register_operand" ""))
3215     (set (mem:SI (plus:SI (match_dup 10) (const_int 32)))
3216          (match_operand:SI 9 "nios2_hard_register_operand" ""))])]
3217   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 9"
3218   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9}, (%10)++"
3219  [(set_attr "type" "stwm")])
3220
3221(define_insn "*cdx_stwm9_dec_wb"
3222  [(match_parallel 0 "stwm_operation"
3223    [(set (match_operand:SI 10 "register_operand" "+&r")
3224          (plus:SI (match_dup 10) (const_int -36)))
3225     (set (mem:SI (plus:SI (match_dup 10) (const_int -4)))
3226          (match_operand:SI 1 "nios2_hard_register_operand" ""))
3227     (set (mem:SI (plus:SI (match_dup 10) (const_int -8)))
3228          (match_operand:SI 2 "nios2_hard_register_operand" ""))
3229     (set (mem:SI (plus:SI (match_dup 10) (const_int -12)))
3230          (match_operand:SI 3 "nios2_hard_register_operand" ""))
3231     (set (mem:SI (plus:SI (match_dup 10) (const_int -16)))
3232          (match_operand:SI 4 "nios2_hard_register_operand" ""))
3233     (set (mem:SI (plus:SI (match_dup 10) (const_int -20)))
3234          (match_operand:SI 5 "nios2_hard_register_operand" ""))
3235     (set (mem:SI (plus:SI (match_dup 10) (const_int -24)))
3236          (match_operand:SI 6 "nios2_hard_register_operand" ""))
3237     (set (mem:SI (plus:SI (match_dup 10) (const_int -28)))
3238          (match_operand:SI 7 "nios2_hard_register_operand" ""))
3239     (set (mem:SI (plus:SI (match_dup 10) (const_int -32)))
3240          (match_operand:SI 8 "nios2_hard_register_operand" ""))
3241     (set (mem:SI (plus:SI (match_dup 10) (const_int -36)))
3242          (match_operand:SI 9 "nios2_hard_register_operand" ""))])]
3243   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 10"
3244   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9}, --(%10), writeback"
3245  [(set_attr "type" "stwm")])
3246
3247(define_insn "*cdx_stwm9_dec"
3248  [(match_parallel 0 "stwm_operation"
3249    [(set (mem:SI (plus:SI (match_operand:SI 10 "register_operand" "r") (const_int -4)))
3250          (match_operand:SI 1 "nios2_hard_register_operand" ""))
3251     (set (mem:SI (plus:SI (match_dup 10) (const_int -8)))
3252          (match_operand:SI 2 "nios2_hard_register_operand" ""))
3253     (set (mem:SI (plus:SI (match_dup 10) (const_int -12)))
3254          (match_operand:SI 3 "nios2_hard_register_operand" ""))
3255     (set (mem:SI (plus:SI (match_dup 10) (const_int -16)))
3256          (match_operand:SI 4 "nios2_hard_register_operand" ""))
3257     (set (mem:SI (plus:SI (match_dup 10) (const_int -20)))
3258          (match_operand:SI 5 "nios2_hard_register_operand" ""))
3259     (set (mem:SI (plus:SI (match_dup 10) (const_int -24)))
3260          (match_operand:SI 6 "nios2_hard_register_operand" ""))
3261     (set (mem:SI (plus:SI (match_dup 10) (const_int -28)))
3262          (match_operand:SI 7 "nios2_hard_register_operand" ""))
3263     (set (mem:SI (plus:SI (match_dup 10) (const_int -32)))
3264          (match_operand:SI 8 "nios2_hard_register_operand" ""))
3265     (set (mem:SI (plus:SI (match_dup 10) (const_int -36)))
3266          (match_operand:SI 9 "nios2_hard_register_operand" ""))])]
3267   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 9"
3268   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9}, --(%10)"
3269  [(set_attr "type" "stwm")])
3270
3271(define_insn "*cdx_stwm10_inc_wb"
3272  [(match_parallel 0 "stwm_operation"
3273    [(set (match_operand:SI 11 "register_operand" "+&r")
3274          (plus:SI (match_dup 11) (const_int 40)))
3275     (set (mem:SI (match_dup 11))
3276          (match_operand:SI 1 "nios2_hard_register_operand" ""))
3277     (set (mem:SI (plus:SI (match_dup 11) (const_int 4)))
3278          (match_operand:SI 2 "nios2_hard_register_operand" ""))
3279     (set (mem:SI (plus:SI (match_dup 11) (const_int 8)))
3280          (match_operand:SI 3 "nios2_hard_register_operand" ""))
3281     (set (mem:SI (plus:SI (match_dup 11) (const_int 12)))
3282          (match_operand:SI 4 "nios2_hard_register_operand" ""))
3283     (set (mem:SI (plus:SI (match_dup 11) (const_int 16)))
3284          (match_operand:SI 5 "nios2_hard_register_operand" ""))
3285     (set (mem:SI (plus:SI (match_dup 11) (const_int 20)))
3286          (match_operand:SI 6 "nios2_hard_register_operand" ""))
3287     (set (mem:SI (plus:SI (match_dup 11) (const_int 24)))
3288          (match_operand:SI 7 "nios2_hard_register_operand" ""))
3289     (set (mem:SI (plus:SI (match_dup 11) (const_int 28)))
3290          (match_operand:SI 8 "nios2_hard_register_operand" ""))
3291     (set (mem:SI (plus:SI (match_dup 11) (const_int 32)))
3292          (match_operand:SI 9 "nios2_hard_register_operand" ""))
3293     (set (mem:SI (plus:SI (match_dup 11) (const_int 36)))
3294          (match_operand:SI 10 "nios2_hard_register_operand" ""))])]
3295   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 11"
3296   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10}, (%11)++, writeback"
3297  [(set_attr "type" "stwm")])
3298
3299(define_insn "*cdx_stwm10_inc"
3300  [(match_parallel 0 "stwm_operation"
3301    [(set (mem:SI (match_operand:SI 11 "register_operand" "r"))
3302          (match_operand:SI 1 "nios2_hard_register_operand" ""))
3303     (set (mem:SI (plus:SI (match_dup 11) (const_int 4)))
3304          (match_operand:SI 2 "nios2_hard_register_operand" ""))
3305     (set (mem:SI (plus:SI (match_dup 11) (const_int 8)))
3306          (match_operand:SI 3 "nios2_hard_register_operand" ""))
3307     (set (mem:SI (plus:SI (match_dup 11) (const_int 12)))
3308          (match_operand:SI 4 "nios2_hard_register_operand" ""))
3309     (set (mem:SI (plus:SI (match_dup 11) (const_int 16)))
3310          (match_operand:SI 5 "nios2_hard_register_operand" ""))
3311     (set (mem:SI (plus:SI (match_dup 11) (const_int 20)))
3312          (match_operand:SI 6 "nios2_hard_register_operand" ""))
3313     (set (mem:SI (plus:SI (match_dup 11) (const_int 24)))
3314          (match_operand:SI 7 "nios2_hard_register_operand" ""))
3315     (set (mem:SI (plus:SI (match_dup 11) (const_int 28)))
3316          (match_operand:SI 8 "nios2_hard_register_operand" ""))
3317     (set (mem:SI (plus:SI (match_dup 11) (const_int 32)))
3318          (match_operand:SI 9 "nios2_hard_register_operand" ""))
3319     (set (mem:SI (plus:SI (match_dup 11) (const_int 36)))
3320          (match_operand:SI 10 "nios2_hard_register_operand" ""))])]
3321   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 10"
3322   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10}, (%11)++"
3323  [(set_attr "type" "stwm")])
3324
3325(define_insn "*cdx_stwm10_dec_wb"
3326  [(match_parallel 0 "stwm_operation"
3327    [(set (match_operand:SI 11 "register_operand" "+&r")
3328          (plus:SI (match_dup 11) (const_int -40)))
3329     (set (mem:SI (plus:SI (match_dup 11) (const_int -4)))
3330          (match_operand:SI 1 "nios2_hard_register_operand" ""))
3331     (set (mem:SI (plus:SI (match_dup 11) (const_int -8)))
3332          (match_operand:SI 2 "nios2_hard_register_operand" ""))
3333     (set (mem:SI (plus:SI (match_dup 11) (const_int -12)))
3334          (match_operand:SI 3 "nios2_hard_register_operand" ""))
3335     (set (mem:SI (plus:SI (match_dup 11) (const_int -16)))
3336          (match_operand:SI 4 "nios2_hard_register_operand" ""))
3337     (set (mem:SI (plus:SI (match_dup 11) (const_int -20)))
3338          (match_operand:SI 5 "nios2_hard_register_operand" ""))
3339     (set (mem:SI (plus:SI (match_dup 11) (const_int -24)))
3340          (match_operand:SI 6 "nios2_hard_register_operand" ""))
3341     (set (mem:SI (plus:SI (match_dup 11) (const_int -28)))
3342          (match_operand:SI 7 "nios2_hard_register_operand" ""))
3343     (set (mem:SI (plus:SI (match_dup 11) (const_int -32)))
3344          (match_operand:SI 8 "nios2_hard_register_operand" ""))
3345     (set (mem:SI (plus:SI (match_dup 11) (const_int -36)))
3346          (match_operand:SI 9 "nios2_hard_register_operand" ""))
3347     (set (mem:SI (plus:SI (match_dup 11) (const_int -40)))
3348          (match_operand:SI 10 "nios2_hard_register_operand" ""))])]
3349   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 11"
3350   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10}, --(%11), writeback"
3351  [(set_attr "type" "stwm")])
3352
3353(define_insn "*cdx_stwm10_dec"
3354  [(match_parallel 0 "stwm_operation"
3355    [(set (mem:SI (plus:SI (match_operand:SI 11 "register_operand" "r") (const_int -4)))
3356          (match_operand:SI 1 "nios2_hard_register_operand" ""))
3357     (set (mem:SI (plus:SI (match_dup 11) (const_int -8)))
3358          (match_operand:SI 2 "nios2_hard_register_operand" ""))
3359     (set (mem:SI (plus:SI (match_dup 11) (const_int -12)))
3360          (match_operand:SI 3 "nios2_hard_register_operand" ""))
3361     (set (mem:SI (plus:SI (match_dup 11) (const_int -16)))
3362          (match_operand:SI 4 "nios2_hard_register_operand" ""))
3363     (set (mem:SI (plus:SI (match_dup 11) (const_int -20)))
3364          (match_operand:SI 5 "nios2_hard_register_operand" ""))
3365     (set (mem:SI (plus:SI (match_dup 11) (const_int -24)))
3366          (match_operand:SI 6 "nios2_hard_register_operand" ""))
3367     (set (mem:SI (plus:SI (match_dup 11) (const_int -28)))
3368          (match_operand:SI 7 "nios2_hard_register_operand" ""))
3369     (set (mem:SI (plus:SI (match_dup 11) (const_int -32)))
3370          (match_operand:SI 8 "nios2_hard_register_operand" ""))
3371     (set (mem:SI (plus:SI (match_dup 11) (const_int -36)))
3372          (match_operand:SI 9 "nios2_hard_register_operand" ""))
3373     (set (mem:SI (plus:SI (match_dup 11) (const_int -40)))
3374          (match_operand:SI 10 "nios2_hard_register_operand" ""))])]
3375   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 10"
3376   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10}, --(%11)"
3377  [(set_attr "type" "stwm")])
3378
3379(define_insn "*cdx_stwm11_inc_wb"
3380  [(match_parallel 0 "stwm_operation"
3381    [(set (match_operand:SI 12 "register_operand" "+&r")
3382          (plus:SI (match_dup 12) (const_int 44)))
3383     (set (mem:SI (match_dup 12))
3384          (match_operand:SI 1 "nios2_hard_register_operand" ""))
3385     (set (mem:SI (plus:SI (match_dup 12) (const_int 4)))
3386          (match_operand:SI 2 "nios2_hard_register_operand" ""))
3387     (set (mem:SI (plus:SI (match_dup 12) (const_int 8)))
3388          (match_operand:SI 3 "nios2_hard_register_operand" ""))
3389     (set (mem:SI (plus:SI (match_dup 12) (const_int 12)))
3390          (match_operand:SI 4 "nios2_hard_register_operand" ""))
3391     (set (mem:SI (plus:SI (match_dup 12) (const_int 16)))
3392          (match_operand:SI 5 "nios2_hard_register_operand" ""))
3393     (set (mem:SI (plus:SI (match_dup 12) (const_int 20)))
3394          (match_operand:SI 6 "nios2_hard_register_operand" ""))
3395     (set (mem:SI (plus:SI (match_dup 12) (const_int 24)))
3396          (match_operand:SI 7 "nios2_hard_register_operand" ""))
3397     (set (mem:SI (plus:SI (match_dup 12) (const_int 28)))
3398          (match_operand:SI 8 "nios2_hard_register_operand" ""))
3399     (set (mem:SI (plus:SI (match_dup 12) (const_int 32)))
3400          (match_operand:SI 9 "nios2_hard_register_operand" ""))
3401     (set (mem:SI (plus:SI (match_dup 12) (const_int 36)))
3402          (match_operand:SI 10 "nios2_hard_register_operand" ""))
3403     (set (mem:SI (plus:SI (match_dup 12) (const_int 40)))
3404          (match_operand:SI 11 "nios2_hard_register_operand" ""))])]
3405   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 12"
3406   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11}, (%12)++, writeback"
3407  [(set_attr "type" "stwm")])
3408
3409(define_insn "*cdx_stwm11_inc"
3410  [(match_parallel 0 "stwm_operation"
3411    [(set (mem:SI (match_operand:SI 12 "register_operand" "r"))
3412          (match_operand:SI 1 "nios2_hard_register_operand" ""))
3413     (set (mem:SI (plus:SI (match_dup 12) (const_int 4)))
3414          (match_operand:SI 2 "nios2_hard_register_operand" ""))
3415     (set (mem:SI (plus:SI (match_dup 12) (const_int 8)))
3416          (match_operand:SI 3 "nios2_hard_register_operand" ""))
3417     (set (mem:SI (plus:SI (match_dup 12) (const_int 12)))
3418          (match_operand:SI 4 "nios2_hard_register_operand" ""))
3419     (set (mem:SI (plus:SI (match_dup 12) (const_int 16)))
3420          (match_operand:SI 5 "nios2_hard_register_operand" ""))
3421     (set (mem:SI (plus:SI (match_dup 12) (const_int 20)))
3422          (match_operand:SI 6 "nios2_hard_register_operand" ""))
3423     (set (mem:SI (plus:SI (match_dup 12) (const_int 24)))
3424          (match_operand:SI 7 "nios2_hard_register_operand" ""))
3425     (set (mem:SI (plus:SI (match_dup 12) (const_int 28)))
3426          (match_operand:SI 8 "nios2_hard_register_operand" ""))
3427     (set (mem:SI (plus:SI (match_dup 12) (const_int 32)))
3428          (match_operand:SI 9 "nios2_hard_register_operand" ""))
3429     (set (mem:SI (plus:SI (match_dup 12) (const_int 36)))
3430          (match_operand:SI 10 "nios2_hard_register_operand" ""))
3431     (set (mem:SI (plus:SI (match_dup 12) (const_int 40)))
3432          (match_operand:SI 11 "nios2_hard_register_operand" ""))])]
3433   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 11"
3434   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11}, (%12)++"
3435  [(set_attr "type" "stwm")])
3436
3437(define_insn "*cdx_stwm11_dec_wb"
3438  [(match_parallel 0 "stwm_operation"
3439    [(set (match_operand:SI 12 "register_operand" "+&r")
3440          (plus:SI (match_dup 12) (const_int -44)))
3441     (set (mem:SI (plus:SI (match_dup 12) (const_int -4)))
3442          (match_operand:SI 1 "nios2_hard_register_operand" ""))
3443     (set (mem:SI (plus:SI (match_dup 12) (const_int -8)))
3444          (match_operand:SI 2 "nios2_hard_register_operand" ""))
3445     (set (mem:SI (plus:SI (match_dup 12) (const_int -12)))
3446          (match_operand:SI 3 "nios2_hard_register_operand" ""))
3447     (set (mem:SI (plus:SI (match_dup 12) (const_int -16)))
3448          (match_operand:SI 4 "nios2_hard_register_operand" ""))
3449     (set (mem:SI (plus:SI (match_dup 12) (const_int -20)))
3450          (match_operand:SI 5 "nios2_hard_register_operand" ""))
3451     (set (mem:SI (plus:SI (match_dup 12) (const_int -24)))
3452          (match_operand:SI 6 "nios2_hard_register_operand" ""))
3453     (set (mem:SI (plus:SI (match_dup 12) (const_int -28)))
3454          (match_operand:SI 7 "nios2_hard_register_operand" ""))
3455     (set (mem:SI (plus:SI (match_dup 12) (const_int -32)))
3456          (match_operand:SI 8 "nios2_hard_register_operand" ""))
3457     (set (mem:SI (plus:SI (match_dup 12) (const_int -36)))
3458          (match_operand:SI 9 "nios2_hard_register_operand" ""))
3459     (set (mem:SI (plus:SI (match_dup 12) (const_int -40)))
3460          (match_operand:SI 10 "nios2_hard_register_operand" ""))
3461     (set (mem:SI (plus:SI (match_dup 12) (const_int -44)))
3462          (match_operand:SI 11 "nios2_hard_register_operand" ""))])]
3463   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 12"
3464   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11}, --(%12), writeback"
3465  [(set_attr "type" "stwm")])
3466
3467(define_insn "*cdx_stwm11_dec"
3468  [(match_parallel 0 "stwm_operation"
3469    [(set (mem:SI (plus:SI (match_operand:SI 12 "register_operand" "r") (const_int -4)))
3470          (match_operand:SI 1 "nios2_hard_register_operand" ""))
3471     (set (mem:SI (plus:SI (match_dup 12) (const_int -8)))
3472          (match_operand:SI 2 "nios2_hard_register_operand" ""))
3473     (set (mem:SI (plus:SI (match_dup 12) (const_int -12)))
3474          (match_operand:SI 3 "nios2_hard_register_operand" ""))
3475     (set (mem:SI (plus:SI (match_dup 12) (const_int -16)))
3476          (match_operand:SI 4 "nios2_hard_register_operand" ""))
3477     (set (mem:SI (plus:SI (match_dup 12) (const_int -20)))
3478          (match_operand:SI 5 "nios2_hard_register_operand" ""))
3479     (set (mem:SI (plus:SI (match_dup 12) (const_int -24)))
3480          (match_operand:SI 6 "nios2_hard_register_operand" ""))
3481     (set (mem:SI (plus:SI (match_dup 12) (const_int -28)))
3482          (match_operand:SI 7 "nios2_hard_register_operand" ""))
3483     (set (mem:SI (plus:SI (match_dup 12) (const_int -32)))
3484          (match_operand:SI 8 "nios2_hard_register_operand" ""))
3485     (set (mem:SI (plus:SI (match_dup 12) (const_int -36)))
3486          (match_operand:SI 9 "nios2_hard_register_operand" ""))
3487     (set (mem:SI (plus:SI (match_dup 12) (const_int -40)))
3488          (match_operand:SI 10 "nios2_hard_register_operand" ""))
3489     (set (mem:SI (plus:SI (match_dup 12) (const_int -44)))
3490          (match_operand:SI 11 "nios2_hard_register_operand" ""))])]
3491   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 11"
3492   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11}, --(%12)"
3493  [(set_attr "type" "stwm")])
3494
3495(define_insn "*cdx_stwm12_inc_wb"
3496  [(match_parallel 0 "stwm_operation"
3497    [(set (match_operand:SI 13 "register_operand" "+&r")
3498          (plus:SI (match_dup 13) (const_int 48)))
3499     (set (mem:SI (match_dup 13))
3500          (match_operand:SI 1 "nios2_hard_register_operand" ""))
3501     (set (mem:SI (plus:SI (match_dup 13) (const_int 4)))
3502          (match_operand:SI 2 "nios2_hard_register_operand" ""))
3503     (set (mem:SI (plus:SI (match_dup 13) (const_int 8)))
3504          (match_operand:SI 3 "nios2_hard_register_operand" ""))
3505     (set (mem:SI (plus:SI (match_dup 13) (const_int 12)))
3506          (match_operand:SI 4 "nios2_hard_register_operand" ""))
3507     (set (mem:SI (plus:SI (match_dup 13) (const_int 16)))
3508          (match_operand:SI 5 "nios2_hard_register_operand" ""))
3509     (set (mem:SI (plus:SI (match_dup 13) (const_int 20)))
3510          (match_operand:SI 6 "nios2_hard_register_operand" ""))
3511     (set (mem:SI (plus:SI (match_dup 13) (const_int 24)))
3512          (match_operand:SI 7 "nios2_hard_register_operand" ""))
3513     (set (mem:SI (plus:SI (match_dup 13) (const_int 28)))
3514          (match_operand:SI 8 "nios2_hard_register_operand" ""))
3515     (set (mem:SI (plus:SI (match_dup 13) (const_int 32)))
3516          (match_operand:SI 9 "nios2_hard_register_operand" ""))
3517     (set (mem:SI (plus:SI (match_dup 13) (const_int 36)))
3518          (match_operand:SI 10 "nios2_hard_register_operand" ""))
3519     (set (mem:SI (plus:SI (match_dup 13) (const_int 40)))
3520          (match_operand:SI 11 "nios2_hard_register_operand" ""))
3521     (set (mem:SI (plus:SI (match_dup 13) (const_int 44)))
3522          (match_operand:SI 12 "nios2_hard_register_operand" ""))])]
3523   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 13"
3524   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12}, (%13)++, writeback"
3525  [(set_attr "type" "stwm")])
3526
3527(define_insn "*cdx_stwm12_inc"
3528  [(match_parallel 0 "stwm_operation"
3529    [(set (mem:SI (match_operand:SI 13 "register_operand" "r"))
3530          (match_operand:SI 1 "nios2_hard_register_operand" ""))
3531     (set (mem:SI (plus:SI (match_dup 13) (const_int 4)))
3532          (match_operand:SI 2 "nios2_hard_register_operand" ""))
3533     (set (mem:SI (plus:SI (match_dup 13) (const_int 8)))
3534          (match_operand:SI 3 "nios2_hard_register_operand" ""))
3535     (set (mem:SI (plus:SI (match_dup 13) (const_int 12)))
3536          (match_operand:SI 4 "nios2_hard_register_operand" ""))
3537     (set (mem:SI (plus:SI (match_dup 13) (const_int 16)))
3538          (match_operand:SI 5 "nios2_hard_register_operand" ""))
3539     (set (mem:SI (plus:SI (match_dup 13) (const_int 20)))
3540          (match_operand:SI 6 "nios2_hard_register_operand" ""))
3541     (set (mem:SI (plus:SI (match_dup 13) (const_int 24)))
3542          (match_operand:SI 7 "nios2_hard_register_operand" ""))
3543     (set (mem:SI (plus:SI (match_dup 13) (const_int 28)))
3544          (match_operand:SI 8 "nios2_hard_register_operand" ""))
3545     (set (mem:SI (plus:SI (match_dup 13) (const_int 32)))
3546          (match_operand:SI 9 "nios2_hard_register_operand" ""))
3547     (set (mem:SI (plus:SI (match_dup 13) (const_int 36)))
3548          (match_operand:SI 10 "nios2_hard_register_operand" ""))
3549     (set (mem:SI (plus:SI (match_dup 13) (const_int 40)))
3550          (match_operand:SI 11 "nios2_hard_register_operand" ""))
3551     (set (mem:SI (plus:SI (match_dup 13) (const_int 44)))
3552          (match_operand:SI 12 "nios2_hard_register_operand" ""))])]
3553   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 12"
3554   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12}, (%13)++"
3555  [(set_attr "type" "stwm")])
3556
3557(define_insn "*cdx_stwm12_dec_wb"
3558  [(match_parallel 0 "stwm_operation"
3559    [(set (match_operand:SI 13 "register_operand" "+&r")
3560          (plus:SI (match_dup 13) (const_int -48)))
3561     (set (mem:SI (plus:SI (match_dup 13) (const_int -4)))
3562          (match_operand:SI 1 "nios2_hard_register_operand" ""))
3563     (set (mem:SI (plus:SI (match_dup 13) (const_int -8)))
3564          (match_operand:SI 2 "nios2_hard_register_operand" ""))
3565     (set (mem:SI (plus:SI (match_dup 13) (const_int -12)))
3566          (match_operand:SI 3 "nios2_hard_register_operand" ""))
3567     (set (mem:SI (plus:SI (match_dup 13) (const_int -16)))
3568          (match_operand:SI 4 "nios2_hard_register_operand" ""))
3569     (set (mem:SI (plus:SI (match_dup 13) (const_int -20)))
3570          (match_operand:SI 5 "nios2_hard_register_operand" ""))
3571     (set (mem:SI (plus:SI (match_dup 13) (const_int -24)))
3572          (match_operand:SI 6 "nios2_hard_register_operand" ""))
3573     (set (mem:SI (plus:SI (match_dup 13) (const_int -28)))
3574          (match_operand:SI 7 "nios2_hard_register_operand" ""))
3575     (set (mem:SI (plus:SI (match_dup 13) (const_int -32)))
3576          (match_operand:SI 8 "nios2_hard_register_operand" ""))
3577     (set (mem:SI (plus:SI (match_dup 13) (const_int -36)))
3578          (match_operand:SI 9 "nios2_hard_register_operand" ""))
3579     (set (mem:SI (plus:SI (match_dup 13) (const_int -40)))
3580          (match_operand:SI 10 "nios2_hard_register_operand" ""))
3581     (set (mem:SI (plus:SI (match_dup 13) (const_int -44)))
3582          (match_operand:SI 11 "nios2_hard_register_operand" ""))
3583     (set (mem:SI (plus:SI (match_dup 13) (const_int -48)))
3584          (match_operand:SI 12 "nios2_hard_register_operand" ""))])]
3585   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 13"
3586   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12}, --(%13), writeback"
3587  [(set_attr "type" "stwm")])
3588
3589(define_insn "*cdx_stwm12_dec"
3590  [(match_parallel 0 "stwm_operation"
3591    [(set (mem:SI (plus:SI (match_operand:SI 13 "register_operand" "r") (const_int -4)))
3592          (match_operand:SI 1 "nios2_hard_register_operand" ""))
3593     (set (mem:SI (plus:SI (match_dup 13) (const_int -8)))
3594          (match_operand:SI 2 "nios2_hard_register_operand" ""))
3595     (set (mem:SI (plus:SI (match_dup 13) (const_int -12)))
3596          (match_operand:SI 3 "nios2_hard_register_operand" ""))
3597     (set (mem:SI (plus:SI (match_dup 13) (const_int -16)))
3598          (match_operand:SI 4 "nios2_hard_register_operand" ""))
3599     (set (mem:SI (plus:SI (match_dup 13) (const_int -20)))
3600          (match_operand:SI 5 "nios2_hard_register_operand" ""))
3601     (set (mem:SI (plus:SI (match_dup 13) (const_int -24)))
3602          (match_operand:SI 6 "nios2_hard_register_operand" ""))
3603     (set (mem:SI (plus:SI (match_dup 13) (const_int -28)))
3604          (match_operand:SI 7 "nios2_hard_register_operand" ""))
3605     (set (mem:SI (plus:SI (match_dup 13) (const_int -32)))
3606          (match_operand:SI 8 "nios2_hard_register_operand" ""))
3607     (set (mem:SI (plus:SI (match_dup 13) (const_int -36)))
3608          (match_operand:SI 9 "nios2_hard_register_operand" ""))
3609     (set (mem:SI (plus:SI (match_dup 13) (const_int -40)))
3610          (match_operand:SI 10 "nios2_hard_register_operand" ""))
3611     (set (mem:SI (plus:SI (match_dup 13) (const_int -44)))
3612          (match_operand:SI 11 "nios2_hard_register_operand" ""))
3613     (set (mem:SI (plus:SI (match_dup 13) (const_int -48)))
3614          (match_operand:SI 12 "nios2_hard_register_operand" ""))])]
3615   "TARGET_HAS_CDX && XVECLEN (operands[0], 0) == 12"
3616   "stwm\\t{%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12}, --(%13)"
3617  [(set_attr "type" "stwm")])
3618
3619(define_peephole2
3620  [(match_scratch:SI 24 "r")
3621   (set (match_operand:SI 0 "register_operand" "")
3622        (match_operand:SI 12 "memory_operand" ""))
3623   (set (match_operand:SI 1 "register_operand" "")
3624        (match_operand:SI 13 "memory_operand" ""))
3625   (set (match_operand:SI 2 "register_operand" "")
3626        (match_operand:SI 14 "memory_operand" ""))
3627   (set (match_operand:SI 3 "register_operand" "")
3628        (match_operand:SI 15 "memory_operand" ""))
3629   (set (match_operand:SI 4 "register_operand" "")
3630        (match_operand:SI 16 "memory_operand" ""))
3631   (set (match_operand:SI 5 "register_operand" "")
3632        (match_operand:SI 17 "memory_operand" ""))
3633   (set (match_operand:SI 6 "register_operand" "")
3634        (match_operand:SI 18 "memory_operand" ""))
3635   (set (match_operand:SI 7 "register_operand" "")
3636        (match_operand:SI 19 "memory_operand" ""))
3637   (set (match_operand:SI 8 "register_operand" "")
3638        (match_operand:SI 20 "memory_operand" ""))
3639   (set (match_operand:SI 9 "register_operand" "")
3640        (match_operand:SI 21 "memory_operand" ""))
3641   (set (match_operand:SI 10 "register_operand" "")
3642        (match_operand:SI 22 "memory_operand" ""))
3643   (set (match_operand:SI 11 "register_operand" "")
3644        (match_operand:SI 23 "memory_operand" ""))
3645   (match_dup 24)]
3646  "TARGET_HAS_CDX"
3647  [(const_int 0)]
3648{
3649  if (gen_ldstwm_peep (true, 12, operands[24], operands))
3650    DONE;
3651  else
3652    FAIL;
3653})
3654
3655(define_peephole2
3656  [(match_scratch:SI 22 "r")
3657   (set (match_operand:SI 0 "register_operand" "")
3658        (match_operand:SI 11 "memory_operand" ""))
3659   (set (match_operand:SI 1 "register_operand" "")
3660        (match_operand:SI 12 "memory_operand" ""))
3661   (set (match_operand:SI 2 "register_operand" "")
3662        (match_operand:SI 13 "memory_operand" ""))
3663   (set (match_operand:SI 3 "register_operand" "")
3664        (match_operand:SI 14 "memory_operand" ""))
3665   (set (match_operand:SI 4 "register_operand" "")
3666        (match_operand:SI 15 "memory_operand" ""))
3667   (set (match_operand:SI 5 "register_operand" "")
3668        (match_operand:SI 16 "memory_operand" ""))
3669   (set (match_operand:SI 6 "register_operand" "")
3670        (match_operand:SI 17 "memory_operand" ""))
3671   (set (match_operand:SI 7 "register_operand" "")
3672        (match_operand:SI 18 "memory_operand" ""))
3673   (set (match_operand:SI 8 "register_operand" "")
3674        (match_operand:SI 19 "memory_operand" ""))
3675   (set (match_operand:SI 9 "register_operand" "")
3676        (match_operand:SI 20 "memory_operand" ""))
3677   (set (match_operand:SI 10 "register_operand" "")
3678        (match_operand:SI 21 "memory_operand" ""))
3679   (match_dup 22)]
3680  "TARGET_HAS_CDX"
3681  [(const_int 0)]
3682{
3683  if (gen_ldstwm_peep (true, 11, operands[22], operands))
3684    DONE;
3685  else
3686    FAIL;
3687})
3688
3689(define_peephole2
3690  [(match_scratch:SI 20 "r")
3691   (set (match_operand:SI 0 "register_operand" "")
3692        (match_operand:SI 10 "memory_operand" ""))
3693   (set (match_operand:SI 1 "register_operand" "")
3694        (match_operand:SI 11 "memory_operand" ""))
3695   (set (match_operand:SI 2 "register_operand" "")
3696        (match_operand:SI 12 "memory_operand" ""))
3697   (set (match_operand:SI 3 "register_operand" "")
3698        (match_operand:SI 13 "memory_operand" ""))
3699   (set (match_operand:SI 4 "register_operand" "")
3700        (match_operand:SI 14 "memory_operand" ""))
3701   (set (match_operand:SI 5 "register_operand" "")
3702        (match_operand:SI 15 "memory_operand" ""))
3703   (set (match_operand:SI 6 "register_operand" "")
3704        (match_operand:SI 16 "memory_operand" ""))
3705   (set (match_operand:SI 7 "register_operand" "")
3706        (match_operand:SI 17 "memory_operand" ""))
3707   (set (match_operand:SI 8 "register_operand" "")
3708        (match_operand:SI 18 "memory_operand" ""))
3709   (set (match_operand:SI 9 "register_operand" "")
3710        (match_operand:SI 19 "memory_operand" ""))
3711   (match_dup 20)]
3712  "TARGET_HAS_CDX"
3713  [(const_int 0)]
3714{
3715  if (gen_ldstwm_peep (true, 10, operands[20], operands))
3716    DONE;
3717  else
3718    FAIL;
3719})
3720
3721(define_peephole2
3722  [(match_scratch:SI 18 "r")
3723   (set (match_operand:SI 0 "register_operand" "")
3724        (match_operand:SI 9 "memory_operand" ""))
3725   (set (match_operand:SI 1 "register_operand" "")
3726        (match_operand:SI 10 "memory_operand" ""))
3727   (set (match_operand:SI 2 "register_operand" "")
3728        (match_operand:SI 11 "memory_operand" ""))
3729   (set (match_operand:SI 3 "register_operand" "")
3730        (match_operand:SI 12 "memory_operand" ""))
3731   (set (match_operand:SI 4 "register_operand" "")
3732        (match_operand:SI 13 "memory_operand" ""))
3733   (set (match_operand:SI 5 "register_operand" "")
3734        (match_operand:SI 14 "memory_operand" ""))
3735   (set (match_operand:SI 6 "register_operand" "")
3736        (match_operand:SI 15 "memory_operand" ""))
3737   (set (match_operand:SI 7 "register_operand" "")
3738        (match_operand:SI 16 "memory_operand" ""))
3739   (set (match_operand:SI 8 "register_operand" "")
3740        (match_operand:SI 17 "memory_operand" ""))
3741   (match_dup 18)]
3742  "TARGET_HAS_CDX"
3743  [(const_int 0)]
3744{
3745  if (gen_ldstwm_peep (true, 9, operands[18], operands))
3746    DONE;
3747  else
3748    FAIL;
3749})
3750
3751(define_peephole2
3752  [(match_scratch:SI 16 "r")
3753   (set (match_operand:SI 0 "register_operand" "")
3754        (match_operand:SI 8 "memory_operand" ""))
3755   (set (match_operand:SI 1 "register_operand" "")
3756        (match_operand:SI 9 "memory_operand" ""))
3757   (set (match_operand:SI 2 "register_operand" "")
3758        (match_operand:SI 10 "memory_operand" ""))
3759   (set (match_operand:SI 3 "register_operand" "")
3760        (match_operand:SI 11 "memory_operand" ""))
3761   (set (match_operand:SI 4 "register_operand" "")
3762        (match_operand:SI 12 "memory_operand" ""))
3763   (set (match_operand:SI 5 "register_operand" "")
3764        (match_operand:SI 13 "memory_operand" ""))
3765   (set (match_operand:SI 6 "register_operand" "")
3766        (match_operand:SI 14 "memory_operand" ""))
3767   (set (match_operand:SI 7 "register_operand" "")
3768        (match_operand:SI 15 "memory_operand" ""))
3769   (match_dup 16)]
3770  "TARGET_HAS_CDX"
3771  [(const_int 0)]
3772{
3773  if (gen_ldstwm_peep (true, 8, operands[16], operands))
3774    DONE;
3775  else
3776    FAIL;
3777})
3778
3779(define_peephole2
3780  [(match_scratch:SI 14 "r")
3781   (set (match_operand:SI 0 "register_operand" "")
3782        (match_operand:SI 7 "memory_operand" ""))
3783   (set (match_operand:SI 1 "register_operand" "")
3784        (match_operand:SI 8 "memory_operand" ""))
3785   (set (match_operand:SI 2 "register_operand" "")
3786        (match_operand:SI 9 "memory_operand" ""))
3787   (set (match_operand:SI 3 "register_operand" "")
3788        (match_operand:SI 10 "memory_operand" ""))
3789   (set (match_operand:SI 4 "register_operand" "")
3790        (match_operand:SI 11 "memory_operand" ""))
3791   (set (match_operand:SI 5 "register_operand" "")
3792        (match_operand:SI 12 "memory_operand" ""))
3793   (set (match_operand:SI 6 "register_operand" "")
3794        (match_operand:SI 13 "memory_operand" ""))
3795   (match_dup 14)]
3796  "TARGET_HAS_CDX"
3797  [(const_int 0)]
3798{
3799  if (gen_ldstwm_peep (true, 7, operands[14], operands))
3800    DONE;
3801  else
3802    FAIL;
3803})
3804
3805(define_peephole2
3806  [(match_scratch:SI 12 "r")
3807   (set (match_operand:SI 0 "register_operand" "")
3808        (match_operand:SI 6 "memory_operand" ""))
3809   (set (match_operand:SI 1 "register_operand" "")
3810        (match_operand:SI 7 "memory_operand" ""))
3811   (set (match_operand:SI 2 "register_operand" "")
3812        (match_operand:SI 8 "memory_operand" ""))
3813   (set (match_operand:SI 3 "register_operand" "")
3814        (match_operand:SI 9 "memory_operand" ""))
3815   (set (match_operand:SI 4 "register_operand" "")
3816        (match_operand:SI 10 "memory_operand" ""))
3817   (set (match_operand:SI 5 "register_operand" "")
3818        (match_operand:SI 11 "memory_operand" ""))
3819   (match_dup 12)]
3820  "TARGET_HAS_CDX"
3821  [(const_int 0)]
3822{
3823  if (gen_ldstwm_peep (true, 6, operands[12], operands))
3824    DONE;
3825  else
3826    FAIL;
3827})
3828
3829(define_peephole2
3830  [(match_scratch:SI 10 "r")
3831   (set (match_operand:SI 0 "register_operand" "")
3832        (match_operand:SI 5 "memory_operand" ""))
3833   (set (match_operand:SI 1 "register_operand" "")
3834        (match_operand:SI 6 "memory_operand" ""))
3835   (set (match_operand:SI 2 "register_operand" "")
3836        (match_operand:SI 7 "memory_operand" ""))
3837   (set (match_operand:SI 3 "register_operand" "")
3838        (match_operand:SI 8 "memory_operand" ""))
3839   (set (match_operand:SI 4 "register_operand" "")
3840        (match_operand:SI 9 "memory_operand" ""))
3841   (match_dup 10)]
3842  "TARGET_HAS_CDX"
3843  [(const_int 0)]
3844{
3845  if (gen_ldstwm_peep (true, 5, operands[10], operands))
3846    DONE;
3847  else
3848    FAIL;
3849})
3850
3851(define_peephole2
3852  [(match_scratch:SI 8 "r")
3853   (set (match_operand:SI 0 "register_operand" "")
3854        (match_operand:SI 4 "memory_operand" ""))
3855   (set (match_operand:SI 1 "register_operand" "")
3856        (match_operand:SI 5 "memory_operand" ""))
3857   (set (match_operand:SI 2 "register_operand" "")
3858        (match_operand:SI 6 "memory_operand" ""))
3859   (set (match_operand:SI 3 "register_operand" "")
3860        (match_operand:SI 7 "memory_operand" ""))
3861   (match_dup 8)]
3862  "TARGET_HAS_CDX"
3863  [(const_int 0)]
3864{
3865  if (gen_ldstwm_peep (true, 4, operands[8], operands))
3866    DONE;
3867  else
3868    FAIL;
3869})
3870
3871(define_peephole2
3872  [(match_scratch:SI 6 "r")
3873   (set (match_operand:SI 0 "register_operand" "")
3874        (match_operand:SI 3 "memory_operand" ""))
3875   (set (match_operand:SI 1 "register_operand" "")
3876        (match_operand:SI 4 "memory_operand" ""))
3877   (set (match_operand:SI 2 "register_operand" "")
3878        (match_operand:SI 5 "memory_operand" ""))
3879   (match_dup 6)]
3880  "TARGET_HAS_CDX"
3881  [(const_int 0)]
3882{
3883  if (gen_ldstwm_peep (true, 3, operands[6], operands))
3884    DONE;
3885  else
3886    FAIL;
3887})
3888
3889(define_peephole2
3890  [(match_scratch:SI 4 "r")
3891   (set (match_operand:SI 0 "register_operand" "")
3892        (match_operand:SI 2 "memory_operand" ""))
3893   (set (match_operand:SI 1 "register_operand" "")
3894        (match_operand:SI 3 "memory_operand" ""))
3895   (match_dup 4)]
3896  "TARGET_HAS_CDX"
3897  [(const_int 0)]
3898{
3899  if (gen_ldstwm_peep (true, 2, operands[4], operands))
3900    DONE;
3901  else
3902    FAIL;
3903})
3904
3905(define_peephole2
3906  [(match_scratch:SI 24 "r")
3907   (set (match_operand:SI 12 "memory_operand" "")
3908        (match_operand:SI 0 "register_operand" ""))
3909   (set (match_operand:SI 13 "memory_operand" "")
3910        (match_operand:SI 1 "register_operand" ""))
3911   (set (match_operand:SI 14 "memory_operand" "")
3912        (match_operand:SI 2 "register_operand" ""))
3913   (set (match_operand:SI 15 "memory_operand" "")
3914        (match_operand:SI 3 "register_operand" ""))
3915   (set (match_operand:SI 16 "memory_operand" "")
3916        (match_operand:SI 4 "register_operand" ""))
3917   (set (match_operand:SI 17 "memory_operand" "")
3918        (match_operand:SI 5 "register_operand" ""))
3919   (set (match_operand:SI 18 "memory_operand" "")
3920        (match_operand:SI 6 "register_operand" ""))
3921   (set (match_operand:SI 19 "memory_operand" "")
3922        (match_operand:SI 7 "register_operand" ""))
3923   (set (match_operand:SI 20 "memory_operand" "")
3924        (match_operand:SI 8 "register_operand" ""))
3925   (set (match_operand:SI 21 "memory_operand" "")
3926        (match_operand:SI 9 "register_operand" ""))
3927   (set (match_operand:SI 22 "memory_operand" "")
3928        (match_operand:SI 10 "register_operand" ""))
3929   (set (match_operand:SI 23 "memory_operand" "")
3930        (match_operand:SI 11 "register_operand" ""))
3931   (match_dup 24)]
3932  "TARGET_HAS_CDX"
3933  [(const_int 0)]
3934{
3935  if (gen_ldstwm_peep (false, 12, operands[24], operands))
3936    DONE;
3937  else
3938    FAIL;
3939})
3940
3941(define_peephole2
3942  [(match_scratch:SI 22 "r")
3943   (set (match_operand:SI 11 "memory_operand" "")
3944        (match_operand:SI 0 "register_operand" ""))
3945   (set (match_operand:SI 12 "memory_operand" "")
3946        (match_operand:SI 1 "register_operand" ""))
3947   (set (match_operand:SI 13 "memory_operand" "")
3948        (match_operand:SI 2 "register_operand" ""))
3949   (set (match_operand:SI 14 "memory_operand" "")
3950        (match_operand:SI 3 "register_operand" ""))
3951   (set (match_operand:SI 15 "memory_operand" "")
3952        (match_operand:SI 4 "register_operand" ""))
3953   (set (match_operand:SI 16 "memory_operand" "")
3954        (match_operand:SI 5 "register_operand" ""))
3955   (set (match_operand:SI 17 "memory_operand" "")
3956        (match_operand:SI 6 "register_operand" ""))
3957   (set (match_operand:SI 18 "memory_operand" "")
3958        (match_operand:SI 7 "register_operand" ""))
3959   (set (match_operand:SI 19 "memory_operand" "")
3960        (match_operand:SI 8 "register_operand" ""))
3961   (set (match_operand:SI 20 "memory_operand" "")
3962        (match_operand:SI 9 "register_operand" ""))
3963   (set (match_operand:SI 21 "memory_operand" "")
3964        (match_operand:SI 10 "register_operand" ""))
3965   (match_dup 22)]
3966  "TARGET_HAS_CDX"
3967  [(const_int 0)]
3968{
3969  if (gen_ldstwm_peep (false, 11, operands[22], operands))
3970    DONE;
3971  else
3972    FAIL;
3973})
3974
3975(define_peephole2
3976  [(match_scratch:SI 20 "r")
3977   (set (match_operand:SI 10 "memory_operand" "")
3978        (match_operand:SI 0 "register_operand" ""))
3979   (set (match_operand:SI 11 "memory_operand" "")
3980        (match_operand:SI 1 "register_operand" ""))
3981   (set (match_operand:SI 12 "memory_operand" "")
3982        (match_operand:SI 2 "register_operand" ""))
3983   (set (match_operand:SI 13 "memory_operand" "")
3984        (match_operand:SI 3 "register_operand" ""))
3985   (set (match_operand:SI 14 "memory_operand" "")
3986        (match_operand:SI 4 "register_operand" ""))
3987   (set (match_operand:SI 15 "memory_operand" "")
3988        (match_operand:SI 5 "register_operand" ""))
3989   (set (match_operand:SI 16 "memory_operand" "")
3990        (match_operand:SI 6 "register_operand" ""))
3991   (set (match_operand:SI 17 "memory_operand" "")
3992        (match_operand:SI 7 "register_operand" ""))
3993   (set (match_operand:SI 18 "memory_operand" "")
3994        (match_operand:SI 8 "register_operand" ""))
3995   (set (match_operand:SI 19 "memory_operand" "")
3996        (match_operand:SI 9 "register_operand" ""))
3997   (match_dup 20)]
3998  "TARGET_HAS_CDX"
3999  [(const_int 0)]
4000{
4001  if (gen_ldstwm_peep (false, 10, operands[20], operands))
4002    DONE;
4003  else
4004    FAIL;
4005})
4006
4007(define_peephole2
4008  [(match_scratch:SI 18 "r")
4009   (set (match_operand:SI 9 "memory_operand" "")
4010        (match_operand:SI 0 "register_operand" ""))
4011   (set (match_operand:SI 10 "memory_operand" "")
4012        (match_operand:SI 1 "register_operand" ""))
4013   (set (match_operand:SI 11 "memory_operand" "")
4014        (match_operand:SI 2 "register_operand" ""))
4015   (set (match_operand:SI 12 "memory_operand" "")
4016        (match_operand:SI 3 "register_operand" ""))
4017   (set (match_operand:SI 13 "memory_operand" "")
4018        (match_operand:SI 4 "register_operand" ""))
4019   (set (match_operand:SI 14 "memory_operand" "")
4020        (match_operand:SI 5 "register_operand" ""))
4021   (set (match_operand:SI 15 "memory_operand" "")
4022        (match_operand:SI 6 "register_operand" ""))
4023   (set (match_operand:SI 16 "memory_operand" "")
4024        (match_operand:SI 7 "register_operand" ""))
4025   (set (match_operand:SI 17 "memory_operand" "")
4026        (match_operand:SI 8 "register_operand" ""))
4027   (match_dup 18)]
4028  "TARGET_HAS_CDX"
4029  [(const_int 0)]
4030{
4031  if (gen_ldstwm_peep (false, 9, operands[18], operands))
4032    DONE;
4033  else
4034    FAIL;
4035})
4036
4037(define_peephole2
4038  [(match_scratch:SI 16 "r")
4039   (set (match_operand:SI 8 "memory_operand" "")
4040        (match_operand:SI 0 "register_operand" ""))
4041   (set (match_operand:SI 9 "memory_operand" "")
4042        (match_operand:SI 1 "register_operand" ""))
4043   (set (match_operand:SI 10 "memory_operand" "")
4044        (match_operand:SI 2 "register_operand" ""))
4045   (set (match_operand:SI 11 "memory_operand" "")
4046        (match_operand:SI 3 "register_operand" ""))
4047   (set (match_operand:SI 12 "memory_operand" "")
4048        (match_operand:SI 4 "register_operand" ""))
4049   (set (match_operand:SI 13 "memory_operand" "")
4050        (match_operand:SI 5 "register_operand" ""))
4051   (set (match_operand:SI 14 "memory_operand" "")
4052        (match_operand:SI 6 "register_operand" ""))
4053   (set (match_operand:SI 15 "memory_operand" "")
4054        (match_operand:SI 7 "register_operand" ""))
4055   (match_dup 16)]
4056  "TARGET_HAS_CDX"
4057  [(const_int 0)]
4058{
4059  if (gen_ldstwm_peep (false, 8, operands[16], operands))
4060    DONE;
4061  else
4062    FAIL;
4063})
4064
4065(define_peephole2
4066  [(match_scratch:SI 14 "r")
4067   (set (match_operand:SI 7 "memory_operand" "")
4068        (match_operand:SI 0 "register_operand" ""))
4069   (set (match_operand:SI 8 "memory_operand" "")
4070        (match_operand:SI 1 "register_operand" ""))
4071   (set (match_operand:SI 9 "memory_operand" "")
4072        (match_operand:SI 2 "register_operand" ""))
4073   (set (match_operand:SI 10 "memory_operand" "")
4074        (match_operand:SI 3 "register_operand" ""))
4075   (set (match_operand:SI 11 "memory_operand" "")
4076        (match_operand:SI 4 "register_operand" ""))
4077   (set (match_operand:SI 12 "memory_operand" "")
4078        (match_operand:SI 5 "register_operand" ""))
4079   (set (match_operand:SI 13 "memory_operand" "")
4080        (match_operand:SI 6 "register_operand" ""))
4081   (match_dup 14)]
4082  "TARGET_HAS_CDX"
4083  [(const_int 0)]
4084{
4085  if (gen_ldstwm_peep (false, 7, operands[14], operands))
4086    DONE;
4087  else
4088    FAIL;
4089})
4090
4091(define_peephole2
4092  [(match_scratch:SI 12 "r")
4093   (set (match_operand:SI 6 "memory_operand" "")
4094        (match_operand:SI 0 "register_operand" ""))
4095   (set (match_operand:SI 7 "memory_operand" "")
4096        (match_operand:SI 1 "register_operand" ""))
4097   (set (match_operand:SI 8 "memory_operand" "")
4098        (match_operand:SI 2 "register_operand" ""))
4099   (set (match_operand:SI 9 "memory_operand" "")
4100        (match_operand:SI 3 "register_operand" ""))
4101   (set (match_operand:SI 10 "memory_operand" "")
4102        (match_operand:SI 4 "register_operand" ""))
4103   (set (match_operand:SI 11 "memory_operand" "")
4104        (match_operand:SI 5 "register_operand" ""))
4105   (match_dup 12)]
4106  "TARGET_HAS_CDX"
4107  [(const_int 0)]
4108{
4109  if (gen_ldstwm_peep (false, 6, operands[12], operands))
4110    DONE;
4111  else
4112    FAIL;
4113})
4114
4115(define_peephole2
4116  [(match_scratch:SI 10 "r")
4117   (set (match_operand:SI 5 "memory_operand" "")
4118        (match_operand:SI 0 "register_operand" ""))
4119   (set (match_operand:SI 6 "memory_operand" "")
4120        (match_operand:SI 1 "register_operand" ""))
4121   (set (match_operand:SI 7 "memory_operand" "")
4122        (match_operand:SI 2 "register_operand" ""))
4123   (set (match_operand:SI 8 "memory_operand" "")
4124        (match_operand:SI 3 "register_operand" ""))
4125   (set (match_operand:SI 9 "memory_operand" "")
4126        (match_operand:SI 4 "register_operand" ""))
4127   (match_dup 10)]
4128  "TARGET_HAS_CDX"
4129  [(const_int 0)]
4130{
4131  if (gen_ldstwm_peep (false, 5, operands[10], operands))
4132    DONE;
4133  else
4134    FAIL;
4135})
4136
4137(define_peephole2
4138  [(match_scratch:SI 8 "r")
4139   (set (match_operand:SI 4 "memory_operand" "")
4140        (match_operand:SI 0 "register_operand" ""))
4141   (set (match_operand:SI 5 "memory_operand" "")
4142        (match_operand:SI 1 "register_operand" ""))
4143   (set (match_operand:SI 6 "memory_operand" "")
4144        (match_operand:SI 2 "register_operand" ""))
4145   (set (match_operand:SI 7 "memory_operand" "")
4146        (match_operand:SI 3 "register_operand" ""))
4147   (match_dup 8)]
4148  "TARGET_HAS_CDX"
4149  [(const_int 0)]
4150{
4151  if (gen_ldstwm_peep (false, 4, operands[8], operands))
4152    DONE;
4153  else
4154    FAIL;
4155})
4156
4157(define_peephole2
4158  [(match_scratch:SI 6 "r")
4159   (set (match_operand:SI 3 "memory_operand" "")
4160        (match_operand:SI 0 "register_operand" ""))
4161   (set (match_operand:SI 4 "memory_operand" "")
4162        (match_operand:SI 1 "register_operand" ""))
4163   (set (match_operand:SI 5 "memory_operand" "")
4164        (match_operand:SI 2 "register_operand" ""))
4165   (match_dup 6)]
4166  "TARGET_HAS_CDX"
4167  [(const_int 0)]
4168{
4169  if (gen_ldstwm_peep (false, 3, operands[6], operands))
4170    DONE;
4171  else
4172    FAIL;
4173})
4174
4175(define_peephole2
4176  [(match_scratch:SI 4 "r")
4177   (set (match_operand:SI 2 "memory_operand" "")
4178        (match_operand:SI 0 "register_operand" ""))
4179   (set (match_operand:SI 3 "memory_operand" "")
4180        (match_operand:SI 1 "register_operand" ""))
4181   (match_dup 4)]
4182  "TARGET_HAS_CDX"
4183  [(const_int 0)]
4184{
4185  if (gen_ldstwm_peep (false, 2, operands[4], operands))
4186    DONE;
4187  else
4188    FAIL;
4189})
4190
4191