]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/arm/cortex-a15-neon.md
[Patch AArch64] Fix types for some multiply instructions.
[thirdparty/gcc.git] / gcc / config / arm / cortex-a15-neon.md
CommitLineData
855828f1 1;; ARM Cortex-A15 NEON pipeline description
d1e082c2 2;; Copyright (C) 2012-2013 Free Software Foundation, Inc.
855828f1
MGD
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")
003bb7f3 96 (eq_attr "type" "neon_int_1"))
855828f1
MGD
97 "ca15_issue1,ca15_cx_ialu")
98
99(define_insn_reservation "cortex_a15_neon_int_2" 5
100 (and (eq_attr "tune" "cortexa15")
003bb7f3 101 (eq_attr "type" "neon_int_2"))
855828f1
MGD
102 "ca15_issue1,ca15_cx_ialu")
103
104(define_insn_reservation "cortex_a15_neon_int_3" 5
105 (and (eq_attr "tune" "cortexa15")
003bb7f3 106 (eq_attr "type" "neon_int_3"))
855828f1
MGD
107 "ca15_issue1,ca15_cx_ialu")
108
109(define_insn_reservation "cortex_a15_neon_int_4" 5
110 (and (eq_attr "tune" "cortexa15")
003bb7f3 111 (eq_attr "type" "neon_int_4"))
855828f1
MGD
112 "ca15_issue1,ca15_cx_ialu")
113
114(define_insn_reservation "cortex_a15_neon_int_5" 5
115 (and (eq_attr "tune" "cortexa15")
003bb7f3 116 (eq_attr "type" "neon_int_5"))
855828f1
MGD
117 "ca15_issue1,ca15_cx_ialu")
118
119(define_insn_reservation "cortex_a15_neon_vqneg_vqabs" 5
120 (and (eq_attr "tune" "cortexa15")
003bb7f3 121 (eq_attr "type" "neon_vqneg_vqabs"))
855828f1
MGD
122 "ca15_issue1,ca15_cx_ialu")
123
124(define_insn_reservation "cortex_a15_neon_vmov" 5
125 (and (eq_attr "tune" "cortexa15")
003bb7f3 126 (eq_attr "type" "neon_vmov"))
855828f1
MGD
127 "ca15_issue1,ca15_cx_ialu")
128
129(define_insn_reservation "cortex_a15_neon_vaba" 7
130 (and (eq_attr "tune" "cortexa15")
003bb7f3 131 (eq_attr "type" "neon_vaba"))
855828f1
MGD
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")
003bb7f3 136 (eq_attr "type" "neon_vaba_qqq"))
855828f1
MGD
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")
003bb7f3 142 (eq_attr "type" "neon_mul_ddd_8_16_qdd_16_8_long_32_16_long"))
855828f1
MGD
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")
003bb7f3 147 (eq_attr "type" "neon_mul_qqq_8_16_32_ddd_32"))
855828f1
MGD
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")
003bb7f3 153 (eq_attr "type"
855828f1
MGD
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")
003bb7f3 160 (eq_attr "type"
855828f1
MGD
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")
003bb7f3 167 (eq_attr "type"
855828f1
MGD
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_\
003bb7f3 173 qdd_64_32_lotype_qdd_64_32_long" 7
855828f1 174 (and (eq_attr "tune" "cortexa15")
003bb7f3 175 (eq_attr "type" "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long"))
855828f1
MGD
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")
003bb7f3 181 (eq_attr "type" "neon_mla_qqq_32_qqd_32_scalar"))
855828f1
MGD
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")
003bb7f3 187 (eq_attr "type" "neon_mul_ddd_16_scalar_32_16_long_scalar"))
855828f1
MGD
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")
003bb7f3 193 (eq_attr "type" "neon_mul_qqd_32_scalar"))
855828f1
MGD
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")
003bb7f3 199 (eq_attr "type" "neon_mla_ddd_16_scalar_qdd_32_16_long_scalar"))
855828f1
MGD
200 "ca15_issue1,ca15_cx_imac")
201
202(define_insn_reservation
203 "cortex_a15_neon_shift_1" 5
204 (and (eq_attr "tune" "cortexa15")
003bb7f3 205 (eq_attr "type" "neon_shift_1"))
855828f1
MGD
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")
003bb7f3 211 (eq_attr "type" "neon_shift_2"))
855828f1
MGD
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")
003bb7f3 217 (eq_attr "type" "neon_shift_3"))
855828f1
MGD
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")
003bb7f3 223 (eq_attr "type" "neon_vshl_ddd"))
855828f1
MGD
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")
003bb7f3 229 (eq_attr "type" "neon_vqshl_vrshl_vqrshl_qqq"))
855828f1
MGD
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")
003bb7f3 235 (eq_attr "type" "neon_vsra_vrsra"))
855828f1
MGD
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")
003bb7f3 241 (eq_attr "type" "neon_fp_vadd_ddd_vabs_dd"))
855828f1
MGD
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")
003bb7f3 247 (eq_attr "type" "neon_fp_vadd_qqq_vabs_qq"))
855828f1
MGD
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")
003bb7f3 253 (eq_attr "type" "neon_fp_vmul_ddd"))
855828f1
MGD
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")
003bb7f3 259 (eq_attr "type" "neon_fp_vmul_qqd"))
855828f1
MGD
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")
003bb7f3 265 (eq_attr "type" "neon_fp_vmla_ddd"))
855828f1
MGD
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")
003bb7f3 271 (eq_attr "type" "neon_fp_vmla_qqq"))
855828f1
MGD
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")
003bb7f3 277 (eq_attr "type" "neon_fp_vmla_ddd_scalar"))
855828f1
MGD
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")
003bb7f3 283 (eq_attr "type" "neon_fp_vmla_qqq_scalar"))
855828f1
MGD
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")
003bb7f3 289 (eq_attr "type" "neon_fp_vrecps_vrsqrts_ddd"))
855828f1
MGD
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")
003bb7f3 295 (eq_attr "type" "neon_fp_vrecps_vrsqrts_qqq"))
855828f1
MGD
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")
003bb7f3 301 (eq_attr "type" "neon_bp_simple"))
855828f1
MGD
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")
003bb7f3 307 (eq_attr "type" "neon_bp_2cycle"))
855828f1
MGD
308 "ca15_issue1,ca15_cx_perm")
309
310(define_insn_reservation
311 "cortex_a15_neon_bp_3cycle" 7
312 (and (eq_attr "tune" "cortexa15")
003bb7f3 313 (eq_attr "type" "neon_bp_3cycle"))
855828f1
MGD
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")
003bb7f3 319 (eq_attr "type" "neon_vld1_1_2_regs"))
855828f1
MGD
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")
003bb7f3 325 (eq_attr "type" "neon_vld1_3_4_regs"))
855828f1
MGD
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")
003bb7f3 331 (eq_attr "type" "neon_vld2_2_regs_vld1_vld2_all_lanes"))
855828f1
MGD
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")
003bb7f3 337 (eq_attr "type" "neon_vld2_4_regs"))
855828f1
MGD
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")
003bb7f3 343 (eq_attr "type" "neon_vld3_vld4"))
855828f1
MGD
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")
003bb7f3 349 (eq_attr "type" "neon_vst1_1_2_regs_vst2_2_regs"))
855828f1
MGD
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")
003bb7f3 355 (eq_attr "type" "neon_vst1_3_4_regs"))
855828f1
MGD
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")
003bb7f3 361 (eq_attr "type" "neon_vst2_4_regs_vst3_vst4"))
855828f1
MGD
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")
003bb7f3 368 (eq_attr "type" "neon_vst3_vst4"))
855828f1
MGD
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")
003bb7f3 374 (eq_attr "type" "neon_vld1_vld2_lane"))
855828f1
MGD
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")
003bb7f3 380 (eq_attr "type" "neon_vld3_vld4_lane"))
855828f1
MGD
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")
003bb7f3 386 (eq_attr "type" "neon_vst1_vst2_lane"))
855828f1
MGD
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")
003bb7f3 392 (eq_attr "type" "neon_vst3_vst4_lane"))
855828f1
MGD
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")
003bb7f3 398 (eq_attr "type" "neon_vld3_vld4_all_lanes"))
855828f1
MGD
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")
003bb7f3 404 (eq_attr "type" "neon_ldm_2"))
855828f1
MGD
405 "ca15_issue3*6")
406
407(define_insn_reservation
408 "cortex_a15_neon_stm_2" 0
409 (and (eq_attr "tune" "cortexa15")
003bb7f3 410 (eq_attr "type" "neon_stm_2"))
855828f1
MGD
411 "ca15_issue3*6")
412
413(define_insn_reservation
414 "cortex_a15_neon_mcr" 6
415 (and (eq_attr "tune" "cortexa15")
003bb7f3 416 (eq_attr "type" "neon_mcr"))
855828f1
MGD
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")
003bb7f3 422 (eq_attr "type" "neon_mcr_2_mcrr"))
855828f1
MGD
423 "ca15_issue2,ca15_ls1+ca15_ls2")
424
425(define_insn_reservation
426 "cortex_a15_neon_mrc" 5
427 (and (eq_attr "tune" "cortexa15")
003bb7f3 428 (eq_attr "type" "neon_mrc"))
855828f1
MGD
429 "ca15_issue1,ca15_ls")
430
431(define_insn_reservation
432 "cortex_a15_neon_mrrc" 6
433 (and (eq_attr "tune" "cortexa15")
003bb7f3 434 (eq_attr "type" "neon_mrrc"))
855828f1
MGD
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")
29637783 464 (eq_attr "type" "fmacs,ffmas"))
855828f1
MGD
465 "ca15_issue1,ca15_cx_vfp")
466
467(define_insn_reservation "cortex_a15_vfp_macd" 11
468 (and (eq_attr "tune" "cortexa15")
29637783 469 (eq_attr "type" "fmacd,ffmad"))
855828f1
MGD
470 "ca15_issue2,ca15_cx_vfp*2")
471
472(define_insn_reservation "cortex_a15_vfp_cvt" 6
473 (and (eq_attr "tune" "cortexa15")
7b49c9e1 474 (eq_attr "type" "f_cvt,f_cvtf2i,f_cvti2f"))
855828f1
MGD
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")
b86923f0 504 (eq_attr "type" "fdivs, fsqrts"))
855828f1
MGD
505 "ca15_issue1,ca15_cx_ik")
506
507(define_insn_reservation "cortex_a15_vfp_divd" 18
508 (and (eq_attr "tune" "cortexa15")
b86923f0 509 (eq_attr "type" "fdivd, fsqrtd"))
855828f1
MGD
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