summaryrefslogtreecommitdiffstats
path: root/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99397.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99397.patch')
-rw-r--r--meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99397.patch3565
1 files changed, 3565 insertions, 0 deletions
diff --git a/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99397.patch b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99397.patch
new file mode 100644
index 000000000..e795d54e0
--- /dev/null
+++ b/meta-oe/recipes-devtools/gcc/gcc-4.5/linaro/gcc-4.5-linaro-r99397.patch
@@ -0,0 +1,3565 @@
12010-09-16 Andrew Stubbs <ams@codesourcery.com>
2
3 Backport from FSF:
4
5 2010-09-01 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
6
7 * config/arm/neon-schedgen.ml (core): New type.
8 (allCores): List of supported cores.
9 (availability_table): Add supported cores.
10 (collate_bypasses): Accept core as a parameter.
11 (worst_case_latencies_and_bypasses): Accept core as a
12 parameter.
13 (emit_insn_reservations): Accept core as a parameter.
14 Use tuneStr and coreStr to get tune attribute and prefix
15 for functional units.
16 (emit_bypasses): Accept core name and use it.
17 (calculate_per_core_availability_table): New.
18 (filter_core): New.
19 (calculate_core_availability_table): New.
20 (main): Use calculate_core_availablity_table.
21 * config/arm/cortex-a8-neon.md: Update copyright year.
22 Regenerated from ml file and merged in.
23 (neon_mrrc, neon_mrc): Rename to cortex_a8_neon_mrrc and
24 cortex_a8_neon_mrc.
25
26 2010-09-10 Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
27
28 * config/arm/neon-schedgen.ml (allCores): Add support for
29 Cortex-A9.
30 * config/arm/cortex-a9-neon.md: New and partially generated.
31 * config/arm/cortex-a9.md (cortex_a9_dp): Adjust for Neon.
32
33 2010-09-15 Chung-Lin Tang <cltang@codesourcery.com>
34
35 Issue #9441
36
37=== modified file 'gcc/config/arm/cortex-a8-neon.md'
38--- old/gcc/config/arm/cortex-a8-neon.md 2009-02-20 15:20:38 +0000
39+++ new/gcc/config/arm/cortex-a8-neon.md 2010-09-16 09:47:44 +0000
40@@ -182,12 +182,12 @@
41
42 ;; NEON -> core transfers.
43
44-(define_insn_reservation "neon_mrc" 20
45+(define_insn_reservation "cortex_a8_neon_mrc" 20
46 (and (eq_attr "tune" "cortexa8")
47 (eq_attr "neon_type" "neon_mrc"))
48 "cortex_a8_neon_ls")
49
50-(define_insn_reservation "neon_mrrc" 21
51+(define_insn_reservation "cortex_a8_neon_mrrc" 21
52 (and (eq_attr "tune" "cortexa8")
53 (eq_attr "neon_type" "neon_mrrc"))
54 "cortex_a8_neon_ls_2")
55@@ -196,48 +196,48 @@
56
57 ;; Instructions using this reservation read their source operands at N2, and
58 ;; produce a result at N3.
59-(define_insn_reservation "neon_int_1" 3
60+(define_insn_reservation "cortex_a8_neon_int_1" 3
61 (and (eq_attr "tune" "cortexa8")
62 (eq_attr "neon_type" "neon_int_1"))
63 "cortex_a8_neon_dp")
64
65 ;; Instructions using this reservation read their (D|Q)m operands at N1,
66 ;; their (D|Q)n operands at N2, and produce a result at N3.
67-(define_insn_reservation "neon_int_2" 3
68+(define_insn_reservation "cortex_a8_neon_int_2" 3
69 (and (eq_attr "tune" "cortexa8")
70 (eq_attr "neon_type" "neon_int_2"))
71 "cortex_a8_neon_dp")
72
73 ;; Instructions using this reservation read their source operands at N1, and
74 ;; produce a result at N3.
75-(define_insn_reservation "neon_int_3" 3
76+(define_insn_reservation "cortex_a8_neon_int_3" 3
77 (and (eq_attr "tune" "cortexa8")
78 (eq_attr "neon_type" "neon_int_3"))
79 "cortex_a8_neon_dp")
80
81 ;; Instructions using this reservation read their source operands at N2, and
82 ;; produce a result at N4.
83-(define_insn_reservation "neon_int_4" 4
84+(define_insn_reservation "cortex_a8_neon_int_4" 4
85 (and (eq_attr "tune" "cortexa8")
86 (eq_attr "neon_type" "neon_int_4"))
87 "cortex_a8_neon_dp")
88
89 ;; Instructions using this reservation read their (D|Q)m operands at N1,
90 ;; their (D|Q)n operands at N2, and produce a result at N4.
91-(define_insn_reservation "neon_int_5" 4
92+(define_insn_reservation "cortex_a8_neon_int_5" 4
93 (and (eq_attr "tune" "cortexa8")
94 (eq_attr "neon_type" "neon_int_5"))
95 "cortex_a8_neon_dp")
96
97 ;; Instructions using this reservation read their source operands at N1, and
98 ;; produce a result at N4.
99-(define_insn_reservation "neon_vqneg_vqabs" 4
100+(define_insn_reservation "cortex_a8_neon_vqneg_vqabs" 4
101 (and (eq_attr "tune" "cortexa8")
102 (eq_attr "neon_type" "neon_vqneg_vqabs"))
103 "cortex_a8_neon_dp")
104
105 ;; Instructions using this reservation produce a result at N3.
106-(define_insn_reservation "neon_vmov" 3
107+(define_insn_reservation "cortex_a8_neon_vmov" 3
108 (and (eq_attr "tune" "cortexa8")
109 (eq_attr "neon_type" "neon_vmov"))
110 "cortex_a8_neon_dp")
111@@ -245,7 +245,7 @@
112 ;; Instructions using this reservation read their (D|Q)n operands at N2,
113 ;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and
114 ;; produce a result at N6.
115-(define_insn_reservation "neon_vaba" 6
116+(define_insn_reservation "cortex_a8_neon_vaba" 6
117 (and (eq_attr "tune" "cortexa8")
118 (eq_attr "neon_type" "neon_vaba"))
119 "cortex_a8_neon_dp")
120@@ -253,35 +253,35 @@
121 ;; Instructions using this reservation read their (D|Q)n operands at N2,
122 ;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and
123 ;; produce a result at N6 on cycle 2.
124-(define_insn_reservation "neon_vaba_qqq" 7
125+(define_insn_reservation "cortex_a8_neon_vaba_qqq" 7
126 (and (eq_attr "tune" "cortexa8")
127 (eq_attr "neon_type" "neon_vaba_qqq"))
128 "cortex_a8_neon_dp_2")
129
130 ;; Instructions using this reservation read their (D|Q)m operands at N1,
131 ;; their (D|Q)d operands at N3, and produce a result at N6.
132-(define_insn_reservation "neon_vsma" 6
133+(define_insn_reservation "cortex_a8_neon_vsma" 6
134 (and (eq_attr "tune" "cortexa8")
135 (eq_attr "neon_type" "neon_vsma"))
136 "cortex_a8_neon_dp")
137
138 ;; Instructions using this reservation read their source operands at N2, and
139 ;; produce a result at N6.
140-(define_insn_reservation "neon_mul_ddd_8_16_qdd_16_8_long_32_16_long" 6
141+(define_insn_reservation "cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long" 6
142 (and (eq_attr "tune" "cortexa8")
143 (eq_attr "neon_type" "neon_mul_ddd_8_16_qdd_16_8_long_32_16_long"))
144 "cortex_a8_neon_dp")
145
146 ;; Instructions using this reservation read their source operands at N2, and
147 ;; produce a result at N6 on cycle 2.
148-(define_insn_reservation "neon_mul_qqq_8_16_32_ddd_32" 7
149+(define_insn_reservation "cortex_a8_neon_mul_qqq_8_16_32_ddd_32" 7
150 (and (eq_attr "tune" "cortexa8")
151 (eq_attr "neon_type" "neon_mul_qqq_8_16_32_ddd_32"))
152 "cortex_a8_neon_dp_2")
153
154 ;; Instructions using this reservation read their (D|Q)n operands at N2,
155 ;; their (D|Q)m operands at N1, and produce a result at N6 on cycle 2.
156-(define_insn_reservation "neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar" 7
157+(define_insn_reservation "cortex_a8_neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar" 7
158 (and (eq_attr "tune" "cortexa8")
159 (eq_attr "neon_type" "neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar"))
160 "cortex_a8_neon_dp_2")
161@@ -289,7 +289,7 @@
162 ;; Instructions using this reservation read their (D|Q)n operands at N2,
163 ;; their (D|Q)m operands at N2, their (D|Q)d operands at N3, and
164 ;; produce a result at N6.
165-(define_insn_reservation "neon_mla_ddd_8_16_qdd_16_8_long_32_16_long" 6
166+(define_insn_reservation "cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long" 6
167 (and (eq_attr "tune" "cortexa8")
168 (eq_attr "neon_type" "neon_mla_ddd_8_16_qdd_16_8_long_32_16_long"))
169 "cortex_a8_neon_dp")
170@@ -297,7 +297,7 @@
171 ;; Instructions using this reservation read their (D|Q)n operands at N2,
172 ;; their (D|Q)m operands at N2, their (D|Q)d operands at N3, and
173 ;; produce a result at N6 on cycle 2.
174-(define_insn_reservation "neon_mla_qqq_8_16" 7
175+(define_insn_reservation "cortex_a8_neon_mla_qqq_8_16" 7
176 (and (eq_attr "tune" "cortexa8")
177 (eq_attr "neon_type" "neon_mla_qqq_8_16"))
178 "cortex_a8_neon_dp_2")
179@@ -305,7 +305,7 @@
180 ;; Instructions using this reservation read their (D|Q)n operands at N2,
181 ;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and
182 ;; produce a result at N6 on cycle 2.
183-(define_insn_reservation "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long" 7
184+(define_insn_reservation "cortex_a8_neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long" 7
185 (and (eq_attr "tune" "cortexa8")
186 (eq_attr "neon_type" "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long"))
187 "cortex_a8_neon_dp_2")
188@@ -313,21 +313,21 @@
189 ;; Instructions using this reservation read their (D|Q)n operands at N2,
190 ;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and
191 ;; produce a result at N6 on cycle 4.
192-(define_insn_reservation "neon_mla_qqq_32_qqd_32_scalar" 9
193+(define_insn_reservation "cortex_a8_neon_mla_qqq_32_qqd_32_scalar" 9
194 (and (eq_attr "tune" "cortexa8")
195 (eq_attr "neon_type" "neon_mla_qqq_32_qqd_32_scalar"))
196 "cortex_a8_neon_dp_4")
197
198 ;; Instructions using this reservation read their (D|Q)n operands at N2,
199 ;; their (D|Q)m operands at N1, and produce a result at N6.
200-(define_insn_reservation "neon_mul_ddd_16_scalar_32_16_long_scalar" 6
201+(define_insn_reservation "cortex_a8_neon_mul_ddd_16_scalar_32_16_long_scalar" 6
202 (and (eq_attr "tune" "cortexa8")
203 (eq_attr "neon_type" "neon_mul_ddd_16_scalar_32_16_long_scalar"))
204 "cortex_a8_neon_dp")
205
206 ;; Instructions using this reservation read their (D|Q)n operands at N2,
207 ;; their (D|Q)m operands at N1, and produce a result at N6 on cycle 4.
208-(define_insn_reservation "neon_mul_qqd_32_scalar" 9
209+(define_insn_reservation "cortex_a8_neon_mul_qqd_32_scalar" 9
210 (and (eq_attr "tune" "cortexa8")
211 (eq_attr "neon_type" "neon_mul_qqd_32_scalar"))
212 "cortex_a8_neon_dp_4")
213@@ -335,84 +335,84 @@
214 ;; Instructions using this reservation read their (D|Q)n operands at N2,
215 ;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and
216 ;; produce a result at N6.
217-(define_insn_reservation "neon_mla_ddd_16_scalar_qdd_32_16_long_scalar" 6
218+(define_insn_reservation "cortex_a8_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar" 6
219 (and (eq_attr "tune" "cortexa8")
220 (eq_attr "neon_type" "neon_mla_ddd_16_scalar_qdd_32_16_long_scalar"))
221 "cortex_a8_neon_dp")
222
223 ;; Instructions using this reservation read their source operands at N1, and
224 ;; produce a result at N3.
225-(define_insn_reservation "neon_shift_1" 3
226+(define_insn_reservation "cortex_a8_neon_shift_1" 3
227 (and (eq_attr "tune" "cortexa8")
228 (eq_attr "neon_type" "neon_shift_1"))
229 "cortex_a8_neon_dp")
230
231 ;; Instructions using this reservation read their source operands at N1, and
232 ;; produce a result at N4.
233-(define_insn_reservation "neon_shift_2" 4
234+(define_insn_reservation "cortex_a8_neon_shift_2" 4
235 (and (eq_attr "tune" "cortexa8")
236 (eq_attr "neon_type" "neon_shift_2"))
237 "cortex_a8_neon_dp")
238
239 ;; Instructions using this reservation read their source operands at N1, and
240 ;; produce a result at N3 on cycle 2.
241-(define_insn_reservation "neon_shift_3" 4
242+(define_insn_reservation "cortex_a8_neon_shift_3" 4
243 (and (eq_attr "tune" "cortexa8")
244 (eq_attr "neon_type" "neon_shift_3"))
245 "cortex_a8_neon_dp_2")
246
247 ;; Instructions using this reservation read their source operands at N1, and
248 ;; produce a result at N1.
249-(define_insn_reservation "neon_vshl_ddd" 1
250+(define_insn_reservation "cortex_a8_neon_vshl_ddd" 1
251 (and (eq_attr "tune" "cortexa8")
252 (eq_attr "neon_type" "neon_vshl_ddd"))
253 "cortex_a8_neon_dp")
254
255 ;; Instructions using this reservation read their source operands at N1, and
256 ;; produce a result at N4 on cycle 2.
257-(define_insn_reservation "neon_vqshl_vrshl_vqrshl_qqq" 5
258+(define_insn_reservation "cortex_a8_neon_vqshl_vrshl_vqrshl_qqq" 5
259 (and (eq_attr "tune" "cortexa8")
260 (eq_attr "neon_type" "neon_vqshl_vrshl_vqrshl_qqq"))
261 "cortex_a8_neon_dp_2")
262
263 ;; Instructions using this reservation read their (D|Q)m operands at N1,
264 ;; their (D|Q)d operands at N3, and produce a result at N6.
265-(define_insn_reservation "neon_vsra_vrsra" 6
266+(define_insn_reservation "cortex_a8_neon_vsra_vrsra" 6
267 (and (eq_attr "tune" "cortexa8")
268 (eq_attr "neon_type" "neon_vsra_vrsra"))
269 "cortex_a8_neon_dp")
270
271 ;; Instructions using this reservation read their source operands at N2, and
272 ;; produce a result at N5.
273-(define_insn_reservation "neon_fp_vadd_ddd_vabs_dd" 5
274+(define_insn_reservation "cortex_a8_neon_fp_vadd_ddd_vabs_dd" 5
275 (and (eq_attr "tune" "cortexa8")
276 (eq_attr "neon_type" "neon_fp_vadd_ddd_vabs_dd"))
277 "cortex_a8_neon_fadd")
278
279 ;; Instructions using this reservation read their source operands at N2, and
280 ;; produce a result at N5 on cycle 2.
281-(define_insn_reservation "neon_fp_vadd_qqq_vabs_qq" 6
282+(define_insn_reservation "cortex_a8_neon_fp_vadd_qqq_vabs_qq" 6
283 (and (eq_attr "tune" "cortexa8")
284 (eq_attr "neon_type" "neon_fp_vadd_qqq_vabs_qq"))
285 "cortex_a8_neon_fadd_2")
286
287 ;; Instructions using this reservation read their source operands at N1, and
288 ;; produce a result at N5.
289-(define_insn_reservation "neon_fp_vsum" 5
290+(define_insn_reservation "cortex_a8_neon_fp_vsum" 5
291 (and (eq_attr "tune" "cortexa8")
292 (eq_attr "neon_type" "neon_fp_vsum"))
293 "cortex_a8_neon_fadd")
294
295 ;; Instructions using this reservation read their (D|Q)n operands at N2,
296 ;; their (D|Q)m operands at N1, and produce a result at N5.
297-(define_insn_reservation "neon_fp_vmul_ddd" 5
298+(define_insn_reservation "cortex_a8_neon_fp_vmul_ddd" 5
299 (and (eq_attr "tune" "cortexa8")
300 (eq_attr "neon_type" "neon_fp_vmul_ddd"))
301 "cortex_a8_neon_dp")
302
303 ;; Instructions using this reservation read their (D|Q)n operands at N2,
304 ;; their (D|Q)m operands at N1, and produce a result at N5 on cycle 2.
305-(define_insn_reservation "neon_fp_vmul_qqd" 6
306+(define_insn_reservation "cortex_a8_neon_fp_vmul_qqd" 6
307 (and (eq_attr "tune" "cortexa8")
308 (eq_attr "neon_type" "neon_fp_vmul_qqd"))
309 "cortex_a8_neon_dp_2")
310@@ -420,7 +420,7 @@
311 ;; Instructions using this reservation read their (D|Q)n operands at N2,
312 ;; their (D|Q)m operands at N2, their (D|Q)d operands at N3, and
313 ;; produce a result at N9.
314-(define_insn_reservation "neon_fp_vmla_ddd" 9
315+(define_insn_reservation "cortex_a8_neon_fp_vmla_ddd" 9
316 (and (eq_attr "tune" "cortexa8")
317 (eq_attr "neon_type" "neon_fp_vmla_ddd"))
318 "cortex_a8_neon_fmul_then_fadd")
319@@ -428,7 +428,7 @@
320 ;; Instructions using this reservation read their (D|Q)n operands at N2,
321 ;; their (D|Q)m operands at N2, their (D|Q)d operands at N3, and
322 ;; produce a result at N9 on cycle 2.
323-(define_insn_reservation "neon_fp_vmla_qqq" 10
324+(define_insn_reservation "cortex_a8_neon_fp_vmla_qqq" 10
325 (and (eq_attr "tune" "cortexa8")
326 (eq_attr "neon_type" "neon_fp_vmla_qqq"))
327 "cortex_a8_neon_fmul_then_fadd_2")
328@@ -436,7 +436,7 @@
329 ;; Instructions using this reservation read their (D|Q)n operands at N2,
330 ;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and
331 ;; produce a result at N9.
332-(define_insn_reservation "neon_fp_vmla_ddd_scalar" 9
333+(define_insn_reservation "cortex_a8_neon_fp_vmla_ddd_scalar" 9
334 (and (eq_attr "tune" "cortexa8")
335 (eq_attr "neon_type" "neon_fp_vmla_ddd_scalar"))
336 "cortex_a8_neon_fmul_then_fadd")
337@@ -444,869 +444,869 @@
338 ;; Instructions using this reservation read their (D|Q)n operands at N2,
339 ;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and
340 ;; produce a result at N9 on cycle 2.
341-(define_insn_reservation "neon_fp_vmla_qqq_scalar" 10
342+(define_insn_reservation "cortex_a8_neon_fp_vmla_qqq_scalar" 10
343 (and (eq_attr "tune" "cortexa8")
344 (eq_attr "neon_type" "neon_fp_vmla_qqq_scalar"))
345 "cortex_a8_neon_fmul_then_fadd_2")
346
347 ;; Instructions using this reservation read their source operands at N2, and
348 ;; produce a result at N9.
349-(define_insn_reservation "neon_fp_vrecps_vrsqrts_ddd" 9
350+(define_insn_reservation "cortex_a8_neon_fp_vrecps_vrsqrts_ddd" 9
351 (and (eq_attr "tune" "cortexa8")
352 (eq_attr "neon_type" "neon_fp_vrecps_vrsqrts_ddd"))
353 "cortex_a8_neon_fmul_then_fadd")
354
355 ;; Instructions using this reservation read their source operands at N2, and
356 ;; produce a result at N9 on cycle 2.
357-(define_insn_reservation "neon_fp_vrecps_vrsqrts_qqq" 10
358+(define_insn_reservation "cortex_a8_neon_fp_vrecps_vrsqrts_qqq" 10
359 (and (eq_attr "tune" "cortexa8")
360 (eq_attr "neon_type" "neon_fp_vrecps_vrsqrts_qqq"))
361 "cortex_a8_neon_fmul_then_fadd_2")
362
363 ;; Instructions using this reservation read their source operands at N1, and
364 ;; produce a result at N2.
365-(define_insn_reservation "neon_bp_simple" 2
366+(define_insn_reservation "cortex_a8_neon_bp_simple" 2
367 (and (eq_attr "tune" "cortexa8")
368 (eq_attr "neon_type" "neon_bp_simple"))
369 "cortex_a8_neon_perm")
370
371 ;; Instructions using this reservation read their source operands at N1, and
372 ;; produce a result at N2 on cycle 2.
373-(define_insn_reservation "neon_bp_2cycle" 3
374+(define_insn_reservation "cortex_a8_neon_bp_2cycle" 3
375 (and (eq_attr "tune" "cortexa8")
376 (eq_attr "neon_type" "neon_bp_2cycle"))
377 "cortex_a8_neon_perm_2")
378
379 ;; Instructions using this reservation read their source operands at N1, and
380 ;; produce a result at N2 on cycle 3.
381-(define_insn_reservation "neon_bp_3cycle" 4
382+(define_insn_reservation "cortex_a8_neon_bp_3cycle" 4
383 (and (eq_attr "tune" "cortexa8")
384 (eq_attr "neon_type" "neon_bp_3cycle"))
385 "cortex_a8_neon_perm_3")
386
387 ;; Instructions using this reservation produce a result at N1.
388-(define_insn_reservation "neon_ldr" 1
389+(define_insn_reservation "cortex_a8_neon_ldr" 1
390 (and (eq_attr "tune" "cortexa8")
391 (eq_attr "neon_type" "neon_ldr"))
392 "cortex_a8_neon_ls")
393
394 ;; Instructions using this reservation read their source operands at N1.
395-(define_insn_reservation "neon_str" 0
396+(define_insn_reservation "cortex_a8_neon_str" 0
397 (and (eq_attr "tune" "cortexa8")
398 (eq_attr "neon_type" "neon_str"))
399 "cortex_a8_neon_ls")
400
401 ;; Instructions using this reservation produce a result at N1 on cycle 2.
402-(define_insn_reservation "neon_vld1_1_2_regs" 2
403+(define_insn_reservation "cortex_a8_neon_vld1_1_2_regs" 2
404 (and (eq_attr "tune" "cortexa8")
405 (eq_attr "neon_type" "neon_vld1_1_2_regs"))
406 "cortex_a8_neon_ls_2")
407
408 ;; Instructions using this reservation produce a result at N1 on cycle 3.
409-(define_insn_reservation "neon_vld1_3_4_regs" 3
410+(define_insn_reservation "cortex_a8_neon_vld1_3_4_regs" 3
411 (and (eq_attr "tune" "cortexa8")
412 (eq_attr "neon_type" "neon_vld1_3_4_regs"))
413 "cortex_a8_neon_ls_3")
414
415 ;; Instructions using this reservation produce a result at N2 on cycle 2.
416-(define_insn_reservation "neon_vld2_2_regs_vld1_vld2_all_lanes" 3
417+(define_insn_reservation "cortex_a8_neon_vld2_2_regs_vld1_vld2_all_lanes" 3
418 (and (eq_attr "tune" "cortexa8")
419 (eq_attr "neon_type" "neon_vld2_2_regs_vld1_vld2_all_lanes"))
420 "cortex_a8_neon_ls_2")
421
422 ;; Instructions using this reservation produce a result at N2 on cycle 3.
423-(define_insn_reservation "neon_vld2_4_regs" 4
424+(define_insn_reservation "cortex_a8_neon_vld2_4_regs" 4
425 (and (eq_attr "tune" "cortexa8")
426 (eq_attr "neon_type" "neon_vld2_4_regs"))
427 "cortex_a8_neon_ls_3")
428
429 ;; Instructions using this reservation produce a result at N2 on cycle 4.
430-(define_insn_reservation "neon_vld3_vld4" 5
431+(define_insn_reservation "cortex_a8_neon_vld3_vld4" 5
432 (and (eq_attr "tune" "cortexa8")
433 (eq_attr "neon_type" "neon_vld3_vld4"))
434 "cortex_a8_neon_ls_4")
435
436 ;; Instructions using this reservation read their source operands at N1.
437-(define_insn_reservation "neon_vst1_1_2_regs_vst2_2_regs" 0
438+(define_insn_reservation "cortex_a8_neon_vst1_1_2_regs_vst2_2_regs" 0
439 (and (eq_attr "tune" "cortexa8")
440 (eq_attr "neon_type" "neon_vst1_1_2_regs_vst2_2_regs"))
441 "cortex_a8_neon_ls_2")
442
443 ;; Instructions using this reservation read their source operands at N1.
444-(define_insn_reservation "neon_vst1_3_4_regs" 0
445+(define_insn_reservation "cortex_a8_neon_vst1_3_4_regs" 0
446 (and (eq_attr "tune" "cortexa8")
447 (eq_attr "neon_type" "neon_vst1_3_4_regs"))
448 "cortex_a8_neon_ls_3")
449
450 ;; Instructions using this reservation read their source operands at N1.
451-(define_insn_reservation "neon_vst2_4_regs_vst3_vst4" 0
452+(define_insn_reservation "cortex_a8_neon_vst2_4_regs_vst3_vst4" 0
453 (and (eq_attr "tune" "cortexa8")
454 (eq_attr "neon_type" "neon_vst2_4_regs_vst3_vst4"))
455 "cortex_a8_neon_ls_4")
456
457 ;; Instructions using this reservation read their source operands at N1.
458-(define_insn_reservation "neon_vst3_vst4" 0
459+(define_insn_reservation "cortex_a8_neon_vst3_vst4" 0
460 (and (eq_attr "tune" "cortexa8")
461 (eq_attr "neon_type" "neon_vst3_vst4"))
462 "cortex_a8_neon_ls_4")
463
464 ;; Instructions using this reservation read their source operands at N1, and
465 ;; produce a result at N2 on cycle 3.
466-(define_insn_reservation "neon_vld1_vld2_lane" 4
467+(define_insn_reservation "cortex_a8_neon_vld1_vld2_lane" 4
468 (and (eq_attr "tune" "cortexa8")
469 (eq_attr "neon_type" "neon_vld1_vld2_lane"))
470 "cortex_a8_neon_ls_3")
471
472 ;; Instructions using this reservation read their source operands at N1, and
473 ;; produce a result at N2 on cycle 5.
474-(define_insn_reservation "neon_vld3_vld4_lane" 6
475+(define_insn_reservation "cortex_a8_neon_vld3_vld4_lane" 6
476 (and (eq_attr "tune" "cortexa8")
477 (eq_attr "neon_type" "neon_vld3_vld4_lane"))
478 "cortex_a8_neon_ls_5")
479
480 ;; Instructions using this reservation read their source operands at N1.
481-(define_insn_reservation "neon_vst1_vst2_lane" 0
482+(define_insn_reservation "cortex_a8_neon_vst1_vst2_lane" 0
483 (and (eq_attr "tune" "cortexa8")
484 (eq_attr "neon_type" "neon_vst1_vst2_lane"))
485 "cortex_a8_neon_ls_2")
486
487 ;; Instructions using this reservation read their source operands at N1.
488-(define_insn_reservation "neon_vst3_vst4_lane" 0
489+(define_insn_reservation "cortex_a8_neon_vst3_vst4_lane" 0
490 (and (eq_attr "tune" "cortexa8")
491 (eq_attr "neon_type" "neon_vst3_vst4_lane"))
492 "cortex_a8_neon_ls_3")
493
494 ;; Instructions using this reservation produce a result at N2 on cycle 2.
495-(define_insn_reservation "neon_vld3_vld4_all_lanes" 3
496+(define_insn_reservation "cortex_a8_neon_vld3_vld4_all_lanes" 3
497 (and (eq_attr "tune" "cortexa8")
498 (eq_attr "neon_type" "neon_vld3_vld4_all_lanes"))
499 "cortex_a8_neon_ls_3")
500
501 ;; Instructions using this reservation produce a result at N2.
502-(define_insn_reservation "neon_mcr" 2
503+(define_insn_reservation "cortex_a8_neon_mcr" 2
504 (and (eq_attr "tune" "cortexa8")
505 (eq_attr "neon_type" "neon_mcr"))
506 "cortex_a8_neon_perm")
507
508 ;; Instructions using this reservation produce a result at N2.
509-(define_insn_reservation "neon_mcr_2_mcrr" 2
510+(define_insn_reservation "cortex_a8_neon_mcr_2_mcrr" 2
511 (and (eq_attr "tune" "cortexa8")
512 (eq_attr "neon_type" "neon_mcr_2_mcrr"))
513 "cortex_a8_neon_perm_2")
514
515 ;; Exceptions to the default latencies.
516
517-(define_bypass 1 "neon_mcr_2_mcrr"
518- "neon_int_1,\
519- neon_int_4,\
520- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
521- neon_mul_qqq_8_16_32_ddd_32,\
522- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
523- neon_mla_qqq_8_16,\
524- neon_fp_vadd_ddd_vabs_dd,\
525- neon_fp_vadd_qqq_vabs_qq,\
526- neon_fp_vmla_ddd,\
527- neon_fp_vmla_qqq,\
528- neon_fp_vrecps_vrsqrts_ddd,\
529- neon_fp_vrecps_vrsqrts_qqq")
530-
531-(define_bypass 1 "neon_mcr"
532- "neon_int_1,\
533- neon_int_4,\
534- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
535- neon_mul_qqq_8_16_32_ddd_32,\
536- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
537- neon_mla_qqq_8_16,\
538- neon_fp_vadd_ddd_vabs_dd,\
539- neon_fp_vadd_qqq_vabs_qq,\
540- neon_fp_vmla_ddd,\
541- neon_fp_vmla_qqq,\
542- neon_fp_vrecps_vrsqrts_ddd,\
543- neon_fp_vrecps_vrsqrts_qqq")
544-
545-(define_bypass 2 "neon_vld3_vld4_all_lanes"
546- "neon_int_1,\
547- neon_int_4,\
548- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
549- neon_mul_qqq_8_16_32_ddd_32,\
550- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
551- neon_mla_qqq_8_16,\
552- neon_fp_vadd_ddd_vabs_dd,\
553- neon_fp_vadd_qqq_vabs_qq,\
554- neon_fp_vmla_ddd,\
555- neon_fp_vmla_qqq,\
556- neon_fp_vrecps_vrsqrts_ddd,\
557- neon_fp_vrecps_vrsqrts_qqq")
558-
559-(define_bypass 5 "neon_vld3_vld4_lane"
560- "neon_int_1,\
561- neon_int_4,\
562- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
563- neon_mul_qqq_8_16_32_ddd_32,\
564- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
565- neon_mla_qqq_8_16,\
566- neon_fp_vadd_ddd_vabs_dd,\
567- neon_fp_vadd_qqq_vabs_qq,\
568- neon_fp_vmla_ddd,\
569- neon_fp_vmla_qqq,\
570- neon_fp_vrecps_vrsqrts_ddd,\
571- neon_fp_vrecps_vrsqrts_qqq")
572-
573-(define_bypass 3 "neon_vld1_vld2_lane"
574- "neon_int_1,\
575- neon_int_4,\
576- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
577- neon_mul_qqq_8_16_32_ddd_32,\
578- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
579- neon_mla_qqq_8_16,\
580- neon_fp_vadd_ddd_vabs_dd,\
581- neon_fp_vadd_qqq_vabs_qq,\
582- neon_fp_vmla_ddd,\
583- neon_fp_vmla_qqq,\
584- neon_fp_vrecps_vrsqrts_ddd,\
585- neon_fp_vrecps_vrsqrts_qqq")
586-
587-(define_bypass 4 "neon_vld3_vld4"
588- "neon_int_1,\
589- neon_int_4,\
590- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
591- neon_mul_qqq_8_16_32_ddd_32,\
592- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
593- neon_mla_qqq_8_16,\
594- neon_fp_vadd_ddd_vabs_dd,\
595- neon_fp_vadd_qqq_vabs_qq,\
596- neon_fp_vmla_ddd,\
597- neon_fp_vmla_qqq,\
598- neon_fp_vrecps_vrsqrts_ddd,\
599- neon_fp_vrecps_vrsqrts_qqq")
600-
601-(define_bypass 3 "neon_vld2_4_regs"
602- "neon_int_1,\
603- neon_int_4,\
604- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
605- neon_mul_qqq_8_16_32_ddd_32,\
606- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
607- neon_mla_qqq_8_16,\
608- neon_fp_vadd_ddd_vabs_dd,\
609- neon_fp_vadd_qqq_vabs_qq,\
610- neon_fp_vmla_ddd,\
611- neon_fp_vmla_qqq,\
612- neon_fp_vrecps_vrsqrts_ddd,\
613- neon_fp_vrecps_vrsqrts_qqq")
614-
615-(define_bypass 2 "neon_vld2_2_regs_vld1_vld2_all_lanes"
616- "neon_int_1,\
617- neon_int_4,\
618- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
619- neon_mul_qqq_8_16_32_ddd_32,\
620- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
621- neon_mla_qqq_8_16,\
622- neon_fp_vadd_ddd_vabs_dd,\
623- neon_fp_vadd_qqq_vabs_qq,\
624- neon_fp_vmla_ddd,\
625- neon_fp_vmla_qqq,\
626- neon_fp_vrecps_vrsqrts_ddd,\
627- neon_fp_vrecps_vrsqrts_qqq")
628-
629-(define_bypass 2 "neon_vld1_3_4_regs"
630- "neon_int_1,\
631- neon_int_4,\
632- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
633- neon_mul_qqq_8_16_32_ddd_32,\
634- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
635- neon_mla_qqq_8_16,\
636- neon_fp_vadd_ddd_vabs_dd,\
637- neon_fp_vadd_qqq_vabs_qq,\
638- neon_fp_vmla_ddd,\
639- neon_fp_vmla_qqq,\
640- neon_fp_vrecps_vrsqrts_ddd,\
641- neon_fp_vrecps_vrsqrts_qqq")
642-
643-(define_bypass 1 "neon_vld1_1_2_regs"
644- "neon_int_1,\
645- neon_int_4,\
646- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
647- neon_mul_qqq_8_16_32_ddd_32,\
648- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
649- neon_mla_qqq_8_16,\
650- neon_fp_vadd_ddd_vabs_dd,\
651- neon_fp_vadd_qqq_vabs_qq,\
652- neon_fp_vmla_ddd,\
653- neon_fp_vmla_qqq,\
654- neon_fp_vrecps_vrsqrts_ddd,\
655- neon_fp_vrecps_vrsqrts_qqq")
656-
657-(define_bypass 0 "neon_ldr"
658- "neon_int_1,\
659- neon_int_4,\
660- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
661- neon_mul_qqq_8_16_32_ddd_32,\
662- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
663- neon_mla_qqq_8_16,\
664- neon_fp_vadd_ddd_vabs_dd,\
665- neon_fp_vadd_qqq_vabs_qq,\
666- neon_fp_vmla_ddd,\
667- neon_fp_vmla_qqq,\
668- neon_fp_vrecps_vrsqrts_ddd,\
669- neon_fp_vrecps_vrsqrts_qqq")
670-
671-(define_bypass 3 "neon_bp_3cycle"
672- "neon_int_1,\
673- neon_int_4,\
674- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
675- neon_mul_qqq_8_16_32_ddd_32,\
676- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
677- neon_mla_qqq_8_16,\
678- neon_fp_vadd_ddd_vabs_dd,\
679- neon_fp_vadd_qqq_vabs_qq,\
680- neon_fp_vmla_ddd,\
681- neon_fp_vmla_qqq,\
682- neon_fp_vrecps_vrsqrts_ddd,\
683- neon_fp_vrecps_vrsqrts_qqq")
684-
685-(define_bypass 2 "neon_bp_2cycle"
686- "neon_int_1,\
687- neon_int_4,\
688- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
689- neon_mul_qqq_8_16_32_ddd_32,\
690- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
691- neon_mla_qqq_8_16,\
692- neon_fp_vadd_ddd_vabs_dd,\
693- neon_fp_vadd_qqq_vabs_qq,\
694- neon_fp_vmla_ddd,\
695- neon_fp_vmla_qqq,\
696- neon_fp_vrecps_vrsqrts_ddd,\
697- neon_fp_vrecps_vrsqrts_qqq")
698-
699-(define_bypass 1 "neon_bp_simple"
700- "neon_int_1,\
701- neon_int_4,\
702- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
703- neon_mul_qqq_8_16_32_ddd_32,\
704- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
705- neon_mla_qqq_8_16,\
706- neon_fp_vadd_ddd_vabs_dd,\
707- neon_fp_vadd_qqq_vabs_qq,\
708- neon_fp_vmla_ddd,\
709- neon_fp_vmla_qqq,\
710- neon_fp_vrecps_vrsqrts_ddd,\
711- neon_fp_vrecps_vrsqrts_qqq")
712-
713-(define_bypass 9 "neon_fp_vrecps_vrsqrts_qqq"
714- "neon_int_1,\
715- neon_int_4,\
716- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
717- neon_mul_qqq_8_16_32_ddd_32,\
718- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
719- neon_mla_qqq_8_16,\
720- neon_fp_vadd_ddd_vabs_dd,\
721- neon_fp_vadd_qqq_vabs_qq,\
722- neon_fp_vmla_ddd,\
723- neon_fp_vmla_qqq,\
724- neon_fp_vrecps_vrsqrts_ddd,\
725- neon_fp_vrecps_vrsqrts_qqq")
726-
727-(define_bypass 8 "neon_fp_vrecps_vrsqrts_ddd"
728- "neon_int_1,\
729- neon_int_4,\
730- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
731- neon_mul_qqq_8_16_32_ddd_32,\
732- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
733- neon_mla_qqq_8_16,\
734- neon_fp_vadd_ddd_vabs_dd,\
735- neon_fp_vadd_qqq_vabs_qq,\
736- neon_fp_vmla_ddd,\
737- neon_fp_vmla_qqq,\
738- neon_fp_vrecps_vrsqrts_ddd,\
739- neon_fp_vrecps_vrsqrts_qqq")
740-
741-(define_bypass 9 "neon_fp_vmla_qqq_scalar"
742- "neon_int_1,\
743- neon_int_4,\
744- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
745- neon_mul_qqq_8_16_32_ddd_32,\
746- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
747- neon_mla_qqq_8_16,\
748- neon_fp_vadd_ddd_vabs_dd,\
749- neon_fp_vadd_qqq_vabs_qq,\
750- neon_fp_vmla_ddd,\
751- neon_fp_vmla_qqq,\
752- neon_fp_vrecps_vrsqrts_ddd,\
753- neon_fp_vrecps_vrsqrts_qqq")
754-
755-(define_bypass 8 "neon_fp_vmla_ddd_scalar"
756- "neon_int_1,\
757- neon_int_4,\
758- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
759- neon_mul_qqq_8_16_32_ddd_32,\
760- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
761- neon_mla_qqq_8_16,\
762- neon_fp_vadd_ddd_vabs_dd,\
763- neon_fp_vadd_qqq_vabs_qq,\
764- neon_fp_vmla_ddd,\
765- neon_fp_vmla_qqq,\
766- neon_fp_vrecps_vrsqrts_ddd,\
767- neon_fp_vrecps_vrsqrts_qqq")
768-
769-(define_bypass 9 "neon_fp_vmla_qqq"
770- "neon_int_1,\
771- neon_int_4,\
772- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
773- neon_mul_qqq_8_16_32_ddd_32,\
774- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
775- neon_mla_qqq_8_16,\
776- neon_fp_vadd_ddd_vabs_dd,\
777- neon_fp_vadd_qqq_vabs_qq,\
778- neon_fp_vmla_ddd,\
779- neon_fp_vmla_qqq,\
780- neon_fp_vrecps_vrsqrts_ddd,\
781- neon_fp_vrecps_vrsqrts_qqq")
782-
783-(define_bypass 8 "neon_fp_vmla_ddd"
784- "neon_int_1,\
785- neon_int_4,\
786- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
787- neon_mul_qqq_8_16_32_ddd_32,\
788- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
789- neon_mla_qqq_8_16,\
790- neon_fp_vadd_ddd_vabs_dd,\
791- neon_fp_vadd_qqq_vabs_qq,\
792- neon_fp_vmla_ddd,\
793- neon_fp_vmla_qqq,\
794- neon_fp_vrecps_vrsqrts_ddd,\
795- neon_fp_vrecps_vrsqrts_qqq")
796-
797-(define_bypass 5 "neon_fp_vmul_qqd"
798- "neon_int_1,\
799- neon_int_4,\
800- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
801- neon_mul_qqq_8_16_32_ddd_32,\
802- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
803- neon_mla_qqq_8_16,\
804- neon_fp_vadd_ddd_vabs_dd,\
805- neon_fp_vadd_qqq_vabs_qq,\
806- neon_fp_vmla_ddd,\
807- neon_fp_vmla_qqq,\
808- neon_fp_vrecps_vrsqrts_ddd,\
809- neon_fp_vrecps_vrsqrts_qqq")
810-
811-(define_bypass 4 "neon_fp_vmul_ddd"
812- "neon_int_1,\
813- neon_int_4,\
814- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
815- neon_mul_qqq_8_16_32_ddd_32,\
816- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
817- neon_mla_qqq_8_16,\
818- neon_fp_vadd_ddd_vabs_dd,\
819- neon_fp_vadd_qqq_vabs_qq,\
820- neon_fp_vmla_ddd,\
821- neon_fp_vmla_qqq,\
822- neon_fp_vrecps_vrsqrts_ddd,\
823- neon_fp_vrecps_vrsqrts_qqq")
824-
825-(define_bypass 4 "neon_fp_vsum"
826- "neon_int_1,\
827- neon_int_4,\
828- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
829- neon_mul_qqq_8_16_32_ddd_32,\
830- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
831- neon_mla_qqq_8_16,\
832- neon_fp_vadd_ddd_vabs_dd,\
833- neon_fp_vadd_qqq_vabs_qq,\
834- neon_fp_vmla_ddd,\
835- neon_fp_vmla_qqq,\
836- neon_fp_vrecps_vrsqrts_ddd,\
837- neon_fp_vrecps_vrsqrts_qqq")
838-
839-(define_bypass 5 "neon_fp_vadd_qqq_vabs_qq"
840- "neon_int_1,\
841- neon_int_4,\
842- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
843- neon_mul_qqq_8_16_32_ddd_32,\
844- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
845- neon_mla_qqq_8_16,\
846- neon_fp_vadd_ddd_vabs_dd,\
847- neon_fp_vadd_qqq_vabs_qq,\
848- neon_fp_vmla_ddd,\
849- neon_fp_vmla_qqq,\
850- neon_fp_vrecps_vrsqrts_ddd,\
851- neon_fp_vrecps_vrsqrts_qqq")
852-
853-(define_bypass 4 "neon_fp_vadd_ddd_vabs_dd"
854- "neon_int_1,\
855- neon_int_4,\
856- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
857- neon_mul_qqq_8_16_32_ddd_32,\
858- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
859- neon_mla_qqq_8_16,\
860- neon_fp_vadd_ddd_vabs_dd,\
861- neon_fp_vadd_qqq_vabs_qq,\
862- neon_fp_vmla_ddd,\
863- neon_fp_vmla_qqq,\
864- neon_fp_vrecps_vrsqrts_ddd,\
865- neon_fp_vrecps_vrsqrts_qqq")
866-
867-(define_bypass 5 "neon_vsra_vrsra"
868- "neon_int_1,\
869- neon_int_4,\
870- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
871- neon_mul_qqq_8_16_32_ddd_32,\
872- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
873- neon_mla_qqq_8_16,\
874- neon_fp_vadd_ddd_vabs_dd,\
875- neon_fp_vadd_qqq_vabs_qq,\
876- neon_fp_vmla_ddd,\
877- neon_fp_vmla_qqq,\
878- neon_fp_vrecps_vrsqrts_ddd,\
879- neon_fp_vrecps_vrsqrts_qqq")
880-
881-(define_bypass 4 "neon_vqshl_vrshl_vqrshl_qqq"
882- "neon_int_1,\
883- neon_int_4,\
884- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
885- neon_mul_qqq_8_16_32_ddd_32,\
886- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
887- neon_mla_qqq_8_16,\
888- neon_fp_vadd_ddd_vabs_dd,\
889- neon_fp_vadd_qqq_vabs_qq,\
890- neon_fp_vmla_ddd,\
891- neon_fp_vmla_qqq,\
892- neon_fp_vrecps_vrsqrts_ddd,\
893- neon_fp_vrecps_vrsqrts_qqq")
894-
895-(define_bypass 0 "neon_vshl_ddd"
896- "neon_int_1,\
897- neon_int_4,\
898- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
899- neon_mul_qqq_8_16_32_ddd_32,\
900- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
901- neon_mla_qqq_8_16,\
902- neon_fp_vadd_ddd_vabs_dd,\
903- neon_fp_vadd_qqq_vabs_qq,\
904- neon_fp_vmla_ddd,\
905- neon_fp_vmla_qqq,\
906- neon_fp_vrecps_vrsqrts_ddd,\
907- neon_fp_vrecps_vrsqrts_qqq")
908-
909-(define_bypass 3 "neon_shift_3"
910- "neon_int_1,\
911- neon_int_4,\
912- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
913- neon_mul_qqq_8_16_32_ddd_32,\
914- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
915- neon_mla_qqq_8_16,\
916- neon_fp_vadd_ddd_vabs_dd,\
917- neon_fp_vadd_qqq_vabs_qq,\
918- neon_fp_vmla_ddd,\
919- neon_fp_vmla_qqq,\
920- neon_fp_vrecps_vrsqrts_ddd,\
921- neon_fp_vrecps_vrsqrts_qqq")
922-
923-(define_bypass 3 "neon_shift_2"
924- "neon_int_1,\
925- neon_int_4,\
926- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
927- neon_mul_qqq_8_16_32_ddd_32,\
928- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
929- neon_mla_qqq_8_16,\
930- neon_fp_vadd_ddd_vabs_dd,\
931- neon_fp_vadd_qqq_vabs_qq,\
932- neon_fp_vmla_ddd,\
933- neon_fp_vmla_qqq,\
934- neon_fp_vrecps_vrsqrts_ddd,\
935- neon_fp_vrecps_vrsqrts_qqq")
936-
937-(define_bypass 2 "neon_shift_1"
938- "neon_int_1,\
939- neon_int_4,\
940- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
941- neon_mul_qqq_8_16_32_ddd_32,\
942- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
943- neon_mla_qqq_8_16,\
944- neon_fp_vadd_ddd_vabs_dd,\
945- neon_fp_vadd_qqq_vabs_qq,\
946- neon_fp_vmla_ddd,\
947- neon_fp_vmla_qqq,\
948- neon_fp_vrecps_vrsqrts_ddd,\
949- neon_fp_vrecps_vrsqrts_qqq")
950-
951-(define_bypass 5 "neon_mla_ddd_16_scalar_qdd_32_16_long_scalar"
952- "neon_int_1,\
953- neon_int_4,\
954- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
955- neon_mul_qqq_8_16_32_ddd_32,\
956- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
957- neon_mla_qqq_8_16,\
958- neon_fp_vadd_ddd_vabs_dd,\
959- neon_fp_vadd_qqq_vabs_qq,\
960- neon_fp_vmla_ddd,\
961- neon_fp_vmla_qqq,\
962- neon_fp_vrecps_vrsqrts_ddd,\
963- neon_fp_vrecps_vrsqrts_qqq")
964-
965-(define_bypass 8 "neon_mul_qqd_32_scalar"
966- "neon_int_1,\
967- neon_int_4,\
968- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
969- neon_mul_qqq_8_16_32_ddd_32,\
970- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
971- neon_mla_qqq_8_16,\
972- neon_fp_vadd_ddd_vabs_dd,\
973- neon_fp_vadd_qqq_vabs_qq,\
974- neon_fp_vmla_ddd,\
975- neon_fp_vmla_qqq,\
976- neon_fp_vrecps_vrsqrts_ddd,\
977- neon_fp_vrecps_vrsqrts_qqq")
978-
979-(define_bypass 5 "neon_mul_ddd_16_scalar_32_16_long_scalar"
980- "neon_int_1,\
981- neon_int_4,\
982- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
983- neon_mul_qqq_8_16_32_ddd_32,\
984- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
985- neon_mla_qqq_8_16,\
986- neon_fp_vadd_ddd_vabs_dd,\
987- neon_fp_vadd_qqq_vabs_qq,\
988- neon_fp_vmla_ddd,\
989- neon_fp_vmla_qqq,\
990- neon_fp_vrecps_vrsqrts_ddd,\
991- neon_fp_vrecps_vrsqrts_qqq")
992-
993-(define_bypass 8 "neon_mla_qqq_32_qqd_32_scalar"
994- "neon_int_1,\
995- neon_int_4,\
996- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
997- neon_mul_qqq_8_16_32_ddd_32,\
998- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
999- neon_mla_qqq_8_16,\
1000- neon_fp_vadd_ddd_vabs_dd,\
1001- neon_fp_vadd_qqq_vabs_qq,\
1002- neon_fp_vmla_ddd,\
1003- neon_fp_vmla_qqq,\
1004- neon_fp_vrecps_vrsqrts_ddd,\
1005- neon_fp_vrecps_vrsqrts_qqq")
1006-
1007-(define_bypass 6 "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long"
1008- "neon_int_1,\
1009- neon_int_4,\
1010- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1011- neon_mul_qqq_8_16_32_ddd_32,\
1012- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1013- neon_mla_qqq_8_16,\
1014- neon_fp_vadd_ddd_vabs_dd,\
1015- neon_fp_vadd_qqq_vabs_qq,\
1016- neon_fp_vmla_ddd,\
1017- neon_fp_vmla_qqq,\
1018- neon_fp_vrecps_vrsqrts_ddd,\
1019- neon_fp_vrecps_vrsqrts_qqq")
1020-
1021-(define_bypass 6 "neon_mla_qqq_8_16"
1022- "neon_int_1,\
1023- neon_int_4,\
1024- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1025- neon_mul_qqq_8_16_32_ddd_32,\
1026- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1027- neon_mla_qqq_8_16,\
1028- neon_fp_vadd_ddd_vabs_dd,\
1029- neon_fp_vadd_qqq_vabs_qq,\
1030- neon_fp_vmla_ddd,\
1031- neon_fp_vmla_qqq,\
1032- neon_fp_vrecps_vrsqrts_ddd,\
1033- neon_fp_vrecps_vrsqrts_qqq")
1034-
1035-(define_bypass 5 "neon_mla_ddd_8_16_qdd_16_8_long_32_16_long"
1036- "neon_int_1,\
1037- neon_int_4,\
1038- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1039- neon_mul_qqq_8_16_32_ddd_32,\
1040- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1041- neon_mla_qqq_8_16,\
1042- neon_fp_vadd_ddd_vabs_dd,\
1043- neon_fp_vadd_qqq_vabs_qq,\
1044- neon_fp_vmla_ddd,\
1045- neon_fp_vmla_qqq,\
1046- neon_fp_vrecps_vrsqrts_ddd,\
1047- neon_fp_vrecps_vrsqrts_qqq")
1048-
1049-(define_bypass 6 "neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar"
1050- "neon_int_1,\
1051- neon_int_4,\
1052- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1053- neon_mul_qqq_8_16_32_ddd_32,\
1054- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1055- neon_mla_qqq_8_16,\
1056- neon_fp_vadd_ddd_vabs_dd,\
1057- neon_fp_vadd_qqq_vabs_qq,\
1058- neon_fp_vmla_ddd,\
1059- neon_fp_vmla_qqq,\
1060- neon_fp_vrecps_vrsqrts_ddd,\
1061- neon_fp_vrecps_vrsqrts_qqq")
1062-
1063-(define_bypass 6 "neon_mul_qqq_8_16_32_ddd_32"
1064- "neon_int_1,\
1065- neon_int_4,\
1066- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1067- neon_mul_qqq_8_16_32_ddd_32,\
1068- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1069- neon_mla_qqq_8_16,\
1070- neon_fp_vadd_ddd_vabs_dd,\
1071- neon_fp_vadd_qqq_vabs_qq,\
1072- neon_fp_vmla_ddd,\
1073- neon_fp_vmla_qqq,\
1074- neon_fp_vrecps_vrsqrts_ddd,\
1075- neon_fp_vrecps_vrsqrts_qqq")
1076-
1077-(define_bypass 5 "neon_mul_ddd_8_16_qdd_16_8_long_32_16_long"
1078- "neon_int_1,\
1079- neon_int_4,\
1080- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1081- neon_mul_qqq_8_16_32_ddd_32,\
1082- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1083- neon_mla_qqq_8_16,\
1084- neon_fp_vadd_ddd_vabs_dd,\
1085- neon_fp_vadd_qqq_vabs_qq,\
1086- neon_fp_vmla_ddd,\
1087- neon_fp_vmla_qqq,\
1088- neon_fp_vrecps_vrsqrts_ddd,\
1089- neon_fp_vrecps_vrsqrts_qqq")
1090-
1091-(define_bypass 5 "neon_vsma"
1092- "neon_int_1,\
1093- neon_int_4,\
1094- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1095- neon_mul_qqq_8_16_32_ddd_32,\
1096- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1097- neon_mla_qqq_8_16,\
1098- neon_fp_vadd_ddd_vabs_dd,\
1099- neon_fp_vadd_qqq_vabs_qq,\
1100- neon_fp_vmla_ddd,\
1101- neon_fp_vmla_qqq,\
1102- neon_fp_vrecps_vrsqrts_ddd,\
1103- neon_fp_vrecps_vrsqrts_qqq")
1104-
1105-(define_bypass 6 "neon_vaba_qqq"
1106- "neon_int_1,\
1107- neon_int_4,\
1108- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1109- neon_mul_qqq_8_16_32_ddd_32,\
1110- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1111- neon_mla_qqq_8_16,\
1112- neon_fp_vadd_ddd_vabs_dd,\
1113- neon_fp_vadd_qqq_vabs_qq,\
1114- neon_fp_vmla_ddd,\
1115- neon_fp_vmla_qqq,\
1116- neon_fp_vrecps_vrsqrts_ddd,\
1117- neon_fp_vrecps_vrsqrts_qqq")
1118-
1119-(define_bypass 5 "neon_vaba"
1120- "neon_int_1,\
1121- neon_int_4,\
1122- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1123- neon_mul_qqq_8_16_32_ddd_32,\
1124- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1125- neon_mla_qqq_8_16,\
1126- neon_fp_vadd_ddd_vabs_dd,\
1127- neon_fp_vadd_qqq_vabs_qq,\
1128- neon_fp_vmla_ddd,\
1129- neon_fp_vmla_qqq,\
1130- neon_fp_vrecps_vrsqrts_ddd,\
1131- neon_fp_vrecps_vrsqrts_qqq")
1132-
1133-(define_bypass 2 "neon_vmov"
1134- "neon_int_1,\
1135- neon_int_4,\
1136- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1137- neon_mul_qqq_8_16_32_ddd_32,\
1138- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1139- neon_mla_qqq_8_16,\
1140- neon_fp_vadd_ddd_vabs_dd,\
1141- neon_fp_vadd_qqq_vabs_qq,\
1142- neon_fp_vmla_ddd,\
1143- neon_fp_vmla_qqq,\
1144- neon_fp_vrecps_vrsqrts_ddd,\
1145- neon_fp_vrecps_vrsqrts_qqq")
1146-
1147-(define_bypass 3 "neon_vqneg_vqabs"
1148- "neon_int_1,\
1149- neon_int_4,\
1150- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1151- neon_mul_qqq_8_16_32_ddd_32,\
1152- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1153- neon_mla_qqq_8_16,\
1154- neon_fp_vadd_ddd_vabs_dd,\
1155- neon_fp_vadd_qqq_vabs_qq,\
1156- neon_fp_vmla_ddd,\
1157- neon_fp_vmla_qqq,\
1158- neon_fp_vrecps_vrsqrts_ddd,\
1159- neon_fp_vrecps_vrsqrts_qqq")
1160-
1161-(define_bypass 3 "neon_int_5"
1162- "neon_int_1,\
1163- neon_int_4,\
1164- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1165- neon_mul_qqq_8_16_32_ddd_32,\
1166- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1167- neon_mla_qqq_8_16,\
1168- neon_fp_vadd_ddd_vabs_dd,\
1169- neon_fp_vadd_qqq_vabs_qq,\
1170- neon_fp_vmla_ddd,\
1171- neon_fp_vmla_qqq,\
1172- neon_fp_vrecps_vrsqrts_ddd,\
1173- neon_fp_vrecps_vrsqrts_qqq")
1174-
1175-(define_bypass 3 "neon_int_4"
1176- "neon_int_1,\
1177- neon_int_4,\
1178- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1179- neon_mul_qqq_8_16_32_ddd_32,\
1180- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1181- neon_mla_qqq_8_16,\
1182- neon_fp_vadd_ddd_vabs_dd,\
1183- neon_fp_vadd_qqq_vabs_qq,\
1184- neon_fp_vmla_ddd,\
1185- neon_fp_vmla_qqq,\
1186- neon_fp_vrecps_vrsqrts_ddd,\
1187- neon_fp_vrecps_vrsqrts_qqq")
1188-
1189-(define_bypass 2 "neon_int_3"
1190- "neon_int_1,\
1191- neon_int_4,\
1192- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1193- neon_mul_qqq_8_16_32_ddd_32,\
1194- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1195- neon_mla_qqq_8_16,\
1196- neon_fp_vadd_ddd_vabs_dd,\
1197- neon_fp_vadd_qqq_vabs_qq,\
1198- neon_fp_vmla_ddd,\
1199- neon_fp_vmla_qqq,\
1200- neon_fp_vrecps_vrsqrts_ddd,\
1201- neon_fp_vrecps_vrsqrts_qqq")
1202-
1203-(define_bypass 2 "neon_int_2"
1204- "neon_int_1,\
1205- neon_int_4,\
1206- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1207- neon_mul_qqq_8_16_32_ddd_32,\
1208- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1209- neon_mla_qqq_8_16,\
1210- neon_fp_vadd_ddd_vabs_dd,\
1211- neon_fp_vadd_qqq_vabs_qq,\
1212- neon_fp_vmla_ddd,\
1213- neon_fp_vmla_qqq,\
1214- neon_fp_vrecps_vrsqrts_ddd,\
1215- neon_fp_vrecps_vrsqrts_qqq")
1216-
1217-(define_bypass 2 "neon_int_1"
1218- "neon_int_1,\
1219- neon_int_4,\
1220- neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1221- neon_mul_qqq_8_16_32_ddd_32,\
1222- neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1223- neon_mla_qqq_8_16,\
1224- neon_fp_vadd_ddd_vabs_dd,\
1225- neon_fp_vadd_qqq_vabs_qq,\
1226- neon_fp_vmla_ddd,\
1227- neon_fp_vmla_qqq,\
1228- neon_fp_vrecps_vrsqrts_ddd,\
1229- neon_fp_vrecps_vrsqrts_qqq")
1230+(define_bypass 1 "cortex_a8_neon_mcr_2_mcrr"
1231+ "cortex_a8_neon_int_1,\
1232+ cortex_a8_neon_int_4,\
1233+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1234+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1235+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1236+ cortex_a8_neon_mla_qqq_8_16,\
1237+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1238+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1239+ cortex_a8_neon_fp_vmla_ddd,\
1240+ cortex_a8_neon_fp_vmla_qqq,\
1241+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1242+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1243+
1244+(define_bypass 1 "cortex_a8_neon_mcr"
1245+ "cortex_a8_neon_int_1,\
1246+ cortex_a8_neon_int_4,\
1247+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1248+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1249+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1250+ cortex_a8_neon_mla_qqq_8_16,\
1251+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1252+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1253+ cortex_a8_neon_fp_vmla_ddd,\
1254+ cortex_a8_neon_fp_vmla_qqq,\
1255+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1256+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1257+
1258+(define_bypass 2 "cortex_a8_neon_vld3_vld4_all_lanes"
1259+ "cortex_a8_neon_int_1,\
1260+ cortex_a8_neon_int_4,\
1261+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1262+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1263+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1264+ cortex_a8_neon_mla_qqq_8_16,\
1265+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1266+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1267+ cortex_a8_neon_fp_vmla_ddd,\
1268+ cortex_a8_neon_fp_vmla_qqq,\
1269+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1270+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1271+
1272+(define_bypass 5 "cortex_a8_neon_vld3_vld4_lane"
1273+ "cortex_a8_neon_int_1,\
1274+ cortex_a8_neon_int_4,\
1275+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1276+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1277+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1278+ cortex_a8_neon_mla_qqq_8_16,\
1279+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1280+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1281+ cortex_a8_neon_fp_vmla_ddd,\
1282+ cortex_a8_neon_fp_vmla_qqq,\
1283+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1284+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1285+
1286+(define_bypass 3 "cortex_a8_neon_vld1_vld2_lane"
1287+ "cortex_a8_neon_int_1,\
1288+ cortex_a8_neon_int_4,\
1289+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1290+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1291+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1292+ cortex_a8_neon_mla_qqq_8_16,\
1293+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1294+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1295+ cortex_a8_neon_fp_vmla_ddd,\
1296+ cortex_a8_neon_fp_vmla_qqq,\
1297+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1298+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1299+
1300+(define_bypass 4 "cortex_a8_neon_vld3_vld4"
1301+ "cortex_a8_neon_int_1,\
1302+ cortex_a8_neon_int_4,\
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")
1313+
1314+(define_bypass 3 "cortex_a8_neon_vld2_4_regs"
1315+ "cortex_a8_neon_int_1,\
1316+ cortex_a8_neon_int_4,\
1317+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1318+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1319+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1320+ cortex_a8_neon_mla_qqq_8_16,\
1321+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1322+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1323+ cortex_a8_neon_fp_vmla_ddd,\
1324+ cortex_a8_neon_fp_vmla_qqq,\
1325+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1326+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1327+
1328+(define_bypass 2 "cortex_a8_neon_vld2_2_regs_vld1_vld2_all_lanes"
1329+ "cortex_a8_neon_int_1,\
1330+ cortex_a8_neon_int_4,\
1331+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1332+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1333+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1334+ cortex_a8_neon_mla_qqq_8_16,\
1335+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1336+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1337+ cortex_a8_neon_fp_vmla_ddd,\
1338+ cortex_a8_neon_fp_vmla_qqq,\
1339+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1340+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1341+
1342+(define_bypass 2 "cortex_a8_neon_vld1_3_4_regs"
1343+ "cortex_a8_neon_int_1,\
1344+ cortex_a8_neon_int_4,\
1345+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1346+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1347+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1348+ cortex_a8_neon_mla_qqq_8_16,\
1349+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1350+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1351+ cortex_a8_neon_fp_vmla_ddd,\
1352+ cortex_a8_neon_fp_vmla_qqq,\
1353+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1354+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1355+
1356+(define_bypass 1 "cortex_a8_neon_vld1_1_2_regs"
1357+ "cortex_a8_neon_int_1,\
1358+ cortex_a8_neon_int_4,\
1359+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1360+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1361+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1362+ cortex_a8_neon_mla_qqq_8_16,\
1363+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1364+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1365+ cortex_a8_neon_fp_vmla_ddd,\
1366+ cortex_a8_neon_fp_vmla_qqq,\
1367+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1368+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1369+
1370+(define_bypass 0 "cortex_a8_neon_ldr"
1371+ "cortex_a8_neon_int_1,\
1372+ cortex_a8_neon_int_4,\
1373+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1374+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1375+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1376+ cortex_a8_neon_mla_qqq_8_16,\
1377+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1378+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1379+ cortex_a8_neon_fp_vmla_ddd,\
1380+ cortex_a8_neon_fp_vmla_qqq,\
1381+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1382+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1383+
1384+(define_bypass 3 "cortex_a8_neon_bp_3cycle"
1385+ "cortex_a8_neon_int_1,\
1386+ cortex_a8_neon_int_4,\
1387+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1388+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1389+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1390+ cortex_a8_neon_mla_qqq_8_16,\
1391+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1392+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1393+ cortex_a8_neon_fp_vmla_ddd,\
1394+ cortex_a8_neon_fp_vmla_qqq,\
1395+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1396+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1397+
1398+(define_bypass 2 "cortex_a8_neon_bp_2cycle"
1399+ "cortex_a8_neon_int_1,\
1400+ cortex_a8_neon_int_4,\
1401+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1402+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1403+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1404+ cortex_a8_neon_mla_qqq_8_16,\
1405+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1406+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1407+ cortex_a8_neon_fp_vmla_ddd,\
1408+ cortex_a8_neon_fp_vmla_qqq,\
1409+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1410+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1411+
1412+(define_bypass 1 "cortex_a8_neon_bp_simple"
1413+ "cortex_a8_neon_int_1,\
1414+ cortex_a8_neon_int_4,\
1415+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1416+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1417+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1418+ cortex_a8_neon_mla_qqq_8_16,\
1419+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1420+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1421+ cortex_a8_neon_fp_vmla_ddd,\
1422+ cortex_a8_neon_fp_vmla_qqq,\
1423+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1424+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1425+
1426+(define_bypass 9 "cortex_a8_neon_fp_vrecps_vrsqrts_qqq"
1427+ "cortex_a8_neon_int_1,\
1428+ cortex_a8_neon_int_4,\
1429+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1430+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1431+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1432+ cortex_a8_neon_mla_qqq_8_16,\
1433+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1434+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1435+ cortex_a8_neon_fp_vmla_ddd,\
1436+ cortex_a8_neon_fp_vmla_qqq,\
1437+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1438+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1439+
1440+(define_bypass 8 "cortex_a8_neon_fp_vrecps_vrsqrts_ddd"
1441+ "cortex_a8_neon_int_1,\
1442+ cortex_a8_neon_int_4,\
1443+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1444+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1445+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1446+ cortex_a8_neon_mla_qqq_8_16,\
1447+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1448+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1449+ cortex_a8_neon_fp_vmla_ddd,\
1450+ cortex_a8_neon_fp_vmla_qqq,\
1451+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1452+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1453+
1454+(define_bypass 9 "cortex_a8_neon_fp_vmla_qqq_scalar"
1455+ "cortex_a8_neon_int_1,\
1456+ cortex_a8_neon_int_4,\
1457+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1458+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1459+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1460+ cortex_a8_neon_mla_qqq_8_16,\
1461+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1462+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1463+ cortex_a8_neon_fp_vmla_ddd,\
1464+ cortex_a8_neon_fp_vmla_qqq,\
1465+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1466+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1467+
1468+(define_bypass 8 "cortex_a8_neon_fp_vmla_ddd_scalar"
1469+ "cortex_a8_neon_int_1,\
1470+ cortex_a8_neon_int_4,\
1471+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1472+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1473+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1474+ cortex_a8_neon_mla_qqq_8_16,\
1475+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1476+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1477+ cortex_a8_neon_fp_vmla_ddd,\
1478+ cortex_a8_neon_fp_vmla_qqq,\
1479+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1480+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1481+
1482+(define_bypass 9 "cortex_a8_neon_fp_vmla_qqq"
1483+ "cortex_a8_neon_int_1,\
1484+ cortex_a8_neon_int_4,\
1485+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1486+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1487+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1488+ cortex_a8_neon_mla_qqq_8_16,\
1489+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1490+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1491+ cortex_a8_neon_fp_vmla_ddd,\
1492+ cortex_a8_neon_fp_vmla_qqq,\
1493+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1494+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1495+
1496+(define_bypass 8 "cortex_a8_neon_fp_vmla_ddd"
1497+ "cortex_a8_neon_int_1,\
1498+ cortex_a8_neon_int_4,\
1499+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1500+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1501+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1502+ cortex_a8_neon_mla_qqq_8_16,\
1503+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1504+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1505+ cortex_a8_neon_fp_vmla_ddd,\
1506+ cortex_a8_neon_fp_vmla_qqq,\
1507+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1508+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1509+
1510+(define_bypass 5 "cortex_a8_neon_fp_vmul_qqd"
1511+ "cortex_a8_neon_int_1,\
1512+ cortex_a8_neon_int_4,\
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")
1523+
1524+(define_bypass 4 "cortex_a8_neon_fp_vmul_ddd"
1525+ "cortex_a8_neon_int_1,\
1526+ cortex_a8_neon_int_4,\
1527+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1528+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1529+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1530+ cortex_a8_neon_mla_qqq_8_16,\
1531+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1532+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1533+ cortex_a8_neon_fp_vmla_ddd,\
1534+ cortex_a8_neon_fp_vmla_qqq,\
1535+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1536+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1537+
1538+(define_bypass 4 "cortex_a8_neon_fp_vsum"
1539+ "cortex_a8_neon_int_1,\
1540+ cortex_a8_neon_int_4,\
1541+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1542+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1543+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1544+ cortex_a8_neon_mla_qqq_8_16,\
1545+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1546+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1547+ cortex_a8_neon_fp_vmla_ddd,\
1548+ cortex_a8_neon_fp_vmla_qqq,\
1549+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1550+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1551+
1552+(define_bypass 5 "cortex_a8_neon_fp_vadd_qqq_vabs_qq"
1553+ "cortex_a8_neon_int_1,\
1554+ cortex_a8_neon_int_4,\
1555+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1556+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1557+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1558+ cortex_a8_neon_mla_qqq_8_16,\
1559+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1560+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1561+ cortex_a8_neon_fp_vmla_ddd,\
1562+ cortex_a8_neon_fp_vmla_qqq,\
1563+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1564+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1565+
1566+(define_bypass 4 "cortex_a8_neon_fp_vadd_ddd_vabs_dd"
1567+ "cortex_a8_neon_int_1,\
1568+ cortex_a8_neon_int_4,\
1569+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1570+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1571+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1572+ cortex_a8_neon_mla_qqq_8_16,\
1573+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1574+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1575+ cortex_a8_neon_fp_vmla_ddd,\
1576+ cortex_a8_neon_fp_vmla_qqq,\
1577+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1578+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1579+
1580+(define_bypass 5 "cortex_a8_neon_vsra_vrsra"
1581+ "cortex_a8_neon_int_1,\
1582+ cortex_a8_neon_int_4,\
1583+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1584+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1585+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1586+ cortex_a8_neon_mla_qqq_8_16,\
1587+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1588+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1589+ cortex_a8_neon_fp_vmla_ddd,\
1590+ cortex_a8_neon_fp_vmla_qqq,\
1591+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1592+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1593+
1594+(define_bypass 4 "cortex_a8_neon_vqshl_vrshl_vqrshl_qqq"
1595+ "cortex_a8_neon_int_1,\
1596+ cortex_a8_neon_int_4,\
1597+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1598+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1599+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1600+ cortex_a8_neon_mla_qqq_8_16,\
1601+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1602+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1603+ cortex_a8_neon_fp_vmla_ddd,\
1604+ cortex_a8_neon_fp_vmla_qqq,\
1605+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1606+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1607+
1608+(define_bypass 0 "cortex_a8_neon_vshl_ddd"
1609+ "cortex_a8_neon_int_1,\
1610+ cortex_a8_neon_int_4,\
1611+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1612+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1613+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1614+ cortex_a8_neon_mla_qqq_8_16,\
1615+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1616+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1617+ cortex_a8_neon_fp_vmla_ddd,\
1618+ cortex_a8_neon_fp_vmla_qqq,\
1619+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1620+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1621+
1622+(define_bypass 3 "cortex_a8_neon_shift_3"
1623+ "cortex_a8_neon_int_1,\
1624+ cortex_a8_neon_int_4,\
1625+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1626+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1627+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1628+ cortex_a8_neon_mla_qqq_8_16,\
1629+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1630+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1631+ cortex_a8_neon_fp_vmla_ddd,\
1632+ cortex_a8_neon_fp_vmla_qqq,\
1633+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1634+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1635+
1636+(define_bypass 3 "cortex_a8_neon_shift_2"
1637+ "cortex_a8_neon_int_1,\
1638+ cortex_a8_neon_int_4,\
1639+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1640+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1641+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1642+ cortex_a8_neon_mla_qqq_8_16,\
1643+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1644+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1645+ cortex_a8_neon_fp_vmla_ddd,\
1646+ cortex_a8_neon_fp_vmla_qqq,\
1647+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1648+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1649+
1650+(define_bypass 2 "cortex_a8_neon_shift_1"
1651+ "cortex_a8_neon_int_1,\
1652+ cortex_a8_neon_int_4,\
1653+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1654+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1655+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1656+ cortex_a8_neon_mla_qqq_8_16,\
1657+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1658+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1659+ cortex_a8_neon_fp_vmla_ddd,\
1660+ cortex_a8_neon_fp_vmla_qqq,\
1661+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1662+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1663+
1664+(define_bypass 5 "cortex_a8_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar"
1665+ "cortex_a8_neon_int_1,\
1666+ cortex_a8_neon_int_4,\
1667+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1668+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1669+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1670+ cortex_a8_neon_mla_qqq_8_16,\
1671+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1672+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1673+ cortex_a8_neon_fp_vmla_ddd,\
1674+ cortex_a8_neon_fp_vmla_qqq,\
1675+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1676+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1677+
1678+(define_bypass 8 "cortex_a8_neon_mul_qqd_32_scalar"
1679+ "cortex_a8_neon_int_1,\
1680+ cortex_a8_neon_int_4,\
1681+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1682+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1683+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1684+ cortex_a8_neon_mla_qqq_8_16,\
1685+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1686+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1687+ cortex_a8_neon_fp_vmla_ddd,\
1688+ cortex_a8_neon_fp_vmla_qqq,\
1689+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1690+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1691+
1692+(define_bypass 5 "cortex_a8_neon_mul_ddd_16_scalar_32_16_long_scalar"
1693+ "cortex_a8_neon_int_1,\
1694+ cortex_a8_neon_int_4,\
1695+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1696+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1697+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1698+ cortex_a8_neon_mla_qqq_8_16,\
1699+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1700+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1701+ cortex_a8_neon_fp_vmla_ddd,\
1702+ cortex_a8_neon_fp_vmla_qqq,\
1703+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1704+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1705+
1706+(define_bypass 8 "cortex_a8_neon_mla_qqq_32_qqd_32_scalar"
1707+ "cortex_a8_neon_int_1,\
1708+ cortex_a8_neon_int_4,\
1709+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1710+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1711+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1712+ cortex_a8_neon_mla_qqq_8_16,\
1713+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1714+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1715+ cortex_a8_neon_fp_vmla_ddd,\
1716+ cortex_a8_neon_fp_vmla_qqq,\
1717+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1718+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1719+
1720+(define_bypass 6 "cortex_a8_neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long"
1721+ "cortex_a8_neon_int_1,\
1722+ cortex_a8_neon_int_4,\
1723+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1724+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1725+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1726+ cortex_a8_neon_mla_qqq_8_16,\
1727+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1728+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1729+ cortex_a8_neon_fp_vmla_ddd,\
1730+ cortex_a8_neon_fp_vmla_qqq,\
1731+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1732+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1733+
1734+(define_bypass 6 "cortex_a8_neon_mla_qqq_8_16"
1735+ "cortex_a8_neon_int_1,\
1736+ cortex_a8_neon_int_4,\
1737+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1738+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1739+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1740+ cortex_a8_neon_mla_qqq_8_16,\
1741+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1742+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1743+ cortex_a8_neon_fp_vmla_ddd,\
1744+ cortex_a8_neon_fp_vmla_qqq,\
1745+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1746+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1747+
1748+(define_bypass 5 "cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long"
1749+ "cortex_a8_neon_int_1,\
1750+ cortex_a8_neon_int_4,\
1751+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1752+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1753+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1754+ cortex_a8_neon_mla_qqq_8_16,\
1755+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1756+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1757+ cortex_a8_neon_fp_vmla_ddd,\
1758+ cortex_a8_neon_fp_vmla_qqq,\
1759+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1760+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1761+
1762+(define_bypass 6 "cortex_a8_neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar"
1763+ "cortex_a8_neon_int_1,\
1764+ cortex_a8_neon_int_4,\
1765+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1766+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1767+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1768+ cortex_a8_neon_mla_qqq_8_16,\
1769+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1770+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1771+ cortex_a8_neon_fp_vmla_ddd,\
1772+ cortex_a8_neon_fp_vmla_qqq,\
1773+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1774+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1775+
1776+(define_bypass 6 "cortex_a8_neon_mul_qqq_8_16_32_ddd_32"
1777+ "cortex_a8_neon_int_1,\
1778+ cortex_a8_neon_int_4,\
1779+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1780+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1781+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1782+ cortex_a8_neon_mla_qqq_8_16,\
1783+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1784+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1785+ cortex_a8_neon_fp_vmla_ddd,\
1786+ cortex_a8_neon_fp_vmla_qqq,\
1787+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1788+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1789+
1790+(define_bypass 5 "cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long"
1791+ "cortex_a8_neon_int_1,\
1792+ cortex_a8_neon_int_4,\
1793+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1794+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1795+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1796+ cortex_a8_neon_mla_qqq_8_16,\
1797+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1798+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1799+ cortex_a8_neon_fp_vmla_ddd,\
1800+ cortex_a8_neon_fp_vmla_qqq,\
1801+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1802+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1803+
1804+(define_bypass 5 "cortex_a8_neon_vsma"
1805+ "cortex_a8_neon_int_1,\
1806+ cortex_a8_neon_int_4,\
1807+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1808+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1809+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1810+ cortex_a8_neon_mla_qqq_8_16,\
1811+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1812+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1813+ cortex_a8_neon_fp_vmla_ddd,\
1814+ cortex_a8_neon_fp_vmla_qqq,\
1815+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1816+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1817+
1818+(define_bypass 6 "cortex_a8_neon_vaba_qqq"
1819+ "cortex_a8_neon_int_1,\
1820+ cortex_a8_neon_int_4,\
1821+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1822+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1823+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1824+ cortex_a8_neon_mla_qqq_8_16,\
1825+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1826+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1827+ cortex_a8_neon_fp_vmla_ddd,\
1828+ cortex_a8_neon_fp_vmla_qqq,\
1829+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1830+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1831+
1832+(define_bypass 5 "cortex_a8_neon_vaba"
1833+ "cortex_a8_neon_int_1,\
1834+ cortex_a8_neon_int_4,\
1835+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1836+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1837+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1838+ cortex_a8_neon_mla_qqq_8_16,\
1839+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1840+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1841+ cortex_a8_neon_fp_vmla_ddd,\
1842+ cortex_a8_neon_fp_vmla_qqq,\
1843+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1844+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1845+
1846+(define_bypass 2 "cortex_a8_neon_vmov"
1847+ "cortex_a8_neon_int_1,\
1848+ cortex_a8_neon_int_4,\
1849+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1850+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1851+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1852+ cortex_a8_neon_mla_qqq_8_16,\
1853+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1854+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1855+ cortex_a8_neon_fp_vmla_ddd,\
1856+ cortex_a8_neon_fp_vmla_qqq,\
1857+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1858+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1859+
1860+(define_bypass 3 "cortex_a8_neon_vqneg_vqabs"
1861+ "cortex_a8_neon_int_1,\
1862+ cortex_a8_neon_int_4,\
1863+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1864+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1865+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1866+ cortex_a8_neon_mla_qqq_8_16,\
1867+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1868+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1869+ cortex_a8_neon_fp_vmla_ddd,\
1870+ cortex_a8_neon_fp_vmla_qqq,\
1871+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1872+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1873+
1874+(define_bypass 3 "cortex_a8_neon_int_5"
1875+ "cortex_a8_neon_int_1,\
1876+ cortex_a8_neon_int_4,\
1877+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1878+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1879+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1880+ cortex_a8_neon_mla_qqq_8_16,\
1881+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1882+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1883+ cortex_a8_neon_fp_vmla_ddd,\
1884+ cortex_a8_neon_fp_vmla_qqq,\
1885+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1886+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1887+
1888+(define_bypass 3 "cortex_a8_neon_int_4"
1889+ "cortex_a8_neon_int_1,\
1890+ cortex_a8_neon_int_4,\
1891+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1892+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1893+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1894+ cortex_a8_neon_mla_qqq_8_16,\
1895+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1896+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1897+ cortex_a8_neon_fp_vmla_ddd,\
1898+ cortex_a8_neon_fp_vmla_qqq,\
1899+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1900+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1901+
1902+(define_bypass 2 "cortex_a8_neon_int_3"
1903+ "cortex_a8_neon_int_1,\
1904+ cortex_a8_neon_int_4,\
1905+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1906+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1907+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1908+ cortex_a8_neon_mla_qqq_8_16,\
1909+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1910+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1911+ cortex_a8_neon_fp_vmla_ddd,\
1912+ cortex_a8_neon_fp_vmla_qqq,\
1913+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1914+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1915+
1916+(define_bypass 2 "cortex_a8_neon_int_2"
1917+ "cortex_a8_neon_int_1,\
1918+ cortex_a8_neon_int_4,\
1919+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1920+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1921+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1922+ cortex_a8_neon_mla_qqq_8_16,\
1923+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1924+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1925+ cortex_a8_neon_fp_vmla_ddd,\
1926+ cortex_a8_neon_fp_vmla_qqq,\
1927+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1928+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1929+
1930+(define_bypass 2 "cortex_a8_neon_int_1"
1931+ "cortex_a8_neon_int_1,\
1932+ cortex_a8_neon_int_4,\
1933+ cortex_a8_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
1934+ cortex_a8_neon_mul_qqq_8_16_32_ddd_32,\
1935+ cortex_a8_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
1936+ cortex_a8_neon_mla_qqq_8_16,\
1937+ cortex_a8_neon_fp_vadd_ddd_vabs_dd,\
1938+ cortex_a8_neon_fp_vadd_qqq_vabs_qq,\
1939+ cortex_a8_neon_fp_vmla_ddd,\
1940+ cortex_a8_neon_fp_vmla_qqq,\
1941+ cortex_a8_neon_fp_vrecps_vrsqrts_ddd,\
1942+ cortex_a8_neon_fp_vrecps_vrsqrts_qqq")
1943
1944
1945=== added file 'gcc/config/arm/cortex-a9-neon.md'
1946--- old/gcc/config/arm/cortex-a9-neon.md 1970-01-01 00:00:00 +0000
1947+++ new/gcc/config/arm/cortex-a9-neon.md 2010-09-16 09:47:44 +0000
1948@@ -0,0 +1,1237 @@
1949+;; ARM Cortex-A9 pipeline description
1950+;; Copyright (C) 2010 Free Software Foundation, Inc.
1951+;;
1952+;; Neon pipeline description contributed by ARM Ltd.
1953+;;
1954+;; This file is part of GCC.
1955+;;
1956+;; GCC is free software; you can redistribute it and/or modify it
1957+;; under the terms of the GNU General Public License as published by
1958+;; the Free Software Foundation; either version 3, or (at your option)
1959+;; any later version.
1960+;;
1961+;; GCC is distributed in the hope that it will be useful, but
1962+;; WITHOUT ANY WARRANTY; without even the implied warranty of
1963+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1964+;; General Public License for more details.
1965+;;
1966+;; You should have received a copy of the GNU General Public License
1967+;; along with GCC; see the file COPYING3. If not see
1968+;; <http://www.gnu.org/licenses/>.
1969+
1970+
1971+(define_automaton "cortex_a9_neon")
1972+
1973+;; Only one instruction can be issued per cycle.
1974+(define_cpu_unit "cortex_a9_neon_issue_perm" "cortex_a9_neon")
1975+
1976+;; Only one data-processing instruction can be issued per cycle.
1977+(define_cpu_unit "cortex_a9_neon_issue_dp" "cortex_a9_neon")
1978+
1979+;; We need a special mutual exclusion (to be used in addition to
1980+;; cortex_a9_neon_issue_dp) for the case when an instruction such as
1981+;; vmla.f is forwarded from E5 of the floating-point multiply pipeline to
1982+;; E2 of the floating-point add pipeline. On the cycle previous to that
1983+;; forward we must prevent issue of any instruction to the floating-point
1984+;; add pipeline, but still allow issue of a data-processing instruction
1985+;; to any of the other pipelines.
1986+(define_cpu_unit "cortex_a9_neon_issue_fadd" "cortex_a9_neon")
1987+(define_cpu_unit "cortex_a9_neon_mcr" "cortex_a9_neon")
1988+
1989+
1990+;; Patterns of reservation.
1991+;; We model the NEON issue units as running in parallel with the core ones.
1992+;; We assume that multi-cycle NEON instructions get decomposed into
1993+;; micro-ops as they are issued into the NEON pipeline.
1994+
1995+(define_reservation "cortex_a9_neon_dp"
1996+ "ca9_issue_vfp_neon + cortex_a9_neon_issue_dp")
1997+(define_reservation "cortex_a9_neon_dp_2"
1998+ "ca9_issue_vfp_neon + cortex_a9_neon_issue_dp,\
1999+ cortex_a9_neon_issue_dp")
2000+(define_reservation "cortex_a9_neon_dp_4"
2001+ "ca9_issue_vfp_neon + cortex_a9_neon_issue_dp,\
2002+ cortex_a9_neon_issue_dp + cortex_a9_neon_issue_perm,\
2003+ cortex_a9_neon_issue_dp + cortex_a9_neon_issue_perm,\
2004+ cortex_a9_neon_issue_dp")
2005+
2006+(define_reservation "cortex_a9_neon_fadd"
2007+ "ca9_issue_vfp_neon + cortex_a9_neon_issue_dp + \
2008+ cortex_a9_neon_issue_fadd")
2009+(define_reservation "cortex_a9_neon_fadd_2"
2010+ "ca9_issue_vfp_neon + cortex_a9_neon_issue_dp,\
2011+ cortex_a9_neon_issue_fadd,\
2012+ cortex_a9_neon_issue_dp")
2013+
2014+(define_reservation "cortex_a9_neon_perm"
2015+ "ca9_issue_vfp_neon+cortex_a9_neon_issue_perm")
2016+(define_reservation "cortex_a9_neon_perm_2"
2017+ "ca9_issue_vfp_neon+cortex_a9_neon_issue_perm, \
2018+ cortex_a9_neon_issue_perm")
2019+(define_reservation "cortex_a9_neon_perm_3"
2020+ "ca9_issue_vfp_neon+cortex_a9_neon_issue_perm,\
2021+ cortex_a9_neon_issue_dp+cortex_a9_neon_issue_perm,\
2022+ cortex_a9_neon_issue_perm")
2023+
2024+(define_reservation "cortex_a9_neon_ls"
2025+ "ca9_issue_vfp_neon+cortex_a9_neon_issue_perm+cortex_a9_ls")
2026+(define_reservation "cortex_a9_neon_ls_2"
2027+ "ca9_issue_vfp_neon+cortex_a9_neon_issue_perm,\
2028+ cortex_a9_neon_issue_perm")
2029+(define_reservation "cortex_a9_neon_ls_3"
2030+ "ca9_issue_vfp_neon+cortex_a9_neon_issue_perm,\
2031+ cortex_a9_neon_issue_dp+cortex_a9_neon_issue_perm,\
2032+ cortex_a9_neon_issue_perm")
2033+(define_reservation "cortex_a9_neon_ls_4"
2034+ "ca9_issue_vfp_neon+cortex_a9_neon_issue_perm,\
2035+ cortex_a9_neon_issue_dp+cortex_a9_neon_issue_perm,\
2036+ cortex_a9_neon_issue_dp+cortex_a9_neon_issue_perm,\
2037+ cortex_a9_neon_issue_perm")
2038+(define_reservation "cortex_a9_neon_ls_5"
2039+ "ca9_issue_vfp_neon + cortex_a9_neon_issue_perm,\
2040+ cortex_a9_neon_issue_dp+cortex_a9_neon_issue_perm,\
2041+ cortex_a9_neon_issue_dp+cortex_a9_neon_issue_perm,\
2042+ cortex_a9_neon_issue_dp+cortex_a9_neon_issue_perm,\
2043+ cortex_a9_neon_issue_perm")
2044+
2045+(define_reservation "cortex_a9_neon_fmul_then_fadd"
2046+ "ca9_issue_vfp_neon + cortex_a9_neon_issue_dp,\
2047+ nothing*3,\
2048+ cortex_a9_neon_issue_fadd")
2049+(define_reservation "cortex_a9_neon_fmul_then_fadd_2"
2050+ "ca9_issue_vfp_neon + cortex_a9_neon_issue_dp,\
2051+ cortex_a9_neon_issue_dp,\
2052+ nothing*2,\
2053+ cortex_a9_neon_issue_fadd,\
2054+ cortex_a9_neon_issue_fadd")
2055+
2056+
2057+;; NEON -> core transfers.
2058+(define_insn_reservation "ca9_neon_mrc" 1
2059+ (and (eq_attr "tune" "cortexa9")
2060+ (eq_attr "neon_type" "neon_mrc"))
2061+ "ca9_issue_vfp_neon + cortex_a9_neon_mcr")
2062+
2063+(define_insn_reservation "ca9_neon_mrrc" 1
2064+ (and (eq_attr "tune" "cortexa9")
2065+ (eq_attr "neon_type" "neon_mrrc"))
2066+ "ca9_issue_vfp_neon + cortex_a9_neon_mcr")
2067+
2068+;; The remainder of this file is auto-generated by neon-schedgen.
2069+
2070+;; Instructions using this reservation read their source operands at N2, and
2071+;; produce a result at N3.
2072+(define_insn_reservation "cortex_a9_neon_int_1" 3
2073+ (and (eq_attr "tune" "cortexa9")
2074+ (eq_attr "neon_type" "neon_int_1"))
2075+ "cortex_a9_neon_dp")
2076+
2077+;; Instructions using this reservation read their (D|Q)m operands at N1,
2078+;; their (D|Q)n operands at N2, and produce a result at N3.
2079+(define_insn_reservation "cortex_a9_neon_int_2" 3
2080+ (and (eq_attr "tune" "cortexa9")
2081+ (eq_attr "neon_type" "neon_int_2"))
2082+ "cortex_a9_neon_dp")
2083+
2084+;; Instructions using this reservation read their source operands at N1, and
2085+;; produce a result at N3.
2086+(define_insn_reservation "cortex_a9_neon_int_3" 3
2087+ (and (eq_attr "tune" "cortexa9")
2088+ (eq_attr "neon_type" "neon_int_3"))
2089+ "cortex_a9_neon_dp")
2090+
2091+;; Instructions using this reservation read their source operands at N2, and
2092+;; produce a result at N4.
2093+(define_insn_reservation "cortex_a9_neon_int_4" 4
2094+ (and (eq_attr "tune" "cortexa9")
2095+ (eq_attr "neon_type" "neon_int_4"))
2096+ "cortex_a9_neon_dp")
2097+
2098+;; Instructions using this reservation read their (D|Q)m operands at N1,
2099+;; their (D|Q)n operands at N2, and produce a result at N4.
2100+(define_insn_reservation "cortex_a9_neon_int_5" 4
2101+ (and (eq_attr "tune" "cortexa9")
2102+ (eq_attr "neon_type" "neon_int_5"))
2103+ "cortex_a9_neon_dp")
2104+
2105+;; Instructions using this reservation read their source operands at N1, and
2106+;; produce a result at N4.
2107+(define_insn_reservation "cortex_a9_neon_vqneg_vqabs" 4
2108+ (and (eq_attr "tune" "cortexa9")
2109+ (eq_attr "neon_type" "neon_vqneg_vqabs"))
2110+ "cortex_a9_neon_dp")
2111+
2112+;; Instructions using this reservation produce a result at N3.
2113+(define_insn_reservation "cortex_a9_neon_vmov" 3
2114+ (and (eq_attr "tune" "cortexa9")
2115+ (eq_attr "neon_type" "neon_vmov"))
2116+ "cortex_a9_neon_dp")
2117+
2118+;; Instructions using this reservation read their (D|Q)n operands at N2,
2119+;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and
2120+;; produce a result at N6.
2121+(define_insn_reservation "cortex_a9_neon_vaba" 6
2122+ (and (eq_attr "tune" "cortexa9")
2123+ (eq_attr "neon_type" "neon_vaba"))
2124+ "cortex_a9_neon_dp")
2125+
2126+;; Instructions using this reservation read their (D|Q)n operands at N2,
2127+;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and
2128+;; produce a result at N6 on cycle 2.
2129+(define_insn_reservation "cortex_a9_neon_vaba_qqq" 7
2130+ (and (eq_attr "tune" "cortexa9")
2131+ (eq_attr "neon_type" "neon_vaba_qqq"))
2132+ "cortex_a9_neon_dp_2")
2133+
2134+;; Instructions using this reservation read their (D|Q)m operands at N1,
2135+;; their (D|Q)d operands at N3, and produce a result at N6.
2136+(define_insn_reservation "cortex_a9_neon_vsma" 6
2137+ (and (eq_attr "tune" "cortexa9")
2138+ (eq_attr "neon_type" "neon_vsma"))
2139+ "cortex_a9_neon_dp")
2140+
2141+;; Instructions using this reservation read their source operands at N2, and
2142+;; produce a result at N6.
2143+(define_insn_reservation "cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long" 6
2144+ (and (eq_attr "tune" "cortexa9")
2145+ (eq_attr "neon_type" "neon_mul_ddd_8_16_qdd_16_8_long_32_16_long"))
2146+ "cortex_a9_neon_dp")
2147+
2148+;; Instructions using this reservation read their source operands at N2, and
2149+;; produce a result at N6 on cycle 2.
2150+(define_insn_reservation "cortex_a9_neon_mul_qqq_8_16_32_ddd_32" 7
2151+ (and (eq_attr "tune" "cortexa9")
2152+ (eq_attr "neon_type" "neon_mul_qqq_8_16_32_ddd_32"))
2153+ "cortex_a9_neon_dp_2")
2154+
2155+;; Instructions using this reservation read their (D|Q)n operands at N2,
2156+;; their (D|Q)m operands at N1, and produce a result at N6 on cycle 2.
2157+(define_insn_reservation "cortex_a9_neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar" 7
2158+ (and (eq_attr "tune" "cortexa9")
2159+ (eq_attr "neon_type" "neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar"))
2160+ "cortex_a9_neon_dp_2")
2161+
2162+;; Instructions using this reservation read their (D|Q)n operands at N2,
2163+;; their (D|Q)m operands at N2, their (D|Q)d operands at N3, and
2164+;; produce a result at N6.
2165+(define_insn_reservation "cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long" 6
2166+ (and (eq_attr "tune" "cortexa9")
2167+ (eq_attr "neon_type" "neon_mla_ddd_8_16_qdd_16_8_long_32_16_long"))
2168+ "cortex_a9_neon_dp")
2169+
2170+;; Instructions using this reservation read their (D|Q)n operands at N2,
2171+;; their (D|Q)m operands at N2, their (D|Q)d operands at N3, and
2172+;; produce a result at N6 on cycle 2.
2173+(define_insn_reservation "cortex_a9_neon_mla_qqq_8_16" 7
2174+ (and (eq_attr "tune" "cortexa9")
2175+ (eq_attr "neon_type" "neon_mla_qqq_8_16"))
2176+ "cortex_a9_neon_dp_2")
2177+
2178+;; Instructions using this reservation read their (D|Q)n operands at N2,
2179+;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and
2180+;; produce a result at N6 on cycle 2.
2181+(define_insn_reservation "cortex_a9_neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long" 7
2182+ (and (eq_attr "tune" "cortexa9")
2183+ (eq_attr "neon_type" "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long"))
2184+ "cortex_a9_neon_dp_2")
2185+
2186+;; Instructions using this reservation read their (D|Q)n operands at N2,
2187+;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and
2188+;; produce a result at N6 on cycle 4.
2189+(define_insn_reservation "cortex_a9_neon_mla_qqq_32_qqd_32_scalar" 9
2190+ (and (eq_attr "tune" "cortexa9")
2191+ (eq_attr "neon_type" "neon_mla_qqq_32_qqd_32_scalar"))
2192+ "cortex_a9_neon_dp_4")
2193+
2194+;; Instructions using this reservation read their (D|Q)n operands at N2,
2195+;; their (D|Q)m operands at N1, and produce a result at N6.
2196+(define_insn_reservation "cortex_a9_neon_mul_ddd_16_scalar_32_16_long_scalar" 6
2197+ (and (eq_attr "tune" "cortexa9")
2198+ (eq_attr "neon_type" "neon_mul_ddd_16_scalar_32_16_long_scalar"))
2199+ "cortex_a9_neon_dp")
2200+
2201+;; Instructions using this reservation read their (D|Q)n operands at N2,
2202+;; their (D|Q)m operands at N1, and produce a result at N6 on cycle 4.
2203+(define_insn_reservation "cortex_a9_neon_mul_qqd_32_scalar" 9
2204+ (and (eq_attr "tune" "cortexa9")
2205+ (eq_attr "neon_type" "neon_mul_qqd_32_scalar"))
2206+ "cortex_a9_neon_dp_4")
2207+
2208+;; Instructions using this reservation read their (D|Q)n operands at N2,
2209+;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and
2210+;; produce a result at N6.
2211+(define_insn_reservation "cortex_a9_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar" 6
2212+ (and (eq_attr "tune" "cortexa9")
2213+ (eq_attr "neon_type" "neon_mla_ddd_16_scalar_qdd_32_16_long_scalar"))
2214+ "cortex_a9_neon_dp")
2215+
2216+;; Instructions using this reservation read their source operands at N1, and
2217+;; produce a result at N3.
2218+(define_insn_reservation "cortex_a9_neon_shift_1" 3
2219+ (and (eq_attr "tune" "cortexa9")
2220+ (eq_attr "neon_type" "neon_shift_1"))
2221+ "cortex_a9_neon_dp")
2222+
2223+;; Instructions using this reservation read their source operands at N1, and
2224+;; produce a result at N4.
2225+(define_insn_reservation "cortex_a9_neon_shift_2" 4
2226+ (and (eq_attr "tune" "cortexa9")
2227+ (eq_attr "neon_type" "neon_shift_2"))
2228+ "cortex_a9_neon_dp")
2229+
2230+;; Instructions using this reservation read their source operands at N1, and
2231+;; produce a result at N3 on cycle 2.
2232+(define_insn_reservation "cortex_a9_neon_shift_3" 4
2233+ (and (eq_attr "tune" "cortexa9")
2234+ (eq_attr "neon_type" "neon_shift_3"))
2235+ "cortex_a9_neon_dp_2")
2236+
2237+;; Instructions using this reservation read their source operands at N1, and
2238+;; produce a result at N1.
2239+(define_insn_reservation "cortex_a9_neon_vshl_ddd" 1
2240+ (and (eq_attr "tune" "cortexa9")
2241+ (eq_attr "neon_type" "neon_vshl_ddd"))
2242+ "cortex_a9_neon_dp")
2243+
2244+;; Instructions using this reservation read their source operands at N1, and
2245+;; produce a result at N4 on cycle 2.
2246+(define_insn_reservation "cortex_a9_neon_vqshl_vrshl_vqrshl_qqq" 5
2247+ (and (eq_attr "tune" "cortexa9")
2248+ (eq_attr "neon_type" "neon_vqshl_vrshl_vqrshl_qqq"))
2249+ "cortex_a9_neon_dp_2")
2250+
2251+;; Instructions using this reservation read their (D|Q)m operands at N1,
2252+;; their (D|Q)d operands at N3, and produce a result at N6.
2253+(define_insn_reservation "cortex_a9_neon_vsra_vrsra" 6
2254+ (and (eq_attr "tune" "cortexa9")
2255+ (eq_attr "neon_type" "neon_vsra_vrsra"))
2256+ "cortex_a9_neon_dp")
2257+
2258+;; Instructions using this reservation read their source operands at N2, and
2259+;; produce a result at N5.
2260+(define_insn_reservation "cortex_a9_neon_fp_vadd_ddd_vabs_dd" 5
2261+ (and (eq_attr "tune" "cortexa9")
2262+ (eq_attr "neon_type" "neon_fp_vadd_ddd_vabs_dd"))
2263+ "cortex_a9_neon_fadd")
2264+
2265+;; Instructions using this reservation read their source operands at N2, and
2266+;; produce a result at N5 on cycle 2.
2267+(define_insn_reservation "cortex_a9_neon_fp_vadd_qqq_vabs_qq" 6
2268+ (and (eq_attr "tune" "cortexa9")
2269+ (eq_attr "neon_type" "neon_fp_vadd_qqq_vabs_qq"))
2270+ "cortex_a9_neon_fadd_2")
2271+
2272+;; Instructions using this reservation read their source operands at N1, and
2273+;; produce a result at N5.
2274+(define_insn_reservation "cortex_a9_neon_fp_vsum" 5
2275+ (and (eq_attr "tune" "cortexa9")
2276+ (eq_attr "neon_type" "neon_fp_vsum"))
2277+ "cortex_a9_neon_fadd")
2278+
2279+;; Instructions using this reservation read their (D|Q)n operands at N2,
2280+;; their (D|Q)m operands at N1, and produce a result at N5.
2281+(define_insn_reservation "cortex_a9_neon_fp_vmul_ddd" 5
2282+ (and (eq_attr "tune" "cortexa9")
2283+ (eq_attr "neon_type" "neon_fp_vmul_ddd"))
2284+ "cortex_a9_neon_dp")
2285+
2286+;; Instructions using this reservation read their (D|Q)n operands at N2,
2287+;; their (D|Q)m operands at N1, and produce a result at N5 on cycle 2.
2288+(define_insn_reservation "cortex_a9_neon_fp_vmul_qqd" 6
2289+ (and (eq_attr "tune" "cortexa9")
2290+ (eq_attr "neon_type" "neon_fp_vmul_qqd"))
2291+ "cortex_a9_neon_dp_2")
2292+
2293+;; Instructions using this reservation read their (D|Q)n operands at N2,
2294+;; their (D|Q)m operands at N2, their (D|Q)d operands at N3, and
2295+;; produce a result at N9.
2296+(define_insn_reservation "cortex_a9_neon_fp_vmla_ddd" 9
2297+ (and (eq_attr "tune" "cortexa9")
2298+ (eq_attr "neon_type" "neon_fp_vmla_ddd"))
2299+ "cortex_a9_neon_fmul_then_fadd")
2300+
2301+;; Instructions using this reservation read their (D|Q)n operands at N2,
2302+;; their (D|Q)m operands at N2, their (D|Q)d operands at N3, and
2303+;; produce a result at N9 on cycle 2.
2304+(define_insn_reservation "cortex_a9_neon_fp_vmla_qqq" 10
2305+ (and (eq_attr "tune" "cortexa9")
2306+ (eq_attr "neon_type" "neon_fp_vmla_qqq"))
2307+ "cortex_a9_neon_fmul_then_fadd_2")
2308+
2309+;; Instructions using this reservation read their (D|Q)n operands at N2,
2310+;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and
2311+;; produce a result at N9.
2312+(define_insn_reservation "cortex_a9_neon_fp_vmla_ddd_scalar" 9
2313+ (and (eq_attr "tune" "cortexa9")
2314+ (eq_attr "neon_type" "neon_fp_vmla_ddd_scalar"))
2315+ "cortex_a9_neon_fmul_then_fadd")
2316+
2317+;; Instructions using this reservation read their (D|Q)n operands at N2,
2318+;; their (D|Q)m operands at N1, their (D|Q)d operands at N3, and
2319+;; produce a result at N9 on cycle 2.
2320+(define_insn_reservation "cortex_a9_neon_fp_vmla_qqq_scalar" 10
2321+ (and (eq_attr "tune" "cortexa9")
2322+ (eq_attr "neon_type" "neon_fp_vmla_qqq_scalar"))
2323+ "cortex_a9_neon_fmul_then_fadd_2")
2324+
2325+;; Instructions using this reservation read their source operands at N2, and
2326+;; produce a result at N9.
2327+(define_insn_reservation "cortex_a9_neon_fp_vrecps_vrsqrts_ddd" 9
2328+ (and (eq_attr "tune" "cortexa9")
2329+ (eq_attr "neon_type" "neon_fp_vrecps_vrsqrts_ddd"))
2330+ "cortex_a9_neon_fmul_then_fadd")
2331+
2332+;; Instructions using this reservation read their source operands at N2, and
2333+;; produce a result at N9 on cycle 2.
2334+(define_insn_reservation "cortex_a9_neon_fp_vrecps_vrsqrts_qqq" 10
2335+ (and (eq_attr "tune" "cortexa9")
2336+ (eq_attr "neon_type" "neon_fp_vrecps_vrsqrts_qqq"))
2337+ "cortex_a9_neon_fmul_then_fadd_2")
2338+
2339+;; Instructions using this reservation read their source operands at N1, and
2340+;; produce a result at N2.
2341+(define_insn_reservation "cortex_a9_neon_bp_simple" 2
2342+ (and (eq_attr "tune" "cortexa9")
2343+ (eq_attr "neon_type" "neon_bp_simple"))
2344+ "cortex_a9_neon_perm")
2345+
2346+;; Instructions using this reservation read their source operands at N1, and
2347+;; produce a result at N2 on cycle 2.
2348+(define_insn_reservation "cortex_a9_neon_bp_2cycle" 3
2349+ (and (eq_attr "tune" "cortexa9")
2350+ (eq_attr "neon_type" "neon_bp_2cycle"))
2351+ "cortex_a9_neon_perm_2")
2352+
2353+;; Instructions using this reservation read their source operands at N1, and
2354+;; produce a result at N2 on cycle 3.
2355+(define_insn_reservation "cortex_a9_neon_bp_3cycle" 4
2356+ (and (eq_attr "tune" "cortexa9")
2357+ (eq_attr "neon_type" "neon_bp_3cycle"))
2358+ "cortex_a9_neon_perm_3")
2359+
2360+;; Instructions using this reservation produce a result at N1.
2361+(define_insn_reservation "cortex_a9_neon_ldr" 1
2362+ (and (eq_attr "tune" "cortexa9")
2363+ (eq_attr "neon_type" "neon_ldr"))
2364+ "cortex_a9_neon_ls")
2365+
2366+;; Instructions using this reservation read their source operands at N1.
2367+(define_insn_reservation "cortex_a9_neon_str" 0
2368+ (and (eq_attr "tune" "cortexa9")
2369+ (eq_attr "neon_type" "neon_str"))
2370+ "cortex_a9_neon_ls")
2371+
2372+;; Instructions using this reservation produce a result at N1 on cycle 2.
2373+(define_insn_reservation "cortex_a9_neon_vld1_1_2_regs" 2
2374+ (and (eq_attr "tune" "cortexa9")
2375+ (eq_attr "neon_type" "neon_vld1_1_2_regs"))
2376+ "cortex_a9_neon_ls_2")
2377+
2378+;; Instructions using this reservation produce a result at N1 on cycle 3.
2379+(define_insn_reservation "cortex_a9_neon_vld1_3_4_regs" 3
2380+ (and (eq_attr "tune" "cortexa9")
2381+ (eq_attr "neon_type" "neon_vld1_3_4_regs"))
2382+ "cortex_a9_neon_ls_3")
2383+
2384+;; Instructions using this reservation produce a result at N2 on cycle 2.
2385+(define_insn_reservation "cortex_a9_neon_vld2_2_regs_vld1_vld2_all_lanes" 3
2386+ (and (eq_attr "tune" "cortexa9")
2387+ (eq_attr "neon_type" "neon_vld2_2_regs_vld1_vld2_all_lanes"))
2388+ "cortex_a9_neon_ls_2")
2389+
2390+;; Instructions using this reservation produce a result at N2 on cycle 3.
2391+(define_insn_reservation "cortex_a9_neon_vld2_4_regs" 4
2392+ (and (eq_attr "tune" "cortexa9")
2393+ (eq_attr "neon_type" "neon_vld2_4_regs"))
2394+ "cortex_a9_neon_ls_3")
2395+
2396+;; Instructions using this reservation produce a result at N2 on cycle 4.
2397+(define_insn_reservation "cortex_a9_neon_vld3_vld4" 5
2398+ (and (eq_attr "tune" "cortexa9")
2399+ (eq_attr "neon_type" "neon_vld3_vld4"))
2400+ "cortex_a9_neon_ls_4")
2401+
2402+;; Instructions using this reservation read their source operands at N1.
2403+(define_insn_reservation "cortex_a9_neon_vst1_1_2_regs_vst2_2_regs" 0
2404+ (and (eq_attr "tune" "cortexa9")
2405+ (eq_attr "neon_type" "neon_vst1_1_2_regs_vst2_2_regs"))
2406+ "cortex_a9_neon_ls_2")
2407+
2408+;; Instructions using this reservation read their source operands at N1.
2409+(define_insn_reservation "cortex_a9_neon_vst1_3_4_regs" 0
2410+ (and (eq_attr "tune" "cortexa9")
2411+ (eq_attr "neon_type" "neon_vst1_3_4_regs"))
2412+ "cortex_a9_neon_ls_3")
2413+
2414+;; Instructions using this reservation read their source operands at N1.
2415+(define_insn_reservation "cortex_a9_neon_vst2_4_regs_vst3_vst4" 0
2416+ (and (eq_attr "tune" "cortexa9")
2417+ (eq_attr "neon_type" "neon_vst2_4_regs_vst3_vst4"))
2418+ "cortex_a9_neon_ls_4")
2419+
2420+;; Instructions using this reservation read their source operands at N1.
2421+(define_insn_reservation "cortex_a9_neon_vst3_vst4" 0
2422+ (and (eq_attr "tune" "cortexa9")
2423+ (eq_attr "neon_type" "neon_vst3_vst4"))
2424+ "cortex_a9_neon_ls_4")
2425+
2426+;; Instructions using this reservation read their source operands at N1, and
2427+;; produce a result at N2 on cycle 3.
2428+(define_insn_reservation "cortex_a9_neon_vld1_vld2_lane" 4
2429+ (and (eq_attr "tune" "cortexa9")
2430+ (eq_attr "neon_type" "neon_vld1_vld2_lane"))
2431+ "cortex_a9_neon_ls_3")
2432+
2433+;; Instructions using this reservation read their source operands at N1, and
2434+;; produce a result at N2 on cycle 5.
2435+(define_insn_reservation "cortex_a9_neon_vld3_vld4_lane" 6
2436+ (and (eq_attr "tune" "cortexa9")
2437+ (eq_attr "neon_type" "neon_vld3_vld4_lane"))
2438+ "cortex_a9_neon_ls_5")
2439+
2440+;; Instructions using this reservation read their source operands at N1.
2441+(define_insn_reservation "cortex_a9_neon_vst1_vst2_lane" 0
2442+ (and (eq_attr "tune" "cortexa9")
2443+ (eq_attr "neon_type" "neon_vst1_vst2_lane"))
2444+ "cortex_a9_neon_ls_2")
2445+
2446+;; Instructions using this reservation read their source operands at N1.
2447+(define_insn_reservation "cortex_a9_neon_vst3_vst4_lane" 0
2448+ (and (eq_attr "tune" "cortexa9")
2449+ (eq_attr "neon_type" "neon_vst3_vst4_lane"))
2450+ "cortex_a9_neon_ls_3")
2451+
2452+;; Instructions using this reservation produce a result at N2 on cycle 2.
2453+(define_insn_reservation "cortex_a9_neon_vld3_vld4_all_lanes" 3
2454+ (and (eq_attr "tune" "cortexa9")
2455+ (eq_attr "neon_type" "neon_vld3_vld4_all_lanes"))
2456+ "cortex_a9_neon_ls_3")
2457+
2458+;; Instructions using this reservation produce a result at N2.
2459+(define_insn_reservation "cortex_a9_neon_mcr" 2
2460+ (and (eq_attr "tune" "cortexa9")
2461+ (eq_attr "neon_type" "neon_mcr"))
2462+ "cortex_a9_neon_perm")
2463+
2464+;; Instructions using this reservation produce a result at N2.
2465+(define_insn_reservation "cortex_a9_neon_mcr_2_mcrr" 2
2466+ (and (eq_attr "tune" "cortexa9")
2467+ (eq_attr "neon_type" "neon_mcr_2_mcrr"))
2468+ "cortex_a9_neon_perm_2")
2469+
2470+;; Exceptions to the default latencies.
2471+
2472+(define_bypass 1 "cortex_a9_neon_mcr_2_mcrr"
2473+ "cortex_a9_neon_int_1,\
2474+ cortex_a9_neon_int_4,\
2475+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2476+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2477+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2478+ cortex_a9_neon_mla_qqq_8_16,\
2479+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2480+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2481+ cortex_a9_neon_fp_vmla_ddd,\
2482+ cortex_a9_neon_fp_vmla_qqq,\
2483+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2484+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2485+
2486+(define_bypass 1 "cortex_a9_neon_mcr"
2487+ "cortex_a9_neon_int_1,\
2488+ cortex_a9_neon_int_4,\
2489+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2490+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2491+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2492+ cortex_a9_neon_mla_qqq_8_16,\
2493+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2494+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2495+ cortex_a9_neon_fp_vmla_ddd,\
2496+ cortex_a9_neon_fp_vmla_qqq,\
2497+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2498+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2499+
2500+(define_bypass 2 "cortex_a9_neon_vld3_vld4_all_lanes"
2501+ "cortex_a9_neon_int_1,\
2502+ cortex_a9_neon_int_4,\
2503+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2504+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2505+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2506+ cortex_a9_neon_mla_qqq_8_16,\
2507+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2508+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2509+ cortex_a9_neon_fp_vmla_ddd,\
2510+ cortex_a9_neon_fp_vmla_qqq,\
2511+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2512+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2513+
2514+(define_bypass 5 "cortex_a9_neon_vld3_vld4_lane"
2515+ "cortex_a9_neon_int_1,\
2516+ cortex_a9_neon_int_4,\
2517+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2518+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2519+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2520+ cortex_a9_neon_mla_qqq_8_16,\
2521+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2522+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2523+ cortex_a9_neon_fp_vmla_ddd,\
2524+ cortex_a9_neon_fp_vmla_qqq,\
2525+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2526+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2527+
2528+(define_bypass 3 "cortex_a9_neon_vld1_vld2_lane"
2529+ "cortex_a9_neon_int_1,\
2530+ cortex_a9_neon_int_4,\
2531+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2532+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2533+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2534+ cortex_a9_neon_mla_qqq_8_16,\
2535+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2536+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2537+ cortex_a9_neon_fp_vmla_ddd,\
2538+ cortex_a9_neon_fp_vmla_qqq,\
2539+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2540+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2541+
2542+(define_bypass 4 "cortex_a9_neon_vld3_vld4"
2543+ "cortex_a9_neon_int_1,\
2544+ cortex_a9_neon_int_4,\
2545+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2546+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2547+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2548+ cortex_a9_neon_mla_qqq_8_16,\
2549+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2550+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2551+ cortex_a9_neon_fp_vmla_ddd,\
2552+ cortex_a9_neon_fp_vmla_qqq,\
2553+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2554+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2555+
2556+(define_bypass 3 "cortex_a9_neon_vld2_4_regs"
2557+ "cortex_a9_neon_int_1,\
2558+ cortex_a9_neon_int_4,\
2559+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2560+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2561+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2562+ cortex_a9_neon_mla_qqq_8_16,\
2563+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2564+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2565+ cortex_a9_neon_fp_vmla_ddd,\
2566+ cortex_a9_neon_fp_vmla_qqq,\
2567+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2568+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2569+
2570+(define_bypass 2 "cortex_a9_neon_vld2_2_regs_vld1_vld2_all_lanes"
2571+ "cortex_a9_neon_int_1,\
2572+ cortex_a9_neon_int_4,\
2573+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2574+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2575+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2576+ cortex_a9_neon_mla_qqq_8_16,\
2577+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2578+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2579+ cortex_a9_neon_fp_vmla_ddd,\
2580+ cortex_a9_neon_fp_vmla_qqq,\
2581+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2582+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2583+
2584+(define_bypass 2 "cortex_a9_neon_vld1_3_4_regs"
2585+ "cortex_a9_neon_int_1,\
2586+ cortex_a9_neon_int_4,\
2587+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2588+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2589+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2590+ cortex_a9_neon_mla_qqq_8_16,\
2591+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2592+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2593+ cortex_a9_neon_fp_vmla_ddd,\
2594+ cortex_a9_neon_fp_vmla_qqq,\
2595+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2596+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2597+
2598+(define_bypass 1 "cortex_a9_neon_vld1_1_2_regs"
2599+ "cortex_a9_neon_int_1,\
2600+ cortex_a9_neon_int_4,\
2601+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2602+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2603+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2604+ cortex_a9_neon_mla_qqq_8_16,\
2605+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2606+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2607+ cortex_a9_neon_fp_vmla_ddd,\
2608+ cortex_a9_neon_fp_vmla_qqq,\
2609+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2610+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2611+
2612+(define_bypass 0 "cortex_a9_neon_ldr"
2613+ "cortex_a9_neon_int_1,\
2614+ cortex_a9_neon_int_4,\
2615+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2616+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2617+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2618+ cortex_a9_neon_mla_qqq_8_16,\
2619+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2620+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2621+ cortex_a9_neon_fp_vmla_ddd,\
2622+ cortex_a9_neon_fp_vmla_qqq,\
2623+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2624+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2625+
2626+(define_bypass 3 "cortex_a9_neon_bp_3cycle"
2627+ "cortex_a9_neon_int_1,\
2628+ cortex_a9_neon_int_4,\
2629+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2630+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2631+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2632+ cortex_a9_neon_mla_qqq_8_16,\
2633+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2634+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2635+ cortex_a9_neon_fp_vmla_ddd,\
2636+ cortex_a9_neon_fp_vmla_qqq,\
2637+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2638+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2639+
2640+(define_bypass 2 "cortex_a9_neon_bp_2cycle"
2641+ "cortex_a9_neon_int_1,\
2642+ cortex_a9_neon_int_4,\
2643+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2644+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2645+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2646+ cortex_a9_neon_mla_qqq_8_16,\
2647+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2648+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2649+ cortex_a9_neon_fp_vmla_ddd,\
2650+ cortex_a9_neon_fp_vmla_qqq,\
2651+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2652+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2653+
2654+(define_bypass 1 "cortex_a9_neon_bp_simple"
2655+ "cortex_a9_neon_int_1,\
2656+ cortex_a9_neon_int_4,\
2657+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2658+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2659+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2660+ cortex_a9_neon_mla_qqq_8_16,\
2661+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2662+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2663+ cortex_a9_neon_fp_vmla_ddd,\
2664+ cortex_a9_neon_fp_vmla_qqq,\
2665+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2666+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2667+
2668+(define_bypass 9 "cortex_a9_neon_fp_vrecps_vrsqrts_qqq"
2669+ "cortex_a9_neon_int_1,\
2670+ cortex_a9_neon_int_4,\
2671+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2672+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2673+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2674+ cortex_a9_neon_mla_qqq_8_16,\
2675+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2676+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2677+ cortex_a9_neon_fp_vmla_ddd,\
2678+ cortex_a9_neon_fp_vmla_qqq,\
2679+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2680+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2681+
2682+(define_bypass 8 "cortex_a9_neon_fp_vrecps_vrsqrts_ddd"
2683+ "cortex_a9_neon_int_1,\
2684+ cortex_a9_neon_int_4,\
2685+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2686+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2687+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2688+ cortex_a9_neon_mla_qqq_8_16,\
2689+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2690+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2691+ cortex_a9_neon_fp_vmla_ddd,\
2692+ cortex_a9_neon_fp_vmla_qqq,\
2693+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2694+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2695+
2696+(define_bypass 9 "cortex_a9_neon_fp_vmla_qqq_scalar"
2697+ "cortex_a9_neon_int_1,\
2698+ cortex_a9_neon_int_4,\
2699+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2700+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2701+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2702+ cortex_a9_neon_mla_qqq_8_16,\
2703+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2704+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2705+ cortex_a9_neon_fp_vmla_ddd,\
2706+ cortex_a9_neon_fp_vmla_qqq,\
2707+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2708+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2709+
2710+(define_bypass 8 "cortex_a9_neon_fp_vmla_ddd_scalar"
2711+ "cortex_a9_neon_int_1,\
2712+ cortex_a9_neon_int_4,\
2713+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2714+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2715+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2716+ cortex_a9_neon_mla_qqq_8_16,\
2717+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2718+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2719+ cortex_a9_neon_fp_vmla_ddd,\
2720+ cortex_a9_neon_fp_vmla_qqq,\
2721+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2722+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2723+
2724+(define_bypass 9 "cortex_a9_neon_fp_vmla_qqq"
2725+ "cortex_a9_neon_int_1,\
2726+ cortex_a9_neon_int_4,\
2727+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2728+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2729+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2730+ cortex_a9_neon_mla_qqq_8_16,\
2731+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2732+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2733+ cortex_a9_neon_fp_vmla_ddd,\
2734+ cortex_a9_neon_fp_vmla_qqq,\
2735+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2736+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2737+
2738+(define_bypass 8 "cortex_a9_neon_fp_vmla_ddd"
2739+ "cortex_a9_neon_int_1,\
2740+ cortex_a9_neon_int_4,\
2741+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2742+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2743+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2744+ cortex_a9_neon_mla_qqq_8_16,\
2745+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2746+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2747+ cortex_a9_neon_fp_vmla_ddd,\
2748+ cortex_a9_neon_fp_vmla_qqq,\
2749+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2750+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2751+
2752+(define_bypass 5 "cortex_a9_neon_fp_vmul_qqd"
2753+ "cortex_a9_neon_int_1,\
2754+ cortex_a9_neon_int_4,\
2755+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2756+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2757+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2758+ cortex_a9_neon_mla_qqq_8_16,\
2759+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2760+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2761+ cortex_a9_neon_fp_vmla_ddd,\
2762+ cortex_a9_neon_fp_vmla_qqq,\
2763+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2764+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2765+
2766+(define_bypass 4 "cortex_a9_neon_fp_vmul_ddd"
2767+ "cortex_a9_neon_int_1,\
2768+ cortex_a9_neon_int_4,\
2769+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2770+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2771+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2772+ cortex_a9_neon_mla_qqq_8_16,\
2773+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2774+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2775+ cortex_a9_neon_fp_vmla_ddd,\
2776+ cortex_a9_neon_fp_vmla_qqq,\
2777+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2778+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2779+
2780+(define_bypass 4 "cortex_a9_neon_fp_vsum"
2781+ "cortex_a9_neon_int_1,\
2782+ cortex_a9_neon_int_4,\
2783+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2784+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2785+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2786+ cortex_a9_neon_mla_qqq_8_16,\
2787+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2788+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2789+ cortex_a9_neon_fp_vmla_ddd,\
2790+ cortex_a9_neon_fp_vmla_qqq,\
2791+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2792+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2793+
2794+(define_bypass 5 "cortex_a9_neon_fp_vadd_qqq_vabs_qq"
2795+ "cortex_a9_neon_int_1,\
2796+ cortex_a9_neon_int_4,\
2797+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2798+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2799+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2800+ cortex_a9_neon_mla_qqq_8_16,\
2801+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2802+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2803+ cortex_a9_neon_fp_vmla_ddd,\
2804+ cortex_a9_neon_fp_vmla_qqq,\
2805+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2806+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2807+
2808+(define_bypass 4 "cortex_a9_neon_fp_vadd_ddd_vabs_dd"
2809+ "cortex_a9_neon_int_1,\
2810+ cortex_a9_neon_int_4,\
2811+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2812+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2813+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2814+ cortex_a9_neon_mla_qqq_8_16,\
2815+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2816+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2817+ cortex_a9_neon_fp_vmla_ddd,\
2818+ cortex_a9_neon_fp_vmla_qqq,\
2819+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2820+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2821+
2822+(define_bypass 5 "cortex_a9_neon_vsra_vrsra"
2823+ "cortex_a9_neon_int_1,\
2824+ cortex_a9_neon_int_4,\
2825+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2826+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2827+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2828+ cortex_a9_neon_mla_qqq_8_16,\
2829+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2830+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2831+ cortex_a9_neon_fp_vmla_ddd,\
2832+ cortex_a9_neon_fp_vmla_qqq,\
2833+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2834+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2835+
2836+(define_bypass 4 "cortex_a9_neon_vqshl_vrshl_vqrshl_qqq"
2837+ "cortex_a9_neon_int_1,\
2838+ cortex_a9_neon_int_4,\
2839+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2840+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2841+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2842+ cortex_a9_neon_mla_qqq_8_16,\
2843+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2844+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2845+ cortex_a9_neon_fp_vmla_ddd,\
2846+ cortex_a9_neon_fp_vmla_qqq,\
2847+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2848+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2849+
2850+(define_bypass 0 "cortex_a9_neon_vshl_ddd"
2851+ "cortex_a9_neon_int_1,\
2852+ cortex_a9_neon_int_4,\
2853+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2854+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2855+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2856+ cortex_a9_neon_mla_qqq_8_16,\
2857+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2858+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2859+ cortex_a9_neon_fp_vmla_ddd,\
2860+ cortex_a9_neon_fp_vmla_qqq,\
2861+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2862+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2863+
2864+(define_bypass 3 "cortex_a9_neon_shift_3"
2865+ "cortex_a9_neon_int_1,\
2866+ cortex_a9_neon_int_4,\
2867+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2868+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2869+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2870+ cortex_a9_neon_mla_qqq_8_16,\
2871+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2872+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2873+ cortex_a9_neon_fp_vmla_ddd,\
2874+ cortex_a9_neon_fp_vmla_qqq,\
2875+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2876+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2877+
2878+(define_bypass 3 "cortex_a9_neon_shift_2"
2879+ "cortex_a9_neon_int_1,\
2880+ cortex_a9_neon_int_4,\
2881+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2882+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2883+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2884+ cortex_a9_neon_mla_qqq_8_16,\
2885+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2886+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2887+ cortex_a9_neon_fp_vmla_ddd,\
2888+ cortex_a9_neon_fp_vmla_qqq,\
2889+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2890+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2891+
2892+(define_bypass 2 "cortex_a9_neon_shift_1"
2893+ "cortex_a9_neon_int_1,\
2894+ cortex_a9_neon_int_4,\
2895+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2896+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2897+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2898+ cortex_a9_neon_mla_qqq_8_16,\
2899+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2900+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2901+ cortex_a9_neon_fp_vmla_ddd,\
2902+ cortex_a9_neon_fp_vmla_qqq,\
2903+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2904+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2905+
2906+(define_bypass 5 "cortex_a9_neon_mla_ddd_16_scalar_qdd_32_16_long_scalar"
2907+ "cortex_a9_neon_int_1,\
2908+ cortex_a9_neon_int_4,\
2909+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2910+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2911+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2912+ cortex_a9_neon_mla_qqq_8_16,\
2913+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2914+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2915+ cortex_a9_neon_fp_vmla_ddd,\
2916+ cortex_a9_neon_fp_vmla_qqq,\
2917+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2918+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2919+
2920+(define_bypass 8 "cortex_a9_neon_mul_qqd_32_scalar"
2921+ "cortex_a9_neon_int_1,\
2922+ cortex_a9_neon_int_4,\
2923+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2924+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2925+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2926+ cortex_a9_neon_mla_qqq_8_16,\
2927+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2928+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2929+ cortex_a9_neon_fp_vmla_ddd,\
2930+ cortex_a9_neon_fp_vmla_qqq,\
2931+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2932+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2933+
2934+(define_bypass 5 "cortex_a9_neon_mul_ddd_16_scalar_32_16_long_scalar"
2935+ "cortex_a9_neon_int_1,\
2936+ cortex_a9_neon_int_4,\
2937+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2938+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2939+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2940+ cortex_a9_neon_mla_qqq_8_16,\
2941+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2942+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2943+ cortex_a9_neon_fp_vmla_ddd,\
2944+ cortex_a9_neon_fp_vmla_qqq,\
2945+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2946+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2947+
2948+(define_bypass 8 "cortex_a9_neon_mla_qqq_32_qqd_32_scalar"
2949+ "cortex_a9_neon_int_1,\
2950+ cortex_a9_neon_int_4,\
2951+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2952+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2953+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2954+ cortex_a9_neon_mla_qqq_8_16,\
2955+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2956+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2957+ cortex_a9_neon_fp_vmla_ddd,\
2958+ cortex_a9_neon_fp_vmla_qqq,\
2959+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2960+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2961+
2962+(define_bypass 6 "cortex_a9_neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long"
2963+ "cortex_a9_neon_int_1,\
2964+ cortex_a9_neon_int_4,\
2965+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2966+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2967+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2968+ cortex_a9_neon_mla_qqq_8_16,\
2969+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2970+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2971+ cortex_a9_neon_fp_vmla_ddd,\
2972+ cortex_a9_neon_fp_vmla_qqq,\
2973+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2974+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2975+
2976+(define_bypass 6 "cortex_a9_neon_mla_qqq_8_16"
2977+ "cortex_a9_neon_int_1,\
2978+ cortex_a9_neon_int_4,\
2979+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2980+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2981+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2982+ cortex_a9_neon_mla_qqq_8_16,\
2983+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2984+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2985+ cortex_a9_neon_fp_vmla_ddd,\
2986+ cortex_a9_neon_fp_vmla_qqq,\
2987+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
2988+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
2989+
2990+(define_bypass 5 "cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long"
2991+ "cortex_a9_neon_int_1,\
2992+ cortex_a9_neon_int_4,\
2993+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
2994+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
2995+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
2996+ cortex_a9_neon_mla_qqq_8_16,\
2997+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
2998+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
2999+ cortex_a9_neon_fp_vmla_ddd,\
3000+ cortex_a9_neon_fp_vmla_qqq,\
3001+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
3002+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
3003+
3004+(define_bypass 6 "cortex_a9_neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar"
3005+ "cortex_a9_neon_int_1,\
3006+ cortex_a9_neon_int_4,\
3007+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
3008+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
3009+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
3010+ cortex_a9_neon_mla_qqq_8_16,\
3011+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
3012+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
3013+ cortex_a9_neon_fp_vmla_ddd,\
3014+ cortex_a9_neon_fp_vmla_qqq,\
3015+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
3016+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
3017+
3018+(define_bypass 6 "cortex_a9_neon_mul_qqq_8_16_32_ddd_32"
3019+ "cortex_a9_neon_int_1,\
3020+ cortex_a9_neon_int_4,\
3021+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
3022+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
3023+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
3024+ cortex_a9_neon_mla_qqq_8_16,\
3025+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
3026+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
3027+ cortex_a9_neon_fp_vmla_ddd,\
3028+ cortex_a9_neon_fp_vmla_qqq,\
3029+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
3030+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
3031+
3032+(define_bypass 5 "cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long"
3033+ "cortex_a9_neon_int_1,\
3034+ cortex_a9_neon_int_4,\
3035+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
3036+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
3037+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
3038+ cortex_a9_neon_mla_qqq_8_16,\
3039+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
3040+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
3041+ cortex_a9_neon_fp_vmla_ddd,\
3042+ cortex_a9_neon_fp_vmla_qqq,\
3043+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
3044+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
3045+
3046+(define_bypass 5 "cortex_a9_neon_vsma"
3047+ "cortex_a9_neon_int_1,\
3048+ cortex_a9_neon_int_4,\
3049+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
3050+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
3051+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
3052+ cortex_a9_neon_mla_qqq_8_16,\
3053+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
3054+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
3055+ cortex_a9_neon_fp_vmla_ddd,\
3056+ cortex_a9_neon_fp_vmla_qqq,\
3057+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
3058+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
3059+
3060+(define_bypass 6 "cortex_a9_neon_vaba_qqq"
3061+ "cortex_a9_neon_int_1,\
3062+ cortex_a9_neon_int_4,\
3063+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
3064+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
3065+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
3066+ cortex_a9_neon_mla_qqq_8_16,\
3067+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
3068+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
3069+ cortex_a9_neon_fp_vmla_ddd,\
3070+ cortex_a9_neon_fp_vmla_qqq,\
3071+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
3072+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
3073+
3074+(define_bypass 5 "cortex_a9_neon_vaba"
3075+ "cortex_a9_neon_int_1,\
3076+ cortex_a9_neon_int_4,\
3077+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
3078+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
3079+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
3080+ cortex_a9_neon_mla_qqq_8_16,\
3081+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
3082+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
3083+ cortex_a9_neon_fp_vmla_ddd,\
3084+ cortex_a9_neon_fp_vmla_qqq,\
3085+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
3086+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
3087+
3088+(define_bypass 2 "cortex_a9_neon_vmov"
3089+ "cortex_a9_neon_int_1,\
3090+ cortex_a9_neon_int_4,\
3091+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
3092+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
3093+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
3094+ cortex_a9_neon_mla_qqq_8_16,\
3095+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
3096+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
3097+ cortex_a9_neon_fp_vmla_ddd,\
3098+ cortex_a9_neon_fp_vmla_qqq,\
3099+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
3100+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
3101+
3102+(define_bypass 3 "cortex_a9_neon_vqneg_vqabs"
3103+ "cortex_a9_neon_int_1,\
3104+ cortex_a9_neon_int_4,\
3105+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
3106+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
3107+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
3108+ cortex_a9_neon_mla_qqq_8_16,\
3109+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
3110+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
3111+ cortex_a9_neon_fp_vmla_ddd,\
3112+ cortex_a9_neon_fp_vmla_qqq,\
3113+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
3114+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
3115+
3116+(define_bypass 3 "cortex_a9_neon_int_5"
3117+ "cortex_a9_neon_int_1,\
3118+ cortex_a9_neon_int_4,\
3119+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
3120+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
3121+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
3122+ cortex_a9_neon_mla_qqq_8_16,\
3123+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
3124+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
3125+ cortex_a9_neon_fp_vmla_ddd,\
3126+ cortex_a9_neon_fp_vmla_qqq,\
3127+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
3128+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
3129+
3130+(define_bypass 3 "cortex_a9_neon_int_4"
3131+ "cortex_a9_neon_int_1,\
3132+ cortex_a9_neon_int_4,\
3133+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
3134+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
3135+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
3136+ cortex_a9_neon_mla_qqq_8_16,\
3137+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
3138+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
3139+ cortex_a9_neon_fp_vmla_ddd,\
3140+ cortex_a9_neon_fp_vmla_qqq,\
3141+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
3142+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
3143+
3144+(define_bypass 2 "cortex_a9_neon_int_3"
3145+ "cortex_a9_neon_int_1,\
3146+ cortex_a9_neon_int_4,\
3147+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
3148+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
3149+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
3150+ cortex_a9_neon_mla_qqq_8_16,\
3151+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
3152+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
3153+ cortex_a9_neon_fp_vmla_ddd,\
3154+ cortex_a9_neon_fp_vmla_qqq,\
3155+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
3156+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
3157+
3158+(define_bypass 2 "cortex_a9_neon_int_2"
3159+ "cortex_a9_neon_int_1,\
3160+ cortex_a9_neon_int_4,\
3161+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
3162+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
3163+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
3164+ cortex_a9_neon_mla_qqq_8_16,\
3165+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
3166+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
3167+ cortex_a9_neon_fp_vmla_ddd,\
3168+ cortex_a9_neon_fp_vmla_qqq,\
3169+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
3170+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
3171+
3172+(define_bypass 2 "cortex_a9_neon_int_1"
3173+ "cortex_a9_neon_int_1,\
3174+ cortex_a9_neon_int_4,\
3175+ cortex_a9_neon_mul_ddd_8_16_qdd_16_8_long_32_16_long,\
3176+ cortex_a9_neon_mul_qqq_8_16_32_ddd_32,\
3177+ cortex_a9_neon_mla_ddd_8_16_qdd_16_8_long_32_16_long,\
3178+ cortex_a9_neon_mla_qqq_8_16,\
3179+ cortex_a9_neon_fp_vadd_ddd_vabs_dd,\
3180+ cortex_a9_neon_fp_vadd_qqq_vabs_qq,\
3181+ cortex_a9_neon_fp_vmla_ddd,\
3182+ cortex_a9_neon_fp_vmla_qqq,\
3183+ cortex_a9_neon_fp_vrecps_vrsqrts_ddd,\
3184+ cortex_a9_neon_fp_vrecps_vrsqrts_qqq")
3185+
3186
3187=== modified file 'gcc/config/arm/cortex-a9.md'
3188--- old/gcc/config/arm/cortex-a9.md 2010-08-24 13:15:54 +0000
3189+++ new/gcc/config/arm/cortex-a9.md 2010-09-16 09:47:44 +0000
3190@@ -80,8 +80,9 @@
3191 (define_insn_reservation "cortex_a9_dp" 2
3192 (and (eq_attr "tune" "cortexa9")
3193 (ior (eq_attr "type" "alu")
3194- (and (eq_attr "type" "alu_shift_reg, alu_shift")
3195- (eq_attr "insn" "mov"))))
3196+ (ior (and (eq_attr "type" "alu_shift_reg, alu_shift")
3197+ (eq_attr "insn" "mov"))
3198+ (eq_attr "neon_type" "none"))))
3199 "cortex_a9_p0_default|cortex_a9_p1_default")
3200
3201 ;; An instruction using the shifter will go down E1.
3202
3203=== modified file 'gcc/config/arm/neon-schedgen.ml'
3204--- old/gcc/config/arm/neon-schedgen.ml 2010-04-02 18:54:46 +0000
3205+++ new/gcc/config/arm/neon-schedgen.ml 2010-09-16 09:47:44 +0000
3206@@ -1,7 +1,6 @@
3207 (* Emission of the core of the Cortex-A8 NEON scheduling description.
3208 Copyright (C) 2007, 2010 Free Software Foundation, Inc.
3209 Contributed by CodeSourcery.
3210-
3211 This file is part of GCC.
3212
3213 GCC is free software; you can redistribute it and/or modify it under
3214@@ -21,7 +20,14 @@
3215
3216 (* This scheduling description generator works as follows.
3217 - Each group of instructions has source and destination requirements
3218- specified. The source requirements may be specified using
3219+ specified and a list of cores supported. This is then filtered
3220+ and per core scheduler descriptions are generated out.
3221+ The reservations generated are prefixed by the name of the
3222+ core and the check is performed on the basis of what the tuning
3223+ string is. Running this will generate Neon scheduler descriptions
3224+ for all cores supported.
3225+
3226+ The source requirements may be specified using
3227 Source (the stage at which all source operands not otherwise
3228 described are read), Source_m (the stage at which Rm operands are
3229 read), Source_n (likewise for Rn) and Source_d (likewise for Rd).
3230@@ -83,6 +89,17 @@
3231 | Ls of int
3232 | Fmul_then_fadd | Fmul_then_fadd_2
3233
3234+type core = CortexA8 | CortexA9
3235+let allCores = [CortexA8; CortexA9]
3236+let coreStr = function
3237+ CortexA8 -> "cortex_a8"
3238+ | CortexA9 -> "cortex_a9"
3239+
3240+let tuneStr = function
3241+ CortexA8 -> "cortexa8"
3242+ | CortexA9 -> "cortexa9"
3243+
3244+
3245 (* This table must be kept as short as possible by conflating
3246 entries with the same availability behavior.
3247
3248@@ -90,129 +107,136 @@
3249 Second components: availability requirements, in the order in which
3250 they should appear in the comments in the .md file.
3251 Third components: reservation info
3252+ Fourth components: List of supported cores.
3253 *)
3254 let availability_table = [
3255 (* NEON integer ALU instructions. *)
3256 (* vbit vbif vbsl vorr vbic vnot vcls vclz vcnt vadd vand vorr
3257 veor vbic vorn ddd qqq *)
3258- "neon_int_1", [Source n2; Dest n3], ALU;
3259+ "neon_int_1", [Source n2; Dest n3], ALU, allCores;
3260 (* vadd vsub qqd vsub ddd qqq *)
3261- "neon_int_2", [Source_m n1; Source_n n2; Dest n3], ALU;
3262+ "neon_int_2", [Source_m n1; Source_n n2; Dest n3], ALU, allCores;
3263 (* vsum vneg dd qq vadd vsub qdd *)
3264- "neon_int_3", [Source n1; Dest n3], ALU;
3265+ "neon_int_3", [Source n1; Dest n3], ALU, allCores;
3266 (* vabs vceqz vcgez vcbtz vclez vcltz vadh vradh vsbh vrsbh dqq *)
3267 (* vhadd vrhadd vqadd vtst ddd qqq *)
3268- "neon_int_4", [Source n2; Dest n4], ALU;
3269+ "neon_int_4", [Source n2; Dest n4], ALU, allCores;
3270 (* vabd qdd vhsub vqsub vabd vceq vcge vcgt vmax vmin vfmx vfmn ddd ddd *)
3271- "neon_int_5", [Source_m n1; Source_n n2; Dest n4], ALU;
3272+ "neon_int_5", [Source_m n1; Source_n n2; Dest n4], ALU, allCores;
3273 (* vqneg vqabs dd qq *)
3274- "neon_vqneg_vqabs", [Source n1; Dest n4], ALU;
3275+ "neon_vqneg_vqabs", [Source n1; Dest n4], ALU, allCores;
3276 (* vmov vmvn *)
3277- "neon_vmov", [Dest n3], ALU;
3278+ "neon_vmov", [Dest n3], ALU, allCores;
3279 (* vaba *)
3280- "neon_vaba", [Source_n n2; Source_m n1; Source_d n3; Dest n6], ALU;
3281+ "neon_vaba", [Source_n n2; Source_m n1; Source_d n3; Dest n6], ALU, allCores;
3282 "neon_vaba_qqq",
3283- [Source_n n2; Source_m n1; Source_d n3; Dest_n_after (1, n6)], ALU_2cycle;
3284+ [Source_n n2; Source_m n1; Source_d n3; Dest_n_after (1, n6)],
3285+ ALU_2cycle, allCores;
3286 (* vsma *)
3287- "neon_vsma", [Source_m n1; Source_d n3; Dest n6], ALU;
3288+ "neon_vsma", [Source_m n1; Source_d n3; Dest n6], ALU, allCores;
3289
3290 (* NEON integer multiply instructions. *)
3291 (* vmul, vqdmlh, vqrdmlh *)
3292 (* vmul, vqdmul, qdd 16/8 long 32/16 long *)
3293- "neon_mul_ddd_8_16_qdd_16_8_long_32_16_long", [Source n2; Dest n6], Mul;
3294- "neon_mul_qqq_8_16_32_ddd_32", [Source n2; Dest_n_after (1, n6)], Mul_2cycle;
3295+ "neon_mul_ddd_8_16_qdd_16_8_long_32_16_long", [Source n2; Dest n6],
3296+ Mul, allCores;
3297+ "neon_mul_qqq_8_16_32_ddd_32", [Source n2; Dest_n_after (1, n6)],
3298+ Mul_2cycle, allCores;
3299 (* vmul, vqdmul again *)
3300 "neon_mul_qdd_64_32_long_qqd_16_ddd_32_scalar_64_32_long_scalar",
3301- [Source_n n2; Source_m n1; Dest_n_after (1, n6)], Mul_2cycle;
3302+ [Source_n n2; Source_m n1; Dest_n_after (1, n6)], Mul_2cycle, allCores;
3303 (* vmla, vmls *)
3304 "neon_mla_ddd_8_16_qdd_16_8_long_32_16_long",
3305- [Source_n n2; Source_m n2; Source_d n3; Dest n6], Mul;
3306+ [Source_n n2; Source_m n2; Source_d n3; Dest n6], Mul, allCores;
3307 "neon_mla_qqq_8_16",
3308- [Source_n n2; Source_m n2; Source_d n3; Dest_n_after (1, n6)], Mul_2cycle;
3309+ [Source_n n2; Source_m n2; Source_d n3; Dest_n_after (1, n6)],
3310+ Mul_2cycle, allCores;
3311 "neon_mla_ddd_32_qqd_16_ddd_32_scalar_qdd_64_32_long_scalar_qdd_64_32_long",
3312- [Source_n n2; Source_m n1; Source_d n3; Dest_n_after (1, n6)], Mul_2cycle;
3313+ [Source_n n2; Source_m n1; Source_d n3; Dest_n_after (1, n6)],
3314+ Mul_2cycle, allCores;
3315 "neon_mla_qqq_32_qqd_32_scalar",
3316- [Source_n n2; Source_m n1; Source_d n3; Dest_n_after (3, n6)], Mul_4cycle;
3317+ [Source_n n2; Source_m n1; Source_d n3; Dest_n_after (3, n6)],
3318+ Mul_4cycle, allCores;
3319 (* vmul, vqdmulh, vqrdmulh *)
3320 (* vmul, vqdmul *)
3321 "neon_mul_ddd_16_scalar_32_16_long_scalar",
3322- [Source_n n2; Source_m n1; Dest n6], Mul;
3323+ [Source_n n2; Source_m n1; Dest n6], Mul, allCores;
3324 "neon_mul_qqd_32_scalar",
3325- [Source_n n2; Source_m n1; Dest_n_after (3, n6)], Mul_4cycle;
3326+ [Source_n n2; Source_m n1; Dest_n_after (3, n6)], Mul_4cycle, allCores;
3327 (* vmla, vmls *)
3328 (* vmla, vmla, vqdmla, vqdmls *)
3329 "neon_mla_ddd_16_scalar_qdd_32_16_long_scalar",
3330- [Source_n n2; Source_m n1; Source_d n3; Dest n6], Mul;
3331+ [Source_n n2; Source_m n1; Source_d n3; Dest n6], Mul, allCores;
3332
3333 (* NEON integer shift instructions. *)
3334 (* vshr/vshl immediate, vshr_narrow, vshl_vmvh, vsli_vsri_ddd *)
3335- "neon_shift_1", [Source n1; Dest n3], Shift;
3336- (* vqshl, vrshr immediate; vqshr, vqmov, vrshr, vqrshr narrow;
3337+ "neon_shift_1", [Source n1; Dest n3], Shift, allCores;
3338+ (* vqshl, vrshr immediate; vqshr, vqmov, vrshr, vqrshr narrow, allCores;
3339 vqshl_vrshl_vqrshl_ddd *)
3340- "neon_shift_2", [Source n1; Dest n4], Shift;
3341+ "neon_shift_2", [Source n1; Dest n4], Shift, allCores;
3342 (* vsli, vsri and vshl for qqq *)
3343- "neon_shift_3", [Source n1; Dest_n_after (1, n3)], Shift_2cycle;
3344- "neon_vshl_ddd", [Source n1; Dest n1], Shift;
3345+ "neon_shift_3", [Source n1; Dest_n_after (1, n3)], Shift_2cycle, allCores;
3346+ "neon_vshl_ddd", [Source n1; Dest n1], Shift, allCores;
3347 "neon_vqshl_vrshl_vqrshl_qqq", [Source n1; Dest_n_after (1, n4)],
3348- Shift_2cycle;
3349- "neon_vsra_vrsra", [Source_m n1; Source_d n3; Dest n6], Shift;
3350+ Shift_2cycle, allCores;
3351+ "neon_vsra_vrsra", [Source_m n1; Source_d n3; Dest n6], Shift, allCores;
3352
3353 (* NEON floating-point instructions. *)
3354 (* vadd, vsub, vabd, vmul, vceq, vcge, vcgt, vcage, vcagt, vmax, vmin *)
3355 (* vabs, vneg, vceqz, vcgez, vcgtz, vclez, vcltz, vrecpe, vrsqrte, vcvt *)
3356- "neon_fp_vadd_ddd_vabs_dd", [Source n2; Dest n5], Fadd;
3357+ "neon_fp_vadd_ddd_vabs_dd", [Source n2; Dest n5], Fadd, allCores;
3358 "neon_fp_vadd_qqq_vabs_qq", [Source n2; Dest_n_after (1, n5)],
3359- Fadd_2cycle;
3360+ Fadd_2cycle, allCores;
3361 (* vsum, fvmx, vfmn *)
3362- "neon_fp_vsum", [Source n1; Dest n5], Fadd;
3363- "neon_fp_vmul_ddd", [Source_n n2; Source_m n1; Dest n5], Fmul;
3364+ "neon_fp_vsum", [Source n1; Dest n5], Fadd, allCores;
3365+ "neon_fp_vmul_ddd", [Source_n n2; Source_m n1; Dest n5], Fmul, allCores;
3366 "neon_fp_vmul_qqd", [Source_n n2; Source_m n1; Dest_n_after (1, n5)],
3367- Fmul_2cycle;
3368+ Fmul_2cycle, allCores;
3369 (* vmla, vmls *)
3370 "neon_fp_vmla_ddd",
3371- [Source_n n2; Source_m n2; Source_d n3; Dest n9], Fmul_then_fadd;
3372+ [Source_n n2; Source_m n2; Source_d n3; Dest n9], Fmul_then_fadd, allCores;
3373 "neon_fp_vmla_qqq",
3374 [Source_n n2; Source_m n2; Source_d n3; Dest_n_after (1, n9)],
3375- Fmul_then_fadd_2;
3376+ Fmul_then_fadd_2, allCores;
3377 "neon_fp_vmla_ddd_scalar",
3378- [Source_n n2; Source_m n1; Source_d n3; Dest n9], Fmul_then_fadd;
3379+ [Source_n n2; Source_m n1; Source_d n3; Dest n9], Fmul_then_fadd, allCores;
3380 "neon_fp_vmla_qqq_scalar",
3381 [Source_n n2; Source_m n1; Source_d n3; Dest_n_after (1, n9)],
3382- Fmul_then_fadd_2;
3383- "neon_fp_vrecps_vrsqrts_ddd", [Source n2; Dest n9], Fmul_then_fadd;
3384+ Fmul_then_fadd_2, allCores;
3385+ "neon_fp_vrecps_vrsqrts_ddd", [Source n2; Dest n9], Fmul_then_fadd, allCores;
3386 "neon_fp_vrecps_vrsqrts_qqq", [Source n2; Dest_n_after (1, n9)],
3387- Fmul_then_fadd_2;
3388+ Fmul_then_fadd_2, allCores;
3389
3390 (* NEON byte permute instructions. *)
3391 (* vmov; vtrn and vswp for dd; vzip for dd; vuzp for dd; vrev; vext for dd *)
3392- "neon_bp_simple", [Source n1; Dest n2], Permute 1;
3393- (* vswp for qq; vext for qqq; vtbl with {Dn} or {Dn, Dn1};
3394+ "neon_bp_simple", [Source n1; Dest n2], Permute 1, allCores;
3395+ (* vswp for qq; vext for qqq; vtbl with {Dn} or {Dn, Dn1}, allCores;
3396 similarly for vtbx *)
3397- "neon_bp_2cycle", [Source n1; Dest_n_after (1, n2)], Permute 2;
3398+ "neon_bp_2cycle", [Source n1; Dest_n_after (1, n2)], Permute 2, allCores;
3399 (* all the rest *)
3400- "neon_bp_3cycle", [Source n1; Dest_n_after (2, n2)], Permute 3;
3401+ "neon_bp_3cycle", [Source n1; Dest_n_after (2, n2)], Permute 3, allCores;
3402
3403 (* NEON load/store instructions. *)
3404- "neon_ldr", [Dest n1], Ls 1;
3405- "neon_str", [Source n1], Ls 1;
3406- "neon_vld1_1_2_regs", [Dest_n_after (1, n1)], Ls 2;
3407- "neon_vld1_3_4_regs", [Dest_n_after (2, n1)], Ls 3;
3408- "neon_vld2_2_regs_vld1_vld2_all_lanes", [Dest_n_after (1, n2)], Ls 2;
3409- "neon_vld2_4_regs", [Dest_n_after (2, n2)], Ls 3;
3410- "neon_vld3_vld4", [Dest_n_after (3, n2)], Ls 4;
3411- "neon_vst1_1_2_regs_vst2_2_regs", [Source n1], Ls 2;
3412- "neon_vst1_3_4_regs", [Source n1], Ls 3;
3413- "neon_vst2_4_regs_vst3_vst4", [Source n1], Ls 4;
3414- "neon_vst3_vst4", [Source n1], Ls 4;
3415- "neon_vld1_vld2_lane", [Source n1; Dest_n_after (2, n2)], Ls 3;
3416- "neon_vld3_vld4_lane", [Source n1; Dest_n_after (4, n2)], Ls 5;
3417- "neon_vst1_vst2_lane", [Source n1], Ls 2;
3418- "neon_vst3_vst4_lane", [Source n1], Ls 3;
3419- "neon_vld3_vld4_all_lanes", [Dest_n_after (1, n2)], Ls 3;
3420+ "neon_ldr", [Dest n1], Ls 1, allCores;
3421+ "neon_str", [Source n1], Ls 1, allCores;
3422+ "neon_vld1_1_2_regs", [Dest_n_after (1, n1)], Ls 2, allCores;
3423+ "neon_vld1_3_4_regs", [Dest_n_after (2, n1)], Ls 3, allCores;
3424+ "neon_vld2_2_regs_vld1_vld2_all_lanes", [Dest_n_after (1, n2)], Ls 2, allCores;
3425+ "neon_vld2_4_regs", [Dest_n_after (2, n2)], Ls 3, allCores;
3426+ "neon_vld3_vld4", [Dest_n_after (3, n2)], Ls 4, allCores;
3427+ "neon_vst1_1_2_regs_vst2_2_regs", [Source n1], Ls 2, allCores;
3428+ "neon_vst1_3_4_regs", [Source n1], Ls 3, allCores;
3429+ "neon_vst2_4_regs_vst3_vst4", [Source n1], Ls 4, allCores;
3430+ "neon_vst3_vst4", [Source n1], Ls 4, allCores;
3431+ "neon_vld1_vld2_lane", [Source n1; Dest_n_after (2, n2)], Ls 3, allCores;
3432+ "neon_vld3_vld4_lane", [Source n1; Dest_n_after (4, n2)], Ls 5, allCores;
3433+ "neon_vst1_vst2_lane", [Source n1], Ls 2, allCores;
3434+ "neon_vst3_vst4_lane", [Source n1], Ls 3, allCores;
3435+ "neon_vld3_vld4_all_lanes", [Dest_n_after (1, n2)], Ls 3, allCores;
3436
3437 (* NEON register transfer instructions. *)
3438- "neon_mcr", [Dest n2], Permute 1;
3439- "neon_mcr_2_mcrr", [Dest n2], Permute 2;
3440+ "neon_mcr", [Dest n2], Permute 1, allCores;
3441+ "neon_mcr_2_mcrr", [Dest n2], Permute 2, allCores;
3442 (* MRC instructions are in the .tpl file. *)
3443 ]
3444
3445@@ -221,7 +245,7 @@
3446 required. (It is also possible that an entry in the table has no
3447 source requirements.) *)
3448 let calculate_sources =
3449- List.map (fun (name, avail, res) ->
3450+ List.map (fun (name, avail, res, cores) ->
3451 let earliest_stage =
3452 List.fold_left
3453 (fun cur -> fun info ->
3454@@ -331,7 +355,7 @@
3455 of one bypass from this producer to any particular consumer listed
3456 in LATENCIES.) Use a hash table to collate bypasses with the
3457 same latency and guard. *)
3458-let collate_bypasses (producer_name, _, _, _) largest latencies =
3459+let collate_bypasses (producer_name, _, _, _) largest latencies core =
3460 let ht = Hashtbl.create 42 in
3461 let keys = ref [] in
3462 List.iter (
3463@@ -350,7 +374,7 @@
3464 (if (try ignore (Hashtbl.find ht (guard, latency)); false
3465 with Not_found -> true) then
3466 keys := (guard, latency) :: !keys);
3467- Hashtbl.add ht (guard, latency) consumer
3468+ Hashtbl.add ht (guard, latency) ((coreStr core) ^ "_" ^ consumer)
3469 end
3470 ) latencies;
3471 (* The hash table now has bypasses collated so that ones with the
3472@@ -372,7 +396,7 @@
3473 the output in such a way that all bypasses with the same producer
3474 and latency are together, and so that bypasses with the worst-case
3475 latency are ignored. *)
3476-let worst_case_latencies_and_bypasses =
3477+let worst_case_latencies_and_bypasses core =
3478 let rec f (worst_acc, bypasses_acc) prev xs =
3479 match xs with
3480 [] -> (worst_acc, bypasses_acc)
3481@@ -400,7 +424,7 @@
3482 (* Having got the largest latency, collect all bypasses for
3483 this producer and filter out those with that larger
3484 latency. Record the others for later emission. *)
3485- let bypasses = collate_bypasses producer largest latencies in
3486+ let bypasses = collate_bypasses producer largest latencies core in
3487 (* Go on to process remaining producers, having noted
3488 the result for this one. *)
3489 f ((producer_name, producer_avail, largest,
3490@@ -444,14 +468,18 @@
3491 in
3492 f avail 0
3493
3494+
3495 (* Emit a define_insn_reservation for each producer. The latency
3496 written in will be its worst-case latency. *)
3497-let emit_insn_reservations =
3498- List.iter (
3499+let emit_insn_reservations core =
3500+ let corestring = coreStr core in
3501+ let tunestring = tuneStr core
3502+ in List.iter (
3503 fun (producer, avail, latency, reservation) ->
3504 write_comment producer avail;
3505- Printf.printf "(define_insn_reservation \"%s\" %d\n" producer latency;
3506- Printf.printf " (and (eq_attr \"tune\" \"cortexa8\")\n";
3507+ Printf.printf "(define_insn_reservation \"%s_%s\" %d\n"
3508+ corestring producer latency;
3509+ Printf.printf " (and (eq_attr \"tune\" \"%s\")\n" tunestring;
3510 Printf.printf " (eq_attr \"neon_type\" \"%s\"))\n" producer;
3511 let str =
3512 match reservation with
3513@@ -467,7 +495,7 @@
3514 | Fmul_then_fadd -> "fmul_then_fadd"
3515 | Fmul_then_fadd_2 -> "fmul_then_fadd_2"
3516 in
3517- Printf.printf " \"cortex_a8_neon_%s\")\n\n" str
3518+ Printf.printf " \"%s_neon_%s\")\n\n" corestring str
3519 )
3520
3521 (* Given a guard description, return the name of the C function to
3522@@ -480,10 +508,12 @@
3523 | Guard_none -> assert false
3524
3525 (* Emit a define_bypass for each bypass. *)
3526-let emit_bypasses =
3527+let emit_bypasses core =
3528 List.iter (
3529 fun (producer, consumers, latency, guard) ->
3530- Printf.printf "(define_bypass %d \"%s\"\n" latency producer;
3531+ Printf.printf "(define_bypass %d \"%s_%s\"\n"
3532+ latency (coreStr core) producer;
3533+
3534 if guard = Guard_none then
3535 Printf.printf " \"%s\")\n\n" consumers
3536 else
3537@@ -493,11 +523,21 @@
3538 end
3539 )
3540
3541+
3542+let calculate_per_core_availability_table core availability_table =
3543+ let table = calculate_sources availability_table in
3544+ let worst_cases, bypasses = worst_case_latencies_and_bypasses core table in
3545+ emit_insn_reservations core (List.rev worst_cases);
3546+ Printf.printf ";; Exceptions to the default latencies.\n\n";
3547+ emit_bypasses core bypasses
3548+
3549+let calculate_core_availability_table core availability_table =
3550+let filter_core = List.filter (fun (_, _, _, cores)
3551+ -> List.exists ((=) core) cores)
3552+in calculate_per_core_availability_table core (filter_core availability_table)
3553+
3554+
3555 (* Program entry point. *)
3556 let main =
3557- let table = calculate_sources availability_table in
3558- let worst_cases, bypasses = worst_case_latencies_and_bypasses table in
3559- emit_insn_reservations (List.rev worst_cases);
3560- Printf.printf ";; Exceptions to the default latencies.\n\n";
3561- emit_bypasses bypasses
3562-
3563+ List.map (fun core -> calculate_core_availability_table
3564+ core availability_table) allCores
3565