2018-11-09 Richard Biener <rguenther@suse.de>
[official-gcc.git] / gcc / config / nds32 / nds32-n10.md
blob0dd76da1ef84522e4694c6ab2e9d2869769a1152
1 ;; Pipeline descriptions of Andes NDS32 cpu for GNU compiler
2 ;; Copyright (C) 2012-2018 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/>.
22 ;; ------------------------------------------------------------------------
23 ;; Define N10 pipeline settings.
24 ;; ------------------------------------------------------------------------
26 (define_automaton "nds32_n10_machine")
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
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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")
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.
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.
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"
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"
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"