remove unused files
[platform/upstream/gcc48.git] / gcc / config / arm / cortex-a15-neon.md
1 ;; ARM Cortex-A15 NEON pipeline description
2 ;; Copyright (C) 2012-2013 Free Software Foundation, Inc.
3 ;;
4 ;; This file is part of GCC.
5 ;;
6 ;; GCC is free software; you can redistribute it and/or modify it
7 ;; under the terms of the GNU General Public License as published by
8 ;; the Free Software Foundation; either version 3, or (at your option)
9 ;; any later version.
10 ;;
11 ;; GCC is distributed in the hope that it will be useful, but
12 ;; WITHOUT ANY WARRANTY; without even the implied warranty of
13 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 ;; General Public License for more details.
15 ;;
16 ;; You should have received a copy of the GNU General Public License
17 ;; along with GCC; see the file COPYING3.  If not see
18 ;; <http://www.gnu.org/licenses/>.
19
20 (define_automaton "cortex_a15_neon")
21
22 ;; Dispatch unit.
23 (define_cpu_unit "ca15_cx_ij, ca15_cx_ik" "cortex_a15_neon")
24
25 ;; Accumulate.
26 (define_cpu_unit "ca15_cx_acc" "cortex_a15_neon")
27
28 ;; The 32x32 integer multiply-accumulate pipeline.
29 (define_cpu_unit "ca15_cx_imac1" "cortex_a15_neon")
30 (define_reservation "ca15_cx_imac" "(ca15_cx_ij+ca15_cx_imac1)")
31
32
33 ;; The 64-bit ALU pipeline.
34 (define_cpu_unit "ca15_cx_ialu1, ca15_cx_ialu2" "cortex_a15_neon")
35
36 ;; IALU with accumulate.
37 (define_reservation "ca15_cx_ialu_with_acc" "ca15_cx_ik+ca15_cx_ialu2+ca15_cx_acc")
38
39 (define_reservation "ca15_cx_ialu"
40                     "((ca15_cx_ij+ca15_cx_ialu1)|(ca15_cx_ik+ca15_cx_ialu2))")
41
42 ;; Integer shift pipeline.
43 (define_cpu_unit "ca15_cx_ishf" "cortex_a15_neon")
44 (define_reservation "ca15_cx_ishf_with_acc" "ca15_cx_ik+ca15_cx_ishf+ca15_cx_acc")
45
46 ;; SIMD multiply pipeline.
47 (define_cpu_unit "ca15_cx_fmul1, ca15_cx_fmul2, ca15_cx_fmul3, ca15_cx_fmul4"
48                  "cortex_a15_neon")
49
50 (define_reservation "ca15_cx_fmul"
51                     "(ca15_cx_ij+(ca15_cx_fmul1|ca15_cx_fmul2))|\
52                      (ca15_cx_ik+(ca15_cx_fmul3|ca15_cx_fmul4))")
53
54 (define_reservation "ca15_cx_fmul_2"
55                     "(ca15_cx_ij+(ca15_cx_fmul1|ca15_cx_fmul2))+\
56                      (ca15_cx_ik+(ca15_cx_fmul3|ca15_cx_fmul4))")
57
58 ;; SIMD ALU pipeline.
59 (define_cpu_unit "ca15_cx_falu1, ca15_cx_falu2, ca15_cx_falu3, ca15_cx_falu4"
60                  "cortex_a15_neon")
61
62 (define_reservation "ca15_cx_falu"
63                     "(ca15_cx_ij+(ca15_cx_falu1|ca15_cx_falu2))|\
64                      (ca15_cx_ik+(ca15_cx_falu3|ca15_cx_falu4))")
65
66 (define_reservation "ca15_cx_falu_2"
67                     "(ca15_cx_ij+(ca15_cx_falu1|ca15_cx_falu2))+\
68                      (ca15_cx_ik+(ca15_cx_falu3|ca15_cx_falu4))")
69
70 ;; SIMD multiply-accumulate pipeline.
71 ;; This can be used if fmul and falu are not reserved.
72 (define_reservation "ca15_cx_fmac"
73                     "((ca15_cx_ij+ca15_cx_fmul1),nothing*2,ca15_cx_falu1)|\
74                      ((ca15_cx_ij+ca15_cx_fmul2),nothing*2,ca15_cx_falu2)|\
75                      ((ca15_cx_ik+ca15_cx_fmul3),nothing*2,ca15_cx_falu3)|\
76                      ((ca15_cx_ik+ca15_cx_fmul4),nothing*2,ca15_cx_falu4)")
77
78 (define_reservation "ca15_cx_fmac_2"
79                     "(((ca15_cx_ij+ca15_cx_fmul1),nothing*2,ca15_cx_falu1)|\
80                      ((ca15_cx_ij+ca15_cx_fmul2),nothing*2,ca15_cx_falu2))+\
81                      (((ca15_cx_ik+ca15_cx_fmul3),nothing*2,ca15_cx_falu3)|\
82                      ((ca15_cx_ik+ca15_cx_fmul4),nothing*2,ca15_cx_falu4))")
83
84
85 ;; Vector FP multiply pipeline
86 (define_cpu_unit "ca15_cx_vfp_i" "cortex_a15_neon")
87
88 (define_reservation "ca15_cx_vfp" "ca15_cx_ik+ca15_cx_vfp_i")
89
90 ;; Load permute pipeline
91 (define_reservation "ca15_cx_perm" "ca15_cx_ij|ca15_cx_ik")
92 (define_reservation "ca15_cx_perm_2" "ca15_cx_ij+ca15_cx_ik")
93
94 (define_insn_reservation  "cortex_a15_neon_int_1" 5
95   (and (eq_attr "tune" "cortexa15")
96        (eq_attr "neon_type" "neon_int_1"))
97   "ca15_issue1,ca15_cx_ialu")
98
99 (define_insn_reservation  "cortex_a15_neon_int_2" 5
100   (and (eq_attr "tune" "cortexa15")
101        (eq_attr "neon_type" "neon_int_2"))
102   "ca15_issue1,ca15_cx_ialu")
103
104 (define_insn_reservation  "cortex_a15_neon_int_3" 5
105   (and (eq_attr "tune" "cortexa15")
106        (eq_attr "neon_type" "neon_int_3"))
107   "ca15_issue1,ca15_cx_ialu")
108
109 (define_insn_reservation  "cortex_a15_neon_int_4" 5
110   (and (eq_attr "tune" "cortexa15")
111        (eq_attr "neon_type" "neon_int_4"))
112   "ca15_issue1,ca15_cx_ialu")
113
114 (define_insn_reservation  "cortex_a15_neon_int_5" 5
115   (and (eq_attr "tune" "cortexa15")
116        (eq_attr "neon_type" "neon_int_5"))
117   "ca15_issue1,ca15_cx_ialu")
118
119 (define_insn_reservation  "cortex_a15_neon_vqneg_vqabs" 5
120   (and (eq_attr "tune" "cortexa15")
121        (eq_attr "neon_type" "neon_vqneg_vqabs"))
122   "ca15_issue1,ca15_cx_ialu")
123
124 (define_insn_reservation  "cortex_a15_neon_vmov" 5
125   (and (eq_attr "tune" "cortexa15")
126        (eq_attr "neon_type" "neon_vmov"))
127   "ca15_issue1,ca15_cx_ialu")
128
129 (define_insn_reservation  "cortex_a15_neon_vaba" 7
130   (and (eq_attr "tune" "cortexa15")
131        (eq_attr "neon_type" "neon_vaba"))
132   "ca15_issue1,ca15_cx_ialu_with_acc")
133
134 (define_insn_reservation  "cortex_a15_neon_vaba_qqq" 8
135   (and (eq_attr "tune" "cortexa15")
136        (eq_attr "neon_type" "neon_vaba_qqq"))
137   "ca15_issue2,ca15_cx_ialu_with_acc*2")
138
139 (define_insn_reservation
140   "cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long" 6
141   (and (eq_attr "tune" "cortexa15")
142        (eq_attr "neon_type" "neon_mul_ddd_8_16_qdd_16_8_long_32_16_long"))
143   "ca15_issue1,ca15_cx_imac")
144
145 (define_insn_reservation "cortex_a15_neon_mul_qqq_8_16_32_ddd_32" 7
146   (and (eq_attr "tune" "cortexa15")
147        (eq_attr "neon_type" "neon_mul_qqq_8_16_32_ddd_32"))
148   "ca15_issue1,ca15_cx_imac*2")
149
150 (define_insn_reservation
151   "cortex_a15_neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar" 7
152   (and (eq_attr "tune" "cortexa15")
153        (eq_attr "neon_type"
154               "neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar"))
155   "ca15_issue1,ca15_cx_imac*2")
156
157 (define_insn_reservation
158   "cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long" 6
159   (and (eq_attr "tune" "cortexa15")
160        (eq_attr "neon_type"
161               "neon_mla_ddd_8_16_qdd_16_8_long_32_16_long"))
162   "ca15_issue1,ca15_cx_imac")
163
164 (define_insn_reservation
165   "cortex_a15_neon_mla_qqq_8_16" 7
166   (and (eq_attr "tune" "cortexa15")
167        (eq_attr "neon_type"
168               "neon_mla_qqq_8_16"))
169   "ca15_issue1,ca15_cx_imac*2")
170
171 (define_insn_reservation
172   "cortex_a15_neon_mla_ddd_32_qqd_16_ddd_32_scalar_\
173      qdd_64_32_long_scalar_qdd_64_32_long" 7
174   (and (eq_attr "tune" "cortexa15")
175        (eq_attr "neon_type"
176   "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long"))
177   "ca15_issue1,ca15_cx_imac")
178
179 (define_insn_reservation
180   "cortex_a15_neon_mla_qqq_32_qqd_32_scalar" 7
181   (and (eq_attr "tune" "cortexa15")
182        (eq_attr "neon_type"
183               "neon_mla_qqq_32_qqd_32_scalar"))
184   "ca15_issue1,ca15_cx_imac*2")
185
186 (define_insn_reservation
187   "cortex_a15_neon_mul_ddd_16_scalar_32_16_long_scalar" 6
188   (and (eq_attr "tune" "cortexa15")
189        (eq_attr "neon_type"
190               "neon_mul_ddd_16_scalar_32_16_long_scalar"))
191   "ca15_issue1,ca15_cx_imac")
192
193 (define_insn_reservation
194   "cortex_a15_neon_mul_qqd_32_scalar" 7
195   (and (eq_attr "tune" "cortexa15")
196        (eq_attr "neon_type"
197               "neon_mul_qqd_32_scalar"))
198   "ca15_issue1,ca15_cx_imac*2")
199
200 (define_insn_reservation
201   "cortex_a15_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar" 6
202   (and (eq_attr "tune" "cortexa15")
203        (eq_attr "neon_type"
204               "neon_mla_ddd_16_scalar_qdd_32_16_long_scalar"))
205   "ca15_issue1,ca15_cx_imac")
206
207 (define_insn_reservation
208   "cortex_a15_neon_shift_1" 5
209   (and (eq_attr "tune" "cortexa15")
210        (eq_attr "neon_type"
211               "neon_shift_1"))
212   "ca15_issue1,ca15_cx_ik+ca15_cx_ishf")
213
214 (define_insn_reservation
215   "cortex_a15_neon_shift_2" 5
216   (and (eq_attr "tune" "cortexa15")
217        (eq_attr "neon_type"
218               "neon_shift_2"))
219   "ca15_issue1,ca15_cx_ik+ca15_cx_ishf")
220
221 (define_insn_reservation
222   "cortex_a15_neon_shift_3" 6
223   (and (eq_attr "tune" "cortexa15")
224        (eq_attr "neon_type"
225               "neon_shift_3"))
226   "ca15_issue2,(ca15_cx_ik+ca15_cx_ishf)*2")
227
228 (define_insn_reservation
229   "cortex_a15_neon_vshl_ddd" 5
230   (and (eq_attr "tune" "cortexa15")
231        (eq_attr "neon_type"
232               "neon_vshl_ddd"))
233   "ca15_issue1,ca15_cx_ik+ca15_cx_ishf")
234
235 (define_insn_reservation
236   "cortex_a15_neon_vqshl_vrshl_vqrshl_qqq" 6
237   (and (eq_attr "tune" "cortexa15")
238        (eq_attr "neon_type"
239               "neon_vqshl_vrshl_vqrshl_qqq"))
240   "ca15_issue2,(ca15_cx_ik+ca15_cx_ishf)*2")
241
242 (define_insn_reservation
243   "cortex_a15_neon_vsra_vrsra" 7
244   (and (eq_attr "tune" "cortexa15")
245        (eq_attr "neon_type"
246               "neon_vsra_vrsra"))
247   "ca15_issue1,ca15_cx_ishf_with_acc")
248
249 (define_insn_reservation
250   "cortex_a15_neon_fp_vadd_ddd_vabs_dd" 6
251   (and (eq_attr "tune" "cortexa15")
252        (eq_attr "neon_type"
253               "neon_fp_vadd_ddd_vabs_dd"))
254   "ca15_issue1,ca15_cx_falu")
255
256 (define_insn_reservation
257   "cortex_a15_neon_fp_vadd_qqq_vabs_qq" 7
258   (and (eq_attr "tune" "cortexa15")
259        (eq_attr "neon_type"
260               "neon_fp_vadd_qqq_vabs_qq"))
261   "ca15_issue2,ca15_cx_falu_2")
262
263 (define_insn_reservation
264   "cortex_a15_neon_fp_vmul_ddd" 5
265   (and (eq_attr "tune" "cortexa15")
266        (eq_attr "neon_type"
267               "neon_fp_vmul_ddd"))
268   "ca15_issue1,ca15_cx_fmul")
269
270 (define_insn_reservation
271   "cortex_a15_neon_fp_vmul_qqd" 6
272   (and (eq_attr "tune" "cortexa15")
273        (eq_attr "neon_type"
274               "neon_fp_vmul_qqd"))
275   "ca15_issue2,ca15_cx_fmul_2")
276
277 (define_insn_reservation
278   "cortex_a15_neon_fp_vmla_ddd" 9
279   (and (eq_attr "tune" "cortexa15")
280        (eq_attr "neon_type"
281               "neon_fp_vmla_ddd"))
282   "ca15_issue1,ca15_cx_fmac")
283
284 (define_insn_reservation
285   "cortex_a15_neon_fp_vmla_qqq" 11
286   (and (eq_attr "tune" "cortexa15")
287        (eq_attr "neon_type"
288               "neon_fp_vmla_qqq"))
289   "ca15_issue2,ca15_cx_fmac_2")
290
291 (define_insn_reservation
292   "cortex_a15_neon_fp_vmla_ddd_scalar" 9
293   (and (eq_attr "tune" "cortexa15")
294        (eq_attr "neon_type"
295               "neon_fp_vmla_ddd_scalar"))
296   "ca15_issue1,ca15_cx_fmac")
297
298 (define_insn_reservation
299   "cortex_a15_neon_fp_vmla_qqq_scalar" 11
300   (and (eq_attr "tune" "cortexa15")
301        (eq_attr "neon_type"
302               "neon_fp_vmla_qqq_scalar"))
303   "ca15_issue2,ca15_cx_fmac_2")
304
305 (define_insn_reservation
306   "cortex_a15_neon_fp_vrecps_vrsqrts_ddd" 9
307   (and (eq_attr "tune" "cortexa15")
308        (eq_attr "neon_type"
309               "neon_fp_vrecps_vrsqrts_ddd"))
310   "ca15_issue1,ca15_cx_fmac")
311
312 (define_insn_reservation
313   "cortex_a15_neon_fp_vrecps_vrsqrts_qqq" 11
314   (and (eq_attr "tune" "cortexa15")
315        (eq_attr "neon_type"
316               "neon_fp_vrecps_vrsqrts_qqq"))
317   "ca15_issue2,ca15_cx_fmac_2")
318
319 (define_insn_reservation
320   "cortex_a15_neon_bp_simple" 4
321   (and (eq_attr "tune" "cortexa15")
322        (eq_attr "neon_type"
323               "neon_bp_simple"))
324   "ca15_issue3,ca15_ls+ca15_cx_perm_2,ca15_cx_perm")
325
326 (define_insn_reservation
327   "cortex_a15_neon_bp_2cycle" 4
328   (and (eq_attr "tune" "cortexa15")
329        (eq_attr "neon_type"
330               "neon_bp_2cycle"))
331   "ca15_issue1,ca15_cx_perm")
332
333 (define_insn_reservation
334   "cortex_a15_neon_bp_3cycle" 7
335   (and (eq_attr "tune" "cortexa15")
336        (eq_attr "neon_type"
337               "neon_bp_3cycle"))
338   "ca15_issue3,ca15_cx_ialu+ca15_cx_perm_2,ca15_cx_perm")
339
340 (define_insn_reservation
341   "cortex_a15_neon_vld1_1_2_regs" 7
342   (and (eq_attr "tune" "cortexa15")
343        (eq_attr "neon_type"
344               "neon_vld1_1_2_regs"))
345   "ca15_issue2,ca15_ls,ca15_ldr")
346
347 (define_insn_reservation
348   "cortex_a15_neon_vld1_3_4_regs" 8
349   (and (eq_attr "tune" "cortexa15")
350        (eq_attr "neon_type"
351               "neon_vld1_3_4_regs"))
352   "ca15_issue3,ca15_ls1+ca15_ls2,ca15_ldr,ca15_ldr")
353
354 (define_insn_reservation
355   "cortex_a15_neon_vld2_2_regs_vld1_vld2_all_lanes" 9
356   (and (eq_attr "tune" "cortexa15")
357        (eq_attr "neon_type"
358               "neon_vld2_2_regs_vld1_vld2_all_lanes"))
359   "ca15_issue3,ca15_ls,ca15_ldr")
360
361 (define_insn_reservation
362   "cortex_a15_neon_vld2_4_regs" 12
363   (and (eq_attr "tune" "cortexa15")
364        (eq_attr "neon_type"
365               "neon_vld2_4_regs"))
366   "ca15_issue3,ca15_issue3+ca15_ls1+ca15_ls2,ca15_ldr*2")
367
368 (define_insn_reservation
369   "cortex_a15_neon_vld3_vld4" 12
370   (and (eq_attr "tune" "cortexa15")
371        (eq_attr "neon_type"
372               "neon_vld3_vld4"))
373   "ca15_issue3,ca15_issue3+ca15_ls1+ca15_ls2,ca15_ldr*2")
374
375 (define_insn_reservation
376   "cortex_a15_neon_vst1_1_2_regs_vst2_2_regs" 0
377   (and (eq_attr "tune" "cortexa15")
378        (eq_attr "neon_type"
379               "neon_vst1_1_2_regs_vst2_2_regs"))
380   "ca15_issue3,ca15_issue3+ca15_cx_perm+ca15_ls1+ca15_ls2,ca15_str*2")
381
382 (define_insn_reservation
383   "cortex_a15_neon_vst1_3_4_regs" 0
384   (and (eq_attr "tune" "cortexa15")
385        (eq_attr "neon_type"
386               "neon_vst1_3_4_regs"))
387   "ca15_issue3,ca15_issue3+ca15_ls1+ca15_ls2,ca15_str*3")
388
389 (define_insn_reservation
390   "cortex_a15_neon_vst2_4_regs_vst3_vst4" 0
391   (and (eq_attr "tune" "cortexa15")
392        (eq_attr "neon_type"
393               "neon_vst2_4_regs_vst3_vst4"))
394   "ca15_issue3,ca15_issue3+ca15_cx_perm_2+ca15_ls1+ca15_ls2,\
395    ca15_issue3+ca15_str,ca15_str*3")
396
397 (define_insn_reservation
398   "cortex_a15_neon_vst3_vst4" 0
399   (and (eq_attr "tune" "cortexa15")
400        (eq_attr "neon_type"
401               "neon_vst3_vst4"))
402   "ca15_issue3,ca15_issue3+ca15_cx_perm_2+ca15_ls1+ca15_ls2,ca15_str*4")
403
404 (define_insn_reservation
405   "cortex_a15_neon_vld1_vld2_lane" 9
406   (and (eq_attr "tune" "cortexa15")
407        (eq_attr "neon_type"
408               "neon_vld1_vld2_lane"))
409   "ca15_issue3,ca15_ls,ca15_ldr")
410
411 (define_insn_reservation
412   "cortex_a15_neon_vld3_vld4_lane" 10
413   (and (eq_attr "tune" "cortexa15")
414        (eq_attr "neon_type"
415               "neon_vld3_vld4_lane"))
416   "ca15_issue3,ca15_issue3+ca15_ls,ca15_issue3+ca15_ldr")
417
418 (define_insn_reservation
419   "cortex_a15_neon_vst1_vst2_lane" 0
420   (and (eq_attr "tune" "cortexa15")
421        (eq_attr "neon_type"
422               "neon_vst1_vst2_lane"))
423   "ca15_issue3,ca15_cx_perm+ca15_ls,ca15_str")
424
425 (define_insn_reservation
426   "cortex_a15_neon_vst3_vst4_lane" 0
427   (and (eq_attr "tune" "cortexa15")
428        (eq_attr "neon_type"
429               "neon_vst3_vst4_lane"))
430   "ca15_issue3,ca15_issue3+ca15_cx_perm+ca15_ls1+ca15_ls2,ca15_str*2")
431
432 (define_insn_reservation
433   "cortex_a15_neon_vld3_vld4_all_lanes" 11
434   (and (eq_attr "tune" "cortexa15")
435        (eq_attr "neon_type"
436               "neon_vld3_vld4_all_lanes"))
437   "ca15_issue3,ca15_issue3+ca15_ls,ca15_ldr")
438
439 (define_insn_reservation
440   "cortex_a15_neon_ldm_2" 20
441   (and (eq_attr "tune" "cortexa15")
442        (eq_attr "neon_type"
443               "neon_ldm_2"))
444   "ca15_issue3*6")
445
446 (define_insn_reservation
447   "cortex_a15_neon_stm_2" 0
448   (and (eq_attr "tune" "cortexa15")
449        (eq_attr "neon_type"
450               "neon_stm_2"))
451   "ca15_issue3*6")
452
453 (define_insn_reservation
454   "cortex_a15_neon_mcr" 6
455   (and (eq_attr "tune" "cortexa15")
456        (eq_attr "neon_type"
457               "neon_mcr"))
458   "ca15_issue2,ca15_ls,ca15_cx_perm")
459
460 (define_insn_reservation
461   "cortex_a15_neon_mcr_2_mcrr" 6
462   (and (eq_attr "tune" "cortexa15")
463        (eq_attr "neon_type"
464               "neon_mcr_2_mcrr"))
465   "ca15_issue2,ca15_ls1+ca15_ls2")
466
467 (define_insn_reservation
468   "cortex_a15_neon_mrc" 5
469   (and (eq_attr "tune" "cortexa15")
470        (eq_attr "neon_type"
471               "neon_mrc"))
472   "ca15_issue1,ca15_ls")
473
474 (define_insn_reservation
475   "cortex_a15_neon_mrrc" 6
476   (and (eq_attr "tune" "cortexa15")
477        (eq_attr "neon_type"
478               "neon_mrrc"))
479   "ca15_issue2,ca15_ls1+ca15_ls2")
480
481 (define_insn_reservation "cortex_a15_vfp_const" 4
482   (and (eq_attr "tune" "cortexa15")
483        (eq_attr "type" "fconsts,fconstd"))
484   "ca15_issue1,ca15_cx_perm")
485
486 (define_insn_reservation "cortex_a15_vfp_adds_subs" 6
487   (and (eq_attr "tune" "cortexa15")
488        (eq_attr "type" "fadds"))
489   "ca15_issue1,ca15_cx_vfp")
490
491 (define_insn_reservation "cortex_a15_vfp_addd_subd" 10
492   (and (eq_attr "tune" "cortexa15")
493        (eq_attr "type" "faddd"))
494   "ca15_issue2,ca15_cx_vfp*2")
495
496 (define_insn_reservation "cortex_a15_vfp_muls" 7
497   (and (eq_attr "tune" "cortexa15")
498        (eq_attr "type" "fmuls"))
499   "ca15_issue1,ca15_cx_vfp")
500
501 (define_insn_reservation "cortex_a15_vfp_muld" 12
502   (and (eq_attr "tune" "cortexa15")
503        (eq_attr "type" "fmuld"))
504   "ca15_issue2,ca15_cx_vfp*2")
505
506 (define_insn_reservation "cortex_a15_vfp_macs" 6
507   (and (eq_attr "tune" "cortexa15")
508        (eq_attr "type" "fmacs,ffmas"))
509   "ca15_issue1,ca15_cx_vfp")
510
511 (define_insn_reservation "cortex_a15_vfp_macd" 11
512   (and (eq_attr "tune" "cortexa15")
513        (eq_attr "type" "fmacd,ffmad"))
514   "ca15_issue2,ca15_cx_vfp*2")
515
516 (define_insn_reservation "cortex_a15_vfp_cvt" 6
517   (and (eq_attr "tune" "cortexa15")
518        (eq_attr "type" "f_cvt"))
519   "ca15_issue1,ca15_cx_vfp")
520
521 (define_insn_reservation "cortex_a15_vfp_cmpd" 8
522   (and (eq_attr "tune" "cortexa15")
523        (eq_attr "type" "fcmpd"))
524   "ca15_issue2,ca15_cx_perm,ca15_cx_vfp")
525
526 (define_insn_reservation "cortex_a15_vfp_cmps" 8
527   (and (eq_attr "tune" "cortexa15")
528        (eq_attr "type" "fcmps"))
529   "ca15_issue2,ca15_cx_perm,ca15_cx_vfp")
530
531 (define_insn_reservation "cortex_a15_vfp_arithd" 7
532   (and (eq_attr "tune" "cortexa15")
533        (eq_attr "type" "ffarithd"))
534   "ca15_issue2,ca15_cx_perm*2")
535
536 (define_insn_reservation "cortex_a15_vfp_cpys" 4
537   (and (eq_attr "tune" "cortexa15")
538        (eq_attr "type" "fcpys"))
539   "ca15_issue1,ca15_cx_perm")
540
541 (define_insn_reservation "cortex_a15_vfp_ariths" 7
542   (and (eq_attr "tune" "cortexa15")
543        (eq_attr "type" "ffariths"))
544   "ca15_issue1,ca15_cx_perm")
545
546 (define_insn_reservation "cortex_a15_vfp_divs" 10
547   (and (eq_attr "tune" "cortexa15")
548        (eq_attr "type" "fdivs"))
549   "ca15_issue1,ca15_cx_ik")
550
551 (define_insn_reservation "cortex_a15_vfp_divd" 18
552   (and (eq_attr "tune" "cortexa15")
553        (eq_attr "type" "fdivd"))
554   "ca15_issue1,ca15_cx_ik")
555
556 ;; Define bypasses.
557 (define_bypass 5 "cortex_a15_neon_mcr_2_mcrr"
558                "cortex_a15_neon_int_1,\
559                cortex_a15_neon_int_4,\
560                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
561                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
562                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
563                cortex_a15_neon_mla_qqq_8_16,\
564                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
565                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
566                cortex_a15_neon_fp_vmla_ddd,\
567                cortex_a15_neon_fp_vmla_qqq,\
568                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
569                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
570
571 (define_bypass 5 "cortex_a15_neon_mcr"
572                "cortex_a15_neon_int_1,\
573                cortex_a15_neon_int_4,\
574                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
575                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
576                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
577                cortex_a15_neon_mla_qqq_8_16,\
578                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
579                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
580                cortex_a15_neon_fp_vmla_ddd,\
581                cortex_a15_neon_fp_vmla_qqq,\
582                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
583                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
584
585 (define_bypass 10 "cortex_a15_neon_vld3_vld4_all_lanes"
586                "cortex_a15_neon_int_1,\
587                cortex_a15_neon_int_4,\
588                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
589                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
590                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
591                cortex_a15_neon_mla_qqq_8_16,\
592                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
593                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
594                cortex_a15_neon_fp_vmla_ddd,\
595                cortex_a15_neon_fp_vmla_qqq,\
596                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
597                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
598
599 (define_bypass 9 "cortex_a15_neon_vld3_vld4_lane"
600                "cortex_a15_neon_int_1,\
601                cortex_a15_neon_int_4,\
602                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
603                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
604                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
605                cortex_a15_neon_mla_qqq_8_16,\
606                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
607                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
608                cortex_a15_neon_fp_vmla_ddd,\
609                cortex_a15_neon_fp_vmla_qqq,\
610                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
611                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
612
613 (define_bypass 8 "cortex_a15_neon_vld1_vld2_lane"
614                "cortex_a15_neon_int_1,\
615                cortex_a15_neon_int_4,\
616                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
617                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
618                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
619                cortex_a15_neon_mla_qqq_8_16,\
620                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
621                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
622                cortex_a15_neon_fp_vmla_ddd,\
623                cortex_a15_neon_fp_vmla_qqq,\
624                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
625                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
626
627 (define_bypass 11 "cortex_a15_neon_vld3_vld4"
628                "cortex_a15_neon_int_1,\
629                cortex_a15_neon_int_4,\
630                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
631                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
632                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
633                cortex_a15_neon_mla_qqq_8_16,\
634                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
635                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
636                cortex_a15_neon_fp_vmla_ddd,\
637                cortex_a15_neon_fp_vmla_qqq,\
638                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
639                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
640
641 (define_bypass 11 "cortex_a15_neon_vld2_4_regs"
642                "cortex_a15_neon_int_1,\
643                cortex_a15_neon_int_4,\
644                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
645                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
646                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
647                cortex_a15_neon_mla_qqq_8_16,\
648                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
649                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
650                cortex_a15_neon_fp_vmla_ddd,\
651                cortex_a15_neon_fp_vmla_qqq,\
652                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
653                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
654
655 (define_bypass 8 "cortex_a15_neon_vld2_2_regs_vld1_vld2_all_lanes"
656                "cortex_a15_neon_int_1,\
657                cortex_a15_neon_int_4,\
658                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
659                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
660                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
661                cortex_a15_neon_mla_qqq_8_16,\
662                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
663                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
664                cortex_a15_neon_fp_vmla_ddd,\
665                cortex_a15_neon_fp_vmla_qqq,\
666                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
667                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
668
669 (define_bypass 7 "cortex_a15_neon_vld1_3_4_regs"
670                "cortex_a15_neon_int_1,\
671                cortex_a15_neon_int_4,\
672                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
673                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
674                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
675                cortex_a15_neon_mla_qqq_8_16,\
676                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
677                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
678                cortex_a15_neon_fp_vmla_ddd,\
679                cortex_a15_neon_fp_vmla_qqq,\
680                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
681                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
682
683 (define_bypass 6 "cortex_a15_neon_vld1_1_2_regs"
684                "cortex_a15_neon_int_1,\
685                cortex_a15_neon_int_4,\
686                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
687                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
688                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
689                cortex_a15_neon_mla_qqq_8_16,\
690                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
691                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
692                cortex_a15_neon_fp_vmla_ddd,\
693                cortex_a15_neon_fp_vmla_qqq,\
694                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
695                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
696
697 (define_bypass 6 "cortex_a15_neon_bp_3cycle"
698                "cortex_a15_neon_int_1,\
699                cortex_a15_neon_int_4,\
700                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
701                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
702                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
703                cortex_a15_neon_mla_qqq_8_16,\
704                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
705                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
706                cortex_a15_neon_fp_vmla_ddd,\
707                cortex_a15_neon_fp_vmla_qqq,\
708                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
709                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
710
711 (define_bypass 3 "cortex_a15_neon_bp_2cycle"
712                "cortex_a15_neon_int_1,\
713                cortex_a15_neon_int_4,\
714                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
715                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
716                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
717                cortex_a15_neon_mla_qqq_8_16,\
718                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
719                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
720                cortex_a15_neon_fp_vmla_ddd,\
721                cortex_a15_neon_fp_vmla_qqq,\
722                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
723                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
724
725 (define_bypass 3 "cortex_a15_neon_bp_simple"
726                "cortex_a15_neon_int_1,\
727                cortex_a15_neon_int_4,\
728                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
729                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
730                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
731                cortex_a15_neon_mla_qqq_8_16,\
732                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
733                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
734                cortex_a15_neon_fp_vmla_ddd,\
735                cortex_a15_neon_fp_vmla_qqq,\
736                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
737                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
738
739 (define_bypass 10 "cortex_a15_neon_fp_vrecps_vrsqrts_qqq"
740                "cortex_a15_neon_int_1,\
741                cortex_a15_neon_int_4,\
742                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
743                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
744                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
745                cortex_a15_neon_mla_qqq_8_16,\
746                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
747                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
748                cortex_a15_neon_fp_vmla_ddd,\
749                cortex_a15_neon_fp_vmla_qqq,\
750                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
751                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
752
753 (define_bypass 8 "cortex_a15_neon_fp_vrecps_vrsqrts_ddd"
754                "cortex_a15_neon_int_1,\
755                cortex_a15_neon_int_4,\
756                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
757                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
758                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
759                cortex_a15_neon_mla_qqq_8_16,\
760                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
761                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
762                cortex_a15_neon_fp_vmla_ddd,\
763                cortex_a15_neon_fp_vmla_qqq,\
764                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
765                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
766
767 (define_bypass 10 "cortex_a15_neon_fp_vmla_qqq_scalar"
768                "cortex_a15_neon_int_1,\
769                cortex_a15_neon_int_4,\
770                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
771                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
772                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
773                cortex_a15_neon_mla_qqq_8_16,\
774                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
775                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
776                cortex_a15_neon_fp_vmla_ddd,\
777                cortex_a15_neon_fp_vmla_qqq,\
778                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
779                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
780
781 (define_bypass 8 "cortex_a15_neon_fp_vmla_ddd_scalar"
782                "cortex_a15_neon_int_1,\
783                cortex_a15_neon_int_4,\
784                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
785                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
786                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
787                cortex_a15_neon_mla_qqq_8_16,\
788                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
789                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
790                cortex_a15_neon_fp_vmla_ddd,\
791                cortex_a15_neon_fp_vmla_qqq,\
792                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
793                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
794
795 (define_bypass 10 "cortex_a15_neon_fp_vmla_qqq"
796                "cortex_a15_neon_int_1,\
797                cortex_a15_neon_int_4,\
798                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
799                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
800                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
801                cortex_a15_neon_mla_qqq_8_16,\
802                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
803                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
804                cortex_a15_neon_fp_vmla_ddd,\
805                cortex_a15_neon_fp_vmla_qqq,\
806                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
807                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
808
809 (define_bypass 8 "cortex_a15_neon_fp_vmla_ddd"
810                "cortex_a15_neon_int_1,\
811                cortex_a15_neon_int_4,\
812                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
813                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
814                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
815                cortex_a15_neon_mla_qqq_8_16,\
816                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
817                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
818                cortex_a15_neon_fp_vmla_ddd,\
819                cortex_a15_neon_fp_vmla_qqq,\
820                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
821                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
822
823 (define_bypass 5 "cortex_a15_neon_fp_vmul_qqd"
824                "cortex_a15_neon_int_1,\
825                cortex_a15_neon_int_4,\
826                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
827                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
828                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
829                cortex_a15_neon_mla_qqq_8_16,\
830                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
831                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
832                cortex_a15_neon_fp_vmla_ddd,\
833                cortex_a15_neon_fp_vmla_qqq,\
834                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
835                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
836
837 (define_bypass 4 "cortex_a15_neon_fp_vmul_ddd"
838                "cortex_a15_neon_int_1,\
839                cortex_a15_neon_int_4,\
840                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
841                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
842                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
843                cortex_a15_neon_mla_qqq_8_16,\
844                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
845                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
846                cortex_a15_neon_fp_vmla_ddd,\
847                cortex_a15_neon_fp_vmla_qqq,\
848                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
849                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
850
851 (define_bypass 6 "cortex_a15_neon_fp_vadd_qqq_vabs_qq"
852                "cortex_a15_neon_int_1,\
853                cortex_a15_neon_int_4,\
854                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
855                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
856                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
857                cortex_a15_neon_mla_qqq_8_16,\
858                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
859                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
860                cortex_a15_neon_fp_vmla_ddd,\
861                cortex_a15_neon_fp_vmla_qqq,\
862                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
863                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
864
865 (define_bypass 5 "cortex_a15_neon_fp_vadd_ddd_vabs_dd"
866                "cortex_a15_neon_int_1,\
867                cortex_a15_neon_int_4,\
868                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
869                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
870                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
871                cortex_a15_neon_mla_qqq_8_16,\
872                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
873                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
874                cortex_a15_neon_fp_vmla_ddd,\
875                cortex_a15_neon_fp_vmla_qqq,\
876                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
877                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
878
879 (define_bypass 6 "cortex_a15_neon_vsra_vrsra"
880                "cortex_a15_neon_int_1,\
881                cortex_a15_neon_int_4,\
882                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
883                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
884                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
885                cortex_a15_neon_mla_qqq_8_16,\
886                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
887                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
888                cortex_a15_neon_fp_vmla_ddd,\
889                cortex_a15_neon_fp_vmla_qqq,\
890                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
891                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
892
893 (define_bypass 5 "cortex_a15_neon_vqshl_vrshl_vqrshl_qqq"
894                "cortex_a15_neon_int_1,\
895                cortex_a15_neon_int_4,\
896                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
897                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
898                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
899                cortex_a15_neon_mla_qqq_8_16,\
900                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
901                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
902                cortex_a15_neon_fp_vmla_ddd,\
903                cortex_a15_neon_fp_vmla_qqq,\
904                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
905                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
906
907 (define_bypass 4 "cortex_a15_neon_vshl_ddd"
908                "cortex_a15_neon_int_1,\
909                cortex_a15_neon_int_4,\
910                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
911                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
912                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
913                cortex_a15_neon_mla_qqq_8_16,\
914                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
915                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
916                cortex_a15_neon_fp_vmla_ddd,\
917                cortex_a15_neon_fp_vmla_qqq,\
918                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
919                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
920
921 (define_bypass 5 "cortex_a15_neon_shift_3"
922                "cortex_a15_neon_int_1,\
923                cortex_a15_neon_int_4,\
924                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
925                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
926                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
927                cortex_a15_neon_mla_qqq_8_16,\
928                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
929                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
930                cortex_a15_neon_fp_vmla_ddd,\
931                cortex_a15_neon_fp_vmla_qqq,\
932                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
933                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
934
935 (define_bypass 4 "cortex_a15_neon_shift_2"
936                "cortex_a15_neon_int_1,\
937                cortex_a15_neon_int_4,\
938                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
939                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
940                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
941                cortex_a15_neon_mla_qqq_8_16,\
942                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
943                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
944                cortex_a15_neon_fp_vmla_ddd,\
945                cortex_a15_neon_fp_vmla_qqq,\
946                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
947                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
948
949 (define_bypass 4 "cortex_a15_neon_shift_1"
950                "cortex_a15_neon_int_1,\
951                cortex_a15_neon_int_4,\
952                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
953                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
954                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
955                cortex_a15_neon_mla_qqq_8_16,\
956                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
957                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
958                cortex_a15_neon_fp_vmla_ddd,\
959                cortex_a15_neon_fp_vmla_qqq,\
960                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
961                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
962
963 (define_bypass 5 "cortex_a15_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar"
964                "cortex_a15_neon_int_1,\
965                cortex_a15_neon_int_4,\
966                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
967                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
968                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
969                cortex_a15_neon_mla_qqq_8_16,\
970                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
971                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
972                cortex_a15_neon_fp_vmla_ddd,\
973                cortex_a15_neon_fp_vmla_qqq,\
974                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
975                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
976
977 (define_bypass 6 "cortex_a15_neon_mul_qqd_32_scalar"
978                "cortex_a15_neon_int_1,\
979                cortex_a15_neon_int_4,\
980                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
981                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
982                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
983                cortex_a15_neon_mla_qqq_8_16,\
984                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
985                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
986                cortex_a15_neon_fp_vmla_ddd,\
987                cortex_a15_neon_fp_vmla_qqq,\
988                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
989                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
990
991 (define_bypass 5 "cortex_a15_neon_mul_ddd_16_scalar_32_16_long_scalar"
992                "cortex_a15_neon_int_1,\
993                cortex_a15_neon_int_4,\
994                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
995                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
996                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
997                cortex_a15_neon_mla_qqq_8_16,\
998                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
999                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
1000                cortex_a15_neon_fp_vmla_ddd,\
1001                cortex_a15_neon_fp_vmla_qqq,\
1002                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
1003                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
1004
1005 (define_bypass 6 "cortex_a15_neon_mla_qqq_32_qqd_32_scalar"
1006                "cortex_a15_neon_int_1,\
1007                cortex_a15_neon_int_4,\
1008                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1009                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
1010                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1011                cortex_a15_neon_mla_qqq_8_16,\
1012                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
1013                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
1014                cortex_a15_neon_fp_vmla_ddd,\
1015                cortex_a15_neon_fp_vmla_qqq,\
1016                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
1017                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
1018
1019 (define_bypass 6 "cortex_a15_neon_mla_qqq_8_16"
1020                "cortex_a15_neon_int_1,\
1021                cortex_a15_neon_int_4,\
1022                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1023                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
1024                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1025                cortex_a15_neon_mla_qqq_8_16,\
1026                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
1027                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
1028                cortex_a15_neon_fp_vmla_ddd,\
1029                cortex_a15_neon_fp_vmla_qqq,\
1030                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
1031                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
1032
1033 (define_bypass 5 "cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long"
1034                "cortex_a15_neon_int_1,\
1035                cortex_a15_neon_int_4,\
1036                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1037                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
1038                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1039                cortex_a15_neon_mla_qqq_8_16,\
1040                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
1041                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
1042                cortex_a15_neon_fp_vmla_ddd,\
1043                cortex_a15_neon_fp_vmla_qqq,\
1044                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
1045                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
1046
1047 (define_bypass 6
1048      "cortex_a15_neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar"
1049                "cortex_a15_neon_int_1,\
1050                cortex_a15_neon_int_4,\
1051                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1052                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
1053                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1054                cortex_a15_neon_mla_qqq_8_16,\
1055                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
1056                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
1057                cortex_a15_neon_fp_vmla_ddd,\
1058                cortex_a15_neon_fp_vmla_qqq,\
1059                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
1060                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
1061
1062 (define_bypass 6 "cortex_a15_neon_mul_qqq_8_16_32_ddd_32"
1063                "cortex_a15_neon_int_1,\
1064                cortex_a15_neon_int_4,\
1065                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1066                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
1067                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1068                cortex_a15_neon_mla_qqq_8_16,\
1069                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
1070                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
1071                cortex_a15_neon_fp_vmla_ddd,\
1072                cortex_a15_neon_fp_vmla_qqq,\
1073                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
1074                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
1075
1076 (define_bypass 5 "cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long"
1077                "cortex_a15_neon_int_1,\
1078                cortex_a15_neon_int_4,\
1079                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1080                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
1081                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1082                cortex_a15_neon_mla_qqq_8_16,\
1083                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
1084                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
1085                cortex_a15_neon_fp_vmla_ddd,\
1086                cortex_a15_neon_fp_vmla_qqq,\
1087                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
1088                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
1089
1090 (define_bypass 7 "cortex_a15_neon_vaba_qqq"
1091                "cortex_a15_neon_int_1,\
1092                cortex_a15_neon_int_4,\
1093                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1094                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
1095                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1096                cortex_a15_neon_mla_qqq_8_16,\
1097                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
1098                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
1099                cortex_a15_neon_fp_vmla_ddd,\
1100                cortex_a15_neon_fp_vmla_qqq,\
1101                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
1102                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
1103
1104 (define_bypass 6 "cortex_a15_neon_vaba"
1105                "cortex_a15_neon_int_1,\
1106                cortex_a15_neon_int_4,\
1107                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1108                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
1109                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1110                cortex_a15_neon_mla_qqq_8_16,\
1111                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
1112                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
1113                cortex_a15_neon_fp_vmla_ddd,\
1114                cortex_a15_neon_fp_vmla_qqq,\
1115                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
1116                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
1117
1118 (define_bypass 4 "cortex_a15_neon_vmov"
1119                "cortex_a15_neon_int_1,\
1120                cortex_a15_neon_int_4,\
1121                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1122                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
1123                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1124                cortex_a15_neon_mla_qqq_8_16,\
1125                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
1126                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
1127                cortex_a15_neon_fp_vmla_ddd,\
1128                cortex_a15_neon_fp_vmla_qqq,\
1129                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
1130                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
1131
1132 (define_bypass 4 "cortex_a15_neon_vqneg_vqabs"
1133                "cortex_a15_neon_int_1,\
1134                cortex_a15_neon_int_4,\
1135                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1136                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
1137                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1138                cortex_a15_neon_mla_qqq_8_16,\
1139                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
1140                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
1141                cortex_a15_neon_fp_vmla_ddd,\
1142                cortex_a15_neon_fp_vmla_qqq,\
1143                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
1144                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
1145
1146 (define_bypass 4 "cortex_a15_neon_int_5"
1147                "cortex_a15_neon_int_1,\
1148                cortex_a15_neon_int_4,\
1149                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1150                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
1151                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1152                cortex_a15_neon_mla_qqq_8_16,\
1153                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
1154                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
1155                cortex_a15_neon_fp_vmla_ddd,\
1156                cortex_a15_neon_fp_vmla_qqq,\
1157                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
1158                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
1159
1160 (define_bypass 4 "cortex_a15_neon_int_4"
1161                "cortex_a15_neon_int_1,\
1162                cortex_a15_neon_int_4,\
1163                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1164                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
1165                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1166                cortex_a15_neon_mla_qqq_8_16,\
1167                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
1168                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
1169                cortex_a15_neon_fp_vmla_ddd,\
1170                cortex_a15_neon_fp_vmla_qqq,\
1171                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
1172                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
1173
1174 (define_bypass 4 "cortex_a15_neon_int_3"
1175                "cortex_a15_neon_int_1,\
1176                cortex_a15_neon_int_4,\
1177                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1178                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
1179                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1180                cortex_a15_neon_mla_qqq_8_16,\
1181                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
1182                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
1183                cortex_a15_neon_fp_vmla_ddd,\
1184                cortex_a15_neon_fp_vmla_qqq,\
1185                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
1186                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
1187
1188 (define_bypass 4 "cortex_a15_neon_int_2"
1189                "cortex_a15_neon_int_1,\
1190                cortex_a15_neon_int_4,\
1191                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1192                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
1193                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1194                cortex_a15_neon_mla_qqq_8_16,\
1195                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
1196                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
1197                cortex_a15_neon_fp_vmla_ddd,\
1198                cortex_a15_neon_fp_vmla_qqq,\
1199                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
1200                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
1201
1202 (define_bypass 4 "cortex_a15_neon_int_1"
1203                "cortex_a15_neon_int_1,\
1204                cortex_a15_neon_int_4,\
1205                cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1206                cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
1207                cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1208                cortex_a15_neon_mla_qqq_8_16,\
1209                cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
1210                cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
1211                cortex_a15_neon_fp_vmla_ddd,\
1212                cortex_a15_neon_fp_vmla_qqq,\
1213                cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
1214                cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
1215