]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/config/arm/cortex-a15-neon.md
Update copyright years in gcc/
[thirdparty/gcc.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"))
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"))
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