Fix build on sparc64-linux-gnu.
[official-gcc.git] / gcc / config / nds32 / nds32-graywolf.md
blobf0c98a6f75d60af2b1fcd37e21a5e43c93062ed8
1 ;; Pipeline descriptions of Andes NDS32 cpu for GNU compiler
2 ;; Copyright (C) 2012-2013 Free Software Foundation, Inc.
3 ;; Contributed by Andes Technology Corporation.
4 ;;
5 ;; This file is part of GCC.
6 ;;
7 ;; GCC is free software; you can redistribute it and/or modify it
8 ;; under the terms of the GNU General Public License as published
9 ;; by the Free Software Foundation; either version 3, or (at your
10 ;; option) any later version.
12 ;; GCC is distributed in the hope that it will be useful, but WITHOUT
13 ;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 ;; or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
15 ;; License for more details.
17 ;; You should have received a copy of the GNU General Public License
18 ;; along with GCC; see the file COPYING3.  If not see
19 ;; <http://www.gnu.org/licenses/>.
21 ;; ------------------------------------------------------------------------
22 ;; Define Graywolf pipeline settings.
23 ;; ------------------------------------------------------------------------
25 (define_automaton "nds32_graywolf_machine")
27 (define_cpu_unit "gw_ii_0" "nds32_graywolf_machine")
28 (define_cpu_unit "gw_ii_1" "nds32_graywolf_machine")
29 (define_cpu_unit "gw_ex_p0" "nds32_graywolf_machine")
30 (define_cpu_unit "gw_mm_p0" "nds32_graywolf_machine")
31 (define_cpu_unit "gw_wb_p0" "nds32_graywolf_machine")
32 (define_cpu_unit "gw_ex_p1" "nds32_graywolf_machine")
33 (define_cpu_unit "gw_mm_p1" "nds32_graywolf_machine")
34 (define_cpu_unit "gw_wb_p1" "nds32_graywolf_machine")
35 (define_cpu_unit "gw_iq_p2" "nds32_graywolf_machine")
36 (define_cpu_unit "gw_rf_p2" "nds32_graywolf_machine")
37 (define_cpu_unit "gw_e1_p2" "nds32_graywolf_machine")
38 (define_cpu_unit "gw_e2_p2" "nds32_graywolf_machine")
39 (define_cpu_unit "gw_e3_p2" "nds32_graywolf_machine")
40 (define_cpu_unit "gw_e4_p2" "nds32_graywolf_machine")
42 (define_reservation "gw_ii" "gw_ii_0 | gw_ii_1")
43 (define_reservation "gw_ex" "gw_ex_p0 | gw_ex_p1")
44 (define_reservation "gw_mm" "gw_mm_p0 | gw_mm_p1")
45 (define_reservation "gw_wb" "gw_wb_p0 | gw_wb_p1")
47 (define_reservation "gw_ii_all" "gw_ii_0 + gw_ii_1")
49 (define_insn_reservation "nds_gw_unknown" 1
50   (and (eq_attr "type" "unknown")
51        (eq_attr "pipeline_model" "graywolf"))
52   "gw_ii, gw_ex, gw_mm, gw_wb")
54 (define_insn_reservation "nds_gw_misc" 1
55   (and (eq_attr "type" "misc")
56        (eq_attr "pipeline_model" "graywolf"))
57   "gw_ii, gw_ex, gw_mm, gw_wb")
59 (define_insn_reservation "nds_gw_mmu" 1
60   (and (eq_attr "type" "mmu")
61        (eq_attr "pipeline_model" "graywolf"))
62   "gw_ii, gw_ex, gw_mm, gw_wb")
64 (define_insn_reservation "nds_gw_alu" 1
65   (and (and (eq_attr "type" "alu")
66             (match_test "!nds32::movd44_insn_p (insn)"))
67        (eq_attr "pipeline_model" "graywolf"))
68   "gw_ii, gw_ex, gw_mm, gw_wb")
70 (define_insn_reservation "nds_gw_movd44" 1
71   (and (and (eq_attr "type" "alu")
72             (match_test "nds32::movd44_insn_p (insn)"))
73        (eq_attr "pipeline_model" "graywolf"))
74   "gw_ii_1, gw_ex, gw_mm, gw_wb")
76 (define_insn_reservation "nds_gw_alu_shift" 1
77   (and (eq_attr "type" "alu_shift")
78        (eq_attr "pipeline_model" "graywolf"))
79   "gw_ii, gw_ex*2, gw_mm, gw_wb")
81 (define_insn_reservation "nds_gw_pbsad" 1
82   (and (eq_attr "type" "pbsad")
83        (eq_attr "pipeline_model" "graywolf"))
84   "gw_ii, gw_ex*3, gw_mm, gw_wb")
86 (define_insn_reservation "nds_gw_pbsada" 1
87   (and (eq_attr "type" "pbsada")
88        (eq_attr "pipeline_model" "graywolf"))
89   "gw_ii, gw_ex*3, gw_mm, gw_wb")
91 (define_insn_reservation "nds_gw_load" 1
92   (and (and (eq_attr "type" "load")
93             (match_test "!nds32::post_update_insn_p (insn)"))
94        (eq_attr "pipeline_model" "graywolf"))
95   "gw_ii_1, gw_ex_p1, gw_mm_p1, gw_wb_p1")
97 (define_insn_reservation "nds_gw_load_2w" 1
98   (and (and (eq_attr "type" "load")
99             (match_test "nds32::post_update_insn_p (insn)"))
100        (eq_attr "pipeline_model" "graywolf"))
101   "gw_ii_all, gw_ex_p1, gw_mm_p1, gw_wb_p1")
103 (define_insn_reservation "nds_gw_store" 1
104   (and (and (eq_attr "type" "store")
105             (match_test "!nds32::store_offset_reg_p (insn)"))
106        (eq_attr "pipeline_model" "graywolf"))
107   "gw_ii_1, gw_ex_p1, gw_mm_p1, gw_wb_p1")
109 (define_insn_reservation "nds_gw_store_3r" 1
110   (and (and (eq_attr "type" "store")
111             (match_test "nds32::store_offset_reg_p (insn)"))
112        (eq_attr "pipeline_model" "graywolf"))
113   "gw_ii_all, gw_ex_p1, gw_mm_p1, gw_wb_p1")
115 (define_insn_reservation "nds_gw_load_multiple_1" 1
116   (and (and (eq_attr "type" "load_multiple")
117             (eq_attr "combo" "1"))
118        (eq_attr "pipeline_model" "graywolf"))
119   "gw_ii_1, gw_ex_p1, gw_mm_p1, gw_wb_p1")
121 (define_insn_reservation "nds_gw_load_multiple_2" 1
122   (and (and (eq_attr "type" "load_multiple")
123             (eq_attr "combo" "2"))
124        (eq_attr "pipeline_model" "graywolf"))
125   "gw_ii_1, gw_ex_p1*2, gw_mm_p1, gw_wb_p1")
127 (define_insn_reservation "nds_gw_load_multiple_3" 1
128   (and (and (eq_attr "type" "load_multiple")
129             (eq_attr "combo" "3"))
130        (eq_attr "pipeline_model" "graywolf"))
131   "gw_ii_1, gw_ex_p1*3, gw_mm_p1, gw_wb_p1")
133 (define_insn_reservation "nds_gw_load_multiple_4" 1
134   (and (and (eq_attr "type" "load_multiple")
135             (eq_attr "combo" "4"))
136        (eq_attr "pipeline_model" "graywolf"))
137   "gw_ii_1, gw_ex_p1*4, gw_mm_p1, gw_wb_p1")
139 (define_insn_reservation "nds_gw_load_multiple_5" 1
140   (and (and (eq_attr "type" "load_multiple")
141             (eq_attr "combo" "5"))
142        (eq_attr "pipeline_model" "graywolf"))
143   "gw_ii_1, gw_ex_p1*4, gw_mm_p1, gw_wb_p1")
145 (define_insn_reservation "nds_gw_load_multiple_6" 1
146   (and (and (eq_attr "type" "load_multiple")
147             (eq_attr "combo" "6"))
148        (eq_attr "pipeline_model" "graywolf"))
149   "gw_ii_1, gw_ex_p1*4, gw_mm_p1, gw_wb_p1")
151 (define_insn_reservation "nds_gw_load_multiple_7" 1
152   (and (and (eq_attr "type" "load_multiple")
153             (eq_attr "combo" "7"))
154        (eq_attr "pipeline_model" "graywolf"))
155   "gw_ii_1, gw_ex_p1*4, gw_mm_p1, gw_wb_p1")
157 (define_insn_reservation "nds_gw_load_multiple_8" 1
158   (and (and (eq_attr "type" "load_multiple")
159             (eq_attr "combo" "8"))
160        (eq_attr "pipeline_model" "graywolf"))
161   "gw_ii_1, gw_ex_p1*4, gw_mm_p1, gw_wb_p1")
163 (define_insn_reservation "nds_gw_load_multiple_12" 1
164   (and (and (eq_attr "type" "load_multiple")
165             (eq_attr "combo" "12"))
166        (eq_attr "pipeline_model" "graywolf"))
167   "gw_ii_1, gw_ex_p1*4, gw_mm_p1, gw_wb_p1")
169 (define_insn_reservation "nds_gw_store_multiple_1" 1
170   (and (and (eq_attr "type" "store_multiple")
171             (eq_attr "combo" "1"))
172        (eq_attr "pipeline_model" "graywolf"))
173   "gw_ii_1, gw_ex_p1, gw_mm_p1, gw_wb_p1")
175 (define_insn_reservation "nds_gw_store_multiple_2" 1
176   (and (and (eq_attr "type" "store_multiple")
177             (eq_attr "combo" "2"))
178        (eq_attr "pipeline_model" "graywolf"))
179   "gw_ii_1, gw_ex_p1*2, gw_mm_p1, gw_wb_p1")
181 (define_insn_reservation "nds_gw_store_multiple_3" 1
182   (and (and (eq_attr "type" "store_multiple")
183             (eq_attr "combo" "3"))
184        (eq_attr "pipeline_model" "graywolf"))
185   "gw_ii_1, gw_ex_p1*3, gw_mm_p1, gw_wb_p1")
187 (define_insn_reservation "nds_gw_store_multiple_4" 1
188   (and (and (eq_attr "type" "store_multiple")
189             (eq_attr "combo" "4"))
190        (eq_attr "pipeline_model" "graywolf"))
191   "gw_ii_1, gw_ex_p1*4, gw_mm_p1, gw_wb_p1")
193 (define_insn_reservation "nds_gw_store_multiple_5" 1
194   (and (and (eq_attr "type" "store_multiple")
195             (eq_attr "combo" "5"))
196        (eq_attr "pipeline_model" "graywolf"))
197   "gw_ii_1, gw_ex_p1*4, gw_mm_p1, gw_wb_p1")
199 (define_insn_reservation "nds_gw_store_multiple_6" 1
200   (and (and (eq_attr "type" "store_multiple")
201             (eq_attr "combo" "6"))
202        (eq_attr "pipeline_model" "graywolf"))
203   "gw_ii_1, gw_ex_p1*4, gw_mm_p1, gw_wb_p1")
205 (define_insn_reservation "nds_gw_store_multiple_7" 1
206   (and (and (eq_attr "type" "store_multiple")
207             (eq_attr "combo" "7"))
208        (eq_attr "pipeline_model" "graywolf"))
209   "gw_ii_1, gw_ex_p1*4, gw_mm_p1, gw_wb_p1")
211 (define_insn_reservation "nds_gw_store_multiple_8" 1
212   (and (and (eq_attr "type" "store_multiple")
213             (eq_attr "combo" "8"))
214        (eq_attr "pipeline_model" "graywolf"))
215   "gw_ii_1, gw_ex_p1*4, gw_mm_p1, gw_wb_p1")
217 (define_insn_reservation "nds_gw_store_multiple_12" 1
218   (and (and (eq_attr "type" "store_multiple")
219             (eq_attr "combo" "12"))
220        (eq_attr "pipeline_model" "graywolf"))
221   "gw_ii_1, gw_ex_p1*4, gw_mm_p1, gw_wb_p1")
223 (define_insn_reservation "nds_gw_mul_fast1" 1
224   (and (match_test "nds32_mul_config == MUL_TYPE_FAST_1")
225        (and (eq_attr "type" "mul")
226        (eq_attr "pipeline_model" "graywolf")))
227   "gw_ii_0, gw_ex_p0, gw_mm_p0, gw_wb_p0")
229 (define_insn_reservation "nds_gw_mul_fast2" 1
230   (and (match_test "nds32_mul_config == MUL_TYPE_FAST_2")
231        (and (eq_attr "type" "mul")
232        (eq_attr "pipeline_model" "graywolf")))
233   "gw_ii_0, gw_ex_p0*2, gw_mm_p0, gw_wb_p0")
235 (define_insn_reservation "nds_gw_mul_slow" 1
236   (and (match_test "nds32_mul_config == MUL_TYPE_SLOW")
237        (and (eq_attr "type" "mul")
238        (eq_attr "pipeline_model" "graywolf")))
239   "gw_ii_0, gw_ex_p0*4, gw_mm_p0, gw_wb_p0")
241 (define_insn_reservation "nds_gw_mac_fast1" 1
242   (and (match_test "nds32_mul_config == MUL_TYPE_FAST_1")
243        (and (eq_attr "type" "mac")
244        (eq_attr "pipeline_model" "graywolf")))
245   "gw_ii_all, gw_ex_p0, gw_mm_p0, gw_wb_p0")
247 (define_insn_reservation "nds_gw_mac_fast2" 1
248   (and (match_test "nds32_mul_config == MUL_TYPE_FAST_2")
249        (and (eq_attr "type" "mac")
250        (eq_attr "pipeline_model" "graywolf")))
251   "gw_ii_all, gw_ex_p0*2, gw_mm_p0, gw_wb_p0")
253 (define_insn_reservation "nds_gw_mac_slow" 1
254   (and (match_test "nds32_mul_config == MUL_TYPE_SLOW")
255        (and (eq_attr "type" "mac")
256        (eq_attr "pipeline_model" "graywolf")))
257   "gw_ii_all, gw_ex_p0*4, gw_mm_p0, gw_wb_p0")
259 (define_insn_reservation "nds_gw_div" 1
260   (and (and (eq_attr "type" "div")
261             (match_test "!nds32::divmod_p (insn)"))
262        (eq_attr "pipeline_model" "graywolf"))
263   "gw_ii_0, gw_ex_p0*4, gw_mm_p0, gw_wb_p0")
265 (define_insn_reservation "nds_gw_div_2w" 1
266   (and (and (eq_attr "type" "div")
267             (match_test "nds32::divmod_p (insn)"))
268        (eq_attr "pipeline_model" "graywolf"))
269   "gw_ii_all, gw_ex_p0*4, gw_mm_p0, gw_wb_p0")
271 (define_insn_reservation "nds_gw_branch" 1
272   (and (eq_attr "type" "branch")
273        (eq_attr "pipeline_model" "graywolf"))
274   "gw_ii_0, gw_ex_p0, gw_mm_p0, gw_wb_p0")
276 (define_insn_reservation "nds_gw_dsp_alu" 1
277   (and (eq_attr "type" "dalu")
278        (eq_attr "pipeline_model" "graywolf"))
279   "gw_ii, gw_ex, gw_mm, gw_wb")
281 (define_insn_reservation "nds_gw_dsp_alu64" 1
282   (and (eq_attr "type" "dalu64")
283        (eq_attr "pipeline_model" "graywolf"))
284   "gw_ii_all, gw_ex_p0, gw_mm_p0, gw_wb_p0")
286 (define_insn_reservation "nds_gw_dsp_alu_round" 1
287   (and (eq_attr "type" "daluround")
288        (eq_attr "pipeline_model" "graywolf"))
289   "gw_ii_0, gw_ex_p0, gw_mm_p0, gw_wb_p0")
291 (define_insn_reservation "nds_gw_dsp_cmp" 1
292   (and (eq_attr "type" "dcmp")
293        (eq_attr "pipeline_model" "graywolf"))
294   "gw_ii_0, gw_ex_p0, gw_mm_p0, gw_wb_p0")
296 (define_insn_reservation "nds_gw_dsp_clip" 1
297   (and (eq_attr "type" "dclip")
298        (eq_attr "pipeline_model" "graywolf"))
299   "gw_ii_0, gw_ex_p0, gw_mm_p0, gw_wb_p0")
301 (define_insn_reservation "nds_gw_dsp_mul" 1
302   (and (eq_attr "type" "dmul")
303        (eq_attr "pipeline_model" "graywolf"))
304   "gw_ii_0, gw_ex_p0, gw_mm_p0, gw_wb_p0")
306 (define_insn_reservation "nds_gw_dsp_mac" 1
307   (and (eq_attr "type" "dmac")
308        (eq_attr "pipeline_model" "graywolf"))
309   "gw_ii_all, gw_ex_p0, gw_mm_p0, gw_wb_p0")
311 (define_insn_reservation "nds_gw_dsp_insb" 1
312   (and (eq_attr "type" "dinsb")
313        (eq_attr "pipeline_model" "graywolf"))
314   "gw_ii_0, gw_ex_p0, gw_mm_p0, gw_wb_p0")
316 (define_insn_reservation "nds_gw_dsp_pack" 1
317   (and (eq_attr "type" "dpack")
318        (eq_attr "pipeline_model" "graywolf"))
319   "gw_ii_0, gw_ex_p0, gw_mm_p0, gw_wb_p0")
321 (define_insn_reservation "nds_gw_dsp_bpick" 1
322   (and (eq_attr "type" "dbpick")
323        (eq_attr "pipeline_model" "graywolf"))
324   "gw_ii_0, gw_ex_p0, gw_mm_p0, gw_wb_p0")
326 (define_insn_reservation "nds_gw_dsp_wext" 1
327   (and (eq_attr "type" "dwext")
328        (eq_attr "pipeline_model" "graywolf"))
329   "gw_ii_all, gw_ex_p0, gw_mm_p0, gw_wb_p0")
331 (define_insn_reservation "nds_gw_fpu_alu" 4
332   (and (eq_attr "type" "falu")
333        (eq_attr "pipeline_model" "graywolf"))
334   "gw_ii, gw_iq_p2, gw_rf_p2, gw_e1_p2, gw_e2_p2, gw_e3_p2, gw_e4_p2")
336 (define_insn_reservation "nds_gw_fpu_muls" 4
337   (and (eq_attr "type" "fmuls")
338        (eq_attr "pipeline_model" "graywolf"))
339   "gw_ii, gw_iq_p2, gw_rf_p2, gw_e1_p2, gw_e2_p2, gw_e3_p2, gw_e4_p2")
341 (define_insn_reservation "nds_gw_fpu_muld" 4
342   (and (eq_attr "type" "fmuld")
343        (eq_attr "pipeline_model" "graywolf"))
344   "gw_ii, gw_iq_p2, gw_rf_p2, gw_e1_p2, gw_e2_p2*2, gw_e3_p2, gw_e4_p2")
346 (define_insn_reservation "nds_gw_fpu_macs" 4
347   (and (eq_attr "type" "fmacs")
348        (eq_attr "pipeline_model" "graywolf"))
349   "gw_ii, gw_iq_p2, gw_rf_p2, gw_e1_p2, gw_e2_p2*3, gw_e3_p2, gw_e4_p2")
351 (define_insn_reservation "nds_gw_fpu_macd" 4
352   (and (eq_attr "type" "fmacd")
353        (eq_attr "pipeline_model" "graywolf"))
354   "gw_ii, gw_iq_p2, gw_rf_p2, gw_e1_p2, gw_e2_p2*4, gw_e3_p2, gw_e4_p2")
356 (define_insn_reservation "nds_gw_fpu_divs" 4
357   (and (ior (eq_attr "type" "fdivs")
358             (eq_attr "type" "fsqrts"))
359        (eq_attr "pipeline_model" "graywolf"))
360   "gw_ii, gw_iq_p2, gw_rf_p2, gw_e1_p2, gw_e2_p2*14, gw_e3_p2, gw_e4_p2")
362 (define_insn_reservation "nds_gw_fpu_divd" 4
363   (and (ior (eq_attr "type" "fdivd")
364             (eq_attr "type" "fsqrtd"))
365        (eq_attr "pipeline_model" "graywolf"))
366   "gw_ii, gw_iq_p2, gw_rf_p2, gw_e1_p2, gw_e2_p2*28, gw_e3_p2, gw_e4_p2")
368 (define_insn_reservation "nds_gw_fpu_fast_alu" 2
369   (and (ior (eq_attr "type" "fcmp")
370             (ior (eq_attr "type" "fabs")
371                  (ior (eq_attr "type" "fcpy")
372                       (eq_attr "type" "fcmov"))))
373        (eq_attr "pipeline_model" "graywolf"))
374   "gw_ii, gw_iq_p2, gw_rf_p2, gw_e1_p2, gw_e2_p2, gw_e3_p2, gw_e4_p2")
376 (define_insn_reservation "nds_gw_fpu_fmtsr" 1
377   (and (eq_attr "type" "fmtsr")
378        (eq_attr "pipeline_model" "graywolf"))
379   "gw_ii, gw_iq_p2, gw_rf_p2, gw_e1_p2, gw_e2_p2, gw_e3_p2, gw_e4_p2")
381 (define_insn_reservation "nds_gw_fpu_fmtdr" 1
382   (and (eq_attr "type" "fmtdr")
383        (eq_attr "pipeline_model" "graywolf"))
384   "gw_ii, gw_ii+gw_iq_p2, gw_iq_p2+gw_rf_p2, gw_rf_p2+gw_e1_p2, gw_e1_p2+gw_e2_p2, gw_e2_p2+gw_e3_p2, gw_e3_p2+gw_e4_p2, gw_e4_p2")
386 (define_insn_reservation "nds_gw_fpu_fmfsr" 1
387   (and (eq_attr "type" "fmfsr")
388        (eq_attr "pipeline_model" "graywolf"))
389   "gw_ii, gw_iq_p2, gw_rf_p2, gw_e1_p2, gw_e2_p2, gw_e3_p2, gw_e4_p2")
391 (define_insn_reservation "nds_gw_fpu_fmfdr" 1
392   (and (eq_attr "type" "fmfdr")
393        (eq_attr "pipeline_model" "graywolf"))
394   "gw_ii, gw_ii+gw_iq_p2, gw_iq_p2+gw_rf_p2, gw_rf_p2+gw_e1_p2, gw_e1_p2+gw_e2_p2, gw_e2_p2+gw_e3_p2, gw_e3_p2+gw_e4_p2, gw_e4_p2")
396 (define_insn_reservation "nds_gw_fpu_load" 3
397   (and (eq_attr "type" "fload")
398        (eq_attr "pipeline_model" "graywolf"))
399   "gw_ii, gw_iq_p2, gw_rf_p2, gw_e1_p2, gw_e2_p2, gw_e3_p2, gw_e4_p2")
401 (define_insn_reservation "nds_gw_fpu_store" 1
402   (and (eq_attr "type" "fstore")
403        (eq_attr "pipeline_model" "graywolf"))
404   "gw_ii, gw_iq_p2, gw_rf_p2, gw_e1_p2, gw_e2_p2, gw_e3_p2, gw_e4_p2")
406 ;; FPU_ADDR_OUT -> FPU_ADDR_IN
407 ;; Main pipeline rules don't need this because those default latency is 1.
408 (define_bypass 1
409   "nds_gw_fpu_load, nds_gw_fpu_store"
410   "nds_gw_fpu_load, nds_gw_fpu_store"
411   "nds32_gw_ex_to_ex_p"
414 ;; LD, MUL, MAC, DIV, DALU64, DMUL, DMAC, DALUROUND, DBPICK, DWEXT
415 ;;   -> ALU, ALU_SHIFT_Rb, PBSAD, PBSADA_RaRb, MOVD44, MUL, MAC_RaRb, DIV, ADDR_IN, BR, MMU,
416 ;;      DALU, DALUROUND, DMUL, DMAC_RaRb, DPACK, DINSB, DCMP, DCLIP, WEXT_O, BPICK_RaRb
417 (define_bypass 2
418   "nds_gw_load, nds_gw_load_2w,\
419    nds_gw_mul_fast1, nds_gw_mul_fast2, nds_gw_mul_slow,\
420    nds_gw_mac_fast1, nds_gw_mac_fast2, nds_gw_mac_slow,\
421    nds_gw_div, nds_gw_div_2w,\
422    nds_gw_dsp_alu64, nds_gw_dsp_mul, nds_gw_dsp_mac,\
423    nds_gw_dsp_alu_round, nds_gw_dsp_bpick, nds_gw_dsp_wext"
424   "nds_gw_alu, nds_gw_movd44, nds_gw_alu_shift,\
425    nds_gw_pbsad, nds_gw_pbsada,\
426    nds_gw_mul_fast1, nds_gw_mul_fast2, nds_gw_mul_slow,\
427    nds_gw_mac_fast1, nds_gw_mac_fast2, nds_gw_mac_slow,\
428    nds_gw_branch,\
429    nds_gw_div, nds_gw_div_2w,\
430    nds_gw_load, nds_gw_load_2w, nds_gw_store, nds_gw_store_3r,\
431    nds_gw_load_multiple_1,nds_gw_load_multiple_2, nds_gw_load_multiple_3,\
432    nds_gw_load_multiple_4,nds_gw_load_multiple_5, nds_gw_load_multiple_6,\
433    nds_gw_load_multiple_7,nds_gw_load_multiple_8, nds_gw_load_multiple_12,\
434    nds_gw_store_multiple_1,nds_gw_store_multiple_2, nds_gw_store_multiple_3,\
435    nds_gw_store_multiple_4,nds_gw_store_multiple_5, nds_gw_store_multiple_6,\
436    nds_gw_store_multiple_7,nds_gw_store_multiple_8, nds_gw_store_multiple_12,\
437    nds_gw_mmu,\
438    nds_gw_dsp_alu, nds_gw_dsp_alu_round,\
439    nds_gw_dsp_mul, nds_gw_dsp_mac, nds_gw_dsp_pack,\
440    nds_gw_dsp_insb, nds_gw_dsp_cmp, nds_gw_dsp_clip,\
441    nds_gw_dsp_wext, nds_gw_dsp_bpick"
442   "nds32_gw_mm_to_ex_p"
445 ;; LMW(N, N)
446 ;;   -> ALU, ALU_SHIFT_Rb, PBSAD, PBSADA_RaRb, MOVD44, MUL, MAC_RaRb, DIV, ADDR_IN, BR, MMU
447 ;;      DALU, DALUROUND, DMUL, DMAC_RaRb, DPACK, DINSB, DCMP, DCLIP, WEXT_O, BPICK_RaRb
448 (define_bypass 2
449   "nds_gw_load_multiple_1,nds_gw_load_multiple_2, nds_gw_load_multiple_3,\
450    nds_gw_load_multiple_4,nds_gw_load_multiple_5, nds_gw_load_multiple_6,\
451    nds_gw_load_multiple_7,nds_gw_load_multiple_8, nds_gw_load_multiple_12"
452   "nds_gw_alu, nds_gw_movd44, nds_gw_alu_shift,\
453    nds_gw_pbsad, nds_gw_pbsada,\
454    nds_gw_mul_fast1, nds_gw_mul_fast2, nds_gw_mul_slow,\
455    nds_gw_mac_fast1, nds_gw_mac_fast2, nds_gw_mac_slow,\
456    nds_gw_branch,\
457    nds_gw_div, nds_gw_div_2w,\
458    nds_gw_load, nds_gw_load_2w, nds_gw_store, nds_gw_store_3r,\
459    nds_gw_load_multiple_1,nds_gw_load_multiple_2, nds_gw_load_multiple_3,\
460    nds_gw_load_multiple_4,nds_gw_load_multiple_5, nds_gw_load_multiple_6,\
461    nds_gw_load_multiple_7,nds_gw_load_multiple_8, nds_gw_load_multiple_12,\
462    nds_gw_store_multiple_1,nds_gw_store_multiple_2, nds_gw_store_multiple_3,\
463    nds_gw_store_multiple_4,nds_gw_store_multiple_5, nds_gw_store_multiple_6,\
464    nds_gw_store_multiple_7,nds_gw_store_multiple_8, nds_gw_store_multiple_12,\
465    nds_gw_mmu,\
466    nds_gw_dsp_alu, nds_gw_dsp_alu_round,\
467    nds_gw_dsp_mul, nds_gw_dsp_mac, nds_gw_dsp_pack,\
468    nds_gw_dsp_insb, nds_gw_dsp_cmp, nds_gw_dsp_clip,\
469    nds_gw_dsp_wext, nds_gw_dsp_bpick"
470   "nds32_gw_last_load_to_ex_p"