1;; Machine description for AppliedMicro xgene1 core.
2;; Copyright (C) 2012-2018 Free Software Foundation, Inc.
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
23(define_automaton "xgene1_main, xgene1_decoder, xgene1_div, xgene1_simd")
24
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")
29
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")
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"))
80  "xgene1_decode2op, xgene1_ld")
81
82(define_insn_reservation "xgene1_f_store" 4
83  (and (eq_attr "tune" "xgene1")
84       (eq_attr "type" "f_stored,f_stores"))
85  "xgene1_decode2op, xgene1_st")
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")
104       (eq_attr "type" "load_16"))
105  "xgene1_decodeIsolated, xgene1_ld*2")
106
107(define_insn_reservation "xgene1_store_pair" 2
108  (and (eq_attr "tune" "xgene1")
109       (eq_attr "type" "store_16"))
110  "xgene1_decodeIsolated, xgene1_st*2")
111
112(define_insn_reservation "xgene1_fp_load1" 10
113  (and (eq_attr "tune" "xgene1")
114       (eq_attr "type" "load_4, load_8")
115       (eq_attr "fp" "yes"))
116  "xgene1_decode1op, xgene1_ld")
117
118(define_insn_reservation "xgene1_load1" 5
119  (and (eq_attr "tune" "xgene1")
120       (eq_attr "type" "load_4, load_8"))
121  "xgene1_decode1op, xgene1_ld")
122
123(define_insn_reservation "xgene1_store1" 1
124  (and (eq_attr "tune" "xgene1")
125       (eq_attr "type" "store_4, store_8"))
126  "xgene1_decode1op, xgene1_st")
127
128(define_insn_reservation "xgene1_move" 1
129  (and (eq_attr "tune" "xgene1")
130       (eq_attr "type" "mov_reg,mov_imm,mrs"))
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")
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,\
141                        alu_ext,adc_reg,logic_imm,\
142                        logic_reg,logic_shift_imm,clz,\
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")
151
152(define_insn_reservation "xgene1_simd" 2
153  (and (eq_attr "tune" "xgene1")
154       (eq_attr "type" "rev"))
155  "xgene1_decode1op, xgene1_IXB, xgene1_IXB_compl")
156
157(define_insn_reservation "xgene1_alus" 1
158  (and (eq_attr "tune" "xgene1")
159       (eq_attr "type" "alus_imm,alus_sreg,alus_shift_imm,\
160                        alus_ext,logics_imm,logics_reg,\
161                        logics_shift_imm"))
162  "xgene1_decode1op, xgene1_IXB, xgene1_IXB_compl")
163
164(define_bypass 2 "xgene1_alus"
165  "xgene1_alu_cond, xgene1_branch")
166
167(define_insn_reservation "xgene1_mul32" 4
168  (and (eq_attr "tune" "xgene1")
169       (eq_attr "mul32" "yes"))
170  "xgene1_decode2op, xgene1_IXB + xgene1_multiply, xgene1_multiply, nothing, xgene1_IXB_compl")
171
172(define_insn_reservation "xgene1_mul64" 5
173  (and (eq_attr "tune" "xgene1")
174       (eq_attr "mul64" "yes"))
175  "xgene1_decode2op, xgene1_IXB + xgene1_multiply, xgene1_multiply, nothing*2, xgene1_IXB_compl")
176
177(define_insn_reservation "xgene1_div" 34
178  (and (eq_attr "tune" "xgene1")
179       (eq_attr "type" "sdiv,udiv"))
180  "xgene1_decode1op, xgene1_IXB + xgene1_divide*7")
181
182(define_insn_reservation "xgene1_fcmp" 10
183  (and (eq_attr "tune" "xgene1")
184       (eq_attr "type" "fcmpd,fcmps,fccmpd,fccmps"))
185  "xgene1_decode1op, xgene1_fsu + xgene1_fcmp*3")
186
187(define_insn_reservation "xgene1_fcsel" 3
188  (and (eq_attr "tune" "xgene1")
189       (eq_attr "type" "fcsel"))
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")
196
197(define_insn_reservation "xgene1_bfm" 2
198  (and (eq_attr "tune" "xgene1")
199       (eq_attr "type" "bfm"))
200  "xgene1_decode1op, xgene1_IXB, xgene1_IXB_compl")
201
202(define_insn_reservation "xgene1_f_rint" 5
203  (and (eq_attr "tune" "xgene1")
204       (eq_attr "type" "f_rintd,f_rints"))
205  "xgene1_decode1op, xgene1_fsu")
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"))
260  "xgene1_decode2op, xgene1_ld")
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"))
265  "xgene1_decode2op, xgene1_st")
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,\
335                        neon_minmax,\
336                        neon_minmax_q,\
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,\
476                        neon_stp,\
477                        neon_stp_q,\
478                       "))
479  "xgene1_decodeIsolated, xgene1_st")
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                       "))
538  "xgene1_decode1op, xgene1_ld")
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,\
566			crypto_pmull,\
567		       "))
568  "xgene1_decode2op")
569