xref: /netbsd-src/external/gpl3/gcc/dist/gcc/config/nds32/nds32-n10.md (revision 70f7362772ba52b749c976fb5e86e39a8b2c9afc)
1;; Pipeline descriptions of Andes NDS32 cpu for GNU compiler
2;; Copyright (C) 2012-2022 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.
11;;
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.
16;;
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/>.
20
21
22;; ------------------------------------------------------------------------
23;; Define N10 pipeline settings.
24;; ------------------------------------------------------------------------
25
26(define_automaton "nds32_n10_machine")
27
28;; ------------------------------------------------------------------------
29;; Pipeline Stages
30;; ------------------------------------------------------------------------
31;; IF - Instruction Fetch
32;; II - Instruction Issue / Instruction Decode
33;; EX - Instruction Execution
34;; MM - Memory Execution
35;; WB - Instruction Retire / Result Write-Back
36
37(define_cpu_unit "n10_ii" "nds32_n10_machine")
38(define_cpu_unit "n10_ex" "nds32_n10_machine")
39(define_cpu_unit "n10_mm" "nds32_n10_machine")
40(define_cpu_unit "n10_wb" "nds32_n10_machine")
41(define_cpu_unit "n10f_iq" "nds32_n10_machine")
42(define_cpu_unit "n10f_rf" "nds32_n10_machine")
43(define_cpu_unit "n10f_e1" "nds32_n10_machine")
44(define_cpu_unit "n10f_e2" "nds32_n10_machine")
45(define_cpu_unit "n10f_e3" "nds32_n10_machine")
46(define_cpu_unit "n10f_e4" "nds32_n10_machine")
47
48(define_insn_reservation "nds_n10_unknown" 1
49  (and (eq_attr "type" "unknown")
50       (eq_attr "pipeline_model" "n10"))
51  "n10_ii, n10_ex, n10_mm, n10_wb")
52
53(define_insn_reservation "nds_n10_misc" 1
54  (and (eq_attr "type" "misc")
55       (eq_attr "pipeline_model" "n10"))
56  "n10_ii, n10_ex, n10_mm, n10_wb")
57
58(define_insn_reservation "nds_n10_mmu" 1
59  (and (eq_attr "type" "mmu")
60       (eq_attr "pipeline_model" "n10"))
61  "n10_ii, n10_ex, n10_mm, n10_wb")
62
63(define_insn_reservation "nds_n10_alu" 1
64  (and (eq_attr "type" "alu")
65       (eq_attr "pipeline_model" "n10"))
66  "n10_ii, n10_ex, n10_mm, n10_wb")
67
68(define_insn_reservation "nds_n10_alu_shift" 1
69  (and (eq_attr "type" "alu_shift")
70       (eq_attr "pipeline_model" "n10"))
71  "n10_ii, n10_ii+n10_ex, n10_ex+n10_mm, n10_mm+n10_wb, n10_wb")
72
73(define_insn_reservation "nds_n10_pbsad" 1
74  (and (eq_attr "type" "pbsad")
75       (eq_attr "pipeline_model" "n10"))
76  "n10_ii, n10_ex*3, n10_mm, n10_wb")
77
78(define_insn_reservation "nds_n10_pbsada" 1
79  (and (eq_attr "type" "pbsada")
80       (eq_attr "pipeline_model" "n10"))
81  "n10_ii, n10_ex*3, n10_mm, n10_wb")
82
83(define_insn_reservation "nds_n10_load" 1
84  (and (match_test "nds32::load_single_p (insn)")
85       (eq_attr "pipeline_model" "n10"))
86  "n10_ii, n10_ex, n10_mm, n10_wb")
87
88(define_insn_reservation "nds_n10_store" 1
89  (and (match_test "nds32::store_single_p (insn)")
90       (eq_attr "pipeline_model" "n10"))
91  "n10_ii, n10_ex, n10_mm, n10_wb")
92
93(define_insn_reservation "nds_n10_load_multiple_1" 1
94  (and (eq_attr "pipeline_model" "n10")
95       (and (eq_attr "type" "load_multiple")
96	    (eq_attr "combo" "1")))
97  "n10_ii, n10_ex, n10_mm, n10_wb")
98
99(define_insn_reservation "nds_n10_load_multiple_2" 1
100  (and (eq_attr "pipeline_model" "n10")
101       (ior (and (eq_attr "type" "load_multiple")
102		 (eq_attr "combo" "2"))
103	    (match_test "nds32::load_double_p (insn)")))
104  "n10_ii, n10_ii+n10_ex, n10_ex+n10_mm, n10_mm+n10_wb, n10_wb")
105
106(define_insn_reservation "nds_n10_load_multiple_3" 1
107  (and (eq_attr "pipeline_model" "n10")
108       (and (eq_attr "type" "load_multiple")
109	    (eq_attr "combo" "3")))
110  "n10_ii, n10_ii+n10_ex, n10_ii+n10_ex+n10_mm, n10_ex+n10_mm+n10_wb, n10_mm+n10_wb, n10_wb")
111
112(define_insn_reservation "nds_n10_load_multiple_4" 1
113  (and (eq_attr "pipeline_model" "n10")
114       (and (eq_attr "type" "load_multiple")
115	    (eq_attr "combo" "4")))
116  "n10_ii, n10_ii+n10_ex, n10_ii+n10_ex+n10_mm, n10_ii+n10_ex+n10_mm+n10_wb, n10_ex+n10_mm+n10_wb, n10_mm+n10_wb, n10_wb")
117
118(define_insn_reservation "nds_n10_load_multiple_5" 1
119  (and (eq_attr "pipeline_model" "n10")
120       (and (eq_attr "type" "load_multiple")
121	    (eq_attr "combo" "5")))
122  "n10_ii, n10_ii+n10_ex, n10_ii+n10_ex+n10_mm, (n10_ii+n10_ex+n10_mm+n10_wb)*2, n10_ex+n10_mm+n10_wb, n10_mm+n10_wb, n10_wb")
123
124(define_insn_reservation "nds_n10_load_multiple_6" 1
125  (and (eq_attr "pipeline_model" "n10")
126       (and (eq_attr "type" "load_multiple")
127	    (eq_attr "combo" "6")))
128  "n10_ii, n10_ii+n10_ex, n10_ii+n10_ex+n10_mm, (n10_ii+n10_ex+n10_mm+n10_wb)*3, n10_ex+n10_mm+n10_wb, n10_mm+n10_wb, n10_wb")
129
130(define_insn_reservation "nds_n10_load_multiple_7" 1
131  (and (eq_attr "pipeline_model" "n10")
132       (and (eq_attr "type" "load_multiple")
133	    (eq_attr "combo" "7")))
134  "n10_ii, n10_ii+n10_ex, n10_ii+n10_ex+n10_mm, (n10_ii+n10_ex+n10_mm+n10_wb)*4, n10_ex+n10_mm+n10_wb, n10_mm+n10_wb, n10_wb")
135
136(define_insn_reservation "nds_n10_load_multiple_N" 1
137  (and (eq_attr "pipeline_model" "n10")
138       (and (eq_attr "type" "load_multiple")
139	    (match_test "get_attr_combo (insn) >= 8")))
140  "n10_ii, n10_ii+n10_ex, n10_ii+n10_ex+n10_mm, (n10_ii+n10_ex+n10_mm+n10_wb)*5, n10_ex+n10_mm+n10_wb, n10_mm+n10_wb, n10_wb")
141
142(define_insn_reservation "nds_n10_store_multiple_1" 1
143  (and (eq_attr "pipeline_model" "n10")
144       (and (eq_attr "type" "store_multiple")
145	    (eq_attr "combo" "1")))
146  "n10_ii, n10_ex, n10_mm, n10_wb")
147
148(define_insn_reservation "nds_n10_store_multiple_2" 1
149  (and (eq_attr "pipeline_model" "n10")
150       (ior (and (eq_attr "type" "store_multiple")
151		 (eq_attr "combo" "2"))
152       (match_test "nds32::store_double_p (insn)")))
153  "n10_ii, n10_ii+n10_ex, n10_ex+n10_mm, n10_mm+n10_wb, n10_wb")
154
155(define_insn_reservation "nds_n10_store_multiple_3" 1
156  (and (eq_attr "pipeline_model" "n10")
157       (and (eq_attr "type" "store_multiple")
158	    (eq_attr "combo" "3")))
159  "n10_ii, n10_ii+n10_ex, n10_ii+n10_ex+n10_mm, n10_ex+n10_mm+n10_wb, n10_mm+n10_wb, n10_wb")
160
161(define_insn_reservation "nds_n10_store_multiple_4" 1
162  (and (eq_attr "pipeline_model" "n10")
163       (and (eq_attr "type" "store_multiple")
164	    (eq_attr "combo" "4")))
165  "n10_ii, n10_ii+n10_ex, n10_ii+n10_ex+n10_mm, n10_ii+n10_ex+n10_mm+n10_wb, n10_ex+n10_mm+n10_wb, n10_mm+n10_wb, n10_wb")
166
167(define_insn_reservation "nds_n10_store_multiple_5" 1
168  (and (eq_attr "pipeline_model" "n10")
169       (and (eq_attr "type" "store_multiple")
170	    (eq_attr "combo" "5")))
171  "n10_ii, n10_ii+n10_ex, n10_ii+n10_ex+n10_mm, (n10_ii+n10_ex+n10_mm+n10_wb)*2, n10_ex+n10_mm+n10_wb, n10_mm+n10_wb, n10_wb")
172
173(define_insn_reservation "nds_n10_store_multiple_6" 1
174  (and (eq_attr "pipeline_model" "n10")
175       (and (eq_attr "type" "store_multiple")
176	    (eq_attr "combo" "6")))
177  "n10_ii, n10_ii+n10_ex, n10_ii+n10_ex+n10_mm, (n10_ii+n10_ex+n10_mm+n10_wb)*3, n10_ex+n10_mm+n10_wb, n10_mm+n10_wb, n10_wb")
178
179(define_insn_reservation "nds_n10_store_multiple_7" 1
180  (and (eq_attr "pipeline_model" "n10")
181       (and (eq_attr "type" "store_multiple")
182	    (eq_attr "combo" "7")))
183  "n10_ii, n10_ii+n10_ex, n10_ii+n10_ex+n10_mm, (n10_ii+n10_ex+n10_mm+n10_wb)*4, n10_ex+n10_mm+n10_wb, n10_mm+n10_wb, n10_wb")
184
185(define_insn_reservation "nds_n10_store_multiple_N" 1
186  (and (eq_attr "pipeline_model" "n10")
187       (and (eq_attr "type" "store_multiple")
188	    (match_test "get_attr_combo (insn) >= 8")))
189  "n10_ii, n10_ii+n10_ex, n10_ii+n10_ex+n10_mm, (n10_ii+n10_ex+n10_mm+n10_wb)*5, n10_ex+n10_mm+n10_wb, n10_mm+n10_wb, n10_wb")
190
191(define_insn_reservation "nds_n10_mul" 1
192  (and (eq_attr "type" "mul")
193       (eq_attr "pipeline_model" "n10"))
194  "n10_ii, n10_ex, n10_mm, n10_wb")
195
196(define_insn_reservation "nds_n10_mac" 1
197       (and (eq_attr "type" "mac")
198	    (eq_attr "pipeline_model" "n10"))
199  "n10_ii, n10_ex, n10_mm, n10_wb")
200
201(define_insn_reservation "nds_n10_div" 1
202  (and (eq_attr "type" "div")
203       (eq_attr "pipeline_model" "n10"))
204  "n10_ii, n10_ex*34, n10_mm, n10_wb")
205
206(define_insn_reservation "nds_n10_branch" 1
207  (and (eq_attr "type" "branch")
208       (eq_attr "pipeline_model" "n10"))
209  "n10_ii, n10_ex, n10_mm, n10_wb")
210
211(define_insn_reservation "nds_n10_dsp_alu" 1
212  (and (eq_attr "type" "dalu")
213       (eq_attr "pipeline_model" "n10"))
214  "n10_ii, n10_ex, n10_mm, n10_wb")
215
216(define_insn_reservation "nds_n10_dsp_alu64" 1
217  (and (eq_attr "type" "dalu64")
218       (eq_attr "pipeline_model" "n10"))
219  "n10_ii, n10_ex, n10_mm, n10_wb")
220
221(define_insn_reservation "nds_n10_dsp_alu_round" 1
222  (and (eq_attr "type" "daluround")
223       (eq_attr "pipeline_model" "n10"))
224  "n10_ii, n10_ex, n10_mm, n10_wb")
225
226(define_insn_reservation "nds_n10_dsp_cmp" 1
227  (and (eq_attr "type" "dcmp")
228       (eq_attr "pipeline_model" "n10"))
229  "n10_ii, n10_ex, n10_mm, n10_wb")
230
231(define_insn_reservation "nds_n10_dsp_clip" 1
232  (and (eq_attr "type" "dclip")
233       (eq_attr "pipeline_model" "n10"))
234  "n10_ii, n10_ex, n10_mm, n10_wb")
235
236(define_insn_reservation "nds_n10_dsp_mul" 1
237  (and (eq_attr "type" "dmul")
238       (eq_attr "pipeline_model" "n10"))
239  "n10_ii, n10_ex, n10_mm, n10_wb")
240
241(define_insn_reservation "nds_n10_dsp_mac" 1
242  (and (eq_attr "type" "dmac")
243       (eq_attr "pipeline_model" "n10"))
244  "n10_ii, n10_ex, n10_mm, n10_wb")
245
246(define_insn_reservation "nds_n10_dsp_insb" 1
247  (and (eq_attr "type" "dinsb")
248       (eq_attr "pipeline_model" "n10"))
249  "n10_ii, n10_ex, n10_mm, n10_wb")
250
251(define_insn_reservation "nds_n10_dsp_pack" 1
252  (and (eq_attr "type" "dpack")
253       (eq_attr "pipeline_model" "n10"))
254  "n10_ii, n10_ex, n10_mm, n10_wb")
255
256(define_insn_reservation "nds_n10_dsp_bpick" 1
257  (and (eq_attr "type" "dbpick")
258       (eq_attr "pipeline_model" "n10"))
259  "n10_ii, n10_ex, n10_mm, n10_wb")
260
261(define_insn_reservation "nds_n10_dsp_wext" 1
262  (and (eq_attr "type" "dwext")
263       (eq_attr "pipeline_model" "n10"))
264  "n10_ii, n10_ex, n10_mm, n10_wb")
265
266(define_insn_reservation "nds_n10_fpu_alu" 4
267  (and (eq_attr "type" "falu")
268       (eq_attr "pipeline_model" "n10"))
269  "n10_ii, n10f_iq, n10f_rf, n10f_e1, n10f_e2, n10f_e3, n10f_e4")
270
271(define_insn_reservation "nds_n10_fpu_muls" 4
272  (and (eq_attr "type" "fmuls")
273       (eq_attr "pipeline_model" "n10"))
274  "n10_ii, n10f_iq, n10f_rf, n10f_e1, n10f_e2, n10f_e3, n10f_e4")
275
276(define_insn_reservation "nds_n10_fpu_muld" 4
277  (and (eq_attr "type" "fmuld")
278       (eq_attr "pipeline_model" "n10"))
279  "n10_ii, n10f_iq, n10f_rf, n10f_e1, n10f_e2*2, n10f_e3, n10f_e4")
280
281(define_insn_reservation "nds_n10_fpu_macs" 4
282  (and (eq_attr "type" "fmacs")
283       (eq_attr "pipeline_model" "n10"))
284  "n10_ii, n10f_iq, n10f_rf, n10f_e1, n10f_e2*3, n10f_e3, n10f_e4")
285
286(define_insn_reservation "nds_n10_fpu_macd" 4
287  (and (eq_attr "type" "fmacd")
288       (eq_attr "pipeline_model" "n10"))
289  "n10_ii, n10f_iq, n10f_rf, n10f_e1, n10f_e2*4, n10f_e3, n10f_e4")
290
291(define_insn_reservation "nds_n10_fpu_divs" 4
292  (and (ior (eq_attr "type" "fdivs")
293	    (eq_attr "type" "fsqrts"))
294       (eq_attr "pipeline_model" "n10"))
295  "n10_ii, n10f_iq, n10f_rf, n10f_e1, n10f_e2*14, n10f_e3, n10f_e4")
296
297(define_insn_reservation "nds_n10_fpu_divd" 4
298  (and (ior (eq_attr "type" "fdivd")
299	    (eq_attr "type" "fsqrtd"))
300       (eq_attr "pipeline_model" "n10"))
301  "n10_ii, n10f_iq, n10f_rf, n10f_e1, n10f_e2*28, n10f_e3, n10f_e4")
302
303(define_insn_reservation "nds_n10_fpu_fast_alu" 2
304  (and (ior (eq_attr "type" "fcmp")
305	    (ior (eq_attr "type" "fabs")
306		 (ior (eq_attr "type" "fcpy")
307		      (eq_attr "type" "fcmov"))))
308       (eq_attr "pipeline_model" "n10"))
309  "n10_ii, n10f_iq, n10f_rf, n10f_e1, n10f_e2, n10f_e3, n10f_e4")
310
311(define_insn_reservation "nds_n10_fpu_fmtsr" 4
312  (and (eq_attr "type" "fmtsr")
313       (eq_attr "pipeline_model" "n10"))
314  "n10_ii, n10f_iq, n10f_rf, n10f_e1, n10f_e2, n10f_e3, n10f_e4")
315
316(define_insn_reservation "nds_n10_fpu_fmtdr" 4
317  (and (eq_attr "type" "fmtdr")
318       (eq_attr "pipeline_model" "n10"))
319  "n10_ii, n10_ii+n10f_iq, n10f_iq+n10f_rf, n10f_rf+n10f_e1, n10f_e1+n10f_e2, n10f_e2+n10f_e3, n10f_e3+n10f_e4, n10f_e4")
320
321(define_insn_reservation "nds_n10_fpu_fmfsr" 2
322  (and (eq_attr "type" "fmfsr")
323       (eq_attr "pipeline_model" "n10"))
324  "n10_ii, n10f_iq, n10f_rf, n10f_e1, n10f_e2, n10f_e3, n10f_e4")
325
326(define_insn_reservation "nds_n10_fpu_fmfdr" 2
327  (and (eq_attr "type" "fmfdr")
328       (eq_attr "pipeline_model" "n10"))
329  "n10_ii, n10_ii+n10f_iq, n10f_iq+n10f_rf, n10f_rf+n10f_e1, n10f_e1+n10f_e2, n10f_e2+n10f_e3, n10f_e3+n10f_e4, n10f_e4")
330
331(define_insn_reservation "nds_n10_fpu_load" 3
332  (and (eq_attr "type" "fload")
333       (eq_attr "pipeline_model" "n10"))
334  "n10_ii, n10f_iq, n10f_rf, n10f_e1, n10f_e2, n10f_e3, n10f_e4")
335
336(define_insn_reservation "nds_n10_fpu_store" 1
337  (and (eq_attr "type" "fstore")
338       (eq_attr "pipeline_model" "n10"))
339  "n10_ii, n10f_iq, n10f_rf, n10f_e1, n10f_e2, n10f_e3, n10f_e4")
340
341;; ------------------------------------------------------------------------
342;; Comment Notations and Bypass Rules
343;; ------------------------------------------------------------------------
344;; Producers (LHS)
345;;   LD
346;;     Load data from the memory and produce the loaded data. The result is
347;;     ready at MM.
348;;   LMW(N, M)
349;;     There are N micro-operations within an instruction that loads multiple
350;;     words. The result produced by the M-th micro-operation is sent to
351;;     consumers. The result is ready at MM.
352;;   MUL, MAC
353;;     Compute data in the multiply-adder and produce the data. The result
354;;     is ready at MM.
355;;   DIV
356;;     Compute data in the divider and produce the data. The result is ready
357;;     at MM.
358;;
359;; Consumers (RHS)
360;;   ALU, MOVD44, PBSAD, PBSADA_RaRb, MUL, MAC, DIV, MMU
361;;     Require operands at EX.
362;;   ALU_SHIFT_Rb
363;;     An ALU-SHIFT instruction consists of a shift micro-operation followed
364;;     by an arithmetic micro-operation. The operand Rb is used by the first
365;;     micro-operation, and there are some latencies if data dependency occurs.
366;;   MAC_RaRb
367;;     A MAC instruction does multiplication at EX and does accumulation at MM,
368;;     so the operand Rt is required at MM, and operands Ra and Rb are required
369;;     at EX.
370;;   ADDR_IN
371;;     If an instruction requires an address as its input operand, the address
372;;     is required at EX.
373;;   ST
374;;     A store instruction requires its data at MM.
375;;   SMW(N, M)
376;;     There are N micro-operations within an instruction that stores multiple
377;;     words. Each M-th micro-operation requires its data at MM.
378;;   BR
379;;     If a branch instruction is conditional, its input data is required at EX.
380
381;; FPU_ADDR_OUT -> FPU_ADDR_IN
382;; Main pipeline rules don't need this because those default latency is 1.
383(define_bypass 1
384  "nds_n10_fpu_load, nds_n10_fpu_store"
385  "nds_n10_fpu_load, nds_n10_fpu_store"
386  "nds32_n10_ex_to_ex_p"
387)
388
389;; LD, MUL, MAC, DIV, DALU64, DMUL, DMAC, DALUROUND, DBPICK, DWEXT
390;;   -> ALU, ALU_SHIFT_Rb, PBSAD, PBSADA_RaRb, MOVD44, MUL, MAC_RaRb, DIV, ADDR_IN, BR, MMU,
391;;      DALU, DALUROUND, DMUL, DMAC_RaRb, DPACK, DINSB, DCMP, DCLIP, WEXT_O, BPICK_RaRb
392(define_bypass 2
393  "nds_n10_load, nds_n10_mul, nds_n10_mac, nds_n10_div,\
394   nds_n10_dsp_alu64, nds_n10_dsp_mul, nds_n10_dsp_mac,\
395   nds_n10_dsp_alu_round, nds_n10_dsp_bpick, nds_n10_dsp_wext"
396  "nds_n10_alu, nds_n10_alu_shift,\
397   nds_n10_pbsad, nds_n10_pbsada,\
398   nds_n10_mul, nds_n10_mac, nds_n10_div,\
399   nds_n10_branch,\
400   nds_n10_load, nds_n10_store,\
401   nds_n10_load_multiple_1, nds_n10_load_multiple_2, nds_n10_load_multiple_3,\
402   nds_n10_load_multiple_4, nds_n10_load_multiple_5, nds_n10_load_multiple_6,\
403   nds_n10_load_multiple_7, nds_n10_load_multiple_N,\
404   nds_n10_store_multiple_1, nds_n10_store_multiple_2, nds_n10_store_multiple_3,\
405   nds_n10_store_multiple_4, nds_n10_store_multiple_5, nds_n10_store_multiple_6,\
406   nds_n10_store_multiple_7, nds_n10_store_multiple_N,\
407   nds_n10_mmu,\
408   nds_n10_dsp_alu, nds_n10_dsp_alu_round,\
409   nds_n10_dsp_mul, nds_n10_dsp_mac, nds_n10_dsp_pack,\
410   nds_n10_dsp_insb, nds_n10_dsp_cmp, nds_n10_dsp_clip,\
411   nds_n10_dsp_wext, nds_n10_dsp_bpick"
412  "nds32_n10_mm_to_ex_p"
413)
414
415;; LMW(N, N)
416;;   -> ALU, ALU_SHIFT_Rb, PBSAD, PBSADA_RaRb, MOVD44, MUL, MAC_RaRb, DIV, ADDR_IN, BR, MMU
417;;      DALU, DALUROUND, DMUL, DMAC_RaRb, DPACK, DINSB, DCMP, DCLIP, WEXT_O, BPICK_RaRb
418(define_bypass 2
419  "nds_n10_load_multiple_1, nds_n10_load_multiple_2, nds_n10_load_multiple_3,\
420   nds_n10_load_multiple_4, nds_n10_load_multiple_5, nds_n10_load_multiple_6,\
421   nds_n10_load_multiple_7, nds_n10_load_multiple_N"
422  "nds_n10_alu, nds_n10_alu_shift,\
423   nds_n10_pbsad, nds_n10_pbsada,\
424   nds_n10_mul, nds_n10_mac, nds_n10_div,\
425   nds_n10_branch,\
426   nds_n10_load, nds_n10_store,\
427   nds_n10_load_multiple_1, nds_n10_load_multiple_2, nds_n10_load_multiple_3,\
428   nds_n10_load_multiple_4, nds_n10_load_multiple_5, nds_n10_load_multiple_6,\
429   nds_n10_load_multiple_7, nds_n10_load_multiple_N,\
430   nds_n10_store_multiple_1, nds_n10_store_multiple_2, nds_n10_store_multiple_3,\
431   nds_n10_store_multiple_4, nds_n10_store_multiple_5, nds_n10_store_multiple_6,\
432   nds_n10_store_multiple_7, nds_n10_store_multiple_N,\
433   nds_n10_mmu,\
434   nds_n10_dsp_alu, nds_n10_dsp_alu_round,\
435   nds_n10_dsp_mul, nds_n10_dsp_mac, nds_n10_dsp_pack,\
436   nds_n10_dsp_insb, nds_n10_dsp_cmp, nds_n10_dsp_clip,\
437   nds_n10_dsp_wext, nds_n10_dsp_bpick"
438  "nds32_n10_last_load_to_ex_p"
439)
440