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