annotate gcc/config/nds32/nds32-graywolf.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-2013 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 ;; Define Graywolf pipeline settings.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
23 ;; ------------------------------------------------------------------------
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
24
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
25 (define_automaton "nds32_graywolf_machine")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
26
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
27 (define_cpu_unit "gw_ii_0" "nds32_graywolf_machine")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
28 (define_cpu_unit "gw_ii_1" "nds32_graywolf_machine")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
29 (define_cpu_unit "gw_ex_p0" "nds32_graywolf_machine")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
30 (define_cpu_unit "gw_mm_p0" "nds32_graywolf_machine")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
31 (define_cpu_unit "gw_wb_p0" "nds32_graywolf_machine")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
32 (define_cpu_unit "gw_ex_p1" "nds32_graywolf_machine")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
33 (define_cpu_unit "gw_mm_p1" "nds32_graywolf_machine")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
34 (define_cpu_unit "gw_wb_p1" "nds32_graywolf_machine")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
35 (define_cpu_unit "gw_iq_p2" "nds32_graywolf_machine")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
36 (define_cpu_unit "gw_rf_p2" "nds32_graywolf_machine")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
37 (define_cpu_unit "gw_e1_p2" "nds32_graywolf_machine")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
38 (define_cpu_unit "gw_e2_p2" "nds32_graywolf_machine")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
39 (define_cpu_unit "gw_e3_p2" "nds32_graywolf_machine")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
40 (define_cpu_unit "gw_e4_p2" "nds32_graywolf_machine")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
41
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
42 (define_reservation "gw_ii" "gw_ii_0 | gw_ii_1")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
43 (define_reservation "gw_ex" "gw_ex_p0 | gw_ex_p1")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
44 (define_reservation "gw_mm" "gw_mm_p0 | gw_mm_p1")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
45 (define_reservation "gw_wb" "gw_wb_p0 | gw_wb_p1")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
46
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
47 (define_reservation "gw_ii_all" "gw_ii_0 + gw_ii_1")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
48
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
49 (define_insn_reservation "nds_gw_unknown" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
50 (and (eq_attr "type" "unknown")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
51 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
52 "gw_ii, gw_ex, gw_mm, gw_wb")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
53
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
54 (define_insn_reservation "nds_gw_misc" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
55 (and (eq_attr "type" "misc")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
56 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
57 "gw_ii, gw_ex, gw_mm, gw_wb")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
58
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
59 (define_insn_reservation "nds_gw_mmu" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
60 (and (eq_attr "type" "mmu")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
61 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
62 "gw_ii, gw_ex, gw_mm, gw_wb")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
63
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
64 (define_insn_reservation "nds_gw_alu" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
65 (and (and (eq_attr "type" "alu")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
66 (match_test "!nds32::movd44_insn_p (insn)"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
67 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
68 "gw_ii, gw_ex, gw_mm, gw_wb")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
69
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
70 (define_insn_reservation "nds_gw_movd44" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
71 (and (and (eq_attr "type" "alu")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
72 (match_test "nds32::movd44_insn_p (insn)"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
73 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
74 "gw_ii_1, gw_ex, gw_mm, gw_wb")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
75
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
76 (define_insn_reservation "nds_gw_alu_shift" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
77 (and (eq_attr "type" "alu_shift")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
78 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
79 "gw_ii, gw_ex*2, gw_mm, gw_wb")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
80
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
81 (define_insn_reservation "nds_gw_pbsad" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
82 (and (eq_attr "type" "pbsad")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
83 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
84 "gw_ii, gw_ex*3, gw_mm, gw_wb")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
85
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
86 (define_insn_reservation "nds_gw_pbsada" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
87 (and (eq_attr "type" "pbsada")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
88 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
89 "gw_ii, gw_ex*3, gw_mm, gw_wb")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
90
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
91 (define_insn_reservation "nds_gw_load" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
92 (and (and (eq_attr "type" "load")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
93 (match_test "!nds32::post_update_insn_p (insn)"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
94 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
95 "gw_ii_1, gw_ex_p1, gw_mm_p1, gw_wb_p1")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
96
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
97 (define_insn_reservation "nds_gw_load_2w" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
98 (and (and (eq_attr "type" "load")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
99 (match_test "nds32::post_update_insn_p (insn)"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
100 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
101 "gw_ii_all, gw_ex_p1, gw_mm_p1, gw_wb_p1")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
102
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
103 (define_insn_reservation "nds_gw_store" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
104 (and (and (eq_attr "type" "store")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
105 (match_test "!nds32::store_offset_reg_p (insn)"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
106 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
107 "gw_ii_1, gw_ex_p1, gw_mm_p1, gw_wb_p1")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
108
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
109 (define_insn_reservation "nds_gw_store_3r" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
110 (and (and (eq_attr "type" "store")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
111 (match_test "nds32::store_offset_reg_p (insn)"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
112 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
113 "gw_ii_all, gw_ex_p1, gw_mm_p1, gw_wb_p1")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
114
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
115 (define_insn_reservation "nds_gw_load_multiple_1" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
116 (and (and (eq_attr "type" "load_multiple")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
117 (eq_attr "combo" "1"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
118 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
119 "gw_ii_1, gw_ex_p1, gw_mm_p1, gw_wb_p1")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
120
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
121 (define_insn_reservation "nds_gw_load_multiple_2" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
122 (and (and (eq_attr "type" "load_multiple")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
123 (eq_attr "combo" "2"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
124 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
125 "gw_ii_1, gw_ex_p1*2, gw_mm_p1, gw_wb_p1")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
126
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
127 (define_insn_reservation "nds_gw_load_multiple_3" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
128 (and (and (eq_attr "type" "load_multiple")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
129 (eq_attr "combo" "3"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
130 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
131 "gw_ii_1, gw_ex_p1*3, gw_mm_p1, gw_wb_p1")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
132
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
133 (define_insn_reservation "nds_gw_load_multiple_4" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
134 (and (and (eq_attr "type" "load_multiple")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
135 (eq_attr "combo" "4"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
136 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
137 "gw_ii_1, gw_ex_p1*4, gw_mm_p1, gw_wb_p1")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
138
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
139 (define_insn_reservation "nds_gw_load_multiple_5" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
140 (and (and (eq_attr "type" "load_multiple")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
141 (eq_attr "combo" "5"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
142 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
143 "gw_ii_1, gw_ex_p1*4, gw_mm_p1, gw_wb_p1")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
144
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
145 (define_insn_reservation "nds_gw_load_multiple_6" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
146 (and (and (eq_attr "type" "load_multiple")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
147 (eq_attr "combo" "6"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
148 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
149 "gw_ii_1, gw_ex_p1*4, gw_mm_p1, gw_wb_p1")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
150
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
151 (define_insn_reservation "nds_gw_load_multiple_7" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
152 (and (and (eq_attr "type" "load_multiple")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
153 (eq_attr "combo" "7"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
154 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
155 "gw_ii_1, gw_ex_p1*4, gw_mm_p1, gw_wb_p1")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
156
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
157 (define_insn_reservation "nds_gw_load_multiple_8" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
158 (and (and (eq_attr "type" "load_multiple")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
159 (eq_attr "combo" "8"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
160 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
161 "gw_ii_1, gw_ex_p1*4, gw_mm_p1, gw_wb_p1")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
162
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
163 (define_insn_reservation "nds_gw_load_multiple_12" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
164 (and (and (eq_attr "type" "load_multiple")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
165 (eq_attr "combo" "12"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
166 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
167 "gw_ii_1, gw_ex_p1*4, gw_mm_p1, gw_wb_p1")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
168
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
169 (define_insn_reservation "nds_gw_store_multiple_1" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
170 (and (and (eq_attr "type" "store_multiple")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
171 (eq_attr "combo" "1"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
172 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
173 "gw_ii_1, gw_ex_p1, gw_mm_p1, gw_wb_p1")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
174
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
175 (define_insn_reservation "nds_gw_store_multiple_2" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
176 (and (and (eq_attr "type" "store_multiple")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
177 (eq_attr "combo" "2"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
178 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
179 "gw_ii_1, gw_ex_p1*2, gw_mm_p1, gw_wb_p1")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
180
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
181 (define_insn_reservation "nds_gw_store_multiple_3" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
182 (and (and (eq_attr "type" "store_multiple")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
183 (eq_attr "combo" "3"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
184 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
185 "gw_ii_1, gw_ex_p1*3, gw_mm_p1, gw_wb_p1")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
186
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
187 (define_insn_reservation "nds_gw_store_multiple_4" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
188 (and (and (eq_attr "type" "store_multiple")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
189 (eq_attr "combo" "4"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
190 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
191 "gw_ii_1, gw_ex_p1*4, gw_mm_p1, gw_wb_p1")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
192
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
193 (define_insn_reservation "nds_gw_store_multiple_5" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
194 (and (and (eq_attr "type" "store_multiple")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
195 (eq_attr "combo" "5"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
196 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
197 "gw_ii_1, gw_ex_p1*4, gw_mm_p1, gw_wb_p1")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
198
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
199 (define_insn_reservation "nds_gw_store_multiple_6" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
200 (and (and (eq_attr "type" "store_multiple")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
201 (eq_attr "combo" "6"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
202 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
203 "gw_ii_1, gw_ex_p1*4, gw_mm_p1, gw_wb_p1")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
204
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
205 (define_insn_reservation "nds_gw_store_multiple_7" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
206 (and (and (eq_attr "type" "store_multiple")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
207 (eq_attr "combo" "7"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
208 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
209 "gw_ii_1, gw_ex_p1*4, gw_mm_p1, gw_wb_p1")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
210
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
211 (define_insn_reservation "nds_gw_store_multiple_8" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
212 (and (and (eq_attr "type" "store_multiple")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
213 (eq_attr "combo" "8"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
214 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
215 "gw_ii_1, gw_ex_p1*4, gw_mm_p1, gw_wb_p1")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
216
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
217 (define_insn_reservation "nds_gw_store_multiple_12" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
218 (and (and (eq_attr "type" "store_multiple")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
219 (eq_attr "combo" "12"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
220 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
221 "gw_ii_1, gw_ex_p1*4, gw_mm_p1, gw_wb_p1")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
222
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
223 (define_insn_reservation "nds_gw_mul_fast1" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
224 (and (match_test "nds32_mul_config == MUL_TYPE_FAST_1")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
225 (and (eq_attr "type" "mul")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
226 (eq_attr "pipeline_model" "graywolf")))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
227 "gw_ii_0, gw_ex_p0, gw_mm_p0, gw_wb_p0")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
228
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
229 (define_insn_reservation "nds_gw_mul_fast2" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
230 (and (match_test "nds32_mul_config == MUL_TYPE_FAST_2")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
231 (and (eq_attr "type" "mul")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
232 (eq_attr "pipeline_model" "graywolf")))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
233 "gw_ii_0, gw_ex_p0*2, gw_mm_p0, gw_wb_p0")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
234
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
235 (define_insn_reservation "nds_gw_mul_slow" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
236 (and (match_test "nds32_mul_config == MUL_TYPE_SLOW")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
237 (and (eq_attr "type" "mul")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
238 (eq_attr "pipeline_model" "graywolf")))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
239 "gw_ii_0, gw_ex_p0*4, gw_mm_p0, gw_wb_p0")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
240
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
241 (define_insn_reservation "nds_gw_mac_fast1" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
242 (and (match_test "nds32_mul_config == MUL_TYPE_FAST_1")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
243 (and (eq_attr "type" "mac")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
244 (eq_attr "pipeline_model" "graywolf")))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
245 "gw_ii_all, gw_ex_p0, gw_mm_p0, gw_wb_p0")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
246
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
247 (define_insn_reservation "nds_gw_mac_fast2" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
248 (and (match_test "nds32_mul_config == MUL_TYPE_FAST_2")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
249 (and (eq_attr "type" "mac")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
250 (eq_attr "pipeline_model" "graywolf")))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
251 "gw_ii_all, gw_ex_p0*2, gw_mm_p0, gw_wb_p0")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
252
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
253 (define_insn_reservation "nds_gw_mac_slow" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
254 (and (match_test "nds32_mul_config == MUL_TYPE_SLOW")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
255 (and (eq_attr "type" "mac")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
256 (eq_attr "pipeline_model" "graywolf")))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
257 "gw_ii_all, gw_ex_p0*4, gw_mm_p0, gw_wb_p0")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
258
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
259 (define_insn_reservation "nds_gw_div" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
260 (and (and (eq_attr "type" "div")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
261 (match_test "!nds32::divmod_p (insn)"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
262 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
263 "gw_ii_0, gw_ex_p0*4, gw_mm_p0, gw_wb_p0")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
264
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
265 (define_insn_reservation "nds_gw_div_2w" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
266 (and (and (eq_attr "type" "div")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
267 (match_test "nds32::divmod_p (insn)"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
268 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
269 "gw_ii_all, gw_ex_p0*4, gw_mm_p0, gw_wb_p0")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
270
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
271 (define_insn_reservation "nds_gw_branch" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
272 (and (eq_attr "type" "branch")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
273 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
274 "gw_ii_0, gw_ex_p0, gw_mm_p0, gw_wb_p0")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
275
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
276 (define_insn_reservation "nds_gw_dsp_alu" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
277 (and (eq_attr "type" "dalu")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
278 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
279 "gw_ii, gw_ex, gw_mm, gw_wb")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
280
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
281 (define_insn_reservation "nds_gw_dsp_alu64" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
282 (and (eq_attr "type" "dalu64")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
283 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
284 "gw_ii_all, gw_ex_p0, gw_mm_p0, gw_wb_p0")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
285
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
286 (define_insn_reservation "nds_gw_dsp_alu_round" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
287 (and (eq_attr "type" "daluround")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
288 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
289 "gw_ii_0, gw_ex_p0, gw_mm_p0, gw_wb_p0")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
290
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
291 (define_insn_reservation "nds_gw_dsp_cmp" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
292 (and (eq_attr "type" "dcmp")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
293 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
294 "gw_ii_0, gw_ex_p0, gw_mm_p0, gw_wb_p0")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
295
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
296 (define_insn_reservation "nds_gw_dsp_clip" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
297 (and (eq_attr "type" "dclip")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
298 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
299 "gw_ii_0, gw_ex_p0, gw_mm_p0, gw_wb_p0")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
300
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
301 (define_insn_reservation "nds_gw_dsp_mul" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
302 (and (eq_attr "type" "dmul")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
303 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
304 "gw_ii_0, gw_ex_p0, gw_mm_p0, gw_wb_p0")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
305
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
306 (define_insn_reservation "nds_gw_dsp_mac" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
307 (and (eq_attr "type" "dmac")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
308 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
309 "gw_ii_all, gw_ex_p0, gw_mm_p0, gw_wb_p0")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
310
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
311 (define_insn_reservation "nds_gw_dsp_insb" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
312 (and (eq_attr "type" "dinsb")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
313 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
314 "gw_ii_0, gw_ex_p0, gw_mm_p0, gw_wb_p0")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
315
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
316 (define_insn_reservation "nds_gw_dsp_pack" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
317 (and (eq_attr "type" "dpack")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
318 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
319 "gw_ii_0, gw_ex_p0, gw_mm_p0, gw_wb_p0")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
320
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
321 (define_insn_reservation "nds_gw_dsp_bpick" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
322 (and (eq_attr "type" "dbpick")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
323 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
324 "gw_ii_0, gw_ex_p0, gw_mm_p0, gw_wb_p0")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
325
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
326 (define_insn_reservation "nds_gw_dsp_wext" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
327 (and (eq_attr "type" "dwext")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
328 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
329 "gw_ii_all, gw_ex_p0, gw_mm_p0, gw_wb_p0")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
330
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
331 (define_insn_reservation "nds_gw_fpu_alu" 4
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
332 (and (eq_attr "type" "falu")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
333 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
334 "gw_ii, gw_iq_p2, gw_rf_p2, gw_e1_p2, gw_e2_p2, gw_e3_p2, gw_e4_p2")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
335
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
336 (define_insn_reservation "nds_gw_fpu_muls" 4
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
337 (and (eq_attr "type" "fmuls")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
338 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
339 "gw_ii, gw_iq_p2, gw_rf_p2, gw_e1_p2, gw_e2_p2, gw_e3_p2, gw_e4_p2")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
340
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
341 (define_insn_reservation "nds_gw_fpu_muld" 4
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
342 (and (eq_attr "type" "fmuld")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
343 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
344 "gw_ii, gw_iq_p2, gw_rf_p2, gw_e1_p2, gw_e2_p2*2, gw_e3_p2, gw_e4_p2")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
345
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
346 (define_insn_reservation "nds_gw_fpu_macs" 4
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
347 (and (eq_attr "type" "fmacs")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
348 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
349 "gw_ii, gw_iq_p2, gw_rf_p2, gw_e1_p2, gw_e2_p2*3, gw_e3_p2, gw_e4_p2")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
350
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
351 (define_insn_reservation "nds_gw_fpu_macd" 4
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
352 (and (eq_attr "type" "fmacd")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
353 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
354 "gw_ii, gw_iq_p2, gw_rf_p2, gw_e1_p2, gw_e2_p2*4, gw_e3_p2, gw_e4_p2")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
355
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
356 (define_insn_reservation "nds_gw_fpu_divs" 4
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
357 (and (ior (eq_attr "type" "fdivs")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
358 (eq_attr "type" "fsqrts"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
359 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
360 "gw_ii, gw_iq_p2, gw_rf_p2, gw_e1_p2, gw_e2_p2*14, gw_e3_p2, gw_e4_p2")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
361
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
362 (define_insn_reservation "nds_gw_fpu_divd" 4
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
363 (and (ior (eq_attr "type" "fdivd")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
364 (eq_attr "type" "fsqrtd"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
365 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
366 "gw_ii, gw_iq_p2, gw_rf_p2, gw_e1_p2, gw_e2_p2*28, gw_e3_p2, gw_e4_p2")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
367
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
368 (define_insn_reservation "nds_gw_fpu_fast_alu" 2
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
369 (and (ior (eq_attr "type" "fcmp")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
370 (ior (eq_attr "type" "fabs")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
371 (ior (eq_attr "type" "fcpy")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
372 (eq_attr "type" "fcmov"))))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
373 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
374 "gw_ii, gw_iq_p2, gw_rf_p2, gw_e1_p2, gw_e2_p2, gw_e3_p2, gw_e4_p2")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
375
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
376 (define_insn_reservation "nds_gw_fpu_fmtsr" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
377 (and (eq_attr "type" "fmtsr")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
378 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
379 "gw_ii, gw_iq_p2, gw_rf_p2, gw_e1_p2, gw_e2_p2, gw_e3_p2, gw_e4_p2")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
380
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
381 (define_insn_reservation "nds_gw_fpu_fmtdr" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
382 (and (eq_attr "type" "fmtdr")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
383 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
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")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
385
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
386 (define_insn_reservation "nds_gw_fpu_fmfsr" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
387 (and (eq_attr "type" "fmfsr")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
388 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
389 "gw_ii, gw_iq_p2, gw_rf_p2, gw_e1_p2, gw_e2_p2, gw_e3_p2, gw_e4_p2")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
390
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
391 (define_insn_reservation "nds_gw_fpu_fmfdr" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
392 (and (eq_attr "type" "fmfdr")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
393 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
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")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
395
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
396 (define_insn_reservation "nds_gw_fpu_load" 3
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
397 (and (eq_attr "type" "fload")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
398 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
399 "gw_ii, gw_iq_p2, gw_rf_p2, gw_e1_p2, gw_e2_p2, gw_e3_p2, gw_e4_p2")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
400
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
401 (define_insn_reservation "nds_gw_fpu_store" 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
402 (and (eq_attr "type" "fstore")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
403 (eq_attr "pipeline_model" "graywolf"))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
404 "gw_ii, gw_iq_p2, gw_rf_p2, gw_e1_p2, gw_e2_p2, gw_e3_p2, gw_e4_p2")
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
405
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
406 ;; FPU_ADDR_OUT -> FPU_ADDR_IN
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
407 ;; Main pipeline rules don't need this because those default latency is 1.
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
408 (define_bypass 1
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
409 "nds_gw_fpu_load, nds_gw_fpu_store"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
410 "nds_gw_fpu_load, nds_gw_fpu_store"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
411 "nds32_gw_ex_to_ex_p"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
412 )
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
413
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
414 ;; LD, MUL, MAC, DIV, DALU64, DMUL, DMAC, DALUROUND, DBPICK, DWEXT
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
415 ;; -> ALU, ALU_SHIFT_Rb, PBSAD, PBSADA_RaRb, MOVD44, MUL, MAC_RaRb, DIV, ADDR_IN, BR, MMU,
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
416 ;; DALU, DALUROUND, DMUL, DMAC_RaRb, DPACK, DINSB, DCMP, DCLIP, WEXT_O, BPICK_RaRb
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
417 (define_bypass 2
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
418 "nds_gw_load, nds_gw_load_2w,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
419 nds_gw_mul_fast1, nds_gw_mul_fast2, nds_gw_mul_slow,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
420 nds_gw_mac_fast1, nds_gw_mac_fast2, nds_gw_mac_slow,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
421 nds_gw_div, nds_gw_div_2w,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
422 nds_gw_dsp_alu64, nds_gw_dsp_mul, nds_gw_dsp_mac,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
423 nds_gw_dsp_alu_round, nds_gw_dsp_bpick, nds_gw_dsp_wext"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
424 "nds_gw_alu, nds_gw_movd44, nds_gw_alu_shift,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
425 nds_gw_pbsad, nds_gw_pbsada,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
426 nds_gw_mul_fast1, nds_gw_mul_fast2, nds_gw_mul_slow,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
427 nds_gw_mac_fast1, nds_gw_mac_fast2, nds_gw_mac_slow,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
428 nds_gw_branch,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
429 nds_gw_div, nds_gw_div_2w,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
430 nds_gw_load, nds_gw_load_2w, nds_gw_store, nds_gw_store_3r,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
431 nds_gw_load_multiple_1,nds_gw_load_multiple_2, nds_gw_load_multiple_3,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
432 nds_gw_load_multiple_4,nds_gw_load_multiple_5, nds_gw_load_multiple_6,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
433 nds_gw_load_multiple_7,nds_gw_load_multiple_8, nds_gw_load_multiple_12,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
434 nds_gw_store_multiple_1,nds_gw_store_multiple_2, nds_gw_store_multiple_3,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
435 nds_gw_store_multiple_4,nds_gw_store_multiple_5, nds_gw_store_multiple_6,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
436 nds_gw_store_multiple_7,nds_gw_store_multiple_8, nds_gw_store_multiple_12,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
437 nds_gw_mmu,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
438 nds_gw_dsp_alu, nds_gw_dsp_alu_round,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
439 nds_gw_dsp_mul, nds_gw_dsp_mac, nds_gw_dsp_pack,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
440 nds_gw_dsp_insb, nds_gw_dsp_cmp, nds_gw_dsp_clip,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
441 nds_gw_dsp_wext, nds_gw_dsp_bpick"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
442 "nds32_gw_mm_to_ex_p"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
443 )
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
444
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
445 ;; LMW(N, N)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
446 ;; -> ALU, ALU_SHIFT_Rb, PBSAD, PBSADA_RaRb, MOVD44, MUL, MAC_RaRb, DIV, ADDR_IN, BR, MMU
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
447 ;; DALU, DALUROUND, DMUL, DMAC_RaRb, DPACK, DINSB, DCMP, DCLIP, WEXT_O, BPICK_RaRb
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
448 (define_bypass 2
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
449 "nds_gw_load_multiple_1,nds_gw_load_multiple_2, nds_gw_load_multiple_3,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
450 nds_gw_load_multiple_4,nds_gw_load_multiple_5, nds_gw_load_multiple_6,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
451 nds_gw_load_multiple_7,nds_gw_load_multiple_8, nds_gw_load_multiple_12"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
452 "nds_gw_alu, nds_gw_movd44, nds_gw_alu_shift,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
453 nds_gw_pbsad, nds_gw_pbsada,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
454 nds_gw_mul_fast1, nds_gw_mul_fast2, nds_gw_mul_slow,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
455 nds_gw_mac_fast1, nds_gw_mac_fast2, nds_gw_mac_slow,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
456 nds_gw_branch,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
457 nds_gw_div, nds_gw_div_2w,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
458 nds_gw_load, nds_gw_load_2w, nds_gw_store, nds_gw_store_3r,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
459 nds_gw_load_multiple_1,nds_gw_load_multiple_2, nds_gw_load_multiple_3,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
460 nds_gw_load_multiple_4,nds_gw_load_multiple_5, nds_gw_load_multiple_6,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
461 nds_gw_load_multiple_7,nds_gw_load_multiple_8, nds_gw_load_multiple_12,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
462 nds_gw_store_multiple_1,nds_gw_store_multiple_2, nds_gw_store_multiple_3,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
463 nds_gw_store_multiple_4,nds_gw_store_multiple_5, nds_gw_store_multiple_6,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
464 nds_gw_store_multiple_7,nds_gw_store_multiple_8, nds_gw_store_multiple_12,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
465 nds_gw_mmu,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
466 nds_gw_dsp_alu, nds_gw_dsp_alu_round,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
467 nds_gw_dsp_mul, nds_gw_dsp_mac, nds_gw_dsp_pack,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
468 nds_gw_dsp_insb, nds_gw_dsp_cmp, nds_gw_dsp_clip,\
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
469 nds_gw_dsp_wext, nds_gw_dsp_bpick"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
470 "nds32_gw_last_load_to_ex_p"
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
471 )