annotate gcc/config/arm/xgene1.md @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children 84e7813d76e9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 ;; Machine description for AppliedMicro xgene1 core.
kono
parents:
diff changeset
2 ;; Copyright (C) 2012-2017 Free Software Foundation, Inc.
kono
parents:
diff changeset
3 ;; Contributed by Theobroma Systems Design und Consulting GmbH.
kono
parents:
diff changeset
4 ;;
kono
parents:
diff changeset
5 ;; This file is part of GCC.
kono
parents:
diff changeset
6 ;;
kono
parents:
diff changeset
7 ;; GCC is free software; you can redistribute it and/or modify it
kono
parents:
diff changeset
8 ;; under the terms of the GNU General Public License as published by
kono
parents:
diff changeset
9 ;; the Free Software Foundation; either version 3, or (at your option)
kono
parents:
diff changeset
10 ;; any later version.
kono
parents:
diff changeset
11 ;;
kono
parents:
diff changeset
12 ;; GCC is distributed in the hope that it will be useful, but
kono
parents:
diff changeset
13 ;; WITHOUT ANY WARRANTY; without even the implied warranty of
kono
parents:
diff changeset
14 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
kono
parents:
diff changeset
15 ;; General Public License for more details.
kono
parents:
diff changeset
16 ;;
kono
parents:
diff changeset
17 ;; You should have received a copy of the GNU General Public License
kono
parents:
diff changeset
18 ;; along with GCC; see the file COPYING3. If not see
kono
parents:
diff changeset
19 ;; <http://www.gnu.org/licenses/>.
kono
parents:
diff changeset
20
kono
parents:
diff changeset
21 ;; Pipeline description for the xgene1 micro-architecture
kono
parents:
diff changeset
22
kono
parents:
diff changeset
23 (define_automaton "xgene1")
kono
parents:
diff changeset
24
kono
parents:
diff changeset
25 (define_cpu_unit "xgene1_decode_out0" "xgene1")
kono
parents:
diff changeset
26 (define_cpu_unit "xgene1_decode_out1" "xgene1")
kono
parents:
diff changeset
27 (define_cpu_unit "xgene1_decode_out2" "xgene1")
kono
parents:
diff changeset
28 (define_cpu_unit "xgene1_decode_out3" "xgene1")
kono
parents:
diff changeset
29
kono
parents:
diff changeset
30 (define_cpu_unit "xgene1_divide" "xgene1")
kono
parents:
diff changeset
31 (define_cpu_unit "xgene1_fp_divide" "xgene1")
kono
parents:
diff changeset
32 (define_cpu_unit "xgene1_fsu" "xgene1")
kono
parents:
diff changeset
33 (define_cpu_unit "xgene1_fcmp" "xgene1")
kono
parents:
diff changeset
34
kono
parents:
diff changeset
35 (define_reservation "xgene1_decode1op"
kono
parents:
diff changeset
36 "( xgene1_decode_out0 )
kono
parents:
diff changeset
37 |( xgene1_decode_out1 )
kono
parents:
diff changeset
38 |( xgene1_decode_out2 )
kono
parents:
diff changeset
39 |( xgene1_decode_out3 )"
kono
parents:
diff changeset
40 )
kono
parents:
diff changeset
41 (define_reservation "xgene1_decode2op"
kono
parents:
diff changeset
42 "( xgene1_decode_out0 + xgene1_decode_out1 )
kono
parents:
diff changeset
43 |( xgene1_decode_out0 + xgene1_decode_out2 )
kono
parents:
diff changeset
44 |( xgene1_decode_out0 + xgene1_decode_out3 )
kono
parents:
diff changeset
45 |( xgene1_decode_out1 + xgene1_decode_out2 )
kono
parents:
diff changeset
46 |( xgene1_decode_out1 + xgene1_decode_out3 )
kono
parents:
diff changeset
47 |( xgene1_decode_out2 + xgene1_decode_out3 )"
kono
parents:
diff changeset
48 )
kono
parents:
diff changeset
49 (define_reservation "xgene1_decodeIsolated"
kono
parents:
diff changeset
50 "( xgene1_decode_out0 + xgene1_decode_out1 + xgene1_decode_out2 + xgene1_decode_out3 )"
kono
parents:
diff changeset
51 )
kono
parents:
diff changeset
52
kono
parents:
diff changeset
53 (define_insn_reservation "xgene1_branch" 1
kono
parents:
diff changeset
54 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
55 (eq_attr "type" "branch"))
kono
parents:
diff changeset
56 "xgene1_decode1op")
kono
parents:
diff changeset
57
kono
parents:
diff changeset
58 (define_insn_reservation "xgene1_nop" 1
kono
parents:
diff changeset
59 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
60 (eq_attr "type" "no_insn"))
kono
parents:
diff changeset
61 "xgene1_decode1op")
kono
parents:
diff changeset
62
kono
parents:
diff changeset
63 (define_insn_reservation "xgene1_call" 1
kono
parents:
diff changeset
64 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
65 (eq_attr "type" "call"))
kono
parents:
diff changeset
66 "xgene1_decode2op")
kono
parents:
diff changeset
67
kono
parents:
diff changeset
68 (define_insn_reservation "xgene1_f_load" 10
kono
parents:
diff changeset
69 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
70 (eq_attr "type" "f_loadd,f_loads"))
kono
parents:
diff changeset
71 "xgene1_decode2op")
kono
parents:
diff changeset
72
kono
parents:
diff changeset
73 (define_insn_reservation "xgene1_f_store" 4
kono
parents:
diff changeset
74 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
75 (eq_attr "type" "f_stored,f_stores"))
kono
parents:
diff changeset
76 "xgene1_decode2op")
kono
parents:
diff changeset
77
kono
parents:
diff changeset
78 (define_insn_reservation "xgene1_fmov" 2
kono
parents:
diff changeset
79 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
80 (eq_attr "type" "fmov,fconsts,fconstd"))
kono
parents:
diff changeset
81 "xgene1_decode1op")
kono
parents:
diff changeset
82
kono
parents:
diff changeset
83 (define_insn_reservation "xgene1_f_mcr" 10
kono
parents:
diff changeset
84 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
85 (eq_attr "type" "f_mcr"))
kono
parents:
diff changeset
86 "xgene1_decodeIsolated")
kono
parents:
diff changeset
87
kono
parents:
diff changeset
88 (define_insn_reservation "xgene1_f_mrc" 4
kono
parents:
diff changeset
89 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
90 (eq_attr "type" "f_mrc"))
kono
parents:
diff changeset
91 "xgene1_decode2op")
kono
parents:
diff changeset
92
kono
parents:
diff changeset
93 (define_insn_reservation "xgene1_load_pair" 6
kono
parents:
diff changeset
94 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
95 (eq_attr "type" "load_8, load_16"))
kono
parents:
diff changeset
96 "xgene1_decodeIsolated")
kono
parents:
diff changeset
97
kono
parents:
diff changeset
98 (define_insn_reservation "xgene1_store_pair" 2
kono
parents:
diff changeset
99 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
100 (eq_attr "type" "store_8, store_16"))
kono
parents:
diff changeset
101 "xgene1_decodeIsolated")
kono
parents:
diff changeset
102
kono
parents:
diff changeset
103 (define_insn_reservation "xgene1_fp_load1" 10
kono
parents:
diff changeset
104 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
105 (eq_attr "type" "load_4")
kono
parents:
diff changeset
106 (eq_attr "fp" "yes"))
kono
parents:
diff changeset
107 "xgene1_decode1op")
kono
parents:
diff changeset
108
kono
parents:
diff changeset
109 (define_insn_reservation "xgene1_load1" 5
kono
parents:
diff changeset
110 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
111 (eq_attr "type" "load_4"))
kono
parents:
diff changeset
112 "xgene1_decode1op")
kono
parents:
diff changeset
113
kono
parents:
diff changeset
114 (define_insn_reservation "xgene1_store1" 2
kono
parents:
diff changeset
115 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
116 (eq_attr "type" "store_4"))
kono
parents:
diff changeset
117 "xgene1_decode2op")
kono
parents:
diff changeset
118
kono
parents:
diff changeset
119 (define_insn_reservation "xgene1_move" 1
kono
parents:
diff changeset
120 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
121 (eq_attr "type" "mov_reg,mov_imm,mrs"))
kono
parents:
diff changeset
122 "xgene1_decode1op")
kono
parents:
diff changeset
123
kono
parents:
diff changeset
124 (define_insn_reservation "xgene1_alu" 1
kono
parents:
diff changeset
125 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
126 (eq_attr "type" "alu_imm,alu_sreg,alu_shift_imm,\
kono
parents:
diff changeset
127 alu_ext,adc_reg,csel,logic_imm,\
kono
parents:
diff changeset
128 logic_reg,logic_shift_imm,clz,\
kono
parents:
diff changeset
129 rbit,shift_reg,adr,mov_reg,\
kono
parents:
diff changeset
130 mov_imm,extend"))
kono
parents:
diff changeset
131 "xgene1_decode1op")
kono
parents:
diff changeset
132
kono
parents:
diff changeset
133 (define_insn_reservation "xgene1_simd" 1
kono
parents:
diff changeset
134 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
135 (eq_attr "type" "rev"))
kono
parents:
diff changeset
136 "xgene1_decode1op")
kono
parents:
diff changeset
137
kono
parents:
diff changeset
138 (define_insn_reservation "xgene1_alus" 1
kono
parents:
diff changeset
139 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
140 (eq_attr "type" "alus_imm,alu_sreg,alus_shift_imm,\
kono
parents:
diff changeset
141 alus_ext,logics_imm,logics_reg,\
kono
parents:
diff changeset
142 logics_shift_imm"))
kono
parents:
diff changeset
143 "xgene1_decode1op")
kono
parents:
diff changeset
144
kono
parents:
diff changeset
145 (define_insn_reservation "xgene1_mul" 6
kono
parents:
diff changeset
146 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
147 (eq_attr "type" "mul,mla,smull,umull,smlal,umlal"))
kono
parents:
diff changeset
148 "xgene1_decode2op")
kono
parents:
diff changeset
149
kono
parents:
diff changeset
150 (define_insn_reservation "xgene1_div" 34
kono
parents:
diff changeset
151 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
152 (eq_attr "type" "sdiv,udiv"))
kono
parents:
diff changeset
153 "xgene1_decode1op,xgene1_divide*7")
kono
parents:
diff changeset
154
kono
parents:
diff changeset
155 (define_insn_reservation "xgene1_fcmp" 10
kono
parents:
diff changeset
156 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
157 (eq_attr "type" "fcmpd,fcmps,fccmpd,fccmps"))
kono
parents:
diff changeset
158 "xgene1_decode1op,xgene1_fsu+xgene1_fcmp*3")
kono
parents:
diff changeset
159
kono
parents:
diff changeset
160 (define_insn_reservation "xgene1_fcsel" 3
kono
parents:
diff changeset
161 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
162 (eq_attr "type" "fcsel"))
kono
parents:
diff changeset
163 "xgene1_decode1op,xgene1_fsu")
kono
parents:
diff changeset
164
kono
parents:
diff changeset
165 (define_insn_reservation "xgene1_bfm" 2
kono
parents:
diff changeset
166 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
167 (eq_attr "type" "bfm,bfx"))
kono
parents:
diff changeset
168 "xgene1_decode1op,xgene1_fsu")
kono
parents:
diff changeset
169
kono
parents:
diff changeset
170 (define_insn_reservation "xgene1_f_rint" 5
kono
parents:
diff changeset
171 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
172 (eq_attr "type" "f_rintd,f_rints"))
kono
parents:
diff changeset
173 "xgene1_decode1op,xgene1_fsu")
kono
parents:
diff changeset
174
kono
parents:
diff changeset
175 (define_insn_reservation "xgene1_f_cvt" 3
kono
parents:
diff changeset
176 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
177 (eq_attr "type" "f_cvt"))
kono
parents:
diff changeset
178 "xgene1_decode1op,xgene1_fsu")
kono
parents:
diff changeset
179
kono
parents:
diff changeset
180 (define_insn_reservation "xgene1_f_cvtf2i" 11
kono
parents:
diff changeset
181 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
182 (eq_attr "type" "f_cvtf2i"))
kono
parents:
diff changeset
183 "xgene1_decodeIsolated,xgene1_fsu")
kono
parents:
diff changeset
184
kono
parents:
diff changeset
185 (define_insn_reservation "xgene1_f_cvti2f" 14
kono
parents:
diff changeset
186 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
187 (eq_attr "type" "f_cvti2f"))
kono
parents:
diff changeset
188 "xgene1_decodeIsolated,xgene1_fsu")
kono
parents:
diff changeset
189
kono
parents:
diff changeset
190 (define_insn_reservation "xgene1_f_add" 5
kono
parents:
diff changeset
191 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
192 (eq_attr "type" "faddd,fadds,fmuld,fmuls"))
kono
parents:
diff changeset
193 "xgene1_decode1op,xgene1_fsu")
kono
parents:
diff changeset
194
kono
parents:
diff changeset
195 (define_insn_reservation "xgene1_f_divs" 22
kono
parents:
diff changeset
196 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
197 (eq_attr "type" "fdivs,fsqrts"))
kono
parents:
diff changeset
198 "xgene1_decode1op,(xgene1_fp_divide+xgene1_fsu)*8,xgene1_fp_divide*14")
kono
parents:
diff changeset
199
kono
parents:
diff changeset
200 (define_insn_reservation "xgene1_f_divd" 28
kono
parents:
diff changeset
201 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
202 (eq_attr "type" "fdivd"))
kono
parents:
diff changeset
203 "xgene1_decode1op,(xgene1_fp_divide+xgene1_fsu)*11,xgene1_fp_divide*17")
kono
parents:
diff changeset
204
kono
parents:
diff changeset
205 (define_insn_reservation "xgene1_f_sqrtd" 28
kono
parents:
diff changeset
206 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
207 (eq_attr "type" "fsqrtd"))
kono
parents:
diff changeset
208 "xgene1_decode1op,(xgene1_fp_divide+xgene1_fsu)*17,xgene1_fp_divide*11")
kono
parents:
diff changeset
209
kono
parents:
diff changeset
210 (define_insn_reservation "xgene1_f_arith" 2
kono
parents:
diff changeset
211 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
212 (eq_attr "type" "ffarithd,ffariths"))
kono
parents:
diff changeset
213 "xgene1_decode1op,xgene1_fsu")
kono
parents:
diff changeset
214
kono
parents:
diff changeset
215 (define_insn_reservation "xgene1_f_select" 3
kono
parents:
diff changeset
216 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
217 (eq_attr "type" "f_minmaxd,f_minmaxs"))
kono
parents:
diff changeset
218 "xgene1_decode1op,xgene1_fsu")
kono
parents:
diff changeset
219
kono
parents:
diff changeset
220 (define_insn_reservation "xgene1_neon_dup" 3
kono
parents:
diff changeset
221 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
222 (eq_attr "type" "neon_dup,neon_dup_q"))
kono
parents:
diff changeset
223 "xgene1_decode1op,xgene1_fsu")
kono
parents:
diff changeset
224
kono
parents:
diff changeset
225 (define_insn_reservation "xgene1_neon_load1" 11
kono
parents:
diff changeset
226 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
227 (eq_attr "type" "neon_load1_1reg, neon_load1_1reg_q"))
kono
parents:
diff changeset
228 "xgene1_decode2op,xgene1_fsu")
kono
parents:
diff changeset
229
kono
parents:
diff changeset
230 (define_insn_reservation "xgene1_neon_store1" 5
kono
parents:
diff changeset
231 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
232 (eq_attr "type" "neon_store1_1reg, neon_store1_1reg_q"))
kono
parents:
diff changeset
233 "xgene1_decode2op,xgene1_fsu")
kono
parents:
diff changeset
234
kono
parents:
diff changeset
235 (define_insn_reservation "xgene1_neon_logic" 2
kono
parents:
diff changeset
236 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
237 (eq_attr "type" "neon_logic,\
kono
parents:
diff changeset
238 neon_logic_q,\
kono
parents:
diff changeset
239 neon_bsl,\
kono
parents:
diff changeset
240 neon_bsl_q,\
kono
parents:
diff changeset
241 neon_move,\
kono
parents:
diff changeset
242 neon_move_q,\
kono
parents:
diff changeset
243 "))
kono
parents:
diff changeset
244 "xgene1_decode1op,xgene1_fsu")
kono
parents:
diff changeset
245
kono
parents:
diff changeset
246 (define_insn_reservation "xgene1_neon_umov" 7
kono
parents:
diff changeset
247 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
248 (eq_attr "type" "neon_to_gp, neon_to_gp_q"))
kono
parents:
diff changeset
249 "xgene1_decodeIsolated")
kono
parents:
diff changeset
250
kono
parents:
diff changeset
251 (define_insn_reservation "xgene1_neon_ins" 14
kono
parents:
diff changeset
252 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
253 (eq_attr "type" "neon_from_gp,\
kono
parents:
diff changeset
254 neon_from_gp_q,\
kono
parents:
diff changeset
255 neon_ins,\
kono
parents:
diff changeset
256 neon_ins_q,\
kono
parents:
diff changeset
257 "))
kono
parents:
diff changeset
258 "xgene1_decodeIsolated,xgene1_fsu")
kono
parents:
diff changeset
259
kono
parents:
diff changeset
260 (define_insn_reservation "xgene1_neon_shift" 3
kono
parents:
diff changeset
261 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
262 (eq_attr "type" "neon_shift_imm,\
kono
parents:
diff changeset
263 neon_shift_imm_q,\
kono
parents:
diff changeset
264 neon_shift_reg,\
kono
parents:
diff changeset
265 neon_shift_reg_q,\
kono
parents:
diff changeset
266 neon_shift_imm_long,\
kono
parents:
diff changeset
267 neon_sat_shift_imm,\
kono
parents:
diff changeset
268 neon_sat_shift_imm_q,\
kono
parents:
diff changeset
269 neon_sat_shift_imm_narrow_q,\
kono
parents:
diff changeset
270 neon_sat_shift_reg,\
kono
parents:
diff changeset
271 neon_sat_shift_reg_q,\
kono
parents:
diff changeset
272 neon_shift_imm_narrow_q,\
kono
parents:
diff changeset
273 "))
kono
parents:
diff changeset
274 "xgene1_decode1op,xgene1_fsu")
kono
parents:
diff changeset
275
kono
parents:
diff changeset
276 (define_insn_reservation "xgene1_neon_arith" 3
kono
parents:
diff changeset
277 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
278 (eq_attr "type" "neon_add,\
kono
parents:
diff changeset
279 neon_add_q,\
kono
parents:
diff changeset
280 neon_sub,\
kono
parents:
diff changeset
281 neon_sub_q,\
kono
parents:
diff changeset
282 neon_neg,\
kono
parents:
diff changeset
283 neon_neg_q,\
kono
parents:
diff changeset
284 neon_abs,\
kono
parents:
diff changeset
285 neon_abs_q,\
kono
parents:
diff changeset
286 neon_abd_q,\
kono
parents:
diff changeset
287 neon_arith_acc,\
kono
parents:
diff changeset
288 neon_arith_acc_q,\
kono
parents:
diff changeset
289 neon_reduc_add,\
kono
parents:
diff changeset
290 neon_reduc_add_q,\
kono
parents:
diff changeset
291 neon_add_halve,\
kono
parents:
diff changeset
292 neon_add_halve_q,\
kono
parents:
diff changeset
293 neon_sub_halve,\
kono
parents:
diff changeset
294 neon_sub_halve_q,\
kono
parents:
diff changeset
295 neon_qadd,\
kono
parents:
diff changeset
296 neon_qadd_q,\
kono
parents:
diff changeset
297 neon_compare,\
kono
parents:
diff changeset
298 neon_compare_q,\
kono
parents:
diff changeset
299 neon_compare_zero,\
kono
parents:
diff changeset
300 neon_compare_zero_q,\
kono
parents:
diff changeset
301 neon_tst,\
kono
parents:
diff changeset
302 neon_tst_q,\
kono
parents:
diff changeset
303 "))
kono
parents:
diff changeset
304 "xgene1_decode1op,xgene1_fsu")
kono
parents:
diff changeset
305
kono
parents:
diff changeset
306 (define_insn_reservation "xgene1_neon_abs_diff" 6
kono
parents:
diff changeset
307 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
308 (eq_attr "type" "neon_arith_acc,neon_arith_acc_q"))
kono
parents:
diff changeset
309 "xgene1_decode2op,xgene1_fsu*2")
kono
parents:
diff changeset
310
kono
parents:
diff changeset
311 (define_insn_reservation "xgene1_neon_mul" 5
kono
parents:
diff changeset
312 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
313 (eq_attr "type" "neon_mul_b,\
kono
parents:
diff changeset
314 neon_mul_b_q,\
kono
parents:
diff changeset
315 neon_mul_h,\
kono
parents:
diff changeset
316 neon_mul_h_q,\
kono
parents:
diff changeset
317 neon_mul_s,\
kono
parents:
diff changeset
318 neon_mul_s_q,\
kono
parents:
diff changeset
319 neon_fp_mul_s_scalar,\
kono
parents:
diff changeset
320 neon_fp_mul_s_scalar_q,\
kono
parents:
diff changeset
321 neon_fp_mul_d_scalar_q,\
kono
parents:
diff changeset
322 neon_mla_b,neon_mla_b_q,\
kono
parents:
diff changeset
323 neon_mla_h,neon_mla_h_q,\
kono
parents:
diff changeset
324 neon_mla_s,neon_mla_s_q,\
kono
parents:
diff changeset
325 neon_mla_h_scalar,\
kono
parents:
diff changeset
326 neon_mla_h_scalar_q,\
kono
parents:
diff changeset
327 neon_mla_s_scalar,\
kono
parents:
diff changeset
328 neon_mla_s_scalar_q,\
kono
parents:
diff changeset
329 neon_mla_b_long,\
kono
parents:
diff changeset
330 neon_mla_h_long,\
kono
parents:
diff changeset
331 neon_mla_s_long,\
kono
parents:
diff changeset
332 neon_fp_mul_s,\
kono
parents:
diff changeset
333 neon_fp_mul_s_q,\
kono
parents:
diff changeset
334 neon_fp_mul_d,\
kono
parents:
diff changeset
335 neon_fp_mul_d_q,\
kono
parents:
diff changeset
336 neon_fp_mla_s,\
kono
parents:
diff changeset
337 neon_fp_mla_s_q,\
kono
parents:
diff changeset
338 neon_fp_mla_d,\
kono
parents:
diff changeset
339 neon_fp_mla_d_q,\
kono
parents:
diff changeset
340 neon_fp_mla_s_scalar,\
kono
parents:
diff changeset
341 neon_fp_mla_s_scalar_q,\
kono
parents:
diff changeset
342 neon_fp_mla_d_scalar_q,\
kono
parents:
diff changeset
343 neon_sat_mul_b,\
kono
parents:
diff changeset
344 neon_sat_mul_b_q,\
kono
parents:
diff changeset
345 neon_sat_mul_h,\
kono
parents:
diff changeset
346 neon_sat_mul_h_q,\
kono
parents:
diff changeset
347 neon_sat_mul_s,\
kono
parents:
diff changeset
348 neon_sat_mul_s_q,\
kono
parents:
diff changeset
349 neon_sat_mul_h_scalar,\
kono
parents:
diff changeset
350 neon_sat_mul_h_scalar_q,\
kono
parents:
diff changeset
351 neon_sat_mul_s_scalar,\
kono
parents:
diff changeset
352 neon_sat_mul_s_scalar_q,\
kono
parents:
diff changeset
353 neon_sat_mul_h_scalar_long,\
kono
parents:
diff changeset
354 neon_sat_mul_s_scalar_long,\
kono
parents:
diff changeset
355 neon_sat_mla_b_long,\
kono
parents:
diff changeset
356 neon_sat_mla_h_long,\
kono
parents:
diff changeset
357 neon_sat_mla_s_long,\
kono
parents:
diff changeset
358 neon_sat_mla_h_scalar_long,\
kono
parents:
diff changeset
359 neon_sat_mla_s_scalar_long,\
kono
parents:
diff changeset
360 "))
kono
parents:
diff changeset
361 "xgene1_decode2op,xgene1_fsu*2")
kono
parents:
diff changeset
362
kono
parents:
diff changeset
363 (define_insn_reservation "xgene1_fp_abd_diff" 5
kono
parents:
diff changeset
364 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
365 (eq_attr "type" "neon_fp_abd_s,\
kono
parents:
diff changeset
366 neon_fp_abd_s_q,\
kono
parents:
diff changeset
367 neon_fp_abd_d,\
kono
parents:
diff changeset
368 neon_fp_abd_d_q,\
kono
parents:
diff changeset
369 "))
kono
parents:
diff changeset
370 "xgene1_decode1op,xgene1_fsu")
kono
parents:
diff changeset
371
kono
parents:
diff changeset
372 (define_insn_reservation "xgene1_neon_f_add" 5
kono
parents:
diff changeset
373 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
374 (eq_attr "type" "neon_fp_addsub_s,\
kono
parents:
diff changeset
375 neon_fp_addsub_s_q,\
kono
parents:
diff changeset
376 neon_fp_addsub_d,\
kono
parents:
diff changeset
377 neon_fp_addsub_d_q,\
kono
parents:
diff changeset
378 "))
kono
parents:
diff changeset
379 "xgene1_decode1op")
kono
parents:
diff changeset
380
kono
parents:
diff changeset
381 (define_insn_reservation "xgene1_neon_f_div" 2
kono
parents:
diff changeset
382 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
383 (eq_attr "type" "neon_fp_div_s,\
kono
parents:
diff changeset
384 neon_fp_div_s_q,\
kono
parents:
diff changeset
385 neon_fp_div_d,\
kono
parents:
diff changeset
386 neon_fp_div_d_q,\
kono
parents:
diff changeset
387 "))
kono
parents:
diff changeset
388 "xgene1_decode1op,(xgene1_fsu+xgene1_fp_divide)")
kono
parents:
diff changeset
389
kono
parents:
diff changeset
390 (define_insn_reservation "xgene1_neon_f_neg" 2
kono
parents:
diff changeset
391 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
392 (eq_attr "type" "neon_fp_neg_s,\
kono
parents:
diff changeset
393 neon_fp_neg_s_q,\
kono
parents:
diff changeset
394 neon_fp_neg_d,\
kono
parents:
diff changeset
395 neon_fp_neg_d_q,\
kono
parents:
diff changeset
396 neon_fp_abs_s,\
kono
parents:
diff changeset
397 neon_fp_abs_s_q,\
kono
parents:
diff changeset
398 neon_fp_abs_d,\
kono
parents:
diff changeset
399 neon_fp_abs_d_q,\
kono
parents:
diff changeset
400 "))
kono
parents:
diff changeset
401 "xgene1_decode1op")
kono
parents:
diff changeset
402
kono
parents:
diff changeset
403 (define_insn_reservation "xgene1_neon_f_round" 5
kono
parents:
diff changeset
404 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
405 (eq_attr "type" "neon_fp_round_s,\
kono
parents:
diff changeset
406 neon_fp_round_s_q,\
kono
parents:
diff changeset
407 neon_fp_round_d,\
kono
parents:
diff changeset
408 neon_fp_round_d_q,\
kono
parents:
diff changeset
409 "))
kono
parents:
diff changeset
410 "xgene1_decode1op")
kono
parents:
diff changeset
411
kono
parents:
diff changeset
412 (define_insn_reservation "xgene1_neon_f_cvt" 5
kono
parents:
diff changeset
413 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
414 (eq_attr "type" "neon_int_to_fp_s,\
kono
parents:
diff changeset
415 neon_int_to_fp_s_q,\
kono
parents:
diff changeset
416 neon_int_to_fp_d,\
kono
parents:
diff changeset
417 neon_int_to_fp_d_q,\
kono
parents:
diff changeset
418 neon_fp_cvt_widen_s,\
kono
parents:
diff changeset
419 neon_fp_cvt_narrow_s_q,\
kono
parents:
diff changeset
420 neon_fp_cvt_narrow_d_q,\
kono
parents:
diff changeset
421 "))
kono
parents:
diff changeset
422 "xgene1_decode1op")
kono
parents:
diff changeset
423
kono
parents:
diff changeset
424 (define_insn_reservation "xgene1_neon_f_reduc" 5
kono
parents:
diff changeset
425 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
426 (eq_attr "type" "neon_fp_reduc_add_s,\
kono
parents:
diff changeset
427 neon_fp_reduc_add_s_q,\
kono
parents:
diff changeset
428 neon_fp_reduc_add_d,\
kono
parents:
diff changeset
429 neon_fp_reduc_add_d_q,\
kono
parents:
diff changeset
430 "))
kono
parents:
diff changeset
431 "xgene1_decode1op")
kono
parents:
diff changeset
432
kono
parents:
diff changeset
433 (define_insn_reservation "xgene1_neon_cls" 2
kono
parents:
diff changeset
434 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
435 (eq_attr "type" "neon_cls,neon_cls_q"))
kono
parents:
diff changeset
436 "xgene1_decode1op")
kono
parents:
diff changeset
437
kono
parents:
diff changeset
438 (define_insn_reservation "xgene1_neon_st1" 4
kono
parents:
diff changeset
439 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
440 (eq_attr "type" "neon_store1_one_lane,\
kono
parents:
diff changeset
441 neon_store1_one_lane_q,\
kono
parents:
diff changeset
442 "))
kono
parents:
diff changeset
443 "xgene1_decode1op")
kono
parents:
diff changeset
444
kono
parents:
diff changeset
445 (define_insn_reservation "xgene1_neon_halve_narrow" 6
kono
parents:
diff changeset
446 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
447 (eq_attr "type" "neon_sub_halve_narrow_q,\
kono
parents:
diff changeset
448 neon_add_halve_narrow_q,\
kono
parents:
diff changeset
449 "))
kono
parents:
diff changeset
450 "xgene1_decodeIsolated")
kono
parents:
diff changeset
451
kono
parents:
diff changeset
452 (define_insn_reservation "xgene1_neon_shift_acc" 6
kono
parents:
diff changeset
453 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
454 (eq_attr "type" "neon_shift_acc,\
kono
parents:
diff changeset
455 neon_shift_acc_q,\
kono
parents:
diff changeset
456 "))
kono
parents:
diff changeset
457 "xgene1_decode2op")
kono
parents:
diff changeset
458
kono
parents:
diff changeset
459 (define_insn_reservation "xgene1_neon_fp_compare" 3
kono
parents:
diff changeset
460 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
461 (eq_attr "type" "neon_fp_compare_s,\
kono
parents:
diff changeset
462 neon_fp_compare_s_q,\
kono
parents:
diff changeset
463 neon_fp_compare_d,\
kono
parents:
diff changeset
464 neon_fp_compare_d_q,\
kono
parents:
diff changeset
465 "))
kono
parents:
diff changeset
466 "xgene1_decode1op")
kono
parents:
diff changeset
467
kono
parents:
diff changeset
468 (define_insn_reservation "xgene1_neon_fp_sqrt" 2
kono
parents:
diff changeset
469 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
470 (eq_attr "type" "neon_fp_sqrt_s,\
kono
parents:
diff changeset
471 neon_fp_sqrt_s_q,\
kono
parents:
diff changeset
472 neon_fp_sqrt_d,\
kono
parents:
diff changeset
473 neon_fp_sqrt_d_q,\
kono
parents:
diff changeset
474 "))
kono
parents:
diff changeset
475 "xgene1_decode1op,(xgene1_fsu+xgene1_fp_divide)")
kono
parents:
diff changeset
476
kono
parents:
diff changeset
477 (define_insn_reservation "xgene1_neon_tbl1" 4
kono
parents:
diff changeset
478 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
479 (eq_attr "type" "neon_tbl1,\
kono
parents:
diff changeset
480 neon_tbl1_q,\
kono
parents:
diff changeset
481 "))
kono
parents:
diff changeset
482 "xgene1_decode2op")
kono
parents:
diff changeset
483
kono
parents:
diff changeset
484 (define_insn_reservation "xgene1_neon_tbl2" 8
kono
parents:
diff changeset
485 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
486 (eq_attr "type" "neon_tbl2,\
kono
parents:
diff changeset
487 neon_tbl2_q,\
kono
parents:
diff changeset
488 "))
kono
parents:
diff changeset
489 "xgene1_decodeIsolated")
kono
parents:
diff changeset
490
kono
parents:
diff changeset
491 (define_insn_reservation "xgene1_neon_permute" 3
kono
parents:
diff changeset
492 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
493 (eq_attr "type" "neon_permute,\
kono
parents:
diff changeset
494 neon_permute_q,\
kono
parents:
diff changeset
495 "))
kono
parents:
diff changeset
496 "xgene1_decode2op")
kono
parents:
diff changeset
497
kono
parents:
diff changeset
498 (define_insn_reservation "xgene1_neon_ld1r" 10
kono
parents:
diff changeset
499 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
500 (eq_attr "type" "neon_load1_all_lanes,\
kono
parents:
diff changeset
501 "))
kono
parents:
diff changeset
502 "xgene1_decode1op")
kono
parents:
diff changeset
503
kono
parents:
diff changeset
504 (define_insn_reservation "xgene1_neon_fp_recp" 3
kono
parents:
diff changeset
505 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
506 (eq_attr "type" "neon_fp_recpe_s,\
kono
parents:
diff changeset
507 neon_fp_recpe_s_q,\
kono
parents:
diff changeset
508 neon_fp_recpe_d,\
kono
parents:
diff changeset
509 neon_fp_recpe_d_q,\
kono
parents:
diff changeset
510 neon_fp_recpx_s,\
kono
parents:
diff changeset
511 neon_fp_recpx_s_q,\
kono
parents:
diff changeset
512 neon_fp_recpx_d,\
kono
parents:
diff changeset
513 neon_fp_recpx_d_q,\
kono
parents:
diff changeset
514 "))
kono
parents:
diff changeset
515 "xgene1_decode1op")
kono
parents:
diff changeset
516
kono
parents:
diff changeset
517
kono
parents:
diff changeset
518 (define_insn_reservation "xgene1_neon_fp_recp_s" 5
kono
parents:
diff changeset
519 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
520 (eq_attr "type" "neon_fp_recps_s,\
kono
parents:
diff changeset
521 neon_fp_recps_s_q,\
kono
parents:
diff changeset
522 neon_fp_recps_d,\
kono
parents:
diff changeset
523 neon_fp_recps_d_q,\
kono
parents:
diff changeset
524 "))
kono
parents:
diff changeset
525 "xgene1_decode1op")
kono
parents:
diff changeset
526
kono
parents:
diff changeset
527 (define_insn_reservation "xgene1_neon_pmull" 5
kono
parents:
diff changeset
528 (and (eq_attr "tune" "xgene1")
kono
parents:
diff changeset
529 (eq_attr "type" "neon_mul_d_long,\
kono
parents:
diff changeset
530 crypto_pmull,\
kono
parents:
diff changeset
531 "))
kono
parents:
diff changeset
532 "xgene1_decode2op")