* gimplify.c (nonlocal_vlas): Delete.
[official-gcc.git] / gcc / config / arm / cortex-a8-neon.md
blob500efd3ad729b4cc393d5bd4a8f779f97fa0b596
1 ;; ARM Cortex-A8 NEON scheduling description.
2 ;; Copyright (C) 2007-2018 Free Software Foundation, Inc.
3 ;; Contributed by CodeSourcery.
5 ;; This file is part of GCC.
7 ;; GCC is free software; you can redistribute it and/or modify it
8 ;; under the terms of the GNU General Public License as published
9 ;; by the Free Software Foundation; either version 3, or (at your
10 ;; option) any later version.
12 ;; GCC is distributed in the hope that it will be useful, but WITHOUT
13 ;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 ;; or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
15 ;; License for more details.
17 ;; You should have received a copy of the GNU General Public License
18 ;; along with GCC; see the file COPYING3.  If not see
19 ;; <http://www.gnu.org/licenses/>.
21 (define_attr "cortex_a8_neon_type"
22    "neon_int_1,neon_int_2,neon_int_3,neon_int_4,neon_int_5,neon_vqneg_vqabs,
23    neon_bit_ops_q,
24    neon_vaba,neon_vaba_qqq, neon_vmov,
25    neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,neon_mul_qqq_8_16_32_ddd_32,
26    neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar,
27    neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,neon_mla_qqq_8_16,
28    neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long,
29    neon_mla_qqq_32_qqd_32_scalar,neon_mul_ddd_16_scalar_32_16_long_scalar,
30    neon_mul_qqd_32_scalar,neon_mla_ddd_16_scalar_qdd_32_16_long_scalar,
31    neon_shift_1,neon_shift_2,neon_shift_3,
32    neon_vqshl_vrshl_vqrshl_qqq,neon_vsra_vrsra,neon_fp_vadd_ddd_vabs_dd,
33    neon_fp_vadd_qqq_vabs_qq,neon_fp_vsum,neon_fp_vmul_ddd,neon_fp_vmul_qqd,
34    neon_fp_vmla_ddd,neon_fp_vmla_qqq,neon_fp_vmla_ddd_scalar,
35    neon_fp_vmla_qqq_scalar,neon_fp_vrecps_vrsqrts_ddd,
36    neon_fp_vrecps_vrsqrts_qqq,neon_bp_simple,neon_bp_2cycle,neon_bp_3cycle,
37    neon_ldr,neon_str,neon_vld1_1_2_regs,neon_vld1_3_4_regs,
38    neon_vld2_2_regs_vld1_vld2_all_lanes,neon_vld2_4_regs,neon_vld3_vld4,
39    neon_vst1_1_2_regs_vst2_2_regs,neon_vst1_3_4_regs,
40    neon_vst2_4_regs_vst3_vst4,neon_vld1_vld2_lane,
41    neon_vld3_vld4_lane,neon_vst1_vst2_lane,neon_vst3_vst4_lane,
42    neon_vld3_vld4_all_lanes,neon_mcr,neon_mcr_2_mcrr,neon_mrc,neon_mrrc,
43    neon_ldm_2,neon_stm_2,none,unknown"
44   (cond [
45           (eq_attr "type" "neon_logic, neon_logic_q,\
46                            neon_bsl, neon_cls, neon_cnt,\
47                            neon_add, neon_add_q")
48                           (const_string "neon_int_1")
49           (eq_attr "type" "neon_add_widen, neon_sub_widen,\
50                            neon_sub, neon_sub_q")
51                           (const_string "neon_int_2")
52           (eq_attr "type" "neon_neg, neon_neg_q,\
53                            neon_reduc_add, neon_reduc_add_q,\
54                            neon_reduc_add_long,\
55                            neon_add_long, neon_sub_long")
56                           (const_string "neon_int_3")
57           (eq_attr "type" "neon_abs, neon_abs_q,
58                            neon_compare_zero, neon_compare_zero_q,\
59                            neon_add_halve_narrow_q,\
60                            neon_sub_halve_narrow_q,\
61                            neon_add_halve, neon_add_halve_q,\
62                            neon_qadd, neon_qadd_q,\
63                            neon_tst, neon_tst_q")
64                           (const_string "neon_int_4")
65           (eq_attr "type" "neon_abd_long, neon_sub_halve, neon_sub_halve_q,\
66                            neon_qsub, neon_qsub_q,\
67                            neon_abd, neon_abd_q,\
68                            neon_compare, neon_compare_q,\
69                            neon_minmax, neon_minmax_q, neon_reduc_minmax,\
70                            neon_reduc_minmax_q")
71                           (const_string "neon_int_5")
72           (eq_attr "type" "neon_qneg, neon_qneg_q, neon_qabs, neon_qabs_q")
73                            (const_string "neon_vqneg_vqabs")
74           (eq_attr "type" "neon_move, neon_move_q")
75                            (const_string "neon_vmov")
76           (eq_attr "type" "neon_bsl_q, neon_cls_q, neon_cnt_q")
77                            (const_string "neon_bit_ops_q")
78           (eq_attr "type" "neon_arith_acc, neon_reduc_add_acc")
79                           (const_string "neon_vaba")
80           (eq_attr "type" "neon_arith_acc_q")
81                           (const_string "neon_vaba_qqq")
82           (eq_attr "type" "neon_shift_imm, neon_shift_imm_q,\
83                            neon_shift_imm_long, neon_shift_imm_narrow_q,\
84                            neon_shift_reg")
85                            (const_string "neon_shift_1")
86           (eq_attr "type" "neon_sat_shift_imm, neon_sat_shift_imm_q,
87                            neon_sat_shift_imm_narrow_q,\
88                            neon_sat_shift_reg")
89                            (const_string "neon_shift_2")
90           (eq_attr "type" "neon_shift_reg_q")
91                            (const_string "neon_shift_3")
92           (eq_attr "type" "neon_sat_shift_reg_q")
93                            (const_string "neon_vqshl_vrshl_vqrshl_qqq")
94           (eq_attr "type" "neon_shift_acc, neon_shift_acc_q")
95                            (const_string "neon_vsra_vrsra")
96           (eq_attr "type" "neon_mul_b, neon_mul_h,\
97                            neon_mul_b_long, neon_mul_h_long,\
98                            neon_sat_mul_b, neon_sat_mul_h,\
99                            neon_sat_mul_b_long, neon_sat_mul_h_long")
100                            (const_string
101                             "neon_mul_ddd_8_16_qdd_16_8_long_32_16_long")
102           (eq_attr "type" "neon_mul_b_q, neon_mul_h_q,\
103                            neon_sat_mul_b_q, neon_sat_mul_h_q")
104                            (const_string "neon_mul_qqq_8_16_32_ddd_32")
105           (eq_attr "type" "neon_mul_s, neon_mul_s_long,\
106                            neon_sat_mul_s, neon_sat_mul_s_long,\
107                            neon_mul_h_scalar_q, neon_sat_mul_h_scalar_q,\
108                            neon_mul_s_scalar, neon_sat_mul_s_scalar,\
109                            neon_mul_s_scalar_long,\
110                            neon_sat_mul_s_scalar_long")
111                            (const_string
112              "neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar")
113           (eq_attr "type" "neon_mla_b, neon_mla_h,\
114                            neon_mla_b_long, neon_mla_h_long,\
115                            neon_sat_mla_b_long, neon_sat_mla_h_long,\
116                            neon_sat_mla_h_scalar_long")
117                            (const_string
118                              "neon_mla_ddd_8_16_qdd_16_8_long_32_16_long")
119           (eq_attr "type" "neon_mla_b_q, neon_mla_h_q")
120                            (const_string "neon_mla_qqq_8_16")
121           (eq_attr "type" "neon_mla_s, neon_mla_s_long,\
122                            neon_sat_mla_s_long,\
123                            neon_mla_h_scalar_q, neon_mla_s_scalar,\
124                            neon_mla_s_scalar_long,\
125                            neon_sat_mla_s_scalar_long")
126                            (const_string
127  "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long")
128           (eq_attr "type" "neon_mla_s_q, neon_mla_s_scalar_q")
129                            (const_string "neon_mla_qqq_32_qqd_32_scalar")
130           (eq_attr "type" "neon_mul_h_scalar, neon_sat_mul_h_scalar,\
131                            neon_mul_h_scalar_long,\
132                            neon_sat_mul_h_scalar_long")
133                           (const_string
134                             "neon_mul_ddd_16_scalar_32_16_long_scalar")
135           (eq_attr "type" "neon_mul_s_q, neon_sat_mul_s_q,\
136                            neon_mul_s_scalar_q")
137                            (const_string "neon_mul_qqd_32_scalar")
138           (eq_attr "type" "neon_mla_h_scalar, neon_mla_h_scalar_long")
139                            (const_string
140                              "neon_mla_ddd_16_scalar_qdd_32_16_long_scalar")
141           (eq_attr "type" "neon_fp_abd_s, neon_fp_abs_s, neon_fp_neg_s,\
142                            neon_fp_addsub_s, neon_fp_compare_s,\
143                            neon_fp_minmax_s, neon_fp_mul_s,\
144                            neon_fp_recpe_s, neon_fp_rsqrte_s,\
145                            neon_fp_to_int_s, neon_int_to_fp_s")
146                            (const_string "neon_fp_vadd_ddd_vabs_dd")
147           (eq_attr "type" "neon_fp_abd_s_q, neon_fp_abs_s_q,\
148                            neon_fp_neg_s_q,\
149                            neon_fp_addsub_s_q, neon_fp_compare_s_q,\
150                            neon_fp_minmax_s_q, neon_fp_mul_s_q,\
151                            neon_fp_recpe_s_q, neon_fp_rsqrte_s_q,\
152                            neon_fp_to_int_s_q, neon_int_to_fp_s_q")
153                            (const_string "neon_fp_vadd_qqq_vabs_qq")
154           (eq_attr "type" "neon_fp_reduc_add_s, neon_fp_reduc_minmax_s,\
155                            neon_fp_reduc_add_s_q, neon_fp_reduc_minmax_s_q")
156                            (const_string "neon_fp_vsum")
157           (eq_attr "type" "neon_fp_mul_s_scalar")
158                            (const_string "neon_fp_vmul_ddd")
159           (eq_attr "type" "neon_fp_mul_s_scalar_q")
160                            (const_string "neon_fp_vmul_qqd")
161           (eq_attr "type" "neon_fp_mla_s")
162                            (const_string "neon_fp_vmla_ddd")
163           (eq_attr "type" "neon_fp_mla_s_q")
164                            (const_string "neon_fp_vmla_qqq")
165           (eq_attr "type" "neon_fp_mla_s_scalar")
166                            (const_string "neon_fp_vmla_ddd_scalar")
167           (eq_attr "type" "neon_fp_mla_s_scalar_q")
168                            (const_string "neon_fp_vmla_qqq_scalar")
169           (eq_attr "type" "neon_fp_recps_s, neon_fp_rsqrts_s")
170                            (const_string "neon_fp_vrecps_vrsqrts_ddd")
171           (eq_attr "type" "neon_fp_recps_s_q, neon_fp_rsqrts_s_q")
172                            (const_string "neon_fp_vrecps_vrsqrts_qqq")
173           (eq_attr "type" "neon_move_narrow_q, neon_dup,\
174                            neon_dup_q, neon_permute, neon_zip,\
175                            neon_ext, neon_rev, neon_rev_q")
176                            (const_string "neon_bp_simple")
177           (eq_attr "type" "neon_permute_q, neon_ext_q, neon_tbl1, neon_tbl2")
178                            (const_string "neon_bp_2cycle")
179           (eq_attr "type" "neon_zip_q, neon_tbl3, neon_tbl4")
180                            (const_string "neon_bp_3cycle")
181           (eq_attr "type" "neon_ldr")
182                            (const_string "neon_ldr")
183           (eq_attr "type" "neon_str")
184                            (const_string "neon_str")
185           (eq_attr "type" "neon_load1_1reg, neon_load1_1reg_q,\
186                            neon_load1_2reg, neon_load1_2reg_q,\
187                            neon_load2_2reg, neon_load2_2reg_q")
188                            (const_string "neon_vld1_1_2_regs")
189           (eq_attr "type" "neon_load1_3reg, neon_load1_3reg_q,\
190                            neon_load1_4reg, neon_load1_4reg_q")
191                            (const_string "neon_vld1_3_4_regs")
192           (eq_attr "type" "neon_load1_all_lanes, neon_load1_all_lanes_q,\
193                            neon_load2_all_lanes, neon_load2_all_lanes_q")
194                            (const_string
195                               "neon_vld2_2_regs_vld1_vld2_all_lanes")
196           (eq_attr "type" "neon_load3_all_lanes, neon_load3_all_lanes_q,\
197                            neon_load4_all_lanes, neon_load4_all_lanes_q,\
198                            neon_load2_4reg, neon_load2_4reg_q")
199                            (const_string "neon_vld2_4_regs")
200           (eq_attr "type" "neon_load3_3reg, neon_load3_3reg_q,\
201                            neon_load4_4reg, neon_load4_4reg_q")
202                            (const_string "neon_vld3_vld4")
203           (eq_attr "type" "f_loads, f_loadd, f_stores, f_stored,\
204                            neon_load1_one_lane, neon_load1_one_lane_q,\
205                            neon_load2_one_lane, neon_load2_one_lane_q")
206                            (const_string "neon_vld1_vld2_lane")
207           (eq_attr "type" "neon_load3_one_lane, neon_load3_one_lane_q,\
208                            neon_load4_one_lane, neon_load4_one_lane_q")
209                            (const_string "neon_vld3_vld4_lane")
210           (eq_attr "type" "neon_store1_1reg, neon_store1_1reg_q,\
211                            neon_store1_2reg, neon_store1_2reg_q,\
212                            neon_store2_2reg, neon_store2_2reg_q")
213                            (const_string "neon_vst1_1_2_regs_vst2_2_regs")
214           (eq_attr "type" "neon_store1_3reg, neon_store1_3reg_q,\
215                            neon_store1_4reg, neon_store1_4reg_q")
216                            (const_string "neon_vst1_3_4_regs")
217           (eq_attr "type" "neon_store2_4reg, neon_store2_4reg_q,\
218                            neon_store3_3reg, neon_store3_3reg_q,\
219                            neon_store4_4reg, neon_store4_4reg_q")
220                            (const_string "neon_vst2_4_regs_vst3_vst4")
221           (eq_attr "type" "neon_store1_one_lane, neon_store1_one_lane_q,\
222                            neon_store2_one_lane, neon_store2_one_lane_q")
223                            (const_string "neon_vst1_vst2_lane")
224           (eq_attr "type" "neon_store3_one_lane, neon_store3_one_lane_q,\
225                            neon_store4_one_lane, neon_store4_one_lane_q")
226                            (const_string "neon_vst3_vst4_lane")
227           (eq_attr "type" "neon_from_gp, f_mcr")
228                            (const_string "neon_mcr")
229           (eq_attr "type" "neon_from_gp_q, f_mcrr")
230                            (const_string "neon_mcr_2_mcrr")
231           (eq_attr "type" "neon_to_gp, f_mrc")
232                            (const_string "neon_mrc")
233           (eq_attr "type" "neon_to_gp_q, f_mrrc")
234                            (const_string "neon_mrrc")]
235           (const_string "unknown")))
237 (define_automaton "cortex_a8_neon")
239 ;; Only one load, store, permute, MCR or MRC instruction can be issued
240 ;; per cycle.
241 (define_cpu_unit "cortex_a8_neon_issue_perm" "cortex_a8_neon")
243 ;; Only one data-processing instruction can be issued per cycle.
244 (define_cpu_unit "cortex_a8_neon_issue_dp" "cortex_a8_neon")
246 ;; The VFPLite unit (non-pipelined).
247 (define_cpu_unit "cortex_a8_vfplite" "cortex_a8_neon")
249 ;; We need a special mutual exclusion (to be used in addition to
250 ;; cortex_a8_neon_issue_dp) for the case when an instruction such as
251 ;; vmla.f is forwarded from E5 of the floating-point multiply pipeline to
252 ;; E2 of the floating-point add pipeline.  On the cycle previous to that
253 ;; forward we must prevent issue of any instruction to the floating-point
254 ;; add pipeline, but still allow issue of a data-processing instruction
255 ;; to any of the other pipelines.
256 (define_cpu_unit "cortex_a8_neon_issue_fadd" "cortex_a8_neon")
258 ;; Patterns of reservation.
259 ;; We model the NEON issue units as running in parallel with the core ones.
260 ;; We assume that multi-cycle NEON instructions get decomposed into
261 ;; micro-ops as they are issued into the NEON pipeline, and not as they
262 ;; are issued into the ARM pipeline.  Dual issue may not occur except
263 ;; upon the first and last cycles of a multi-cycle instruction, but it
264 ;; is unclear whether two multi-cycle instructions can issue together (in
265 ;; this model they cannot).  It is also unclear whether a pair of
266 ;; a multi-cycle and single-cycle instructions, that could potentially
267 ;; issue together, only do so if (say) the single-cycle one precedes
268 ;; the other.
270 (define_reservation "cortex_a8_neon_dp"
271                     "(cortex_a8_alu0|cortex_a8_alu1)+cortex_a8_neon_issue_dp")
272 (define_reservation "cortex_a8_neon_dp_2"
273                     "(cortex_a8_alu0|cortex_a8_alu1)+cortex_a8_neon_issue_dp,\
274                      cortex_a8_neon_issue_dp")
275 (define_reservation "cortex_a8_neon_dp_4"
276                     "(cortex_a8_alu0|cortex_a8_alu1)+cortex_a8_neon_issue_dp,\
277                      cortex_a8_neon_issue_dp+cortex_a8_neon_issue_perm,\
278                      cortex_a8_neon_issue_dp+cortex_a8_neon_issue_perm,\
279                      cortex_a8_neon_issue_dp")
281 (define_reservation "cortex_a8_neon_fadd"
282                     "(cortex_a8_alu0|cortex_a8_alu1)+cortex_a8_neon_issue_dp+\
283                      cortex_a8_neon_issue_fadd")
284 (define_reservation "cortex_a8_neon_fadd_2"
285                     "(cortex_a8_alu0|cortex_a8_alu1)+cortex_a8_neon_issue_dp+\
286                      cortex_a8_neon_issue_fadd,\
287                      cortex_a8_neon_issue_dp+cortex_a8_neon_issue_fadd")
289 (define_reservation "cortex_a8_neon_perm"
290                     "(cortex_a8_alu0|cortex_a8_alu1)+\
291                      cortex_a8_neon_issue_perm")
292 (define_reservation "cortex_a8_neon_perm_2"
293                     "(cortex_a8_alu0|cortex_a8_alu1)+\
294                      cortex_a8_neon_issue_perm,\
295                      cortex_a8_neon_issue_perm")
296 (define_reservation "cortex_a8_neon_perm_3"
297                     "(cortex_a8_alu0|cortex_a8_alu1)+\
298                      cortex_a8_neon_issue_perm,\
299                      cortex_a8_neon_issue_dp+cortex_a8_neon_issue_perm,\
300                      cortex_a8_neon_issue_perm")
302 (define_reservation "cortex_a8_neon_ls"
303                     "cortex_a8_issue_ls+cortex_a8_neon_issue_perm")
304 (define_reservation "cortex_a8_neon_ls_2"
305                     "cortex_a8_issue_ls+cortex_a8_neon_issue_perm,\
306                      cortex_a8_neon_issue_perm")
307 (define_reservation "cortex_a8_neon_ls_3"
308                     "cortex_a8_issue_ls+cortex_a8_neon_issue_perm,\
309                      cortex_a8_neon_issue_dp+cortex_a8_neon_issue_perm,\
310                      cortex_a8_neon_issue_perm")
311 (define_reservation "cortex_a8_neon_ls_4"
312                     "cortex_a8_issue_ls+cortex_a8_neon_issue_perm,\
313                      cortex_a8_neon_issue_dp+cortex_a8_neon_issue_perm,\
314                      cortex_a8_neon_issue_dp+cortex_a8_neon_issue_perm,\
315                      cortex_a8_neon_issue_perm")
316 (define_reservation "cortex_a8_neon_ls_5"
317                     "cortex_a8_issue_ls+cortex_a8_neon_issue_perm,\
318                      cortex_a8_neon_issue_dp+cortex_a8_neon_issue_perm,\
319                      cortex_a8_neon_issue_dp+cortex_a8_neon_issue_perm,\
320                      cortex_a8_neon_issue_dp+cortex_a8_neon_issue_perm,\
321                      cortex_a8_neon_issue_perm")
323 (define_reservation "cortex_a8_neon_fmul_then_fadd"
324                     "(cortex_a8_alu0|cortex_a8_alu1)+cortex_a8_neon_issue_dp,\
325                      nothing*3,\
326                      cortex_a8_neon_issue_fadd")
327 (define_reservation "cortex_a8_neon_fmul_then_fadd_2"
328                     "(cortex_a8_alu0|cortex_a8_alu1)+cortex_a8_neon_issue_dp,\
329                      cortex_a8_neon_issue_dp,\
330                      nothing*2,\
331                      cortex_a8_neon_issue_fadd,\
332                      cortex_a8_neon_issue_fadd")
334 ;; VFP instructions can only be single-issued into the NEON pipeline.
335 (define_reservation "cortex_a8_vfp"
336                     "(cortex_a8_alu0|cortex_a8_alu1)+cortex_a8_neon_issue_dp+\
337                      cortex_a8_neon_issue_perm+cortex_a8_vfplite")
339 ;; VFP instructions.
340 ;; The VFPLite unit that executes these isn't pipelined; we give the
341 ;; worst-case latencies (and choose the double-precision ones where we
342 ;; do not distinguish on precision).  We assume RunFast mode is not
343 ;; enabled and therefore do not model the possible VFP instruction
344 ;; execution in the NEON floating point pipelines, nor additional
345 ;; latencies for the processing of subnormals.
347 ;; TODO: RunFast mode could potentially be enabled when -ffast-math
348 ;; is specified.
350 (define_insn_reservation "cortex_a8_vfp_add_sub" 10
351   (and (eq_attr "tune" "cortexa8")
352        (eq_attr "type" "fconsts,fconstd,fadds,faddd"))
353   "cortex_a8_vfp,cortex_a8_vfplite*9")
355 (define_insn_reservation "cortex_a8_vfp_muls" 12
356   (and (eq_attr "tune" "cortexa8")
357        (eq_attr "type" "fmuls"))
358   "cortex_a8_vfp,cortex_a8_vfplite*11")
360 ;; Don't model a reservation for more than 15 cycles as this explodes the
361 ;; state space of the automaton for little gain.  It is unlikely that the
362 ;; scheduler will find enough instructions to hide the full latency of the
363 ;; instructions.
364 (define_insn_reservation "cortex_a8_vfp_muld" 17
365   (and (eq_attr "tune" "cortexa8")
366        (eq_attr "type" "fmuld"))
367   "cortex_a8_vfp,cortex_a8_vfplite*15")
369 (define_insn_reservation "cortex_a8_vfp_macs" 21
370   (and (eq_attr "tune" "cortexa8")
371        (eq_attr "type" "fmacs,ffmas"))
372   "cortex_a8_vfp,cortex_a8_vfplite*15")
374 (define_insn_reservation "cortex_a8_vfp_macd" 26
375   (and (eq_attr "tune" "cortexa8")
376        (eq_attr "type" "fmacd,ffmad"))
377   "cortex_a8_vfp,cortex_a8_vfplite*15")
379 (define_insn_reservation "cortex_a8_vfp_divs" 37
380   (and (eq_attr "tune" "cortexa8")
381        (eq_attr "type" "fdivs, fsqrts"))
382   "cortex_a8_vfp,cortex_a8_vfplite*15")
384 (define_insn_reservation "cortex_a8_vfp_divd" 65
385   (and (eq_attr "tune" "cortexa8")
386        (eq_attr "type" "fdivd, fsqrtd"))
387   "cortex_a8_vfp,cortex_a8_vfplite*15")
389 ;; Comparisons can actually take 7 cycles sometimes instead of four,
390 ;; but given all the other instructions lumped into type=ffarith that
391 ;; take four cycles, we pick that latency.
392 (define_insn_reservation "cortex_a8_vfp_farith" 4
393   (and (eq_attr "tune" "cortexa8")
394        (eq_attr "type" "fmov,ffariths,ffarithd,fconsts,fconstd,fcmps,fcmpd"))
395   "cortex_a8_vfp,cortex_a8_vfplite*3")
397 (define_insn_reservation "cortex_a8_vfp_cvt" 7
398   (and (eq_attr "tune" "cortexa8")
399        (eq_attr "type" "f_cvt,f_cvtf2i,f_cvti2f"))
400   "cortex_a8_vfp,cortex_a8_vfplite*6")
402 ;; NEON -> core transfers.
404 (define_insn_reservation "cortex_a8_neon_mrc" 20
405   (and (eq_attr "tune" "cortexa8")
406        (eq_attr "cortex_a8_neon_type" "neon_mrc"))
407   "cortex_a8_neon_ls")
409 (define_insn_reservation "cortex_a8_neon_mrrc" 21
410   (and (eq_attr "tune" "cortexa8")
411        (eq_attr "cortex_a8_neon_type" "neon_mrrc"))
412   "cortex_a8_neon_ls_2")
414 ;; Arithmetic Operations
416 ;; Instructions using this reservation read their source operands at N2, and
417 ;; produce a result at N3.
418 (define_insn_reservation "cortex_a8_neon_int_1" 3
419   (and (eq_attr "tune" "cortexa8")
420        (eq_attr "cortex_a8_neon_type" "neon_int_1"))
421   "cortex_a8_neon_dp")
423 ;; Instructions using this reservation read their (D|Q)m operands at N1,
424 ;; their (D|Q)n operands at N2, and produce a result at N3.
425 (define_insn_reservation "cortex_a8_neon_int_2" 3
426   (and (eq_attr "tune" "cortexa8")
427        (eq_attr "cortex_a8_neon_type" "neon_int_2"))
428   "cortex_a8_neon_dp")
430 ;; Instructions using this reservation read their source operands at N1, and
431 ;; produce a result at N3.
432 (define_insn_reservation "cortex_a8_neon_int_3" 3
433   (and (eq_attr "tune" "cortexa8")
434        (eq_attr "cortex_a8_neon_type" "neon_int_3"))
435   "cortex_a8_neon_dp")
437 ;; Instructions using this reservation read their source operands at N2, and
438 ;; produce a result at N4.
439 (define_insn_reservation "cortex_a8_neon_int_4" 4
440   (and (eq_attr "tune" "cortexa8")
441        (eq_attr "cortex_a8_neon_type" "neon_int_4"))
442   "cortex_a8_neon_dp")
444 ;; Instructions using this reservation read their (D|Q)m operands at N1,
445 ;; their (D|Q)n operands at N2, and produce a result at N4.
446 (define_insn_reservation "cortex_a8_neon_int_5" 4
447   (and (eq_attr "tune" "cortexa8")
448        (eq_attr "cortex_a8_neon_type" "neon_int_5"))
449   "cortex_a8_neon_dp")
451 ;; Instructions using this reservation read their source operands at N1, and
452 ;; produce a result at N4.
453 (define_insn_reservation "cortex_a8_neon_vqneg_vqabs" 4
454   (and (eq_attr "tune" "cortexa8")
455        (eq_attr "cortex_a8_neon_type" "neon_vqneg_vqabs"))
456   "cortex_a8_neon_dp")
458 ;; Instructions using this reservation produce a result at N3.
459 (define_insn_reservation "cortex_a8_neon_vmov" 3
460   (and (eq_attr "tune" "cortexa8")
461        (eq_attr "cortex_a8_neon_type" "neon_vmov"))
462   "cortex_a8_neon_dp")
464 ;; Instructions using this reservation read their (D|Q)n operands at N2,
465 ;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and
466 ;; produce a result at N6.
467 (define_insn_reservation "cortex_a8_neon_vaba" 6
468   (and (eq_attr "tune" "cortexa8")
469        (eq_attr "cortex_a8_neon_type" "neon_vaba"))
470   "cortex_a8_neon_dp")
472 ;; Instructions using this reservation read their (D|Q)n operands at N2,
473 ;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and
474 ;; produce a result at N6 on cycle 2.
475 (define_insn_reservation "cortex_a8_neon_vaba_qqq" 7
476   (and (eq_attr "tune" "cortexa8")
477        (eq_attr "cortex_a8_neon_type" "neon_vaba_qqq"))
478   "cortex_a8_neon_dp_2")
480 ;; Instructions using this reservation read their source operands at N2, and
481 ;; produce a result at N3 on cycle 2.
482 (define_insn_reservation "cortex_a8_neon_bit_ops_q" 4
483   (and (eq_attr "tune" "cortexa8")
484        (eq_attr "cortex_a8_neon_type" "neon_bit_ops_q"))
485   "cortex_a8_neon_dp_2")
487 ;; Integer Multiply/Accumulate Operations
489 ;; Instructions using this reservation read their source operands at N2, and
490 ;; produce a result at N6.
491 (define_insn_reservation "cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long" 6
492   (and (eq_attr "tune" "cortexa8")
493        (eq_attr "cortex_a8_neon_type"
494          "neon_mul_ddd_8_16_qdd_16_8_long_32_16_long"))
495   "cortex_a8_neon_dp")
497 ;; Instructions using this reservation read their source operands at N2, and
498 ;; produce a result at N6 on cycle 2.
499 (define_insn_reservation "cortex_a8_neon_mul_qqq_8_16_32_ddd_32" 7
500   (and (eq_attr "tune" "cortexa8")
501        (eq_attr "cortex_a8_neon_type" "neon_mul_qqq_8_16_32_ddd_32"))
502   "cortex_a8_neon_dp_2")
504 ;; Instructions using this reservation read their (D|Q)n operands at N2,
505 ;; their (D|Q)m operands at N1, and produce a result at N6 on cycle 2.
506 (define_insn_reservation "cortex_a8_neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar" 7
507   (and (eq_attr "tune" "cortexa8")
508        (eq_attr "cortex_a8_neon_type"
509             "neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar"))
510   "cortex_a8_neon_dp_2")
512 ;; Instructions using this reservation read their (D|Q)n operands at N2,
513 ;; their (D|Q)m operands at N2, their (D|Q)d operands at N3, and
514 ;; produce a result at N6.
515 (define_insn_reservation "cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long" 6
516   (and (eq_attr "tune" "cortexa8")
517        (eq_attr "cortex_a8_neon_type"
518                   "neon_mla_ddd_8_16_qdd_16_8_long_32_16_long"))
519   "cortex_a8_neon_dp")
521 ;; Instructions using this reservation read their (D|Q)n operands at N2,
522 ;; their (D|Q)m operands at N2, their (D|Q)d operands at N3, and
523 ;; produce a result at N6 on cycle 2.
524 (define_insn_reservation "cortex_a8_neon_mla_qqq_8_16" 7
525   (and (eq_attr "tune" "cortexa8")
526        (eq_attr "cortex_a8_neon_type" "neon_mla_qqq_8_16"))
527   "cortex_a8_neon_dp_2")
529 ;; Instructions using this reservation read their (D|Q)n operands at N2,
530 ;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and
531 ;; produce a result at N6 on cycle 2.
532 (define_insn_reservation "cortex_a8_neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long" 7
533   (and (eq_attr "tune" "cortexa8")
534        (eq_attr "cortex_a8_neon_type"
535  "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long"))
536   "cortex_a8_neon_dp_2")
538 ;; Instructions using this reservation read their (D|Q)n operands at N2,
539 ;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and
540 ;; produce a result at N6 on cycle 4.
541 (define_insn_reservation "cortex_a8_neon_mla_qqq_32_qqd_32_scalar" 9
542   (and (eq_attr "tune" "cortexa8")
543        (eq_attr "cortex_a8_neon_type" "neon_mla_qqq_32_qqd_32_scalar"))
544   "cortex_a8_neon_dp_4")
546 ;; Instructions using this reservation read their (D|Q)n operands at N2,
547 ;; their (D|Q)m operands at N1, and produce a result at N6.
548 (define_insn_reservation "cortex_a8_neon_mul_ddd_16_scalar_32_16_long_scalar" 6
549   (and (eq_attr "tune" "cortexa8")
550        (eq_attr "cortex_a8_neon_type"
551                   "neon_mul_ddd_16_scalar_32_16_long_scalar"))
552   "cortex_a8_neon_dp")
554 ;; Instructions using this reservation read their (D|Q)n operands at N2,
555 ;; their (D|Q)m operands at N1, and produce a result at N6 on cycle 4.
556 (define_insn_reservation "cortex_a8_neon_mul_qqd_32_scalar" 9
557   (and (eq_attr "tune" "cortexa8")
558        (eq_attr "cortex_a8_neon_type" "neon_mul_qqd_32_scalar"))
559   "cortex_a8_neon_dp_4")
561 ;; Instructions using this reservation read their (D|Q)n operands at N2,
562 ;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and
563 ;; produce a result at N6.
564 (define_insn_reservation "cortex_a8_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar" 6
565   (and (eq_attr "tune" "cortexa8")
566        (eq_attr "cortex_a8_neon_type"
567                   "neon_mla_ddd_16_scalar_qdd_32_16_long_scalar"))
568   "cortex_a8_neon_dp")
570 ;; Shift Operations
572 ;; Instructions using this reservation read their source operands at N1, and
573 ;; produce a result at N3.
574 (define_insn_reservation "cortex_a8_neon_shift_1" 3
575   (and (eq_attr "tune" "cortexa8")
576        (eq_attr "cortex_a8_neon_type" "neon_shift_1"))
577   "cortex_a8_neon_dp")
579 ;; Instructions using this reservation read their source operands at N1, and
580 ;; produce a result at N4.
581 (define_insn_reservation "cortex_a8_neon_shift_2" 4
582   (and (eq_attr "tune" "cortexa8")
583        (eq_attr "cortex_a8_neon_type" "neon_shift_2"))
584   "cortex_a8_neon_dp")
586 ;; Instructions using this reservation read their source operands at N1, and
587 ;; produce a result at N3 on cycle 2.
588 (define_insn_reservation "cortex_a8_neon_shift_3" 4
589   (and (eq_attr "tune" "cortexa8")
590        (eq_attr "cortex_a8_neon_type" "neon_shift_3"))
591   "cortex_a8_neon_dp_2")
593 ;; Instructions using this reservation read their source operands at N1, and
594 ;; produce a result at N4 on cycle 2.
595 (define_insn_reservation "cortex_a8_neon_vqshl_vrshl_vqrshl_qqq" 5
596   (and (eq_attr "tune" "cortexa8")
597        (eq_attr "cortex_a8_neon_type" "neon_vqshl_vrshl_vqrshl_qqq"))
598   "cortex_a8_neon_dp_2")
600 ;; Instructions using this reservation read their (D|Q)m operands at N1,
601 ;; their (D|Q)d operands at N3, and produce a result at N6.
602 (define_insn_reservation "cortex_a8_neon_vsra_vrsra" 6
603   (and (eq_attr "tune" "cortexa8")
604        (eq_attr "cortex_a8_neon_type" "neon_vsra_vrsra"))
605   "cortex_a8_neon_dp")
607 ;; Floating point Operations
609 ;; Instructions using this reservation read their source operands at N2, and
610 ;; produce a result at N5.
611 (define_insn_reservation "cortex_a8_neon_fp_vadd_ddd_vabs_dd" 5
612   (and (eq_attr "tune" "cortexa8")
613        (eq_attr "cortex_a8_neon_type" "neon_fp_vadd_ddd_vabs_dd"))
614  "cortex_a8_neon_fadd")
616 ;; Instructions using this reservation read their source operands at N2, and
617 ;; produce a result at N5 on cycle 2.
618 (define_insn_reservation "cortex_a8_neon_fp_vadd_qqq_vabs_qq" 6
619   (and (eq_attr "tune" "cortexa8")
620        (eq_attr "cortex_a8_neon_type" "neon_fp_vadd_qqq_vabs_qq"))
621   "cortex_a8_neon_fadd_2")
623 ;; Instructions using this reservation read their source operands at N1, and
624 ;; produce a result at N5.
625 (define_insn_reservation "cortex_a8_neon_fp_vsum" 5
626   (and (eq_attr "tune" "cortexa8")
627        (eq_attr "cortex_a8_neon_type" "neon_fp_vsum"))
628   "cortex_a8_neon_fadd")
630 ;; Instructions using this reservation read their (D|Q)n operands at N2,
631 ;; their (D|Q)m operands at N1, and produce a result at N5.
632 (define_insn_reservation "cortex_a8_neon_fp_vmul_ddd" 5
633   (and (eq_attr "tune" "cortexa8")
634        (eq_attr "cortex_a8_neon_type" "neon_fp_vmul_ddd"))
635   "cortex_a8_neon_dp")
637 ;; Instructions using this reservation read their (D|Q)n operands at N2,
638 ;; their (D|Q)m operands at N1, and produce a result at N5 on cycle 2.
639 (define_insn_reservation "cortex_a8_neon_fp_vmul_qqd" 6
640   (and (eq_attr "tune" "cortexa8")
641        (eq_attr "cortex_a8_neon_type" "neon_fp_vmul_qqd"))
642   "cortex_a8_neon_dp_2")
644 ;; Instructions using this reservation read their (D|Q)n operands at N2,
645 ;; their (D|Q)m operands at N2, their (D|Q)d operands at N3, and
646 ;; produce a result at N9.
647 (define_insn_reservation "cortex_a8_neon_fp_vmla_ddd" 9
648   (and (eq_attr "tune" "cortexa8")
649        (eq_attr "cortex_a8_neon_type" "neon_fp_vmla_ddd"))
650   "cortex_a8_neon_fmul_then_fadd")
652 ;; Instructions using this reservation read their (D|Q)n operands at N2,
653 ;; their (D|Q)m operands at N2, their (D|Q)d operands at N3, and
654 ;; produce a result at N9 on cycle 2.
655 (define_insn_reservation "cortex_a8_neon_fp_vmla_qqq" 10
656   (and (eq_attr "tune" "cortexa8")
657        (eq_attr "cortex_a8_neon_type" "neon_fp_vmla_qqq"))
658   "cortex_a8_neon_fmul_then_fadd_2")
660 ;; Instructions using this reservation read their (D|Q)n operands at N2,
661 ;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and
662 ;; produce a result at N9.
663 (define_insn_reservation "cortex_a8_neon_fp_vmla_ddd_scalar" 9
664   (and (eq_attr "tune" "cortexa8")
665        (eq_attr "cortex_a8_neon_type" "neon_fp_vmla_ddd_scalar"))
666   "cortex_a8_neon_fmul_then_fadd")
668 ;; Instructions using this reservation read their (D|Q)n operands at N2,
669 ;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and
670 ;; produce a result at N9 on cycle 2.
671 (define_insn_reservation "cortex_a8_neon_fp_vmla_qqq_scalar" 10
672   (and (eq_attr "tune" "cortexa8")
673        (eq_attr "cortex_a8_neon_type" "neon_fp_vmla_qqq_scalar"))
674   "cortex_a8_neon_fmul_then_fadd_2")
676 ;; Instructions using this reservation read their source operands at N2, and
677 ;; produce a result at N9.
678 (define_insn_reservation "cortex_a8_neon_fp_vrecps_vrsqrts_ddd" 9
679   (and (eq_attr "tune" "cortexa8")
680        (eq_attr "cortex_a8_neon_type" "neon_fp_vrecps_vrsqrts_ddd"))
681   "cortex_a8_neon_fmul_then_fadd")
683 ;; Instructions using this reservation read their source operands at N2, and
684 ;; produce a result at N9 on cycle 2.
685 (define_insn_reservation "cortex_a8_neon_fp_vrecps_vrsqrts_qqq" 10
686   (and (eq_attr "tune" "cortexa8")
687        (eq_attr "type" "neon_fp_recps_s_q, neon_fp_rsqrts_s_q"))
688   "cortex_a8_neon_fmul_then_fadd_2")
690 ;; Permute operations.
692 ;; Instructions using this reservation read their source operands at N1, and
693 ;; produce a result at N2.
694 (define_insn_reservation "cortex_a8_neon_bp_simple" 2
695   (and (eq_attr "tune" "cortexa8")
696        (eq_attr "cortex_a8_neon_type" "neon_bp_simple"))
697   "cortex_a8_neon_perm")
699 ;; Instructions using this reservation read their source operands at N1, and
700 ;; produce a result at N2 on cycle 2.
701 (define_insn_reservation "cortex_a8_neon_bp_2cycle" 3
702   (and (eq_attr "tune" "cortexa8")
703        (eq_attr "cortex_a8_neon_type" "neon_bp_2cycle"))
704   "cortex_a8_neon_perm_2")
706 ;; Instructions using this reservation read their source operands at N1, and
707 ;; produce a result at N2 on cycle 3.
708 (define_insn_reservation "cortex_a8_neon_bp_3cycle" 4
709   (and (eq_attr "tune" "cortexa8")
710        (eq_attr "cortex_a8_neon_type" "neon_bp_3cycle"))
711   "cortex_a8_neon_perm_3")
713 ;; Load Operations.
715 ;; Instructions using this reservation produce a result at N1.
716 (define_insn_reservation "cortex_a8_neon_ldr" 1
717   (and (eq_attr "tune" "cortexa8")
718        (eq_attr "cortex_a8_neon_type" "neon_ldr"))
719   "cortex_a8_neon_ls")
721 ;; Instructions using this reservation read their source operands at N1.
722 (define_insn_reservation "cortex_a8_neon_str" 0
723   (and (eq_attr "tune" "cortexa8")
724        (eq_attr "cortex_a8_neon_type" "neon_str"))
725   "cortex_a8_neon_ls")
727 ;; Instructions using this reservation produce a result at N1 on cycle 2.
728 (define_insn_reservation "cortex_a8_neon_vld1_1_2_regs" 2
729   (and (eq_attr "tune" "cortexa8")
730        (eq_attr "cortex_a8_neon_type" "neon_vld1_1_2_regs"))
731   "cortex_a8_neon_ls_2")
733 ;; Instructions using this reservation produce a result at N1 on cycle 3.
734 (define_insn_reservation "cortex_a8_neon_vld1_3_4_regs" 3
735   (and (eq_attr "tune" "cortexa8")
736        (eq_attr "cortex_a8_neon_type" "neon_vld1_3_4_regs"))
737   "cortex_a8_neon_ls_3")
739 ;; Instructions using this reservation produce a result at N2 on cycle 2.
740 (define_insn_reservation "cortex_a8_neon_vld2_2_regs_vld1_vld2_all_lanes" 3
741   (and (eq_attr "tune" "cortexa8")
742        (eq_attr "cortex_a8_neon_type" "neon_vld2_2_regs_vld1_vld2_all_lanes"))
743   "cortex_a8_neon_ls_2")
745 ;; Instructions using this reservation produce a result at N2 on cycle 3.
746 (define_insn_reservation "cortex_a8_neon_vld2_4_regs" 4
747   (and (eq_attr "tune" "cortexa8")
748        (eq_attr "cortex_a8_neon_type" "neon_vld2_4_regs"))
749   "cortex_a8_neon_ls_3")
751 ;; Instructions using this reservation produce a result at N2 on cycle 4.
752 (define_insn_reservation "cortex_a8_neon_vld3_vld4" 5
753   (and (eq_attr "tune" "cortexa8")
754        (eq_attr "cortex_a8_neon_type" "neon_vld3_vld4"))
755   "cortex_a8_neon_ls_4")
757 ;; Store operations.
759 ;; Instructions using this reservation read their source operands at N1.
760 (define_insn_reservation "cortex_a8_neon_vst1_1_2_regs_vst2_2_regs" 0
761   (and (eq_attr "tune" "cortexa8")
762        (eq_attr "cortex_a8_neon_type" "neon_vst1_1_2_regs_vst2_2_regs"))
763   "cortex_a8_neon_ls_2")
765 ;; Instructions using this reservation read their source operands at N1.
766 (define_insn_reservation "cortex_a8_neon_vst1_3_4_regs" 0
767   (and (eq_attr "tune" "cortexa8")
768        (eq_attr "cortex_a8_neon_type" "neon_vst1_3_4_regs"))
769   "cortex_a8_neon_ls_3")
771 ;; Instructions using this reservation read their source operands at N1.
772 (define_insn_reservation "cortex_a8_neon_vst2_4_regs_vst3_vst4" 0
773   (and (eq_attr "tune" "cortexa8")
774        (eq_attr "cortex_a8_neon_type" "neon_vst2_4_regs_vst3_vst4"))
775   "cortex_a8_neon_ls_4")
777 ;; Instructions using this reservation read their source operands at N1, and
778 ;; produce a result at N2 on cycle 3.
779 (define_insn_reservation "cortex_a8_neon_vld1_vld2_lane" 4
780   (and (eq_attr "tune" "cortexa8")
781        (eq_attr "cortex_a8_neon_type" "neon_vld1_vld2_lane"))
782   "cortex_a8_neon_ls_3")
784 ;; Instructions using this reservation read their source operands at N1, and
785 ;; produce a result at N2 on cycle 5.
786 (define_insn_reservation "cortex_a8_neon_vld3_vld4_lane" 6
787   (and (eq_attr "tune" "cortexa8")
788        (eq_attr "cortex_a8_neon_type" "neon_vld3_vld4_lane"))
789   "cortex_a8_neon_ls_5")
791 ;; Instructions using this reservation read their source operands at N1.
792 (define_insn_reservation "cortex_a8_neon_vst1_vst2_lane" 0
793   (and (eq_attr "tune" "cortexa8")
794        (eq_attr "cortex_a8_neon_type" "neon_vst1_vst2_lane"))
795   "cortex_a8_neon_ls_2")
797 ;; Instructions using this reservation read their source operands at N1.
798 (define_insn_reservation "cortex_a8_neon_vst3_vst4_lane" 0
799   (and (eq_attr "tune" "cortexa8")
800        (eq_attr "cortex_a8_neon_type" "neon_vst3_vst4_lane"))
801   "cortex_a8_neon_ls_3")
803 ;; Register Transfer Operations
805 ;; Instructions using this reservation produce a result at N2.
806 (define_insn_reservation "cortex_a8_neon_mcr" 2
807   (and (eq_attr "tune" "cortexa8")
808        (eq_attr "cortex_a8_neon_type" "neon_mcr"))
809   "cortex_a8_neon_perm")
811 ;; Instructions using this reservation produce a result at N2.
812 (define_insn_reservation "cortex_a8_neon_mcr_2_mcrr" 2
813   (and (eq_attr "tune" "cortexa8")
814        (eq_attr "cortex_a8_neon_type" "neon_mcr_2_mcrr"))
815   "cortex_a8_neon_perm_2")
817 ;; Exceptions to the default latencies.
819 (define_bypass 1 "cortex_a8_neon_mcr_2_mcrr"
820                "cortex_a8_neon_int_1,\
821                cortex_a8_neon_int_4,\
822                cortex_a8_neon_bit_ops_q,\
823                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
824                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
825                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
826                cortex_a8_neon_mla_qqq_8_16,\
827                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
828                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
829                cortex_a8_neon_fp_vmla_ddd,\
830                cortex_a8_neon_fp_vmla_qqq,\
831                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
832                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
834 (define_bypass 1 "cortex_a8_neon_mcr"
835                "cortex_a8_neon_int_1,\
836                cortex_a8_neon_int_4,\
837                cortex_a8_neon_bit_ops_q,\
838                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
839                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
840                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
841                cortex_a8_neon_mla_qqq_8_16,\
842                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
843                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
844                cortex_a8_neon_fp_vmla_ddd,\
845                cortex_a8_neon_fp_vmla_qqq,\
846                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
847                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
849 (define_bypass 5 "cortex_a8_neon_vld3_vld4_lane"
850                "cortex_a8_neon_int_1,\
851                cortex_a8_neon_int_4,\
852                cortex_a8_neon_bit_ops_q,\
853                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
854                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
855                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
856                cortex_a8_neon_mla_qqq_8_16,\
857                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
858                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
859                cortex_a8_neon_fp_vmla_ddd,\
860                cortex_a8_neon_fp_vmla_qqq,\
861                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
862                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
864 (define_bypass 3 "cortex_a8_neon_vld1_vld2_lane"
865                "cortex_a8_neon_int_1,\
866                cortex_a8_neon_int_4,\
867                cortex_a8_neon_bit_ops_q,\
868                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
869                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
870                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
871                cortex_a8_neon_mla_qqq_8_16,\
872                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
873                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
874                cortex_a8_neon_fp_vmla_ddd,\
875                cortex_a8_neon_fp_vmla_qqq,\
876                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
877                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
879 (define_bypass 4 "cortex_a8_neon_vld3_vld4"
880                "cortex_a8_neon_int_1,\
881                cortex_a8_neon_int_4,\
882                cortex_a8_neon_bit_ops_q,\
883                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
884                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
885                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
886                cortex_a8_neon_mla_qqq_8_16,\
887                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
888                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
889                cortex_a8_neon_fp_vmla_ddd,\
890                cortex_a8_neon_fp_vmla_qqq,\
891                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
892                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
894 (define_bypass 3 "cortex_a8_neon_vld2_4_regs"
895                "cortex_a8_neon_int_1,\
896                cortex_a8_neon_int_4,\
897                cortex_a8_neon_bit_ops_q,\
898                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
899                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
900                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
901                cortex_a8_neon_mla_qqq_8_16,\
902                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
903                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
904                cortex_a8_neon_fp_vmla_ddd,\
905                cortex_a8_neon_fp_vmla_qqq,\
906                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
907                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
909 (define_bypass 2 "cortex_a8_neon_vld2_2_regs_vld1_vld2_all_lanes"
910                "cortex_a8_neon_int_1,\
911                cortex_a8_neon_int_4,\
912                cortex_a8_neon_bit_ops_q,\
913                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
914                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
915                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
916                cortex_a8_neon_mla_qqq_8_16,\
917                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
918                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
919                cortex_a8_neon_fp_vmla_ddd,\
920                cortex_a8_neon_fp_vmla_qqq,\
921                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
922                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
924 (define_bypass 2 "cortex_a8_neon_vld1_3_4_regs"
925                "cortex_a8_neon_int_1,\
926                cortex_a8_neon_int_4,\
927                cortex_a8_neon_bit_ops_q,\
928                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
929                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
930                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
931                cortex_a8_neon_mla_qqq_8_16,\
932                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
933                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
934                cortex_a8_neon_fp_vmla_ddd,\
935                cortex_a8_neon_fp_vmla_qqq,\
936                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
937                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
939 (define_bypass 1 "cortex_a8_neon_vld1_1_2_regs"
940                "cortex_a8_neon_int_1,\
941                cortex_a8_neon_int_4,\
942                cortex_a8_neon_bit_ops_q,\
943                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
944                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
945                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
946                cortex_a8_neon_mla_qqq_8_16,\
947                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
948                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
949                cortex_a8_neon_fp_vmla_ddd,\
950                cortex_a8_neon_fp_vmla_qqq,\
951                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
952                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
954 (define_bypass 0 "cortex_a8_neon_ldr"
955                "cortex_a8_neon_int_1,\
956                cortex_a8_neon_int_4,\
957                cortex_a8_neon_bit_ops_q,\
958                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
959                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
960                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
961                cortex_a8_neon_mla_qqq_8_16,\
962                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
963                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
964                cortex_a8_neon_fp_vmla_ddd,\
965                cortex_a8_neon_fp_vmla_qqq,\
966                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
967                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
969 (define_bypass 3 "cortex_a8_neon_bp_3cycle"
970                "cortex_a8_neon_int_1,\
971                cortex_a8_neon_int_4,\
972                cortex_a8_neon_bit_ops_q,\
973                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
974                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
975                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
976                cortex_a8_neon_mla_qqq_8_16,\
977                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
978                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
979                cortex_a8_neon_fp_vmla_ddd,\
980                cortex_a8_neon_fp_vmla_qqq,\
981                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
982                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
984 (define_bypass 2 "cortex_a8_neon_bp_2cycle"
985                "cortex_a8_neon_int_1,\
986                cortex_a8_neon_int_4,\
987                cortex_a8_neon_bit_ops_q,\
988                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
989                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
990                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
991                cortex_a8_neon_mla_qqq_8_16,\
992                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
993                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
994                cortex_a8_neon_fp_vmla_ddd,\
995                cortex_a8_neon_fp_vmla_qqq,\
996                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
997                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
999 (define_bypass 1 "cortex_a8_neon_bp_simple"
1000                "cortex_a8_neon_int_1,\
1001                cortex_a8_neon_int_4,\
1002                cortex_a8_neon_bit_ops_q,\
1003                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1004                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1005                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1006                cortex_a8_neon_mla_qqq_8_16,\
1007                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1008                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1009                cortex_a8_neon_fp_vmla_ddd,\
1010                cortex_a8_neon_fp_vmla_qqq,\
1011                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1012                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1014 (define_bypass 9 "cortex_a8_neon_fp_vrecps_vrsqrts_qqq"
1015                "cortex_a8_neon_int_1,\
1016                cortex_a8_neon_int_4,\
1017                cortex_a8_neon_bit_ops_q,\
1018                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1019                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1020                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1021                cortex_a8_neon_mla_qqq_8_16,\
1022                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1023                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1024                cortex_a8_neon_fp_vmla_ddd,\
1025                cortex_a8_neon_fp_vmla_qqq,\
1026                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1027                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1029 (define_bypass 8 "cortex_a8_neon_fp_vrecps_vrsqrts_ddd"
1030                "cortex_a8_neon_int_1,\
1031                cortex_a8_neon_int_4,\
1032                cortex_a8_neon_bit_ops_q,\
1033                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1034                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1035                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1036                cortex_a8_neon_mla_qqq_8_16,\
1037                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1038                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1039                cortex_a8_neon_fp_vmla_ddd,\
1040                cortex_a8_neon_fp_vmla_qqq,\
1041                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1042                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1044 (define_bypass 9 "cortex_a8_neon_fp_vmla_qqq_scalar"
1045                "cortex_a8_neon_int_1,\
1046                cortex_a8_neon_int_4,\
1047                cortex_a8_neon_bit_ops_q,\
1048                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1049                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1050                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1051                cortex_a8_neon_mla_qqq_8_16,\
1052                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1053                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1054                cortex_a8_neon_fp_vmla_ddd,\
1055                cortex_a8_neon_fp_vmla_qqq,\
1056                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1057                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1059 (define_bypass 8 "cortex_a8_neon_fp_vmla_ddd_scalar"
1060                "cortex_a8_neon_int_1,\
1061                cortex_a8_neon_int_4,\
1062                cortex_a8_neon_bit_ops_q,\
1063                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1064                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1065                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1066                cortex_a8_neon_mla_qqq_8_16,\
1067                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1068                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1069                cortex_a8_neon_fp_vmla_ddd,\
1070                cortex_a8_neon_fp_vmla_qqq,\
1071                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1072                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1074 (define_bypass 9 "cortex_a8_neon_fp_vmla_qqq"
1075                "cortex_a8_neon_int_1,\
1076                cortex_a8_neon_int_4,\
1077                cortex_a8_neon_bit_ops_q,\
1078                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1079                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1080                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1081                cortex_a8_neon_mla_qqq_8_16,\
1082                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1083                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1084                cortex_a8_neon_fp_vmla_ddd,\
1085                cortex_a8_neon_fp_vmla_qqq,\
1086                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1087                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1089 (define_bypass 8 "cortex_a8_neon_fp_vmla_ddd"
1090                "cortex_a8_neon_int_1,\
1091                cortex_a8_neon_int_4,\
1092                cortex_a8_neon_bit_ops_q,\
1093                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1094                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1095                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1096                cortex_a8_neon_mla_qqq_8_16,\
1097                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1098                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1099                cortex_a8_neon_fp_vmla_ddd,\
1100                cortex_a8_neon_fp_vmla_qqq,\
1101                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1102                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1104 (define_bypass 5 "cortex_a8_neon_fp_vmul_qqd"
1105                "cortex_a8_neon_int_1,\
1106                cortex_a8_neon_int_4,\
1107                cortex_a8_neon_bit_ops_q,\
1108                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1109                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1110                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1111                cortex_a8_neon_mla_qqq_8_16,\
1112                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1113                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1114                cortex_a8_neon_fp_vmla_ddd,\
1115                cortex_a8_neon_fp_vmla_qqq,\
1116                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1117                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1119 (define_bypass 4 "cortex_a8_neon_fp_vmul_ddd"
1120                "cortex_a8_neon_int_1,\
1121                cortex_a8_neon_int_4,\
1122                cortex_a8_neon_bit_ops_q,\
1123                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1124                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1125                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1126                cortex_a8_neon_mla_qqq_8_16,\
1127                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1128                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1129                cortex_a8_neon_fp_vmla_ddd,\
1130                cortex_a8_neon_fp_vmla_qqq,\
1131                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1132                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1134 (define_bypass 4 "cortex_a8_neon_fp_vsum"
1135                "cortex_a8_neon_int_1,\
1136                cortex_a8_neon_int_4,\
1137                cortex_a8_neon_bit_ops_q,\
1138                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1139                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1140                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1141                cortex_a8_neon_mla_qqq_8_16,\
1142                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1143                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1144                cortex_a8_neon_fp_vmla_ddd,\
1145                cortex_a8_neon_fp_vmla_qqq,\
1146                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1147                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1149 (define_bypass 5 "cortex_a8_neon_fp_vadd_qqq_vabs_qq"
1150                "cortex_a8_neon_int_1,\
1151                cortex_a8_neon_int_4,\
1152                cortex_a8_neon_bit_ops_q,\
1153                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1154                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1155                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1156                cortex_a8_neon_mla_qqq_8_16,\
1157                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1158                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1159                cortex_a8_neon_fp_vmla_ddd,\
1160                cortex_a8_neon_fp_vmla_qqq,\
1161                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1162                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1164 (define_bypass 4 "cortex_a8_neon_fp_vadd_ddd_vabs_dd"
1165                "cortex_a8_neon_int_1,\
1166                cortex_a8_neon_int_4,\
1167                cortex_a8_neon_bit_ops_q,\
1168                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1169                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1170                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1171                cortex_a8_neon_mla_qqq_8_16,\
1172                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1173                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1174                cortex_a8_neon_fp_vmla_ddd,\
1175                cortex_a8_neon_fp_vmla_qqq,\
1176                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1177                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1179 (define_bypass 5 "cortex_a8_neon_vsra_vrsra"
1180                "cortex_a8_neon_int_1,\
1181                cortex_a8_neon_int_4,\
1182                cortex_a8_neon_bit_ops_q,\
1183                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1184                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1185                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1186                cortex_a8_neon_mla_qqq_8_16,\
1187                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1188                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1189                cortex_a8_neon_fp_vmla_ddd,\
1190                cortex_a8_neon_fp_vmla_qqq,\
1191                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1192                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1194 (define_bypass 4 "cortex_a8_neon_vqshl_vrshl_vqrshl_qqq"
1195                "cortex_a8_neon_int_1,\
1196                cortex_a8_neon_int_4,\
1197                cortex_a8_neon_bit_ops_q,\
1198                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1199                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1200                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1201                cortex_a8_neon_mla_qqq_8_16,\
1202                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1203                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1204                cortex_a8_neon_fp_vmla_ddd,\
1205                cortex_a8_neon_fp_vmla_qqq,\
1206                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1207                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1209 (define_bypass 3 "cortex_a8_neon_shift_3"
1210                "cortex_a8_neon_int_1,\
1211                cortex_a8_neon_int_4,\
1212                cortex_a8_neon_bit_ops_q,\
1213                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1214                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1215                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1216                cortex_a8_neon_mla_qqq_8_16,\
1217                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1218                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1219                cortex_a8_neon_fp_vmla_ddd,\
1220                cortex_a8_neon_fp_vmla_qqq,\
1221                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1222                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1224 (define_bypass 3 "cortex_a8_neon_shift_2"
1225                "cortex_a8_neon_int_1,\
1226                cortex_a8_neon_int_4,\
1227                cortex_a8_neon_bit_ops_q,\
1228                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1229                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1230                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1231                cortex_a8_neon_mla_qqq_8_16,\
1232                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1233                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1234                cortex_a8_neon_fp_vmla_ddd,\
1235                cortex_a8_neon_fp_vmla_qqq,\
1236                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1237                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1239 (define_bypass 2 "cortex_a8_neon_shift_1"
1240                "cortex_a8_neon_int_1,\
1241                cortex_a8_neon_int_4,\
1242                cortex_a8_neon_bit_ops_q,\
1243                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1244                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1245                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1246                cortex_a8_neon_mla_qqq_8_16,\
1247                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1248                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1249                cortex_a8_neon_fp_vmla_ddd,\
1250                cortex_a8_neon_fp_vmla_qqq,\
1251                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1252                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1254 (define_bypass 5 "cortex_a8_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar"
1255                "cortex_a8_neon_int_1,\
1256                cortex_a8_neon_int_4,\
1257                cortex_a8_neon_bit_ops_q,\
1258                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1259                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1260                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1261                cortex_a8_neon_mla_qqq_8_16,\
1262                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1263                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1264                cortex_a8_neon_fp_vmla_ddd,\
1265                cortex_a8_neon_fp_vmla_qqq,\
1266                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1267                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1269 (define_bypass 8 "cortex_a8_neon_mul_qqd_32_scalar"
1270                "cortex_a8_neon_int_1,\
1271                cortex_a8_neon_int_4,\
1272                cortex_a8_neon_bit_ops_q,\
1273                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1274                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1275                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1276                cortex_a8_neon_mla_qqq_8_16,\
1277                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1278                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1279                cortex_a8_neon_fp_vmla_ddd,\
1280                cortex_a8_neon_fp_vmla_qqq,\
1281                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1282                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1284 (define_bypass 5 "cortex_a8_neon_mul_ddd_16_scalar_32_16_long_scalar"
1285                "cortex_a8_neon_int_1,\
1286                cortex_a8_neon_int_4,\
1287                cortex_a8_neon_bit_ops_q,\
1288                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1289                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1290                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1291                cortex_a8_neon_mla_qqq_8_16,\
1292                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1293                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1294                cortex_a8_neon_fp_vmla_ddd,\
1295                cortex_a8_neon_fp_vmla_qqq,\
1296                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1297                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1299 (define_bypass 8 "cortex_a8_neon_mla_qqq_32_qqd_32_scalar"
1300                "cortex_a8_neon_int_1,\
1301                cortex_a8_neon_int_4,\
1302                cortex_a8_neon_bit_ops_q,\
1303                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1304                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1305                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1306                cortex_a8_neon_mla_qqq_8_16,\
1307                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1308                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1309                cortex_a8_neon_fp_vmla_ddd,\
1310                cortex_a8_neon_fp_vmla_qqq,\
1311                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1312                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1314 (define_bypass 6 "cortex_a8_neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long"
1315                "cortex_a8_neon_int_1,\
1316                cortex_a8_neon_int_4,\
1317                cortex_a8_neon_bit_ops_q,\
1318                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1319                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1320                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1321                cortex_a8_neon_mla_qqq_8_16,\
1322                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1323                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1324                cortex_a8_neon_fp_vmla_ddd,\
1325                cortex_a8_neon_fp_vmla_qqq,\
1326                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1327                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1329 (define_bypass 6 "cortex_a8_neon_mla_qqq_8_16"
1330                "cortex_a8_neon_int_1,\
1331                cortex_a8_neon_int_4,\
1332                cortex_a8_neon_bit_ops_q,\
1333                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1334                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1335                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1336                cortex_a8_neon_mla_qqq_8_16,\
1337                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1338                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1339                cortex_a8_neon_fp_vmla_ddd,\
1340                cortex_a8_neon_fp_vmla_qqq,\
1341                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1342                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1344 (define_bypass 5 "cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long"
1345                "cortex_a8_neon_int_1,\
1346                cortex_a8_neon_int_4,\
1347                cortex_a8_neon_bit_ops_q,\
1348                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1349                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1350                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1351                cortex_a8_neon_mla_qqq_8_16,\
1352                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1353                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1354                cortex_a8_neon_fp_vmla_ddd,\
1355                cortex_a8_neon_fp_vmla_qqq,\
1356                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1357                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1359 (define_bypass 6 "cortex_a8_neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar"
1360                "cortex_a8_neon_int_1,\
1361                cortex_a8_neon_int_4,\
1362                cortex_a8_neon_bit_ops_q,\
1363                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1364                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1365                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1366                cortex_a8_neon_mla_qqq_8_16,\
1367                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1368                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1369                cortex_a8_neon_fp_vmla_ddd,\
1370                cortex_a8_neon_fp_vmla_qqq,\
1371                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1372                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1374 (define_bypass 6 "cortex_a8_neon_mul_qqq_8_16_32_ddd_32"
1375                "cortex_a8_neon_int_1,\
1376                cortex_a8_neon_int_4,\
1377                cortex_a8_neon_bit_ops_q,\
1378                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1379                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1380                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1381                cortex_a8_neon_mla_qqq_8_16,\
1382                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1383                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1384                cortex_a8_neon_fp_vmla_ddd,\
1385                cortex_a8_neon_fp_vmla_qqq,\
1386                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1387                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1389 (define_bypass 5 "cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long"
1390                "cortex_a8_neon_int_1,\
1391                cortex_a8_neon_int_4,\
1392                cortex_a8_neon_bit_ops_q,\
1393                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1394                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1395                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1396                cortex_a8_neon_mla_qqq_8_16,\
1397                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1398                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1399                cortex_a8_neon_fp_vmla_ddd,\
1400                cortex_a8_neon_fp_vmla_qqq,\
1401                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1402                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1404 (define_bypass 6 "cortex_a8_neon_vaba_qqq"
1405                "cortex_a8_neon_int_1,\
1406                cortex_a8_neon_int_4,\
1407                cortex_a8_neon_bit_ops_q,\
1408                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1409                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1410                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1411                cortex_a8_neon_mla_qqq_8_16,\
1412                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1413                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1414                cortex_a8_neon_fp_vmla_ddd,\
1415                cortex_a8_neon_fp_vmla_qqq,\
1416                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1417                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1419 (define_bypass 5 "cortex_a8_neon_vaba"
1420                "cortex_a8_neon_int_1,\
1421                cortex_a8_neon_int_4,\
1422                cortex_a8_neon_bit_ops_q,\
1423                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1424                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1425                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1426                cortex_a8_neon_mla_qqq_8_16,\
1427                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1428                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1429                cortex_a8_neon_fp_vmla_ddd,\
1430                cortex_a8_neon_fp_vmla_qqq,\
1431                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1432                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1434 (define_bypass 3 "cortex_a8_neon_bit_ops_q"
1435                "cortex_a8_neon_int_1,\
1436                cortex_a8_neon_int_4,\
1437                cortex_a8_neon_bit_ops_q,\
1438                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1439                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1440                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1441                cortex_a8_neon_mla_qqq_8_16,\
1442                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1443                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1444                cortex_a8_neon_fp_vmla_ddd,\
1445                cortex_a8_neon_fp_vmla_qqq,\
1446                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1447                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1449 (define_bypass 3 "cortex_a8_neon_vqneg_vqabs"
1450                "cortex_a8_neon_int_1,\
1451                cortex_a8_neon_int_4,\
1452                cortex_a8_neon_bit_ops_q,\
1453                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1454                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1455                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1456                cortex_a8_neon_mla_qqq_8_16,\
1457                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1458                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1459                cortex_a8_neon_fp_vmla_ddd,\
1460                cortex_a8_neon_fp_vmla_qqq,\
1461                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1462                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1464 (define_bypass 3 "cortex_a8_neon_int_5"
1465                "cortex_a8_neon_int_1,\
1466                cortex_a8_neon_int_4,\
1467                cortex_a8_neon_bit_ops_q,\
1468                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1469                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1470                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1471                cortex_a8_neon_mla_qqq_8_16,\
1472                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1473                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1474                cortex_a8_neon_fp_vmla_ddd,\
1475                cortex_a8_neon_fp_vmla_qqq,\
1476                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1477                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1479 (define_bypass 3 "cortex_a8_neon_int_4"
1480                "cortex_a8_neon_int_1,\
1481                cortex_a8_neon_int_4,\
1482                cortex_a8_neon_bit_ops_q,\
1483                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1484                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1485                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1486                cortex_a8_neon_mla_qqq_8_16,\
1487                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1488                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1489                cortex_a8_neon_fp_vmla_ddd,\
1490                cortex_a8_neon_fp_vmla_qqq,\
1491                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1492                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1494 (define_bypass 2 "cortex_a8_neon_int_3"
1495                "cortex_a8_neon_int_1,\
1496                cortex_a8_neon_int_4,\
1497                cortex_a8_neon_bit_ops_q,\
1498                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1499                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1500                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1501                cortex_a8_neon_mla_qqq_8_16,\
1502                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1503                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1504                cortex_a8_neon_fp_vmla_ddd,\
1505                cortex_a8_neon_fp_vmla_qqq,\
1506                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1507                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1509 (define_bypass 2 "cortex_a8_neon_int_2"
1510                "cortex_a8_neon_int_1,\
1511                cortex_a8_neon_int_4,\
1512                cortex_a8_neon_bit_ops_q,\
1513                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1514                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1515                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1516                cortex_a8_neon_mla_qqq_8_16,\
1517                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1518                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1519                cortex_a8_neon_fp_vmla_ddd,\
1520                cortex_a8_neon_fp_vmla_qqq,\
1521                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1522                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1524 (define_bypass 2 "cortex_a8_neon_int_1"
1525                "cortex_a8_neon_int_1,\
1526                cortex_a8_neon_int_4,\
1527                cortex_a8_neon_bit_ops_q,\
1528                cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1529                cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1530                cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1531                cortex_a8_neon_mla_qqq_8_16,\
1532                cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1533                cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1534                cortex_a8_neon_fp_vmla_ddd,\
1535                cortex_a8_neon_fp_vmla_qqq,\
1536                cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1537                cortex_a8_neon_fp_vrecps_vrsqrts_qqq")