]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/config/arm/cortex-a15-neon.md
[Patch ARM AARCH64] Split "type" attributes: fdiv
[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 "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 "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 "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 "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 "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 "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 "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 "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 "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 "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 "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 "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 "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 "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_lotype_qdd_64_32_long" 7
174 (and (eq_attr "tune" "cortexa15")
175 (eq_attr "type" "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long"))
176 "ca15_issue1,ca15_cx_imac")
177
178 (define_insn_reservation
179 "cortex_a15_neon_mla_qqq_32_qqd_32_scalar" 7
180 (and (eq_attr "tune" "cortexa15")
181 (eq_attr "type" "neon_mla_qqq_32_qqd_32_scalar"))
182 "ca15_issue1,ca15_cx_imac*2")
183
184 (define_insn_reservation
185 "cortex_a15_neon_mul_ddd_16_scalar_32_16_long_scalar" 6
186 (and (eq_attr "tune" "cortexa15")
187 (eq_attr "type" "neon_mul_ddd_16_scalar_32_16_long_scalar"))
188 "ca15_issue1,ca15_cx_imac")
189
190 (define_insn_reservation
191 "cortex_a15_neon_mul_qqd_32_scalar" 7
192 (and (eq_attr "tune" "cortexa15")
193 (eq_attr "type" "neon_mul_qqd_32_scalar"))
194 "ca15_issue1,ca15_cx_imac*2")
195
196 (define_insn_reservation
197 "cortex_a15_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar" 6
198 (and (eq_attr "tune" "cortexa15")
199 (eq_attr "type" "neon_mla_ddd_16_scalar_qdd_32_16_long_scalar"))
200 "ca15_issue1,ca15_cx_imac")
201
202 (define_insn_reservation
203 "cortex_a15_neon_shift_1" 5
204 (and (eq_attr "tune" "cortexa15")
205 (eq_attr "type" "neon_shift_1"))
206 "ca15_issue1,ca15_cx_ik+ca15_cx_ishf")
207
208 (define_insn_reservation
209 "cortex_a15_neon_shift_2" 5
210 (and (eq_attr "tune" "cortexa15")
211 (eq_attr "type" "neon_shift_2"))
212 "ca15_issue1,ca15_cx_ik+ca15_cx_ishf")
213
214 (define_insn_reservation
215 "cortex_a15_neon_shift_3" 6
216 (and (eq_attr "tune" "cortexa15")
217 (eq_attr "type" "neon_shift_3"))
218 "ca15_issue2,(ca15_cx_ik+ca15_cx_ishf)*2")
219
220 (define_insn_reservation
221 "cortex_a15_neon_vshl_ddd" 5
222 (and (eq_attr "tune" "cortexa15")
223 (eq_attr "type" "neon_vshl_ddd"))
224 "ca15_issue1,ca15_cx_ik+ca15_cx_ishf")
225
226 (define_insn_reservation
227 "cortex_a15_neon_vqshl_vrshl_vqrshl_qqq" 6
228 (and (eq_attr "tune" "cortexa15")
229 (eq_attr "type" "neon_vqshl_vrshl_vqrshl_qqq"))
230 "ca15_issue2,(ca15_cx_ik+ca15_cx_ishf)*2")
231
232 (define_insn_reservation
233 "cortex_a15_neon_vsra_vrsra" 7
234 (and (eq_attr "tune" "cortexa15")
235 (eq_attr "type" "neon_vsra_vrsra"))
236 "ca15_issue1,ca15_cx_ishf_with_acc")
237
238 (define_insn_reservation
239 "cortex_a15_neon_fp_vadd_ddd_vabs_dd" 6
240 (and (eq_attr "tune" "cortexa15")
241 (eq_attr "type" "neon_fp_vadd_ddd_vabs_dd"))
242 "ca15_issue1,ca15_cx_falu")
243
244 (define_insn_reservation
245 "cortex_a15_neon_fp_vadd_qqq_vabs_qq" 7
246 (and (eq_attr "tune" "cortexa15")
247 (eq_attr "type" "neon_fp_vadd_qqq_vabs_qq"))
248 "ca15_issue2,ca15_cx_falu_2")
249
250 (define_insn_reservation
251 "cortex_a15_neon_fp_vmul_ddd" 5
252 (and (eq_attr "tune" "cortexa15")
253 (eq_attr "type" "neon_fp_vmul_ddd"))
254 "ca15_issue1,ca15_cx_fmul")
255
256 (define_insn_reservation
257 "cortex_a15_neon_fp_vmul_qqd" 6
258 (and (eq_attr "tune" "cortexa15")
259 (eq_attr "type" "neon_fp_vmul_qqd"))
260 "ca15_issue2,ca15_cx_fmul_2")
261
262 (define_insn_reservation
263 "cortex_a15_neon_fp_vmla_ddd" 9
264 (and (eq_attr "tune" "cortexa15")
265 (eq_attr "type" "neon_fp_vmla_ddd"))
266 "ca15_issue1,ca15_cx_fmac")
267
268 (define_insn_reservation
269 "cortex_a15_neon_fp_vmla_qqq" 11
270 (and (eq_attr "tune" "cortexa15")
271 (eq_attr "type" "neon_fp_vmla_qqq"))
272 "ca15_issue2,ca15_cx_fmac_2")
273
274 (define_insn_reservation
275 "cortex_a15_neon_fp_vmla_ddd_scalar" 9
276 (and (eq_attr "tune" "cortexa15")
277 (eq_attr "type" "neon_fp_vmla_ddd_scalar"))
278 "ca15_issue1,ca15_cx_fmac")
279
280 (define_insn_reservation
281 "cortex_a15_neon_fp_vmla_qqq_scalar" 11
282 (and (eq_attr "tune" "cortexa15")
283 (eq_attr "type" "neon_fp_vmla_qqq_scalar"))
284 "ca15_issue2,ca15_cx_fmac_2")
285
286 (define_insn_reservation
287 "cortex_a15_neon_fp_vrecps_vrsqrts_ddd" 9
288 (and (eq_attr "tune" "cortexa15")
289 (eq_attr "type" "neon_fp_vrecps_vrsqrts_ddd"))
290 "ca15_issue1,ca15_cx_fmac")
291
292 (define_insn_reservation
293 "cortex_a15_neon_fp_vrecps_vrsqrts_qqq" 11
294 (and (eq_attr "tune" "cortexa15")
295 (eq_attr "type" "neon_fp_vrecps_vrsqrts_qqq"))
296 "ca15_issue2,ca15_cx_fmac_2")
297
298 (define_insn_reservation
299 "cortex_a15_neon_bp_simple" 4
300 (and (eq_attr "tune" "cortexa15")
301 (eq_attr "type" "neon_bp_simple"))
302 "ca15_issue3,ca15_ls+ca15_cx_perm_2,ca15_cx_perm")
303
304 (define_insn_reservation
305 "cortex_a15_neon_bp_2cycle" 4
306 (and (eq_attr "tune" "cortexa15")
307 (eq_attr "type" "neon_bp_2cycle"))
308 "ca15_issue1,ca15_cx_perm")
309
310 (define_insn_reservation
311 "cortex_a15_neon_bp_3cycle" 7
312 (and (eq_attr "tune" "cortexa15")
313 (eq_attr "type" "neon_bp_3cycle"))
314 "ca15_issue3,ca15_cx_ialu+ca15_cx_perm_2,ca15_cx_perm")
315
316 (define_insn_reservation
317 "cortex_a15_neon_vld1_1_2_regs" 7
318 (and (eq_attr "tune" "cortexa15")
319 (eq_attr "type" "neon_vld1_1_2_regs"))
320 "ca15_issue2,ca15_ls,ca15_ldr")
321
322 (define_insn_reservation
323 "cortex_a15_neon_vld1_3_4_regs" 8
324 (and (eq_attr "tune" "cortexa15")
325 (eq_attr "type" "neon_vld1_3_4_regs"))
326 "ca15_issue3,ca15_ls1+ca15_ls2,ca15_ldr,ca15_ldr")
327
328 (define_insn_reservation
329 "cortex_a15_neon_vld2_2_regs_vld1_vld2_all_lanes" 9
330 (and (eq_attr "tune" "cortexa15")
331 (eq_attr "type" "neon_vld2_2_regs_vld1_vld2_all_lanes"))
332 "ca15_issue3,ca15_ls,ca15_ldr")
333
334 (define_insn_reservation
335 "cortex_a15_neon_vld2_4_regs" 12
336 (and (eq_attr "tune" "cortexa15")
337 (eq_attr "type" "neon_vld2_4_regs"))
338 "ca15_issue3,ca15_issue3+ca15_ls1+ca15_ls2,ca15_ldr*2")
339
340 (define_insn_reservation
341 "cortex_a15_neon_vld3_vld4" 12
342 (and (eq_attr "tune" "cortexa15")
343 (eq_attr "type" "neon_vld3_vld4"))
344 "ca15_issue3,ca15_issue3+ca15_ls1+ca15_ls2,ca15_ldr*2")
345
346 (define_insn_reservation
347 "cortex_a15_neon_vst1_1_2_regs_vst2_2_regs" 0
348 (and (eq_attr "tune" "cortexa15")
349 (eq_attr "type" "neon_vst1_1_2_regs_vst2_2_regs"))
350 "ca15_issue3,ca15_issue3+ca15_cx_perm+ca15_ls1+ca15_ls2,ca15_str*2")
351
352 (define_insn_reservation
353 "cortex_a15_neon_vst1_3_4_regs" 0
354 (and (eq_attr "tune" "cortexa15")
355 (eq_attr "type" "neon_vst1_3_4_regs"))
356 "ca15_issue3,ca15_issue3+ca15_ls1+ca15_ls2,ca15_str*3")
357
358 (define_insn_reservation
359 "cortex_a15_neon_vst2_4_regs_vst3_vst4" 0
360 (and (eq_attr "tune" "cortexa15")
361 (eq_attr "type" "neon_vst2_4_regs_vst3_vst4"))
362 "ca15_issue3,ca15_issue3+ca15_cx_perm_2+ca15_ls1+ca15_ls2,\
363 ca15_issue3+ca15_str,ca15_str*3")
364
365 (define_insn_reservation
366 "cortex_a15_neon_vst3_vst4" 0
367 (and (eq_attr "tune" "cortexa15")
368 (eq_attr "type" "neon_vst3_vst4"))
369 "ca15_issue3,ca15_issue3+ca15_cx_perm_2+ca15_ls1+ca15_ls2,ca15_str*4")
370
371 (define_insn_reservation
372 "cortex_a15_neon_vld1_vld2_lane" 9
373 (and (eq_attr "tune" "cortexa15")
374 (eq_attr "type" "neon_vld1_vld2_lane"))
375 "ca15_issue3,ca15_ls,ca15_ldr")
376
377 (define_insn_reservation
378 "cortex_a15_neon_vld3_vld4_lane" 10
379 (and (eq_attr "tune" "cortexa15")
380 (eq_attr "type" "neon_vld3_vld4_lane"))
381 "ca15_issue3,ca15_issue3+ca15_ls,ca15_issue3+ca15_ldr")
382
383 (define_insn_reservation
384 "cortex_a15_neon_vst1_vst2_lane" 0
385 (and (eq_attr "tune" "cortexa15")
386 (eq_attr "type" "neon_vst1_vst2_lane"))
387 "ca15_issue3,ca15_cx_perm+ca15_ls,ca15_str")
388
389 (define_insn_reservation
390 "cortex_a15_neon_vst3_vst4_lane" 0
391 (and (eq_attr "tune" "cortexa15")
392 (eq_attr "type" "neon_vst3_vst4_lane"))
393 "ca15_issue3,ca15_issue3+ca15_cx_perm+ca15_ls1+ca15_ls2,ca15_str*2")
394
395 (define_insn_reservation
396 "cortex_a15_neon_vld3_vld4_all_lanes" 11
397 (and (eq_attr "tune" "cortexa15")
398 (eq_attr "type" "neon_vld3_vld4_all_lanes"))
399 "ca15_issue3,ca15_issue3+ca15_ls,ca15_ldr")
400
401 (define_insn_reservation
402 "cortex_a15_neon_ldm_2" 20
403 (and (eq_attr "tune" "cortexa15")
404 (eq_attr "type" "neon_ldm_2"))
405 "ca15_issue3*6")
406
407 (define_insn_reservation
408 "cortex_a15_neon_stm_2" 0
409 (and (eq_attr "tune" "cortexa15")
410 (eq_attr "type" "neon_stm_2"))
411 "ca15_issue3*6")
412
413 (define_insn_reservation
414 "cortex_a15_neon_mcr" 6
415 (and (eq_attr "tune" "cortexa15")
416 (eq_attr "type" "neon_mcr"))
417 "ca15_issue2,ca15_ls,ca15_cx_perm")
418
419 (define_insn_reservation
420 "cortex_a15_neon_mcr_2_mcrr" 6
421 (and (eq_attr "tune" "cortexa15")
422 (eq_attr "type" "neon_mcr_2_mcrr"))
423 "ca15_issue2,ca15_ls1+ca15_ls2")
424
425 (define_insn_reservation
426 "cortex_a15_neon_mrc" 5
427 (and (eq_attr "tune" "cortexa15")
428 (eq_attr "type" "neon_mrc"))
429 "ca15_issue1,ca15_ls")
430
431 (define_insn_reservation
432 "cortex_a15_neon_mrrc" 6
433 (and (eq_attr "tune" "cortexa15")
434 (eq_attr "type" "neon_mrrc"))
435 "ca15_issue2,ca15_ls1+ca15_ls2")
436
437 (define_insn_reservation "cortex_a15_vfp_const" 4
438 (and (eq_attr "tune" "cortexa15")
439 (eq_attr "type" "fconsts,fconstd"))
440 "ca15_issue1,ca15_cx_perm")
441
442 (define_insn_reservation "cortex_a15_vfp_adds_subs" 6
443 (and (eq_attr "tune" "cortexa15")
444 (eq_attr "type" "fadds"))
445 "ca15_issue1,ca15_cx_vfp")
446
447 (define_insn_reservation "cortex_a15_vfp_addd_subd" 10
448 (and (eq_attr "tune" "cortexa15")
449 (eq_attr "type" "faddd"))
450 "ca15_issue2,ca15_cx_vfp*2")
451
452 (define_insn_reservation "cortex_a15_vfp_muls" 7
453 (and (eq_attr "tune" "cortexa15")
454 (eq_attr "type" "fmuls"))
455 "ca15_issue1,ca15_cx_vfp")
456
457 (define_insn_reservation "cortex_a15_vfp_muld" 12
458 (and (eq_attr "tune" "cortexa15")
459 (eq_attr "type" "fmuld"))
460 "ca15_issue2,ca15_cx_vfp*2")
461
462 (define_insn_reservation "cortex_a15_vfp_macs" 6
463 (and (eq_attr "tune" "cortexa15")
464 (eq_attr "type" "fmacs,ffmas"))
465 "ca15_issue1,ca15_cx_vfp")
466
467 (define_insn_reservation "cortex_a15_vfp_macd" 11
468 (and (eq_attr "tune" "cortexa15")
469 (eq_attr "type" "fmacd,ffmad"))
470 "ca15_issue2,ca15_cx_vfp*2")
471
472 (define_insn_reservation "cortex_a15_vfp_cvt" 6
473 (and (eq_attr "tune" "cortexa15")
474 (eq_attr "type" "f_cvt,f_cvtf2i,f_cvti2f"))
475 "ca15_issue1,ca15_cx_vfp")
476
477 (define_insn_reservation "cortex_a15_vfp_cmpd" 8
478 (and (eq_attr "tune" "cortexa15")
479 (eq_attr "type" "fcmpd"))
480 "ca15_issue2,ca15_cx_perm,ca15_cx_vfp")
481
482 (define_insn_reservation "cortex_a15_vfp_cmps" 8
483 (and (eq_attr "tune" "cortexa15")
484 (eq_attr "type" "fcmps"))
485 "ca15_issue2,ca15_cx_perm,ca15_cx_vfp")
486
487 (define_insn_reservation "cortex_a15_vfp_arithd" 7
488 (and (eq_attr "tune" "cortexa15")
489 (eq_attr "type" "ffarithd"))
490 "ca15_issue2,ca15_cx_perm*2")
491
492 (define_insn_reservation "cortex_a15_vfp_cpys" 4
493 (and (eq_attr "tune" "cortexa15")
494 (eq_attr "type" "fcpys"))
495 "ca15_issue1,ca15_cx_perm")
496
497 (define_insn_reservation "cortex_a15_vfp_ariths" 7
498 (and (eq_attr "tune" "cortexa15")
499 (eq_attr "type" "ffariths"))
500 "ca15_issue1,ca15_cx_perm")
501
502 (define_insn_reservation "cortex_a15_vfp_divs" 10
503 (and (eq_attr "tune" "cortexa15")
504 (eq_attr "type" "fdivs, fsqrts"))
505 "ca15_issue1,ca15_cx_ik")
506
507 (define_insn_reservation "cortex_a15_vfp_divd" 18
508 (and (eq_attr "tune" "cortexa15")
509 (eq_attr "type" "fdivd, fsqrtd"))
510 "ca15_issue1,ca15_cx_ik")
511
512 ;; Define bypasses.
513 (define_bypass 5 "cortex_a15_neon_mcr_2_mcrr"
514 "cortex_a15_neon_int_1,\
515 cortex_a15_neon_int_4,\
516 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
517 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
518 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
519 cortex_a15_neon_mla_qqq_8_16,\
520 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
521 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
522 cortex_a15_neon_fp_vmla_ddd,\
523 cortex_a15_neon_fp_vmla_qqq,\
524 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
525 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
526
527 (define_bypass 5 "cortex_a15_neon_mcr"
528 "cortex_a15_neon_int_1,\
529 cortex_a15_neon_int_4,\
530 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
531 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
532 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
533 cortex_a15_neon_mla_qqq_8_16,\
534 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
535 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
536 cortex_a15_neon_fp_vmla_ddd,\
537 cortex_a15_neon_fp_vmla_qqq,\
538 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
539 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
540
541 (define_bypass 10 "cortex_a15_neon_vld3_vld4_all_lanes"
542 "cortex_a15_neon_int_1,\
543 cortex_a15_neon_int_4,\
544 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
545 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
546 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
547 cortex_a15_neon_mla_qqq_8_16,\
548 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
549 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
550 cortex_a15_neon_fp_vmla_ddd,\
551 cortex_a15_neon_fp_vmla_qqq,\
552 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
553 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
554
555 (define_bypass 9 "cortex_a15_neon_vld3_vld4_lane"
556 "cortex_a15_neon_int_1,\
557 cortex_a15_neon_int_4,\
558 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
559 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
560 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
561 cortex_a15_neon_mla_qqq_8_16,\
562 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
563 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
564 cortex_a15_neon_fp_vmla_ddd,\
565 cortex_a15_neon_fp_vmla_qqq,\
566 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
567 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
568
569 (define_bypass 8 "cortex_a15_neon_vld1_vld2_lane"
570 "cortex_a15_neon_int_1,\
571 cortex_a15_neon_int_4,\
572 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
573 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
574 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
575 cortex_a15_neon_mla_qqq_8_16,\
576 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
577 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
578 cortex_a15_neon_fp_vmla_ddd,\
579 cortex_a15_neon_fp_vmla_qqq,\
580 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
581 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
582
583 (define_bypass 11 "cortex_a15_neon_vld3_vld4"
584 "cortex_a15_neon_int_1,\
585 cortex_a15_neon_int_4,\
586 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
587 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
588 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
589 cortex_a15_neon_mla_qqq_8_16,\
590 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
591 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
592 cortex_a15_neon_fp_vmla_ddd,\
593 cortex_a15_neon_fp_vmla_qqq,\
594 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
595 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
596
597 (define_bypass 11 "cortex_a15_neon_vld2_4_regs"
598 "cortex_a15_neon_int_1,\
599 cortex_a15_neon_int_4,\
600 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
601 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
602 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
603 cortex_a15_neon_mla_qqq_8_16,\
604 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
605 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
606 cortex_a15_neon_fp_vmla_ddd,\
607 cortex_a15_neon_fp_vmla_qqq,\
608 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
609 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
610
611 (define_bypass 8 "cortex_a15_neon_vld2_2_regs_vld1_vld2_all_lanes"
612 "cortex_a15_neon_int_1,\
613 cortex_a15_neon_int_4,\
614 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
615 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
616 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
617 cortex_a15_neon_mla_qqq_8_16,\
618 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
619 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
620 cortex_a15_neon_fp_vmla_ddd,\
621 cortex_a15_neon_fp_vmla_qqq,\
622 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
623 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
624
625 (define_bypass 7 "cortex_a15_neon_vld1_3_4_regs"
626 "cortex_a15_neon_int_1,\
627 cortex_a15_neon_int_4,\
628 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
629 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
630 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
631 cortex_a15_neon_mla_qqq_8_16,\
632 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
633 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
634 cortex_a15_neon_fp_vmla_ddd,\
635 cortex_a15_neon_fp_vmla_qqq,\
636 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
637 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
638
639 (define_bypass 6 "cortex_a15_neon_vld1_1_2_regs"
640 "cortex_a15_neon_int_1,\
641 cortex_a15_neon_int_4,\
642 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
643 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
644 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
645 cortex_a15_neon_mla_qqq_8_16,\
646 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
647 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
648 cortex_a15_neon_fp_vmla_ddd,\
649 cortex_a15_neon_fp_vmla_qqq,\
650 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
651 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
652
653 (define_bypass 6 "cortex_a15_neon_bp_3cycle"
654 "cortex_a15_neon_int_1,\
655 cortex_a15_neon_int_4,\
656 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
657 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
658 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
659 cortex_a15_neon_mla_qqq_8_16,\
660 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
661 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
662 cortex_a15_neon_fp_vmla_ddd,\
663 cortex_a15_neon_fp_vmla_qqq,\
664 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
665 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
666
667 (define_bypass 3 "cortex_a15_neon_bp_2cycle"
668 "cortex_a15_neon_int_1,\
669 cortex_a15_neon_int_4,\
670 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
671 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
672 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
673 cortex_a15_neon_mla_qqq_8_16,\
674 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
675 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
676 cortex_a15_neon_fp_vmla_ddd,\
677 cortex_a15_neon_fp_vmla_qqq,\
678 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
679 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
680
681 (define_bypass 3 "cortex_a15_neon_bp_simple"
682 "cortex_a15_neon_int_1,\
683 cortex_a15_neon_int_4,\
684 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
685 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
686 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
687 cortex_a15_neon_mla_qqq_8_16,\
688 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
689 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
690 cortex_a15_neon_fp_vmla_ddd,\
691 cortex_a15_neon_fp_vmla_qqq,\
692 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
693 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
694
695 (define_bypass 10 "cortex_a15_neon_fp_vrecps_vrsqrts_qqq"
696 "cortex_a15_neon_int_1,\
697 cortex_a15_neon_int_4,\
698 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
699 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
700 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
701 cortex_a15_neon_mla_qqq_8_16,\
702 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
703 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
704 cortex_a15_neon_fp_vmla_ddd,\
705 cortex_a15_neon_fp_vmla_qqq,\
706 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
707 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
708
709 (define_bypass 8 "cortex_a15_neon_fp_vrecps_vrsqrts_ddd"
710 "cortex_a15_neon_int_1,\
711 cortex_a15_neon_int_4,\
712 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
713 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
714 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
715 cortex_a15_neon_mla_qqq_8_16,\
716 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
717 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
718 cortex_a15_neon_fp_vmla_ddd,\
719 cortex_a15_neon_fp_vmla_qqq,\
720 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
721 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
722
723 (define_bypass 10 "cortex_a15_neon_fp_vmla_qqq_scalar"
724 "cortex_a15_neon_int_1,\
725 cortex_a15_neon_int_4,\
726 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
727 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
728 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
729 cortex_a15_neon_mla_qqq_8_16,\
730 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
731 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
732 cortex_a15_neon_fp_vmla_ddd,\
733 cortex_a15_neon_fp_vmla_qqq,\
734 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
735 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
736
737 (define_bypass 8 "cortex_a15_neon_fp_vmla_ddd_scalar"
738 "cortex_a15_neon_int_1,\
739 cortex_a15_neon_int_4,\
740 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
741 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
742 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
743 cortex_a15_neon_mla_qqq_8_16,\
744 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
745 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
746 cortex_a15_neon_fp_vmla_ddd,\
747 cortex_a15_neon_fp_vmla_qqq,\
748 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
749 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
750
751 (define_bypass 10 "cortex_a15_neon_fp_vmla_qqq"
752 "cortex_a15_neon_int_1,\
753 cortex_a15_neon_int_4,\
754 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
755 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
756 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
757 cortex_a15_neon_mla_qqq_8_16,\
758 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
759 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
760 cortex_a15_neon_fp_vmla_ddd,\
761 cortex_a15_neon_fp_vmla_qqq,\
762 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
763 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
764
765 (define_bypass 8 "cortex_a15_neon_fp_vmla_ddd"
766 "cortex_a15_neon_int_1,\
767 cortex_a15_neon_int_4,\
768 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
769 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
770 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
771 cortex_a15_neon_mla_qqq_8_16,\
772 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
773 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
774 cortex_a15_neon_fp_vmla_ddd,\
775 cortex_a15_neon_fp_vmla_qqq,\
776 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
777 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
778
779 (define_bypass 5 "cortex_a15_neon_fp_vmul_qqd"
780 "cortex_a15_neon_int_1,\
781 cortex_a15_neon_int_4,\
782 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
783 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
784 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
785 cortex_a15_neon_mla_qqq_8_16,\
786 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
787 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
788 cortex_a15_neon_fp_vmla_ddd,\
789 cortex_a15_neon_fp_vmla_qqq,\
790 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
791 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
792
793 (define_bypass 4 "cortex_a15_neon_fp_vmul_ddd"
794 "cortex_a15_neon_int_1,\
795 cortex_a15_neon_int_4,\
796 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
797 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
798 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
799 cortex_a15_neon_mla_qqq_8_16,\
800 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
801 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
802 cortex_a15_neon_fp_vmla_ddd,\
803 cortex_a15_neon_fp_vmla_qqq,\
804 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
805 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
806
807 (define_bypass 6 "cortex_a15_neon_fp_vadd_qqq_vabs_qq"
808 "cortex_a15_neon_int_1,\
809 cortex_a15_neon_int_4,\
810 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
811 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
812 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
813 cortex_a15_neon_mla_qqq_8_16,\
814 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
815 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
816 cortex_a15_neon_fp_vmla_ddd,\
817 cortex_a15_neon_fp_vmla_qqq,\
818 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
819 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
820
821 (define_bypass 5 "cortex_a15_neon_fp_vadd_ddd_vabs_dd"
822 "cortex_a15_neon_int_1,\
823 cortex_a15_neon_int_4,\
824 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
825 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
826 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
827 cortex_a15_neon_mla_qqq_8_16,\
828 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
829 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
830 cortex_a15_neon_fp_vmla_ddd,\
831 cortex_a15_neon_fp_vmla_qqq,\
832 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
833 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
834
835 (define_bypass 6 "cortex_a15_neon_vsra_vrsra"
836 "cortex_a15_neon_int_1,\
837 cortex_a15_neon_int_4,\
838 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
839 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
840 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
841 cortex_a15_neon_mla_qqq_8_16,\
842 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
843 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
844 cortex_a15_neon_fp_vmla_ddd,\
845 cortex_a15_neon_fp_vmla_qqq,\
846 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
847 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
848
849 (define_bypass 5 "cortex_a15_neon_vqshl_vrshl_vqrshl_qqq"
850 "cortex_a15_neon_int_1,\
851 cortex_a15_neon_int_4,\
852 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
853 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
854 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
855 cortex_a15_neon_mla_qqq_8_16,\
856 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
857 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
858 cortex_a15_neon_fp_vmla_ddd,\
859 cortex_a15_neon_fp_vmla_qqq,\
860 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
861 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
862
863 (define_bypass 4 "cortex_a15_neon_vshl_ddd"
864 "cortex_a15_neon_int_1,\
865 cortex_a15_neon_int_4,\
866 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
867 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
868 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
869 cortex_a15_neon_mla_qqq_8_16,\
870 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
871 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
872 cortex_a15_neon_fp_vmla_ddd,\
873 cortex_a15_neon_fp_vmla_qqq,\
874 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
875 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
876
877 (define_bypass 5 "cortex_a15_neon_shift_3"
878 "cortex_a15_neon_int_1,\
879 cortex_a15_neon_int_4,\
880 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
881 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
882 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
883 cortex_a15_neon_mla_qqq_8_16,\
884 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
885 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
886 cortex_a15_neon_fp_vmla_ddd,\
887 cortex_a15_neon_fp_vmla_qqq,\
888 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
889 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
890
891 (define_bypass 4 "cortex_a15_neon_shift_2"
892 "cortex_a15_neon_int_1,\
893 cortex_a15_neon_int_4,\
894 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
895 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
896 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
897 cortex_a15_neon_mla_qqq_8_16,\
898 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
899 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
900 cortex_a15_neon_fp_vmla_ddd,\
901 cortex_a15_neon_fp_vmla_qqq,\
902 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
903 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
904
905 (define_bypass 4 "cortex_a15_neon_shift_1"
906 "cortex_a15_neon_int_1,\
907 cortex_a15_neon_int_4,\
908 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
909 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
910 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
911 cortex_a15_neon_mla_qqq_8_16,\
912 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
913 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
914 cortex_a15_neon_fp_vmla_ddd,\
915 cortex_a15_neon_fp_vmla_qqq,\
916 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
917 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
918
919 (define_bypass 5 "cortex_a15_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar"
920 "cortex_a15_neon_int_1,\
921 cortex_a15_neon_int_4,\
922 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
923 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
924 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
925 cortex_a15_neon_mla_qqq_8_16,\
926 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
927 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
928 cortex_a15_neon_fp_vmla_ddd,\
929 cortex_a15_neon_fp_vmla_qqq,\
930 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
931 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
932
933 (define_bypass 6 "cortex_a15_neon_mul_qqd_32_scalar"
934 "cortex_a15_neon_int_1,\
935 cortex_a15_neon_int_4,\
936 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
937 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
938 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
939 cortex_a15_neon_mla_qqq_8_16,\
940 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
941 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
942 cortex_a15_neon_fp_vmla_ddd,\
943 cortex_a15_neon_fp_vmla_qqq,\
944 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
945 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
946
947 (define_bypass 5 "cortex_a15_neon_mul_ddd_16_scalar_32_16_long_scalar"
948 "cortex_a15_neon_int_1,\
949 cortex_a15_neon_int_4,\
950 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
951 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
952 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
953 cortex_a15_neon_mla_qqq_8_16,\
954 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
955 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
956 cortex_a15_neon_fp_vmla_ddd,\
957 cortex_a15_neon_fp_vmla_qqq,\
958 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
959 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
960
961 (define_bypass 6 "cortex_a15_neon_mla_qqq_32_qqd_32_scalar"
962 "cortex_a15_neon_int_1,\
963 cortex_a15_neon_int_4,\
964 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
965 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
966 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
967 cortex_a15_neon_mla_qqq_8_16,\
968 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
969 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
970 cortex_a15_neon_fp_vmla_ddd,\
971 cortex_a15_neon_fp_vmla_qqq,\
972 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
973 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
974
975 (define_bypass 6 "cortex_a15_neon_mla_qqq_8_16"
976 "cortex_a15_neon_int_1,\
977 cortex_a15_neon_int_4,\
978 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
979 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
980 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
981 cortex_a15_neon_mla_qqq_8_16,\
982 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
983 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
984 cortex_a15_neon_fp_vmla_ddd,\
985 cortex_a15_neon_fp_vmla_qqq,\
986 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
987 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
988
989 (define_bypass 5 "cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long"
990 "cortex_a15_neon_int_1,\
991 cortex_a15_neon_int_4,\
992 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
993 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
994 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
995 cortex_a15_neon_mla_qqq_8_16,\
996 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
997 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
998 cortex_a15_neon_fp_vmla_ddd,\
999 cortex_a15_neon_fp_vmla_qqq,\
1000 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
1001 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
1002
1003 (define_bypass 6
1004 "cortex_a15_neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar"
1005 "cortex_a15_neon_int_1,\
1006 cortex_a15_neon_int_4,\
1007 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1008 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
1009 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1010 cortex_a15_neon_mla_qqq_8_16,\
1011 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
1012 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
1013 cortex_a15_neon_fp_vmla_ddd,\
1014 cortex_a15_neon_fp_vmla_qqq,\
1015 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
1016 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
1017
1018 (define_bypass 6 "cortex_a15_neon_mul_qqq_8_16_32_ddd_32"
1019 "cortex_a15_neon_int_1,\
1020 cortex_a15_neon_int_4,\
1021 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1022 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
1023 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1024 cortex_a15_neon_mla_qqq_8_16,\
1025 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
1026 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
1027 cortex_a15_neon_fp_vmla_ddd,\
1028 cortex_a15_neon_fp_vmla_qqq,\
1029 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
1030 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
1031
1032 (define_bypass 5 "cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long"
1033 "cortex_a15_neon_int_1,\
1034 cortex_a15_neon_int_4,\
1035 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1036 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
1037 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1038 cortex_a15_neon_mla_qqq_8_16,\
1039 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
1040 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
1041 cortex_a15_neon_fp_vmla_ddd,\
1042 cortex_a15_neon_fp_vmla_qqq,\
1043 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
1044 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
1045
1046 (define_bypass 7 "cortex_a15_neon_vaba_qqq"
1047 "cortex_a15_neon_int_1,\
1048 cortex_a15_neon_int_4,\
1049 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1050 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
1051 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1052 cortex_a15_neon_mla_qqq_8_16,\
1053 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
1054 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
1055 cortex_a15_neon_fp_vmla_ddd,\
1056 cortex_a15_neon_fp_vmla_qqq,\
1057 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
1058 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
1059
1060 (define_bypass 6 "cortex_a15_neon_vaba"
1061 "cortex_a15_neon_int_1,\
1062 cortex_a15_neon_int_4,\
1063 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1064 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
1065 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1066 cortex_a15_neon_mla_qqq_8_16,\
1067 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
1068 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
1069 cortex_a15_neon_fp_vmla_ddd,\
1070 cortex_a15_neon_fp_vmla_qqq,\
1071 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
1072 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
1073
1074 (define_bypass 4 "cortex_a15_neon_vmov"
1075 "cortex_a15_neon_int_1,\
1076 cortex_a15_neon_int_4,\
1077 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1078 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
1079 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1080 cortex_a15_neon_mla_qqq_8_16,\
1081 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
1082 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
1083 cortex_a15_neon_fp_vmla_ddd,\
1084 cortex_a15_neon_fp_vmla_qqq,\
1085 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
1086 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
1087
1088 (define_bypass 4 "cortex_a15_neon_vqneg_vqabs"
1089 "cortex_a15_neon_int_1,\
1090 cortex_a15_neon_int_4,\
1091 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1092 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
1093 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1094 cortex_a15_neon_mla_qqq_8_16,\
1095 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
1096 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
1097 cortex_a15_neon_fp_vmla_ddd,\
1098 cortex_a15_neon_fp_vmla_qqq,\
1099 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
1100 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
1101
1102 (define_bypass 4 "cortex_a15_neon_int_5"
1103 "cortex_a15_neon_int_1,\
1104 cortex_a15_neon_int_4,\
1105 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1106 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
1107 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1108 cortex_a15_neon_mla_qqq_8_16,\
1109 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
1110 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
1111 cortex_a15_neon_fp_vmla_ddd,\
1112 cortex_a15_neon_fp_vmla_qqq,\
1113 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
1114 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
1115
1116 (define_bypass 4 "cortex_a15_neon_int_4"
1117 "cortex_a15_neon_int_1,\
1118 cortex_a15_neon_int_4,\
1119 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1120 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
1121 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1122 cortex_a15_neon_mla_qqq_8_16,\
1123 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
1124 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
1125 cortex_a15_neon_fp_vmla_ddd,\
1126 cortex_a15_neon_fp_vmla_qqq,\
1127 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
1128 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
1129
1130 (define_bypass 4 "cortex_a15_neon_int_3"
1131 "cortex_a15_neon_int_1,\
1132 cortex_a15_neon_int_4,\
1133 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1134 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
1135 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1136 cortex_a15_neon_mla_qqq_8_16,\
1137 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
1138 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
1139 cortex_a15_neon_fp_vmla_ddd,\
1140 cortex_a15_neon_fp_vmla_qqq,\
1141 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
1142 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
1143
1144 (define_bypass 4 "cortex_a15_neon_int_2"
1145 "cortex_a15_neon_int_1,\
1146 cortex_a15_neon_int_4,\
1147 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1148 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
1149 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1150 cortex_a15_neon_mla_qqq_8_16,\
1151 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
1152 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
1153 cortex_a15_neon_fp_vmla_ddd,\
1154 cortex_a15_neon_fp_vmla_qqq,\
1155 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
1156 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
1157
1158 (define_bypass 4 "cortex_a15_neon_int_1"
1159 "cortex_a15_neon_int_1,\
1160 cortex_a15_neon_int_4,\
1161 cortex_a15_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1162 cortex_a15_neon_mul_qqq_8_16_32_ddd_32,\
1163 cortex_a15_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1164 cortex_a15_neon_mla_qqq_8_16,\
1165 cortex_a15_neon_fp_vadd_ddd_vabs_dd,\
1166 cortex_a15_neon_fp_vadd_qqq_vabs_qq,\
1167 cortex_a15_neon_fp_vmla_ddd,\
1168 cortex_a15_neon_fp_vmla_qqq,\
1169 cortex_a15_neon_fp_vrecps_vrsqrts_ddd,\
1170 cortex_a15_neon_fp_vrecps_vrsqrts_qqq")
1171