annotate gcc/config/nds32/nds32-n13.md @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children 1830386684a0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
131
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
1 ;; Pipeline descriptions of Andes NDS32 cpu for GNU compiler
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
2 ;; Copyright (C) 2012-2018 Free Software Foundation, Inc.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
3 ;; Contributed by Andes Technology Corporation.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
4 ;;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
5 ;; This file is part of GCC.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
6 ;;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
7 ;; GCC is free software; you can redistribute it and/or modify it
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
8 ;; under the terms of the GNU General Public License as published
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
9 ;; by the Free Software Foundation; either version 3, or (at your
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
10 ;; option) any later version.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
11 ;;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
12 ;; GCC is distributed in the hope that it will be useful, but WITHOUT
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
13 ;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
14 ;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
15 ;; License for more details.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
16 ;;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
17 ;; You should have received a copy of the GNU General Public License
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
18 ;; along with GCC; see the file COPYING3. If not see
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
19 ;; <http://www.gnu.org/licenses/>.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
20
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
21
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
22 ;; ------------------------------------------------------------------------
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
23 ;; Define N13 pipeline settings.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
24 ;; ------------------------------------------------------------------------
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
25
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
26 (define_automaton "nds32_n13_machine")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
27
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
28 ;; ------------------------------------------------------------------------
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
29 ;; Pipeline Stages
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
30 ;; ------------------------------------------------------------------------
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
31 ;; F1 - Instruction Fetch First
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
32 ;; Instruction Tag/Data Arrays
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
33 ;; ITLB Address Translation
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
34 ;; Branch Target Buffer Prediction
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
35 ;; F2 - Instruction Fetch Second
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
36 ;; Instruction Cache Hit Detection
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
37 ;; Cache Way Selection
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
38 ;; Inustruction Alignment
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
39 ;; I1 - Instruction Issue First / Instruction Decode
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
40 ;; Instruction Cache Replay Triggering
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
41 ;; 32/16-Bit Instruction Decode
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
42 ;; Return Address Stack Prediction
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
43 ;; I2 - Instruction Issue Second / Register File Access
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
44 ;; Instruction Issue Logic
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
45 ;; Register File Access
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
46 ;; E1 - Instruction Execute First / Address Generation / MAC First
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
47 ;; Data Access Address generation
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
48 ;; Multiply Operation
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
49 ;; E2 - Instruction Execute Second / Data Access First / MAC Second /
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
50 ;; ALU Execute
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
51 ;; Skewed ALU
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
52 ;; Branch/Jump/Return Resolution
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
53 ;; Data Tag/Data arrays
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
54 ;; DTLB address translation
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
55 ;; Accumulation Operation
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
56 ;; E3 - Instruction Execute Third / Data Access Second
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
57 ;; Data Cache Hit Detection
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
58 ;; Cache Way Selection
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
59 ;; Data Alignment
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
60 ;; E4 - Instruction Execute Fourth / Write Back
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
61 ;; Interruption Resolution
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
62 ;; Instruction Retire
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
63 ;; Register File Write Back
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
64
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
65 (define_cpu_unit "n13_i1" "nds32_n13_machine")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
66 (define_cpu_unit "n13_i2" "nds32_n13_machine")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
67 (define_cpu_unit "n13_e1" "nds32_n13_machine")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
68 (define_cpu_unit "n13_e2" "nds32_n13_machine")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
69 (define_cpu_unit "n13_e3" "nds32_n13_machine")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
70 (define_cpu_unit "n13_e4" "nds32_n13_machine")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
71
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
72 (define_insn_reservation "nds_n13_unknown" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
73 (and (eq_attr "type" "unknown")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
74 (eq_attr "pipeline_model" "n13"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
75 "n13_i1, n13_i2, n13_e1, n13_e2, n13_e3, n13_e4")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
76
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
77 (define_insn_reservation "nds_n13_misc" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
78 (and (eq_attr "type" "misc")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
79 (eq_attr "pipeline_model" "n13"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
80 "n13_i1, n13_i2, n13_e1, n13_e2, n13_e3, n13_e4")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
81
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
82 (define_insn_reservation "nds_n13_mmu" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
83 (and (eq_attr "type" "mmu")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
84 (eq_attr "pipeline_model" "n13"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
85 "n13_i1, n13_i2, n13_e1, n13_e2, n13_e3, n13_e4")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
86
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
87 (define_insn_reservation "nds_n13_alu" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
88 (and (eq_attr "type" "alu")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
89 (eq_attr "pipeline_model" "n13"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
90 "n13_i1, n13_i2, n13_e1, n13_e2, n13_e3, n13_e4")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
91
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
92 (define_insn_reservation "nds_n13_alu_shift" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
93 (and (eq_attr "type" "alu_shift")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
94 (eq_attr "pipeline_model" "n13"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
95 "n13_i1, n13_i1+n13_i2, n13_i2+n13_e1, n13_e1+n13_e2, n13_e2+n13_e3, n13_e3+n13_e4, n13_e4")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
96
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
97 (define_insn_reservation "nds_n13_pbsad" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
98 (and (eq_attr "type" "pbsad")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
99 (eq_attr "pipeline_model" "n13"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
100 "n13_i1, n13_i2, n13_e1, n13_e2*2, n13_e3, n13_e4")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
101
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
102 (define_insn_reservation "nds_n13_pbsada" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
103 (and (eq_attr "type" "pbsada")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
104 (eq_attr "pipeline_model" "n13"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
105 "n13_i1, n13_i2, n13_e1, n13_e2*3, n13_e3, n13_e4")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
106
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
107 (define_insn_reservation "nds_n13_load" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
108 (and (match_test "nds32::load_single_p (insn)")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
109 (eq_attr "pipeline_model" "n13"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
110 "n13_i1, n13_i2, n13_e1, n13_e2, n13_e3, n13_e4")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
111
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
112 (define_insn_reservation "nds_n13_store" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
113 (and (match_test "nds32::store_single_p (insn)")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
114 (eq_attr "pipeline_model" "n13"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
115 "n13_i1, n13_i2, n13_e1, n13_e2, n13_e3, n13_e4")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
116
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
117 (define_insn_reservation "nds_n13_load_multiple_1" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
118 (and (and (eq_attr "type" "load_multiple")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
119 (eq_attr "combo" "1"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
120 (eq_attr "pipeline_model" "n13"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
121 "n13_i1, n13_i2, n13_e1, n13_e2, n13_e3, n13_e4")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
122
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
123 (define_insn_reservation "nds_n13_load_multiple_2" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
124 (and (ior (and (eq_attr "type" "load_multiple")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
125 (eq_attr "combo" "2"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
126 (match_test "nds32::load_double_p (insn)"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
127 (eq_attr "pipeline_model" "n13"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
128 "n13_i1, n13_i1+n13_i2, n13_i2+n13_e1, n13_e1+n13_e2, n13_e2+n13_e3, n13_e3+n13_e4, n13_e4")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
129
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
130 (define_insn_reservation "nds_n13_load_multiple_3" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
131 (and (and (eq_attr "type" "load_multiple")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
132 (eq_attr "combo" "3"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
133 (eq_attr "pipeline_model" "n13"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
134 "n13_i1, n13_i2+n13_i2, n13_i1+n13_i2+n13_e1, n13_i2+n13_e1+n13_e2, n13_e1+n13_e2+n13_e3, n13_e2+n13_e3+n13_e4, n13_e3+n13_e4, n13_e4")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
135
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
136 (define_insn_reservation "nds_n13_load_multiple_4" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
137 (and (and (eq_attr "type" "load_multiple")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
138 (eq_attr "combo" "4"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
139 (eq_attr "pipeline_model" "n13"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
140 "n13_i1, n13_i1+n13_i2, n13_i1+n13_i2+n13_e1, n13_i1+n13_i2+n13_e1+n13_e2, n13_i2+n13_e1+n13_e2+n13_e3, n13_e1+n13_e2+n13_e3+n13_e4, n13_e2+n13_e3+n13_e4, n13_e3+n13_e4, n13_e4")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
141
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
142 (define_insn_reservation "nds_n13_load_multiple_5" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
143 (and (and (eq_attr "type" "load_multiple")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
144 (eq_attr "combo" "5"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
145 (eq_attr "pipeline_model" "n13"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
146 "n13_i1, n13_i1+n13_i2, n13_i1+n13_i2+n13_e1, n13_i1+n13_i2+n13_e1+n13_e2, n13_i1+n13_i2+n13_e1+n13_e2+n13_e3, n13_i2+n13_e1+n13_e2+n13_e3+n13_e4, n13_e1+n13_e2+n13_e3+n13_e4, n13_e2+n13_e3+n13_e4, n13_e3+n13_e4, n13_e4")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
147
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
148 (define_insn_reservation "nds_n13_load_multiple_6" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
149 (and (and (eq_attr "type" "load_multiple")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
150 (eq_attr "combo" "6"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
151 (eq_attr "pipeline_model" "n13"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
152 "n13_i1, n13_i1+n13_i2, n13_i1+n13_i2+n13_e1, n13_i1+n13_i2+n13_e1+n13_e2, n13_i1+n13_i2+n13_e1+n13_e2+n13_e3, n13_i1+n13_i2+n13_e1+n13_e2+n13_e3+n13_e4, n13_i2+n13_e1+n13_e2+n13_e3+n13_e4, n13_e1+n13_e2+n13_e3+n13_e4, n13_e2+n13_e3+n13_e4, n13_e3+n13_e4, n13_e4")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
153
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
154 (define_insn_reservation "nds_n13_load_multiple_7" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
155 (and (and (eq_attr "type" "load_multiple")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
156 (eq_attr "combo" "7"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
157 (eq_attr "pipeline_model" "n13"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
158 "n13_i1, n13_i1+n13_i2, n13_i1+n13_i2+n13_e1, n13_i1+n13_i2+n13_e1+n13_e2, n13_i1+n13_i2+n13_e1+n13_e2+n13_e3, (n13_i1+n13_i2+n13_e1+n13_e2+n13_e3+n13_e4)*2, n13_i2+n13_e1+n13_e2+n13_e3+n13_e4, n13_e1+n13_e2+n13_e3+n13_e4, n13_e2+n13_e3+n13_e4, n13_e3+n13_e4, n13_e4")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
159
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
160 (define_insn_reservation "nds_n13_load_multiple_8" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
161 (and (and (eq_attr "type" "load_multiple")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
162 (eq_attr "combo" "8"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
163 (eq_attr "pipeline_model" "n13"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
164 "n13_i1, n13_i1+n13_i2, n13_i1+n13_i2+n13_e1, n13_i1+n13_i2+n13_e1+n13_e2, n13_i1+n13_i2+n13_e1+n13_e2+n13_e3, (n13_i1+n13_i2+n13_e1+n13_e2+n13_e3+n13_e4)*3, n13_i2+n13_e1+n13_e2+n13_e3+n13_e4, n13_e1+n13_e2+n13_e3+n13_e4, n13_e2+n13_e3+n13_e4, n13_e3+n13_e4, n13_e4")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
165
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
166 (define_insn_reservation "nds_n13_load_multiple_12" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
167 (and (and (eq_attr "type" "load_multiple")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
168 (eq_attr "combo" "12"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
169 (eq_attr "pipeline_model" "n13"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
170 "n13_i1, n13_i1+n13_i2, n13_i1+n13_i2+n13_e1, n13_i1+n13_i2+n13_e1+n13_e2, n13_i1+n13_i2+n13_e1+n13_e2+n13_e3, (n13_i1+n13_i2+n13_e1+n13_e2+n13_e3+n13_e4)*7, n13_i2+n13_e1+n13_e2+n13_e3+n13_e4, n13_e1+n13_e2+n13_e3+n13_e4, n13_e2+n13_e3+n13_e4, n13_e3+n13_e4, n13_e4")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
171
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
172 (define_insn_reservation "nds_n13_store_multiple_1" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
173 (and (and (eq_attr "type" "store_multiple")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
174 (eq_attr "combo" "1"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
175 (eq_attr "pipeline_model" "n13"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
176 "n13_i1, n13_i2, n13_e1, n13_e2, n13_e3, n13_e4")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
177
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
178 (define_insn_reservation "nds_n13_store_multiple_2" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
179 (and (ior (and (eq_attr "type" "store_multiple")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
180 (eq_attr "combo" "2"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
181 (match_test "nds32::store_double_p (insn)"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
182 (eq_attr "pipeline_model" "n13"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
183 "n13_i1, n13_i1+n13_i2, n13_i2+n13_e1, n13_e1+n13_e2, n13_e2+n13_e3, n13_e3+n13_e4, n13_e4")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
184
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
185 (define_insn_reservation "nds_n13_store_multiple_3" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
186 (and (and (eq_attr "type" "store_multiple")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
187 (eq_attr "combo" "3"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
188 (eq_attr "pipeline_model" "n13"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
189 "n13_i1, n13_i2+n13_i2, n13_i1+n13_i2+n13_e1, n13_i2+n13_e1+n13_e2, n13_e1+n13_e2+n13_e3, n13_e2+n13_e3+n13_e4, n13_e3+n13_e4, n13_e4")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
190
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
191 (define_insn_reservation "nds_n13_store_multiple_4" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
192 (and (and (eq_attr "type" "store_multiple")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
193 (eq_attr "combo" "4"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
194 (eq_attr "pipeline_model" "n13"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
195 "n13_i1, n13_i1+n13_i2, n13_i1+n13_i2+n13_e1, n13_i1+n13_i2+n13_e1+n13_e2, n13_i2+n13_e1+n13_e2+n13_e3, n13_e1+n13_e2+n13_e3+n13_e4, n13_e2+n13_e3+n13_e4, n13_e3+n13_e4, n13_e4")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
196
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
197 (define_insn_reservation "nds_n13_store_multiple_5" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
198 (and (and (eq_attr "type" "store_multiple")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
199 (eq_attr "combo" "5"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
200 (eq_attr "pipeline_model" "n13"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
201 "n13_i1, n13_i1+n13_i2, n13_i1+n13_i2+n13_e1, n13_i1+n13_i2+n13_e1+n13_e2, n13_i1+n13_i2+n13_e1+n13_e2+n13_e3, n13_i2+n13_e1+n13_e2+n13_e3+n13_e4, n13_e1+n13_e2+n13_e3+n13_e4, n13_e2+n13_e3+n13_e4, n13_e3+n13_e4, n13_e4")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
202
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
203 (define_insn_reservation "nds_n13_store_multiple_6" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
204 (and (and (eq_attr "type" "store_multiple")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
205 (eq_attr "combo" "6"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
206 (eq_attr "pipeline_model" "n13"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
207 "n13_i1, n13_i1+n13_i2, n13_i1+n13_i2+n13_e1, n13_i1+n13_i2+n13_e1+n13_e2, n13_i1+n13_i2+n13_e1+n13_e2+n13_e3, n13_i1+n13_i2+n13_e1+n13_e2+n13_e3+n13_e4, n13_i2+n13_e1+n13_e2+n13_e3+n13_e4, n13_e1+n13_e2+n13_e3+n13_e4, n13_e2+n13_e3+n13_e4, n13_e3+n13_e4, n13_e4")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
208
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
209 (define_insn_reservation "nds_n13_store_multiple_7" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
210 (and (and (eq_attr "type" "store_multiple")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
211 (eq_attr "combo" "7"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
212 (eq_attr "pipeline_model" "n13"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
213 "n13_i1, n13_i1+n13_i2, n13_i1+n13_i2+n13_e1, n13_i1+n13_i2+n13_e1+n13_e2, n13_i1+n13_i2+n13_e1+n13_e2+n13_e3, (n13_i1+n13_i2+n13_e1+n13_e2+n13_e3+n13_e4)*2, n13_i2+n13_e1+n13_e2+n13_e3+n13_e4, n13_e1+n13_e2+n13_e3+n13_e4, n13_e2+n13_e3+n13_e4, n13_e3+n13_e4, n13_e4")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
214
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
215 (define_insn_reservation "nds_n13_store_multiple_8" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
216 (and (and (eq_attr "type" "store_multiple")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
217 (eq_attr "combo" "8"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
218 (eq_attr "pipeline_model" "n13"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
219 "n13_i1, n13_i1+n13_i2, n13_i1+n13_i2+n13_e1, n13_i1+n13_i2+n13_e1+n13_e2, n13_i1+n13_i2+n13_e1+n13_e2+n13_e3, (n13_i1+n13_i2+n13_e1+n13_e2+n13_e3+n13_e4)*3, n13_i2+n13_e1+n13_e2+n13_e3+n13_e4, n13_e1+n13_e2+n13_e3+n13_e4, n13_e2+n13_e3+n13_e4, n13_e3+n13_e4, n13_e4")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
220
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
221 (define_insn_reservation "nds_n13_store_multiple_12" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
222 (and (and (eq_attr "type" "store_multiple")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
223 (eq_attr "combo" "12"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
224 (eq_attr "pipeline_model" "n13"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
225 "n13_i1, n13_i1+n13_i2, n13_i1+n13_i2+n13_e1, n13_i1+n13_i2+n13_e1+n13_e2, n13_i1+n13_i2+n13_e1+n13_e2+n13_e3, (n13_i1+n13_i2+n13_e1+n13_e2+n13_e3+n13_e4)*7, n13_i2+n13_e1+n13_e2+n13_e3+n13_e4, n13_e1+n13_e2+n13_e3+n13_e4, n13_e2+n13_e3+n13_e4, n13_e3+n13_e4, n13_e4")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
226
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
227 ;; The multiplier at E1 takes two cycles.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
228 (define_insn_reservation "nds_n13_mul" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
229 (and (eq_attr "type" "mul")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
230 (eq_attr "pipeline_model" "n13"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
231 "n13_i1, n13_i2, n13_e1*2, n13_e2, n13_e3, n13_e4")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
232
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
233 (define_insn_reservation "nds_n13_mac" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
234 (and (eq_attr "type" "mac")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
235 (eq_attr "pipeline_model" "n13"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
236 "n13_i1, n13_i2, n13_e1*2, n13_e2, n13_e3, n13_e4")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
237
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
238 ;; The cycles consumed at E2 are 32 - CLZ(abs(Ra)) + 2,
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
239 ;; so the worst case is 34.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
240 (define_insn_reservation "nds_n13_div" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
241 (and (eq_attr "type" "div")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
242 (eq_attr "pipeline_model" "n13"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
243 "n13_i1, n13_i2, n13_e1, n13_e2*34, n13_e3, n13_e4")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
244
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
245 (define_insn_reservation "nds_n13_branch" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
246 (and (eq_attr "type" "branch")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
247 (eq_attr "pipeline_model" "n13"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
248 "n13_i1, n13_i2, n13_e1, n13_e2, n13_e3, n13_e4")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
249
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
250 ;; ------------------------------------------------------------------------
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
251 ;; Comment Notations and Bypass Rules
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
252 ;; ------------------------------------------------------------------------
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
253 ;; Producers (LHS)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
254 ;; LD
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
255 ;; Load data from the memory and produce the loaded data. The result is
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
256 ;; ready at E3.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
257 ;; LMW(N, M)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
258 ;; There are N micro-operations within an instruction that loads multiple
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
259 ;; words. The result produced by the M-th micro-operation is sent to
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
260 ;; consumers. The result is ready at E3.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
261 ;; ADDR_OUT
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
262 ;; Most load/store instructions can produce an address output if updating
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
263 ;; the base register is required. The result is ready at E2, which is
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
264 ;; produced by ALU.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
265 ;; ALU, ALU_SHIFT, SIMD
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
266 ;; Compute data in ALU and produce the data. The result is ready at E2.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
267 ;; MUL, MAC
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
268 ;; Compute data in the multiply-adder and produce the data. The result
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
269 ;; is ready at E2.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
270 ;; DIV
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
271 ;; Compute data in the divider and produce the data. The result is ready
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
272 ;; at E2.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
273 ;; BR
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
274 ;; Branch-with-link instructions produces a result containing the return
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
275 ;; address. The result is ready at E2.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
276 ;;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
277 ;; Consumers (RHS)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
278 ;; ALU
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
279 ;; General ALU instructions require operands at E2.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
280 ;; ALU_E1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
281 ;; Some special ALU instructions, such as BSE, BSP and MOVD44, require
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
282 ;; operand at E1.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
283 ;; MUL, DIV, PBSAD, MMU
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
284 ;; Operands are required at E1.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
285 ;; PBSADA_Rt, PBSADA_RaRb
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
286 ;; Operands Ra and Rb are required at E1, and the operand Rt is required
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
287 ;; at E2.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
288 ;; ALU_SHIFT_Rb
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
289 ;; An ALU-SHIFT instruction consists of a shift micro-operation followed
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
290 ;; by an arithmetic micro-operation. The operand Rb is used by the first
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
291 ;; micro-operation, and there are some latencies if data dependency occurs.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
292 ;; MAC_RaRb
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
293 ;; A MAC instruction does multiplication at E1 and does accumulation at E2,
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
294 ;; so the operand Rt is required at E2, and operands Ra and Rb are required
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
295 ;; at E1.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
296 ;; ADDR_IN
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
297 ;; If an instruction requires an address as its input operand, the address
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
298 ;; is required at E1.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
299 ;; ST
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
300 ;; A store instruction requires its data at E2.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
301 ;; SMW(N, M)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
302 ;; There are N micro-operations within an instruction that stores multiple
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
303 ;; words. Each M-th micro-operation requires its data at E2.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
304 ;; BR
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
305 ;; If a branch instruction is conditional, its input data is required at E2.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
306
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
307 ;; LD -> ALU_E1, PBSAD, PBSADA_RaRb, MUL, MAC_RaRb, DIV, MMU, ADDR_IN
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
308 (define_bypass 3
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
309 "nds_n13_load"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
310 "nds_n13_alu, nds_n13_pbsad, nds_n13_pbsada,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
311 nds_n13_mul, nds_n13_mac, nds_n13_div,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
312 nds_n13_mmu,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
313 nds_n13_load, nds_n13_store,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
314 nds_n13_load_multiple_1,nds_n13_load_multiple_2, nds_n13_load_multiple_3,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
315 nds_n13_load_multiple_4,nds_n13_load_multiple_5, nds_n13_load_multiple_6,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
316 nds_n13_load_multiple_7,nds_n13_load_multiple_8, nds_n13_load_multiple_12,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
317 nds_n13_store_multiple_1,nds_n13_store_multiple_2, nds_n13_store_multiple_3,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
318 nds_n13_store_multiple_4,nds_n13_store_multiple_5, nds_n13_store_multiple_6,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
319 nds_n13_store_multiple_7,nds_n13_store_multiple_8, nds_n13_store_multiple_12"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
320 "nds32_n13_load_to_e1_p"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
321 )
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
322
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
323 ;; LD -> ALU, ALU_SHIFT_Rb, PBSADA_Rt, BR, ST, SMW(N, 1)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
324 (define_bypass 2
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
325 "nds_n13_load"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
326 "nds_n13_alu, nds_n13_alu_shift, nds_n13_pbsada, nds_n13_branch, nds_n13_store,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
327 nds_n13_store_multiple_1,nds_n13_store_multiple_2, nds_n13_store_multiple_3,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
328 nds_n13_store_multiple_4,nds_n13_store_multiple_5, nds_n13_store_multiple_6,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
329 nds_n13_store_multiple_7,nds_n13_store_multiple_8, nds_n13_store_multiple_12"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
330 "nds32_n13_load_to_e2_p"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
331 )
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
332
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
333 ;; LMW(N, N) -> ALU_E1, PBSAD, PBSADA_RaRb, MUL, MAC_RaRb, DIV, MMU, ADDR_IN
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
334 (define_bypass 3
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
335 "nds_n13_load_multiple_1,nds_n13_load_multiple_2, nds_n13_load_multiple_3,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
336 nds_n13_load_multiple_4,nds_n13_load_multiple_5, nds_n13_load_multiple_6,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
337 nds_n13_load_multiple_7,nds_n13_load_multiple_8, nds_n13_load_multiple_12"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
338 "nds_n13_alu, nds_n13_pbsad, nds_n13_pbsada,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
339 nds_n13_mul, nds_n13_mac, nds_n13_div,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
340 nds_n13_mmu,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
341 nds_n13_load, nds_n13_store,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
342 nds_n13_load_multiple_1,nds_n13_load_multiple_2, nds_n13_load_multiple_3,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
343 nds_n13_load_multiple_4,nds_n13_load_multiple_5, nds_n13_load_multiple_6,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
344 nds_n13_load_multiple_7,nds_n13_load_multiple_8, nds_n13_load_multiple_12,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
345 nds_n13_store_multiple_1,nds_n13_store_multiple_2, nds_n13_store_multiple_3,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
346 nds_n13_store_multiple_4,nds_n13_store_multiple_5, nds_n13_store_multiple_6,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
347 nds_n13_store_multiple_7,nds_n13_store_multiple_8, nds_n13_store_multiple_12"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
348 "nds32_n13_last_load_to_e1_p")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
349
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
350 ;; LMW(N, N) -> ALU, ALU_SHIFT_Rb, PBSADA_Rt, BR, ST, SMW(N, 1)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
351 (define_bypass 2
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
352 "nds_n13_load_multiple_1,nds_n13_load_multiple_2, nds_n13_load_multiple_3,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
353 nds_n13_load_multiple_4,nds_n13_load_multiple_5, nds_n13_load_multiple_6,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
354 nds_n13_load_multiple_7,nds_n13_load_multiple_8, nds_n13_load_multiple_12"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
355 "nds_n13_alu, nds_n13_alu_shift, nds_n13_pbsada, nds_n13_branch, nds_n13_store,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
356 nds_n13_store_multiple_1,nds_n13_store_multiple_2, nds_n13_store_multiple_3,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
357 nds_n13_store_multiple_4,nds_n13_store_multiple_5, nds_n13_store_multiple_6,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
358 nds_n13_store_multiple_7,nds_n13_store_multiple_8, nds_n13_store_multiple_12"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
359 "nds32_n13_last_load_to_e2_p"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
360 )
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
361
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
362 ;; LMW(N, N - 1) -> ALU_E1, PBSAD, PBSADA_RaRb, MUL, MAC_RaRb, DIV, MMU, ADDR_IN
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
363 (define_bypass 2
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
364 "nds_n13_load_multiple_1,nds_n13_load_multiple_2, nds_n13_load_multiple_3,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
365 nds_n13_load_multiple_4,nds_n13_load_multiple_5, nds_n13_load_multiple_6,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
366 nds_n13_load_multiple_7,nds_n13_load_multiple_8, nds_n13_load_multiple_12"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
367 "nds_n13_alu, nds_n13_pbsad, nds_n13_pbsada,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
368 nds_n13_mul, nds_n13_mac, nds_n13_div,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
369 nds_n13_mmu,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
370 nds_n13_load, nds_n13_store,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
371 nds_n13_load_multiple_1,nds_n13_load_multiple_2, nds_n13_load_multiple_3,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
372 nds_n13_load_multiple_4,nds_n13_load_multiple_5, nds_n13_load_multiple_6,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
373 nds_n13_load_multiple_7,nds_n13_load_multiple_8, nds_n13_load_multiple_12,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
374 nds_n13_store_multiple_1,nds_n13_store_multiple_2, nds_n13_store_multiple_3,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
375 nds_n13_store_multiple_4,nds_n13_store_multiple_5, nds_n13_store_multiple_6,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
376 nds_n13_store_multiple_7,nds_n13_store_multiple_8, nds_n13_store_multiple_12"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
377 "nds32_n13_last_two_load_to_e1_p")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
378
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
379 ;; ALU, ALU_SHIFT, SIMD, BR, MUL, MAC, DIV, ADDR_OUT
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
380 ;; -> ALU_E1, PBSAD, PBSADA_RaRb, MUL, MAC_RaRb, DIV, MMU, ADDR_IN
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
381 (define_bypass 2
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
382 "nds_n13_alu, nds_n13_alu_shift, nds_n13_pbsad, nds_n13_pbsada, nds_n13_branch,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
383 nds_n13_mul, nds_n13_mac, nds_n13_div,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
384 nds_n13_load, nds_n13_store,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
385 nds_n13_load_multiple_1,nds_n13_load_multiple_2, nds_n13_load_multiple_3,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
386 nds_n13_load_multiple_4,nds_n13_load_multiple_5, nds_n13_load_multiple_6,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
387 nds_n13_load_multiple_7,nds_n13_load_multiple_8, nds_n13_load_multiple_12,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
388 nds_n13_store_multiple_1,nds_n13_store_multiple_2, nds_n13_store_multiple_3,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
389 nds_n13_store_multiple_4,nds_n13_store_multiple_5, nds_n13_store_multiple_6,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
390 nds_n13_store_multiple_7,nds_n13_store_multiple_8, nds_n13_store_multiple_12"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
391 "nds_n13_alu, nds_n13_pbsad, nds_n13_pbsada,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
392 nds_n13_mul, nds_n13_mac, nds_n13_div,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
393 nds_n13_mmu,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
394 nds_n13_load, nds_n13_store,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
395 nds_n13_load_multiple_1,nds_n13_load_multiple_2, nds_n13_load_multiple_3,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
396 nds_n13_load_multiple_4,nds_n13_load_multiple_5, nds_n13_load_multiple_6,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
397 nds_n13_load_multiple_7,nds_n13_load_multiple_8, nds_n13_load_multiple_12,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
398 nds_n13_store_multiple_1,nds_n13_store_multiple_2, nds_n13_store_multiple_3,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
399 nds_n13_store_multiple_4,nds_n13_store_multiple_5, nds_n13_store_multiple_6,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
400 nds_n13_store_multiple_7,nds_n13_store_multiple_8, nds_n13_store_multiple_12"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
401 "nds32_n13_e2_to_e1_p")