OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [config/] [c6x/] [c6x-sched.md] - Blame information for rev 867

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 709 jeremybenn
;; -*- 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, 2011 Free Software Foundation, Inc.
8
;; Contributed by Bernd Schmidt 
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
;; .
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, 2011 Free Software Foundation, Inc.
241
;; Contributed by Bernd Schmidt 
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
;; .
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, 2011 Free Software Foundation, Inc.
474
;; Contributed by Bernd Schmidt 
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
;; .
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, 2011 Free Software Foundation, Inc.
707
;; Contributed by Bernd Schmidt 
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
;; .
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")

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.