Mercurial > hg > CbC > CbC_gcc
comparison gcc/config/c6x/c6x-sched.md @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children | 84e7813d76e9 |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 ;; -*- buffer-read-only: t -*- | |
2 ;; Generated automatically from c6x-sched.md.in by gensched.sh | |
3 | |
4 ;; Definitions for side 1, cross n | |
5 | |
6 ;; Scheduling description for TI C6X. | |
7 ;; Copyright (C) 2010-2017 Free Software Foundation, Inc. | |
8 ;; Contributed by Bernd Schmidt <bernds@codesourcery.com> | |
9 ;; Contributed by CodeSourcery. | |
10 ;; | |
11 ;; This file is part of GCC. | |
12 ;; | |
13 ;; GCC is free software; you can redistribute it and/or modify | |
14 ;; it under the terms of the GNU General Public License as published by | |
15 ;; the Free Software Foundation; either version 3, or (at your option) | |
16 ;; any later version. | |
17 ;; | |
18 ;; GCC is distributed in the hope that it will be useful, | |
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
21 ;; GNU General Public License for more details. | |
22 ;; | |
23 ;; You should have received a copy of the GNU General Public License | |
24 ;; along with GCC; see the file COPYING3. If not see | |
25 ;; <http://www.gnu.org/licenses/>. | |
26 | |
27 ;; Input file for gensched.sh We process this file multiple times, | |
28 ;; replacing 1 with either 1 or 2 for each of the sides of the | |
29 ;; machine, and a correspondingly with "a" or "b". n and | |
30 ;; are replaced with yes/no and the appropriate reservation. | |
31 | |
32 (define_insn_reservation "load_d1n" 5 | |
33 (and (eq_attr "type" "load") | |
34 (and (eq_attr "cross" "n") | |
35 (and (eq_attr "units" "d_addr") | |
36 (eq_attr "addr_regfile" "a")))) | |
37 "d1+t1") | |
38 | |
39 (define_insn_reservation "store_d1n" 1 | |
40 (and (eq_attr "type" "store") | |
41 (and (eq_attr "cross" "n") | |
42 (and (eq_attr "units" "d_addr") | |
43 (eq_attr "addr_regfile" "a")))) | |
44 "d1+t1") | |
45 | |
46 (define_insn_reservation "loadn_d1n" 5 | |
47 (and (eq_attr "type" "loadn") | |
48 (and (eq_attr "cross" "n") | |
49 (and (eq_attr "units" "d_addr") | |
50 (eq_attr "addr_regfile" "a")))) | |
51 "d1+t1+t2") | |
52 | |
53 (define_insn_reservation "storen_d1n" 1 | |
54 (and (eq_attr "type" "storen") | |
55 (and (eq_attr "cross" "n") | |
56 (and (eq_attr "units" "d_addr") | |
57 (eq_attr "addr_regfile" "a")))) | |
58 "d1+t1+t2") | |
59 | |
60 (define_insn_reservation "single_d1n" 1 | |
61 (and (eq_attr "type" "single") | |
62 (and (eq_attr "cross" "n") | |
63 (and (eq_attr "units" "d") | |
64 (eq_attr "dest_regfile" "a")))) | |
65 "d1") | |
66 | |
67 (define_insn_reservation "single_l1n" 1 | |
68 (and (eq_attr "type" "single") | |
69 (and (eq_attr "cross" "n") | |
70 (and (eq_attr "units" "l") | |
71 (eq_attr "dest_regfile" "a")))) | |
72 "l1+l1w") | |
73 | |
74 (define_insn_reservation "fp4_l1n" 4 | |
75 (and (eq_attr "type" "fp4") | |
76 (and (eq_attr "cross" "n") | |
77 (and (eq_attr "units" "l") | |
78 (eq_attr "dest_regfile" "a")))) | |
79 "l1,nothing*2,l1w") | |
80 | |
81 (define_insn_reservation "intdp_l1n" 5 | |
82 (and (eq_attr "type" "intdp") | |
83 (and (eq_attr "cross" "n") | |
84 (and (eq_attr "units" "l") | |
85 (eq_attr "dest_regfile" "a")))) | |
86 "l1,nothing*2,l1w*2") | |
87 | |
88 (define_insn_reservation "adddp_l1n" 7 | |
89 (and (eq_attr "type" "adddp") | |
90 (and (eq_attr "cross" "n") | |
91 (and (eq_attr "units" "l") | |
92 (eq_attr "dest_regfile" "a")))) | |
93 "(l1)*2,nothing*3,l1w*2") | |
94 | |
95 (define_insn_reservation "branch_s1n" 6 | |
96 (and (eq_attr "type" "branch") | |
97 (and (eq_attr "cross" "n") | |
98 (and (eq_attr "units" "s") | |
99 (eq_attr "dest_regfile" "a")))) | |
100 "(s1+s1w)+br1") | |
101 | |
102 (define_insn_reservation "call_addkpc_s1n" 6 | |
103 (and (eq_attr "type" "call") | |
104 (and (ne (symbol_ref "TARGET_INSNS_64") (const_int 0)) | |
105 (and (eq_attr "cross" "n") | |
106 (and (eq_attr "units" "s") | |
107 (eq_attr "dest_regfile" "a"))))) | |
108 "(s1+s1w)+br1,s2+br0+br1") | |
109 | |
110 (define_insn_reservation "call_mvk_s1n" 6 | |
111 (and (eq_attr "type" "call") | |
112 (and (eq (symbol_ref "TARGET_INSNS_64") (const_int 0)) | |
113 (and (eq_attr "cross" "n") | |
114 (and (eq_attr "units" "s") | |
115 (eq_attr "dest_regfile" "a"))))) | |
116 "(s1+s1w)+br1,s2,s2") | |
117 | |
118 (define_insn_reservation "single_s1n" 1 | |
119 (and (eq_attr "type" "single") | |
120 (and (eq_attr "cross" "n") | |
121 (and (eq_attr "units" "s") | |
122 (eq_attr "dest_regfile" "a")))) | |
123 "(s1+s1w)") | |
124 | |
125 (define_insn_reservation "cmpdp_s1n" 2 | |
126 (and (eq_attr "type" "cmpdp") | |
127 (and (eq_attr "cross" "n") | |
128 (and (eq_attr "units" "s") | |
129 (eq_attr "dest_regfile" "a")))) | |
130 "s1,(s1)+s1w") | |
131 | |
132 (define_insn_reservation "dp2_s1n" 2 | |
133 (and (eq_attr "type" "dp2") | |
134 (and (eq_attr "cross" "n") | |
135 (and (eq_attr "units" "s") | |
136 (eq_attr "dest_regfile" "a")))) | |
137 "s1+s1w,s1w") | |
138 | |
139 (define_insn_reservation "fp4_s1n" 4 | |
140 (and (eq_attr "type" "fp4") | |
141 (and (eq_attr "cross" "n") | |
142 (and (eq_attr "units" "s") | |
143 (eq_attr "dest_regfile" "a")))) | |
144 "s1,nothing*2,s1w") | |
145 | |
146 (define_insn_reservation "mvilc4_s1n" 4 | |
147 (and (eq_attr "type" "mvilc") | |
148 (and (eq_attr "cross" "n") | |
149 (and (eq_attr "units" "s") | |
150 (eq_attr "dest_regfile" "a")))) | |
151 "(s1+s1w)") | |
152 | |
153 (define_insn_reservation "single_dl1n" 1 | |
154 (and (eq_attr "type" "single") | |
155 (and (eq_attr "cross" "n") | |
156 (and (eq_attr "units" "dl") | |
157 (eq_attr "dest_regfile" "a")))) | |
158 "(d1|(l1+l1w))") | |
159 | |
160 (define_insn_reservation "single_ds1n" 1 | |
161 (and (eq_attr "type" "single") | |
162 (and (eq_attr "cross" "n") | |
163 (and (eq_attr "units" "ds") | |
164 (eq_attr "dest_regfile" "a")))) | |
165 "(d1|(s1+s1w))") | |
166 | |
167 (define_insn_reservation "single_ls1n" 1 | |
168 (and (eq_attr "type" "single") | |
169 (and (eq_attr "cross" "n") | |
170 (and (eq_attr "units" "ls") | |
171 (eq_attr "dest_regfile" "a")))) | |
172 "((l1+l1w)|(s1+s1w))") | |
173 | |
174 (define_insn_reservation "dp2_l1n" 2 | |
175 (and (eq_attr "type" "dp2") | |
176 (and (eq_attr "cross" "n") | |
177 (and (eq_attr "units" "l") | |
178 (eq_attr "dest_regfile" "a")))) | |
179 "l1+l1w,l1w") | |
180 | |
181 (define_insn_reservation "fp4_ls1n" 4 | |
182 (and (eq_attr "type" "fp4") | |
183 (and (eq_attr "cross" "n") | |
184 (and (eq_attr "units" "ls") | |
185 (eq_attr "dest_regfile" "a")))) | |
186 "(fps1+s1,nothing*2,s1w)|(fpl1+l1,nothing*2,l1w)") | |
187 | |
188 (define_insn_reservation "adddp_ls1n" 7 | |
189 (and (eq_attr "type" "adddp") | |
190 (and (eq_attr "cross" "n") | |
191 (and (eq_attr "units" "ls") | |
192 (eq_attr "dest_regfile" "a")))) | |
193 "(adddps1+(s1)*2,nothing*3,s1w*2)|(adddpl1+(l1)*2,nothing*3,l1w*2)") | |
194 | |
195 (define_insn_reservation "single_dls1n" 1 | |
196 (and (eq_attr "type" "single") | |
197 (and (eq_attr "cross" "n") | |
198 (and (eq_attr "units" "dls") | |
199 (eq_attr "dest_regfile" "a")))) | |
200 "(d1|(l1+l1w)|(s1+s1w))") | |
201 | |
202 (define_insn_reservation "mpy2_m1n" 2 | |
203 (and (eq_attr "type" "mpy2") | |
204 (and (eq_attr "cross" "n") | |
205 (and (eq_attr "units" "m") | |
206 (eq_attr "dest_regfile" "a")))) | |
207 "m1,m1w") | |
208 | |
209 (define_insn_reservation "mpy4_m1n" 4 | |
210 (and (eq_attr "type" "mpy4") | |
211 (and (eq_attr "cross" "n") | |
212 (and (eq_attr "units" "m") | |
213 (eq_attr "dest_regfile" "a")))) | |
214 "m1,nothing,nothing,m1w") | |
215 | |
216 (define_insn_reservation "mpydp_m1n" 10 | |
217 (and (eq_attr "type" "mpydp") | |
218 (and (eq_attr "cross" "n") | |
219 (and (eq_attr "units" "m") | |
220 (eq_attr "dest_regfile" "a")))) | |
221 "(m1)*4,nothing*4,m1w*2") | |
222 | |
223 (define_insn_reservation "mpyspdp_m1n" 7 | |
224 (and (eq_attr "type" "mpyspdp") | |
225 (and (eq_attr "cross" "n") | |
226 (and (eq_attr "units" "m") | |
227 (eq_attr "dest_regfile" "a")))) | |
228 "(m1)*2,nothing*3,m1w*2") | |
229 | |
230 (define_insn_reservation "mpysp2dp_m1n" 5 | |
231 (and (eq_attr "type" "mpysp2dp") | |
232 (and (eq_attr "cross" "n") | |
233 (and (eq_attr "units" "m") | |
234 (eq_attr "dest_regfile" "a")))) | |
235 "m1,nothing*2,m1w*2") | |
236 | |
237 ;; Definitions for side 2, cross n | |
238 | |
239 ;; Scheduling description for TI C6X. | |
240 ;; Copyright (C) 2010-2017 Free Software Foundation, Inc. | |
241 ;; Contributed by Bernd Schmidt <bernds@codesourcery.com> | |
242 ;; Contributed by CodeSourcery. | |
243 ;; | |
244 ;; This file is part of GCC. | |
245 ;; | |
246 ;; GCC is free software; you can redistribute it and/or modify | |
247 ;; it under the terms of the GNU General Public License as published by | |
248 ;; the Free Software Foundation; either version 3, or (at your option) | |
249 ;; any later version. | |
250 ;; | |
251 ;; GCC is distributed in the hope that it will be useful, | |
252 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
253 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
254 ;; GNU General Public License for more details. | |
255 ;; | |
256 ;; You should have received a copy of the GNU General Public License | |
257 ;; along with GCC; see the file COPYING3. If not see | |
258 ;; <http://www.gnu.org/licenses/>. | |
259 | |
260 ;; Input file for gensched.sh We process this file multiple times, | |
261 ;; replacing 2 with either 1 or 2 for each of the sides of the | |
262 ;; machine, and b correspondingly with "a" or "b". n and | |
263 ;; are replaced with yes/no and the appropriate reservation. | |
264 | |
265 (define_insn_reservation "load_d2n" 5 | |
266 (and (eq_attr "type" "load") | |
267 (and (eq_attr "cross" "n") | |
268 (and (eq_attr "units" "d_addr") | |
269 (eq_attr "addr_regfile" "b")))) | |
270 "d2+t2") | |
271 | |
272 (define_insn_reservation "store_d2n" 1 | |
273 (and (eq_attr "type" "store") | |
274 (and (eq_attr "cross" "n") | |
275 (and (eq_attr "units" "d_addr") | |
276 (eq_attr "addr_regfile" "b")))) | |
277 "d2+t2") | |
278 | |
279 (define_insn_reservation "loadn_d2n" 5 | |
280 (and (eq_attr "type" "loadn") | |
281 (and (eq_attr "cross" "n") | |
282 (and (eq_attr "units" "d_addr") | |
283 (eq_attr "addr_regfile" "b")))) | |
284 "d2+t1+t2") | |
285 | |
286 (define_insn_reservation "storen_d2n" 1 | |
287 (and (eq_attr "type" "storen") | |
288 (and (eq_attr "cross" "n") | |
289 (and (eq_attr "units" "d_addr") | |
290 (eq_attr "addr_regfile" "b")))) | |
291 "d2+t1+t2") | |
292 | |
293 (define_insn_reservation "single_d2n" 1 | |
294 (and (eq_attr "type" "single") | |
295 (and (eq_attr "cross" "n") | |
296 (and (eq_attr "units" "d") | |
297 (eq_attr "dest_regfile" "b")))) | |
298 "d2") | |
299 | |
300 (define_insn_reservation "single_l2n" 1 | |
301 (and (eq_attr "type" "single") | |
302 (and (eq_attr "cross" "n") | |
303 (and (eq_attr "units" "l") | |
304 (eq_attr "dest_regfile" "b")))) | |
305 "l2+l2w") | |
306 | |
307 (define_insn_reservation "fp4_l2n" 4 | |
308 (and (eq_attr "type" "fp4") | |
309 (and (eq_attr "cross" "n") | |
310 (and (eq_attr "units" "l") | |
311 (eq_attr "dest_regfile" "b")))) | |
312 "l2,nothing*2,l2w") | |
313 | |
314 (define_insn_reservation "intdp_l2n" 5 | |
315 (and (eq_attr "type" "intdp") | |
316 (and (eq_attr "cross" "n") | |
317 (and (eq_attr "units" "l") | |
318 (eq_attr "dest_regfile" "b")))) | |
319 "l2,nothing*2,l2w*2") | |
320 | |
321 (define_insn_reservation "adddp_l2n" 7 | |
322 (and (eq_attr "type" "adddp") | |
323 (and (eq_attr "cross" "n") | |
324 (and (eq_attr "units" "l") | |
325 (eq_attr "dest_regfile" "b")))) | |
326 "(l2)*2,nothing*3,l2w*2") | |
327 | |
328 (define_insn_reservation "branch_s2n" 6 | |
329 (and (eq_attr "type" "branch") | |
330 (and (eq_attr "cross" "n") | |
331 (and (eq_attr "units" "s") | |
332 (eq_attr "dest_regfile" "b")))) | |
333 "(s2+s2w)+br1") | |
334 | |
335 (define_insn_reservation "call_addkpc_s2n" 6 | |
336 (and (eq_attr "type" "call") | |
337 (and (ne (symbol_ref "TARGET_INSNS_64") (const_int 0)) | |
338 (and (eq_attr "cross" "n") | |
339 (and (eq_attr "units" "s") | |
340 (eq_attr "dest_regfile" "b"))))) | |
341 "(s2+s2w)+br1,s2+br0+br1") | |
342 | |
343 (define_insn_reservation "call_mvk_s2n" 6 | |
344 (and (eq_attr "type" "call") | |
345 (and (eq (symbol_ref "TARGET_INSNS_64") (const_int 0)) | |
346 (and (eq_attr "cross" "n") | |
347 (and (eq_attr "units" "s") | |
348 (eq_attr "dest_regfile" "b"))))) | |
349 "(s2+s2w)+br1,s2,s2") | |
350 | |
351 (define_insn_reservation "single_s2n" 1 | |
352 (and (eq_attr "type" "single") | |
353 (and (eq_attr "cross" "n") | |
354 (and (eq_attr "units" "s") | |
355 (eq_attr "dest_regfile" "b")))) | |
356 "(s2+s2w)") | |
357 | |
358 (define_insn_reservation "cmpdp_s2n" 2 | |
359 (and (eq_attr "type" "cmpdp") | |
360 (and (eq_attr "cross" "n") | |
361 (and (eq_attr "units" "s") | |
362 (eq_attr "dest_regfile" "b")))) | |
363 "s2,(s2)+s2w") | |
364 | |
365 (define_insn_reservation "dp2_s2n" 2 | |
366 (and (eq_attr "type" "dp2") | |
367 (and (eq_attr "cross" "n") | |
368 (and (eq_attr "units" "s") | |
369 (eq_attr "dest_regfile" "b")))) | |
370 "s2+s2w,s2w") | |
371 | |
372 (define_insn_reservation "fp4_s2n" 4 | |
373 (and (eq_attr "type" "fp4") | |
374 (and (eq_attr "cross" "n") | |
375 (and (eq_attr "units" "s") | |
376 (eq_attr "dest_regfile" "b")))) | |
377 "s2,nothing*2,s2w") | |
378 | |
379 (define_insn_reservation "mvilc4_s2n" 4 | |
380 (and (eq_attr "type" "mvilc") | |
381 (and (eq_attr "cross" "n") | |
382 (and (eq_attr "units" "s") | |
383 (eq_attr "dest_regfile" "b")))) | |
384 "(s2+s2w)") | |
385 | |
386 (define_insn_reservation "single_dl2n" 1 | |
387 (and (eq_attr "type" "single") | |
388 (and (eq_attr "cross" "n") | |
389 (and (eq_attr "units" "dl") | |
390 (eq_attr "dest_regfile" "b")))) | |
391 "(d2|(l2+l2w))") | |
392 | |
393 (define_insn_reservation "single_ds2n" 1 | |
394 (and (eq_attr "type" "single") | |
395 (and (eq_attr "cross" "n") | |
396 (and (eq_attr "units" "ds") | |
397 (eq_attr "dest_regfile" "b")))) | |
398 "(d2|(s2+s2w))") | |
399 | |
400 (define_insn_reservation "single_ls2n" 1 | |
401 (and (eq_attr "type" "single") | |
402 (and (eq_attr "cross" "n") | |
403 (and (eq_attr "units" "ls") | |
404 (eq_attr "dest_regfile" "b")))) | |
405 "((l2+l2w)|(s2+s2w))") | |
406 | |
407 (define_insn_reservation "dp2_l2n" 2 | |
408 (and (eq_attr "type" "dp2") | |
409 (and (eq_attr "cross" "n") | |
410 (and (eq_attr "units" "l") | |
411 (eq_attr "dest_regfile" "b")))) | |
412 "l2+l2w,l2w") | |
413 | |
414 (define_insn_reservation "fp4_ls2n" 4 | |
415 (and (eq_attr "type" "fp4") | |
416 (and (eq_attr "cross" "n") | |
417 (and (eq_attr "units" "ls") | |
418 (eq_attr "dest_regfile" "b")))) | |
419 "(fps2+s2,nothing*2,s2w)|(fpl2+l2,nothing*2,l2w)") | |
420 | |
421 (define_insn_reservation "adddp_ls2n" 7 | |
422 (and (eq_attr "type" "adddp") | |
423 (and (eq_attr "cross" "n") | |
424 (and (eq_attr "units" "ls") | |
425 (eq_attr "dest_regfile" "b")))) | |
426 "(adddps2+(s2)*2,nothing*3,s2w*2)|(adddpl2+(l2)*2,nothing*3,l2w*2)") | |
427 | |
428 (define_insn_reservation "single_dls2n" 1 | |
429 (and (eq_attr "type" "single") | |
430 (and (eq_attr "cross" "n") | |
431 (and (eq_attr "units" "dls") | |
432 (eq_attr "dest_regfile" "b")))) | |
433 "(d2|(l2+l2w)|(s2+s2w))") | |
434 | |
435 (define_insn_reservation "mpy2_m2n" 2 | |
436 (and (eq_attr "type" "mpy2") | |
437 (and (eq_attr "cross" "n") | |
438 (and (eq_attr "units" "m") | |
439 (eq_attr "dest_regfile" "b")))) | |
440 "m2,m2w") | |
441 | |
442 (define_insn_reservation "mpy4_m2n" 4 | |
443 (and (eq_attr "type" "mpy4") | |
444 (and (eq_attr "cross" "n") | |
445 (and (eq_attr "units" "m") | |
446 (eq_attr "dest_regfile" "b")))) | |
447 "m2,nothing,nothing,m2w") | |
448 | |
449 (define_insn_reservation "mpydp_m2n" 10 | |
450 (and (eq_attr "type" "mpydp") | |
451 (and (eq_attr "cross" "n") | |
452 (and (eq_attr "units" "m") | |
453 (eq_attr "dest_regfile" "b")))) | |
454 "(m2)*4,nothing*4,m2w*2") | |
455 | |
456 (define_insn_reservation "mpyspdp_m2n" 7 | |
457 (and (eq_attr "type" "mpyspdp") | |
458 (and (eq_attr "cross" "n") | |
459 (and (eq_attr "units" "m") | |
460 (eq_attr "dest_regfile" "b")))) | |
461 "(m2)*2,nothing*3,m2w*2") | |
462 | |
463 (define_insn_reservation "mpysp2dp_m2n" 5 | |
464 (and (eq_attr "type" "mpysp2dp") | |
465 (and (eq_attr "cross" "n") | |
466 (and (eq_attr "units" "m") | |
467 (eq_attr "dest_regfile" "b")))) | |
468 "m2,nothing*2,m2w*2") | |
469 | |
470 ;; Definitions for side 1, cross y | |
471 | |
472 ;; Scheduling description for TI C6X. | |
473 ;; Copyright (C) 2010-2017 Free Software Foundation, Inc. | |
474 ;; Contributed by Bernd Schmidt <bernds@codesourcery.com> | |
475 ;; Contributed by CodeSourcery. | |
476 ;; | |
477 ;; This file is part of GCC. | |
478 ;; | |
479 ;; GCC is free software; you can redistribute it and/or modify | |
480 ;; it under the terms of the GNU General Public License as published by | |
481 ;; the Free Software Foundation; either version 3, or (at your option) | |
482 ;; any later version. | |
483 ;; | |
484 ;; GCC is distributed in the hope that it will be useful, | |
485 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
486 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
487 ;; GNU General Public License for more details. | |
488 ;; | |
489 ;; You should have received a copy of the GNU General Public License | |
490 ;; along with GCC; see the file COPYING3. If not see | |
491 ;; <http://www.gnu.org/licenses/>. | |
492 | |
493 ;; Input file for gensched.sh We process this file multiple times, | |
494 ;; replacing 1 with either 1 or 2 for each of the sides of the | |
495 ;; machine, and a correspondingly with "a" or "b". y and | |
496 ;; +x1 are replaced with yes/no and the appropriate reservation. | |
497 | |
498 (define_insn_reservation "load_d1y" 5 | |
499 (and (eq_attr "type" "load") | |
500 (and (eq_attr "cross" "y") | |
501 (and (eq_attr "units" "d_addr") | |
502 (eq_attr "addr_regfile" "a")))) | |
503 "d1+t2") | |
504 | |
505 (define_insn_reservation "store_d1y" 1 | |
506 (and (eq_attr "type" "store") | |
507 (and (eq_attr "cross" "y") | |
508 (and (eq_attr "units" "d_addr") | |
509 (eq_attr "addr_regfile" "a")))) | |
510 "d1+t2") | |
511 | |
512 (define_insn_reservation "loadn_d1y" 5 | |
513 (and (eq_attr "type" "loadn") | |
514 (and (eq_attr "cross" "y") | |
515 (and (eq_attr "units" "d_addr") | |
516 (eq_attr "addr_regfile" "a")))) | |
517 "d1+t1+t2") | |
518 | |
519 (define_insn_reservation "storen_d1y" 1 | |
520 (and (eq_attr "type" "storen") | |
521 (and (eq_attr "cross" "y") | |
522 (and (eq_attr "units" "d_addr") | |
523 (eq_attr "addr_regfile" "a")))) | |
524 "d1+t1+t2") | |
525 | |
526 (define_insn_reservation "single_d1y" 1 | |
527 (and (eq_attr "type" "single") | |
528 (and (eq_attr "cross" "y") | |
529 (and (eq_attr "units" "d") | |
530 (eq_attr "dest_regfile" "a")))) | |
531 "d1+x1") | |
532 | |
533 (define_insn_reservation "single_l1y" 1 | |
534 (and (eq_attr "type" "single") | |
535 (and (eq_attr "cross" "y") | |
536 (and (eq_attr "units" "l") | |
537 (eq_attr "dest_regfile" "a")))) | |
538 "l1+l1w+x1") | |
539 | |
540 (define_insn_reservation "fp4_l1y" 4 | |
541 (and (eq_attr "type" "fp4") | |
542 (and (eq_attr "cross" "y") | |
543 (and (eq_attr "units" "l") | |
544 (eq_attr "dest_regfile" "a")))) | |
545 "l1+x1,nothing*2,l1w") | |
546 | |
547 (define_insn_reservation "intdp_l1y" 5 | |
548 (and (eq_attr "type" "intdp") | |
549 (and (eq_attr "cross" "y") | |
550 (and (eq_attr "units" "l") | |
551 (eq_attr "dest_regfile" "a")))) | |
552 "l1+x1,nothing*2,l1w*2") | |
553 | |
554 (define_insn_reservation "adddp_l1y" 7 | |
555 (and (eq_attr "type" "adddp") | |
556 (and (eq_attr "cross" "y") | |
557 (and (eq_attr "units" "l") | |
558 (eq_attr "dest_regfile" "a")))) | |
559 "(l1+x1)*2,nothing*3,l1w*2") | |
560 | |
561 (define_insn_reservation "branch_s1y" 6 | |
562 (and (eq_attr "type" "branch") | |
563 (and (eq_attr "cross" "y") | |
564 (and (eq_attr "units" "s") | |
565 (eq_attr "dest_regfile" "a")))) | |
566 "(s1+s1w)+x1+br1") | |
567 | |
568 (define_insn_reservation "call_addkpc_s1y" 6 | |
569 (and (eq_attr "type" "call") | |
570 (and (ne (symbol_ref "TARGET_INSNS_64") (const_int 0)) | |
571 (and (eq_attr "cross" "y") | |
572 (and (eq_attr "units" "s") | |
573 (eq_attr "dest_regfile" "a"))))) | |
574 "(s1+s1w)+x1+br1,s2+br0+br1") | |
575 | |
576 (define_insn_reservation "call_mvk_s1y" 6 | |
577 (and (eq_attr "type" "call") | |
578 (and (eq (symbol_ref "TARGET_INSNS_64") (const_int 0)) | |
579 (and (eq_attr "cross" "y") | |
580 (and (eq_attr "units" "s") | |
581 (eq_attr "dest_regfile" "a"))))) | |
582 "(s1+s1w)+x1+br1,s2,s2") | |
583 | |
584 (define_insn_reservation "single_s1y" 1 | |
585 (and (eq_attr "type" "single") | |
586 (and (eq_attr "cross" "y") | |
587 (and (eq_attr "units" "s") | |
588 (eq_attr "dest_regfile" "a")))) | |
589 "(s1+s1w)+x1") | |
590 | |
591 (define_insn_reservation "cmpdp_s1y" 2 | |
592 (and (eq_attr "type" "cmpdp") | |
593 (and (eq_attr "cross" "y") | |
594 (and (eq_attr "units" "s") | |
595 (eq_attr "dest_regfile" "a")))) | |
596 "s1+x1,(s1+x1)+s1w") | |
597 | |
598 (define_insn_reservation "dp2_s1y" 2 | |
599 (and (eq_attr "type" "dp2") | |
600 (and (eq_attr "cross" "y") | |
601 (and (eq_attr "units" "s") | |
602 (eq_attr "dest_regfile" "a")))) | |
603 "s1+s1w+x1,s1w") | |
604 | |
605 (define_insn_reservation "fp4_s1y" 4 | |
606 (and (eq_attr "type" "fp4") | |
607 (and (eq_attr "cross" "y") | |
608 (and (eq_attr "units" "s") | |
609 (eq_attr "dest_regfile" "a")))) | |
610 "s1+x1,nothing*2,s1w") | |
611 | |
612 (define_insn_reservation "mvilc4_s1y" 4 | |
613 (and (eq_attr "type" "mvilc") | |
614 (and (eq_attr "cross" "y") | |
615 (and (eq_attr "units" "s") | |
616 (eq_attr "dest_regfile" "a")))) | |
617 "(s1+s1w)+x1") | |
618 | |
619 (define_insn_reservation "single_dl1y" 1 | |
620 (and (eq_attr "type" "single") | |
621 (and (eq_attr "cross" "y") | |
622 (and (eq_attr "units" "dl") | |
623 (eq_attr "dest_regfile" "a")))) | |
624 "(d1|(l1+l1w))+x1") | |
625 | |
626 (define_insn_reservation "single_ds1y" 1 | |
627 (and (eq_attr "type" "single") | |
628 (and (eq_attr "cross" "y") | |
629 (and (eq_attr "units" "ds") | |
630 (eq_attr "dest_regfile" "a")))) | |
631 "(d1|(s1+s1w))+x1") | |
632 | |
633 (define_insn_reservation "single_ls1y" 1 | |
634 (and (eq_attr "type" "single") | |
635 (and (eq_attr "cross" "y") | |
636 (and (eq_attr "units" "ls") | |
637 (eq_attr "dest_regfile" "a")))) | |
638 "((l1+l1w)|(s1+s1w))+x1") | |
639 | |
640 (define_insn_reservation "dp2_l1y" 2 | |
641 (and (eq_attr "type" "dp2") | |
642 (and (eq_attr "cross" "y") | |
643 (and (eq_attr "units" "l") | |
644 (eq_attr "dest_regfile" "a")))) | |
645 "l1+l1w+x1,l1w") | |
646 | |
647 (define_insn_reservation "fp4_ls1y" 4 | |
648 (and (eq_attr "type" "fp4") | |
649 (and (eq_attr "cross" "y") | |
650 (and (eq_attr "units" "ls") | |
651 (eq_attr "dest_regfile" "a")))) | |
652 "(fps1+s1+x1,nothing*2,s1w)|(fpl1+l1+x1,nothing*2,l1w)") | |
653 | |
654 (define_insn_reservation "adddp_ls1y" 7 | |
655 (and (eq_attr "type" "adddp") | |
656 (and (eq_attr "cross" "y") | |
657 (and (eq_attr "units" "ls") | |
658 (eq_attr "dest_regfile" "a")))) | |
659 "(adddps1+(s1+x1)*2,nothing*3,s1w*2)|(adddpl1+(l1+x1)*2,nothing*3,l1w*2)") | |
660 | |
661 (define_insn_reservation "single_dls1y" 1 | |
662 (and (eq_attr "type" "single") | |
663 (and (eq_attr "cross" "y") | |
664 (and (eq_attr "units" "dls") | |
665 (eq_attr "dest_regfile" "a")))) | |
666 "(d1|(l1+l1w)|(s1+s1w))+x1") | |
667 | |
668 (define_insn_reservation "mpy2_m1y" 2 | |
669 (and (eq_attr "type" "mpy2") | |
670 (and (eq_attr "cross" "y") | |
671 (and (eq_attr "units" "m") | |
672 (eq_attr "dest_regfile" "a")))) | |
673 "m1+x1,m1w") | |
674 | |
675 (define_insn_reservation "mpy4_m1y" 4 | |
676 (and (eq_attr "type" "mpy4") | |
677 (and (eq_attr "cross" "y") | |
678 (and (eq_attr "units" "m") | |
679 (eq_attr "dest_regfile" "a")))) | |
680 "m1+x1,nothing,nothing,m1w") | |
681 | |
682 (define_insn_reservation "mpydp_m1y" 10 | |
683 (and (eq_attr "type" "mpydp") | |
684 (and (eq_attr "cross" "y") | |
685 (and (eq_attr "units" "m") | |
686 (eq_attr "dest_regfile" "a")))) | |
687 "(m1+x1)*4,nothing*4,m1w*2") | |
688 | |
689 (define_insn_reservation "mpyspdp_m1y" 7 | |
690 (and (eq_attr "type" "mpyspdp") | |
691 (and (eq_attr "cross" "y") | |
692 (and (eq_attr "units" "m") | |
693 (eq_attr "dest_regfile" "a")))) | |
694 "(m1+x1)*2,nothing*3,m1w*2") | |
695 | |
696 (define_insn_reservation "mpysp2dp_m1y" 5 | |
697 (and (eq_attr "type" "mpysp2dp") | |
698 (and (eq_attr "cross" "y") | |
699 (and (eq_attr "units" "m") | |
700 (eq_attr "dest_regfile" "a")))) | |
701 "m1+x1,nothing*2,m1w*2") | |
702 | |
703 ;; Definitions for side 2, cross y | |
704 | |
705 ;; Scheduling description for TI C6X. | |
706 ;; Copyright (C) 2010-2017 Free Software Foundation, Inc. | |
707 ;; Contributed by Bernd Schmidt <bernds@codesourcery.com> | |
708 ;; Contributed by CodeSourcery. | |
709 ;; | |
710 ;; This file is part of GCC. | |
711 ;; | |
712 ;; GCC is free software; you can redistribute it and/or modify | |
713 ;; it under the terms of the GNU General Public License as published by | |
714 ;; the Free Software Foundation; either version 3, or (at your option) | |
715 ;; any later version. | |
716 ;; | |
717 ;; GCC is distributed in the hope that it will be useful, | |
718 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
719 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
720 ;; GNU General Public License for more details. | |
721 ;; | |
722 ;; You should have received a copy of the GNU General Public License | |
723 ;; along with GCC; see the file COPYING3. If not see | |
724 ;; <http://www.gnu.org/licenses/>. | |
725 | |
726 ;; Input file for gensched.sh We process this file multiple times, | |
727 ;; replacing 2 with either 1 or 2 for each of the sides of the | |
728 ;; machine, and b correspondingly with "a" or "b". y and | |
729 ;; +x2 are replaced with yes/no and the appropriate reservation. | |
730 | |
731 (define_insn_reservation "load_d2y" 5 | |
732 (and (eq_attr "type" "load") | |
733 (and (eq_attr "cross" "y") | |
734 (and (eq_attr "units" "d_addr") | |
735 (eq_attr "addr_regfile" "b")))) | |
736 "d2+t1") | |
737 | |
738 (define_insn_reservation "store_d2y" 1 | |
739 (and (eq_attr "type" "store") | |
740 (and (eq_attr "cross" "y") | |
741 (and (eq_attr "units" "d_addr") | |
742 (eq_attr "addr_regfile" "b")))) | |
743 "d2+t1") | |
744 | |
745 (define_insn_reservation "loadn_d2y" 5 | |
746 (and (eq_attr "type" "loadn") | |
747 (and (eq_attr "cross" "y") | |
748 (and (eq_attr "units" "d_addr") | |
749 (eq_attr "addr_regfile" "b")))) | |
750 "d2+t1+t2") | |
751 | |
752 (define_insn_reservation "storen_d2y" 1 | |
753 (and (eq_attr "type" "storen") | |
754 (and (eq_attr "cross" "y") | |
755 (and (eq_attr "units" "d_addr") | |
756 (eq_attr "addr_regfile" "b")))) | |
757 "d2+t1+t2") | |
758 | |
759 (define_insn_reservation "single_d2y" 1 | |
760 (and (eq_attr "type" "single") | |
761 (and (eq_attr "cross" "y") | |
762 (and (eq_attr "units" "d") | |
763 (eq_attr "dest_regfile" "b")))) | |
764 "d2+x2") | |
765 | |
766 (define_insn_reservation "single_l2y" 1 | |
767 (and (eq_attr "type" "single") | |
768 (and (eq_attr "cross" "y") | |
769 (and (eq_attr "units" "l") | |
770 (eq_attr "dest_regfile" "b")))) | |
771 "l2+l2w+x2") | |
772 | |
773 (define_insn_reservation "fp4_l2y" 4 | |
774 (and (eq_attr "type" "fp4") | |
775 (and (eq_attr "cross" "y") | |
776 (and (eq_attr "units" "l") | |
777 (eq_attr "dest_regfile" "b")))) | |
778 "l2+x2,nothing*2,l2w") | |
779 | |
780 (define_insn_reservation "intdp_l2y" 5 | |
781 (and (eq_attr "type" "intdp") | |
782 (and (eq_attr "cross" "y") | |
783 (and (eq_attr "units" "l") | |
784 (eq_attr "dest_regfile" "b")))) | |
785 "l2+x2,nothing*2,l2w*2") | |
786 | |
787 (define_insn_reservation "adddp_l2y" 7 | |
788 (and (eq_attr "type" "adddp") | |
789 (and (eq_attr "cross" "y") | |
790 (and (eq_attr "units" "l") | |
791 (eq_attr "dest_regfile" "b")))) | |
792 "(l2+x2)*2,nothing*3,l2w*2") | |
793 | |
794 (define_insn_reservation "branch_s2y" 6 | |
795 (and (eq_attr "type" "branch") | |
796 (and (eq_attr "cross" "y") | |
797 (and (eq_attr "units" "s") | |
798 (eq_attr "dest_regfile" "b")))) | |
799 "(s2+s2w)+x2+br1") | |
800 | |
801 (define_insn_reservation "call_addkpc_s2y" 6 | |
802 (and (eq_attr "type" "call") | |
803 (and (ne (symbol_ref "TARGET_INSNS_64") (const_int 0)) | |
804 (and (eq_attr "cross" "y") | |
805 (and (eq_attr "units" "s") | |
806 (eq_attr "dest_regfile" "b"))))) | |
807 "(s2+s2w)+x2+br1,s2+br0+br1") | |
808 | |
809 (define_insn_reservation "call_mvk_s2y" 6 | |
810 (and (eq_attr "type" "call") | |
811 (and (eq (symbol_ref "TARGET_INSNS_64") (const_int 0)) | |
812 (and (eq_attr "cross" "y") | |
813 (and (eq_attr "units" "s") | |
814 (eq_attr "dest_regfile" "b"))))) | |
815 "(s2+s2w)+x2+br1,s2,s2") | |
816 | |
817 (define_insn_reservation "single_s2y" 1 | |
818 (and (eq_attr "type" "single") | |
819 (and (eq_attr "cross" "y") | |
820 (and (eq_attr "units" "s") | |
821 (eq_attr "dest_regfile" "b")))) | |
822 "(s2+s2w)+x2") | |
823 | |
824 (define_insn_reservation "cmpdp_s2y" 2 | |
825 (and (eq_attr "type" "cmpdp") | |
826 (and (eq_attr "cross" "y") | |
827 (and (eq_attr "units" "s") | |
828 (eq_attr "dest_regfile" "b")))) | |
829 "s2+x2,(s2+x2)+s2w") | |
830 | |
831 (define_insn_reservation "dp2_s2y" 2 | |
832 (and (eq_attr "type" "dp2") | |
833 (and (eq_attr "cross" "y") | |
834 (and (eq_attr "units" "s") | |
835 (eq_attr "dest_regfile" "b")))) | |
836 "s2+s2w+x2,s2w") | |
837 | |
838 (define_insn_reservation "fp4_s2y" 4 | |
839 (and (eq_attr "type" "fp4") | |
840 (and (eq_attr "cross" "y") | |
841 (and (eq_attr "units" "s") | |
842 (eq_attr "dest_regfile" "b")))) | |
843 "s2+x2,nothing*2,s2w") | |
844 | |
845 (define_insn_reservation "mvilc4_s2y" 4 | |
846 (and (eq_attr "type" "mvilc") | |
847 (and (eq_attr "cross" "y") | |
848 (and (eq_attr "units" "s") | |
849 (eq_attr "dest_regfile" "b")))) | |
850 "(s2+s2w)+x2") | |
851 | |
852 (define_insn_reservation "single_dl2y" 1 | |
853 (and (eq_attr "type" "single") | |
854 (and (eq_attr "cross" "y") | |
855 (and (eq_attr "units" "dl") | |
856 (eq_attr "dest_regfile" "b")))) | |
857 "(d2|(l2+l2w))+x2") | |
858 | |
859 (define_insn_reservation "single_ds2y" 1 | |
860 (and (eq_attr "type" "single") | |
861 (and (eq_attr "cross" "y") | |
862 (and (eq_attr "units" "ds") | |
863 (eq_attr "dest_regfile" "b")))) | |
864 "(d2|(s2+s2w))+x2") | |
865 | |
866 (define_insn_reservation "single_ls2y" 1 | |
867 (and (eq_attr "type" "single") | |
868 (and (eq_attr "cross" "y") | |
869 (and (eq_attr "units" "ls") | |
870 (eq_attr "dest_regfile" "b")))) | |
871 "((l2+l2w)|(s2+s2w))+x2") | |
872 | |
873 (define_insn_reservation "dp2_l2y" 2 | |
874 (and (eq_attr "type" "dp2") | |
875 (and (eq_attr "cross" "y") | |
876 (and (eq_attr "units" "l") | |
877 (eq_attr "dest_regfile" "b")))) | |
878 "l2+l2w+x2,l2w") | |
879 | |
880 (define_insn_reservation "fp4_ls2y" 4 | |
881 (and (eq_attr "type" "fp4") | |
882 (and (eq_attr "cross" "y") | |
883 (and (eq_attr "units" "ls") | |
884 (eq_attr "dest_regfile" "b")))) | |
885 "(fps2+s2+x2,nothing*2,s2w)|(fpl2+l2+x2,nothing*2,l2w)") | |
886 | |
887 (define_insn_reservation "adddp_ls2y" 7 | |
888 (and (eq_attr "type" "adddp") | |
889 (and (eq_attr "cross" "y") | |
890 (and (eq_attr "units" "ls") | |
891 (eq_attr "dest_regfile" "b")))) | |
892 "(adddps2+(s2+x2)*2,nothing*3,s2w*2)|(adddpl2+(l2+x2)*2,nothing*3,l2w*2)") | |
893 | |
894 (define_insn_reservation "single_dls2y" 1 | |
895 (and (eq_attr "type" "single") | |
896 (and (eq_attr "cross" "y") | |
897 (and (eq_attr "units" "dls") | |
898 (eq_attr "dest_regfile" "b")))) | |
899 "(d2|(l2+l2w)|(s2+s2w))+x2") | |
900 | |
901 (define_insn_reservation "mpy2_m2y" 2 | |
902 (and (eq_attr "type" "mpy2") | |
903 (and (eq_attr "cross" "y") | |
904 (and (eq_attr "units" "m") | |
905 (eq_attr "dest_regfile" "b")))) | |
906 "m2+x2,m2w") | |
907 | |
908 (define_insn_reservation "mpy4_m2y" 4 | |
909 (and (eq_attr "type" "mpy4") | |
910 (and (eq_attr "cross" "y") | |
911 (and (eq_attr "units" "m") | |
912 (eq_attr "dest_regfile" "b")))) | |
913 "m2+x2,nothing,nothing,m2w") | |
914 | |
915 (define_insn_reservation "mpydp_m2y" 10 | |
916 (and (eq_attr "type" "mpydp") | |
917 (and (eq_attr "cross" "y") | |
918 (and (eq_attr "units" "m") | |
919 (eq_attr "dest_regfile" "b")))) | |
920 "(m2+x2)*4,nothing*4,m2w*2") | |
921 | |
922 (define_insn_reservation "mpyspdp_m2y" 7 | |
923 (and (eq_attr "type" "mpyspdp") | |
924 (and (eq_attr "cross" "y") | |
925 (and (eq_attr "units" "m") | |
926 (eq_attr "dest_regfile" "b")))) | |
927 "(m2+x2)*2,nothing*3,m2w*2") | |
928 | |
929 (define_insn_reservation "mpysp2dp_m2y" 5 | |
930 (and (eq_attr "type" "mpysp2dp") | |
931 (and (eq_attr "cross" "y") | |
932 (and (eq_attr "units" "m") | |
933 (eq_attr "dest_regfile" "b")))) | |
934 "m2+x2,nothing*2,m2w*2") |