OSDN Git Service

2009-06-16 H.J. Lu <hongjiu.lu@intel.com>
[pf3gnuchains/gcc-fork.git] / gcc / config / m68k / cf.md
1 ;; ColdFire V1, V2, V3 and V4/V4e DFA description.
2 ;; Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc.
3 ;; Contributed by CodeSourcery Inc., www.codesourcery.com
4 ;;
5 ;; This file is part of GCC.
6 ;;
7 ;; GCC is free software; you can redistribute it and/or modify
8 ;; it under the terms of the GNU General Public License as published by
9 ;; the Free Software Foundation; either version 3, or (at your option)
10 ;; any later version.
11 ;;
12 ;; GCC is distributed in the hope that it will be useful,
13 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
14 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 ;; GNU General Public License for more details.
16 ;;
17 ;; You should have received a copy of the GNU General Public License
18 ;; along with this program; see the file COPYING3.  If not see
19 ;; <http://www.gnu.org/licenses/>.
20
21 ;; Instruction Buffer
22 (define_automaton "cfv123_ib")
23
24 ;; These pseudo units are used to model instruction buffer of ColdFire cores.
25 ;; Instruction of size N can be issued only when cf_ib_wN is available.
26 (define_cpu_unit "cf_ib_w1, cf_ib_w2, cf_ib_w3" "cfv123_ib")
27
28 ;; Instruction occupies 1 word in the instruction buffer.
29 (define_reservation "cf_ib1" "cf_ib_w1")
30 ;; Instruction occupies 2 words in the instruction buffer.
31 (define_reservation "cf_ib2" "cf_ib_w1+cf_ib_w2")
32 ;; Instruction occupies 3 words in the instruction buffer.
33 (define_reservation "cf_ib3" "cf_ib_w1+cf_ib_w2+cf_ib_w3")
34
35 ;; This reservation is used at the start of each cycle to setup the maximal
36 ;; length of instruction that can be issued on current cycle.
37 ;; E.g., when this reservation is applied for the first time, cf_ib_w3
38 ;; resource is marked busy, thus filtering out all 3-word insns.
39 ;;
40 ;; This reservation requires deterministic automaton.
41 ;;
42 ;; At each cycle, given that memory bus is available (i.e., there is no
43 ;; pending memory operation), instruction fetch pipeline (IFP) prefetches
44 ;; two instruction words into instruction buffer (IB).
45 (define_insn_reservation "cf_ib1" 0
46   (and (eq_attr "cpu" "cfv1,cfv2,cfv3")
47        (eq_attr "type" "ib"))
48   "cf_ib_w3|cf_ib_w2|cf_ib_w1")
49
50 ;; Operand Execution Pipeline
51 (define_automaton "cfv123_oep")
52
53 (define_cpu_unit "cf_dsoc,cf_agex" "cfv123_oep")
54
55 ;; A memory unit that is reffered to as 'certain hardware resources' in
56 ;; ColdFire reference manuals.  This unit remains occupied for two cycles
57 ;; after last dsoc cycle of a store - hence there is a 2 cycle delay between
58 ;; two consecutive stores.
59 (define_automaton "cfv123_chr")
60
61 (define_cpu_unit "cf_chr" "cfv123_chr")
62
63 ;; Memory bus
64 (define_automaton "cfv123_mem")
65
66 ;; When memory bus is subscribed, that implies that instruction buffer won't
67 ;; get its portion this cycle.  To model that we query if cf_mem unit is
68 ;; subscribed and adjust number of prefetched instruction words accordingly.
69 ;; 
70 (define_query_cpu_unit "cf_mem1, cf_mem2" "cfv123_mem")
71
72 (define_reservation "cf_mem" "cf_mem1+cf_mem2")
73
74 (define_automaton "cf_mac")
75
76 (define_cpu_unit "cf_mac1,cf_mac2,cf_mac3,cf_mac4"
77   "cf_mac")
78
79 (define_automaton "cfv123_guess")
80
81 (define_query_cpu_unit "cfv123_guess" "cfv123_guess")
82
83 ;; Register to register move.
84 ;; Takes 1 cycle.
85 (define_reservation "cfv123_alu_00"
86   "cf_dsoc,cf_agex")
87
88 ;; Load from a memory location.
89 ;; Takes 3 cycles.
90 (define_reservation "cfv12_alu_10"
91   "cf_dsoc,cf_agex,cf_dsoc+cf_mem,cf_agex")
92 ;; Takes 2 cycles.
93 (define_reservation "cfv12_omove_10"
94   "cf_dsoc+cf_agex,cf_dsoc+cf_mem,cf_agex")
95 ;; Takes 4 cycles.
96 (define_reservation "cfv3_alu_10"
97   "cf_dsoc,cf_agex,cf_dsoc+cf_mem1,cf_dsoc+cf_mem2,cf_agex")
98 ;; Takes 3 cycles.
99 (define_reservation "cfv3_omove_10"
100   "cf_dsoc+cf_agex,cf_dsoc+cf_mem1,cf_dsoc+cf_mem2,cf_agex")
101
102 ;; Load from an indexed location.
103 ;; Takes 4 cycles.
104 (define_reservation "cfv12_alu_i0"
105   "cf_dsoc,cf_agex,cf_agex,cf_dsoc+cf_mem,cf_agex")
106 ;; Takes 3 cycles.
107 (define_reservation "cfv12_omove_i0"
108   "cf_dsoc+cf_agex,cf_agex,cf_dsoc+cf_mem,cf_agex")
109 ;; Takes 5 cycles.
110 (define_reservation "cfv3_alu_i0"
111   "cf_dsoc,cf_agex,cf_agex,cf_dsoc+cf_mem1,cf_dsoc+cf_mem2,cf_agex")
112 ;; Takes 4 cycles.
113 (define_reservation "cfv3_omove_i0"
114   "cf_dsoc+cf_agex,cf_agex,cf_dsoc+cf_mem1,cf_dsoc+cf_mem2,cf_agex")
115
116 ;; Store to a memory location.
117 ;; Takes 1 cycle.
118 (define_reservation "cfv12_alu_01"
119   "cf_dsoc+cf_agex+cf_chr,cf_mem+cf_chr,cf_chr")
120 ;; Takes 1 cycle.
121 (define_reservation "cfv3_alu_01"
122   "cf_dsoc+cf_agex+cf_chr,cf_mem1+cf_chr,cf_mem2+cf_chr")
123
124 ;; Store to an indexed location.
125 ;; Takes 2 cycles.
126 (define_reservation "cfv12_alu_0i"
127   "cf_dsoc+cf_agex,cf_agex+cf_chr,cf_mem+cf_chr,cf_chr")
128 ;; Takes 2 cycles.
129 (define_reservation "cfv3_alu_0i"
130   "cf_dsoc+cf_agex,cf_agex+cf_chr,cf_mem1+cf_chr,cf_mem2+cf_chr")
131
132 ;; Load from a memory location and store to a memory location.
133 ;; Takes 3 cycles
134 (define_reservation "cfv12_alu_11"
135   "cf_dsoc,cf_agex,cf_dsoc+cf_mem,cf_agex+cf_chr,cf_mem+cf_chr,cf_chr")
136 ;; Takes 2 cycles.
137 (define_reservation "cfv12_omove_11"
138   "cf_dsoc+cf_agex,cf_dsoc+cf_mem,cf_agex+cf_chr,cf_mem+cf_chr,cf_chr")
139 ;; Takes 4 cycles
140 (define_reservation "cfv3_alu_11"
141   "cf_dsoc,cf_agex,cf_dsoc+cf_mem1,cf_dsoc+cf_mem2,cf_agex+cf_chr,cf_mem1+cf_chr,cf_mem2+cf_chr")
142 ;; Takes 3 cycles.
143 (define_reservation "cfv3_omove_11"
144   "cf_dsoc+cf_agex,cf_dsoc+cf_mem1,cf_dsoc+cf_mem2,cf_agex+cf_chr,cf_mem1+cf_chr,cf_mem2+cf_chr")
145
146 ;; Load from an indexed location and store to a memory location.
147 ;; Takes 4 cycles.
148 (define_reservation "cfv12_alu_i1"
149   "cf_dsoc,cf_agex,cf_agex,cf_dsoc+cf_mem,cf_agex+cf_chr,cf_mem+cf_chr,cf_chr")
150 ;; Takes 3 cycles.
151 (define_reservation "cfv12_omove_i1"
152   "cf_dsoc+cf_agex,cf_agex,cf_dsoc+cf_mem,cf_agex+cf_chr,cf_mem+cf_chr,cf_chr")
153 ;; Takes 5 cycles.
154 (define_reservation "cfv3_alu_i1"
155   "cf_dsoc,cf_agex,cf_agex,cf_dsoc+cf_mem1,cf_dsoc+cf_mem2,cf_agex+cf_chr,cf_mem1+cf_chr,cf_mem2+cf_chr")
156 ;; Takes 4 cycles.
157 (define_reservation "cfv3_omove_i1"
158   "cf_dsoc+cf_agex,cf_agex,cf_dsoc+cf_mem1,cf_dsoc+cf_mem2,cf_agex+cf_chr,cf_mem1+cf_chr,cf_mem2+cf_chr")
159
160 ;; Load from a memory location and store to an indexed location.
161 ;; Takes 4 cycles.
162 (define_reservation "cfv12_alu_1i"
163   "cf_dsoc,cf_agex,cf_dsoc+cf_mem,cf_agex,cf_agex+cf_chr,cf_mem+cf_chr,cf_chr")
164 ;; Takes 3 cycles.
165 (define_reservation "cfv12_omove_1i"
166   "cf_dsoc+cf_agex,cf_dsoc+cf_mem,cf_agex,cf_agex+cf_chr,cf_mem+cf_chr,cf_chr")
167 ;; Takes 5 cycles.
168 (define_reservation "cfv3_alu_1i"
169   "cf_dsoc,cf_agex,cf_dsoc+cf_mem1,cf_dsoc+cf_mem2,cf_agex,cf_agex+cf_chr,cf_mem1+cf_chr,cf_mem2+cf_chr")
170 ;; Takes 4 cycles.
171 (define_reservation "cfv3_omove_1i"
172   "cf_dsoc+cf_agex,cf_dsoc+cf_mem1,cf_dsoc+cf_mem2,cf_agex,cf_agex+cf_chr,cf_mem1+cf_chr,cf_mem2+cf_chr")
173
174 ;; Lea operation for a memory location.
175 ;; Takes 1 cycle.
176 (define_reservation "cfv123_lea_10"
177   "cf_dsoc,cf_agex")
178
179 ;; Lea operation for an indexed location.
180 ;; Takes 2 cycles.
181 (define_reservation "cfv123_lea_i0"
182   "cf_dsoc,cf_agex,cf_agex")
183
184 ;; Pea operation for a memory location.
185 ;; Takes 2 cycles.
186 (define_reservation "cfv12_pea_11"
187   "cf_dsoc,cf_agex,cf_agex+cf_chr,cf_mem+cf_chr,cf_chr")
188 ;; Takes 2 cycles.
189 (define_reservation "cfv3_pea_11"
190   "cf_dsoc,cf_agex,cf_agex+cf_chr,cf_mem1+cf_chr,cf_mem2+cf_chr")
191
192 ;; Pea operation for an indexed location.
193 ;; Takes 3 cycles.
194 (define_reservation "cfv12_pea_i1"
195   "cf_dsoc,cf_agex,cf_agex,cf_agex+cf_chr,cf_mem+cf_chr,cf_chr")
196 ;; Takes 3 cycles.
197 (define_reservation "cfv3_pea_i1"
198   "cf_dsoc,cf_agex,cf_agex,cf_agex+cf_chr,cf_mem1+cf_chr,cf_mem2+cf_chr")
199
200 ;; Long multiplication with no mac.
201 ;; Takes 9-18 cycles.
202 (define_reservation "cfv123_mul_l_00"
203   "cf_dsoc,(cf_agex+cf_dsoc)*17,cf_agex")
204
205 ;; Word multiplication with no mac.
206 ;; Takes 9 cycles.
207 (define_reservation "cfv123_mul_w_00"
208   "cf_dsoc,(cf_agex+cf_dsoc)*8,cf_agex")
209
210 ;; Long multiplication with no mac.
211 ;; Takes 11-20 cycles.
212 (define_reservation "cfv12_mul_l_10"
213   "cf_dsoc,cf_agex,cf_dsoc+cf_mem,(cf_agex+cf_dsoc)*17,cf_agex")
214 ;; Takes 12-21 cycles.
215 (define_reservation "cfv3_mul_l_10"
216   "cf_dsoc,cf_agex,cf_dsoc+cf_mem1,cf_dsoc+cf_mem2,(cf_agex+cf_dsoc)*17,cf_agex")
217
218 ;; Word multiplication with no mac.
219 ;; Takes 11 cycles.
220 (define_reservation "cfv12_mul_w_10"
221   "cf_dsoc,cf_agex,cf_dsoc+cf_mem,(cf_agex+cf_dsoc)*8,cf_agex")
222 ;; Takes 12 cycles.
223 (define_reservation "cfv3_mul_w_10"
224   "cf_dsoc,cf_agex,cf_dsoc+cf_mem1,cf_dsoc+cf_mem2,(cf_agex+cf_dsoc)*8,cf_agex")
225
226 ;; Word multiplication with no mac.
227 ;; Takes 12 cycles.
228 (define_reservation "cfv12_mul_w_i0"
229   "cf_dsoc,cf_agex,cf_agex,cf_dsoc+cf_mem,(cf_agex+cf_dsoc)*8,cf_agex")
230 ;; Takes 13 cycles.
231 (define_reservation "cfv3_mul_w_i0"
232   "cf_dsoc,cf_agex,cf_agex,cf_dsoc+cf_mem1,cf_dsoc+cf_mem2,(cf_agex+cf_dsoc)*8,cf_agex")
233
234 ;; Long multiplication with mac.
235 ;; Takes 5 cycles.
236 (define_reservation "cfv123_mac_l_00"
237   "cf_dsoc,cf_agex,cf_mac1,cf_mac2,cf_mac3,cf_mac4")
238
239 ;; Word multiplication with mac.
240 ;; Takes 3 cycles.
241 (define_reservation "cfv123_mac_w_00"
242   "cf_dsoc,cf_agex,cf_mac1,cf_mac2")
243
244 ;; Long multiplication with mac.
245 ;; Takes 7 cycles.
246 (define_reservation "cfv12_mac_l_10"
247   "cf_dsoc,cf_agex,cf_dsoc+cf_mem,cf_agex,cf_mac1,cf_mac2,cf_mac3,cf_mac4")
248 ;; Takes 8 cycles.
249 (define_reservation "cfv3_mac_l_10"
250   "cf_dsoc,cf_agex,cf_dsoc+cf_mem1,cf_dsoc+cf_mem2,cf_agex,cf_mac1,cf_mac2,cf_mac3,cf_mac4")
251
252 ;; Word multiplication with mac.
253 ;; Takes 5 cycles.
254 (define_reservation "cfv12_mac_w_10"
255   "cf_dsoc,cf_agex,cf_dsoc+cf_mem,cf_agex,cf_mac1,cf_mac2")
256 ;; Takes 6 cycles.
257 (define_reservation "cfv3_mac_w_10"
258   "cf_dsoc,cf_agex,cf_dsoc+cf_mem1,cf_dsoc+cf_mem2,cf_agex,cf_mac1,cf_mac2")
259
260 ;; Word multiplication with mac.
261 ;; Takes 6 cycles.
262 (define_reservation "cfv12_mac_w_i0"
263   "cf_dsoc,cf_agex,cf_agex,cf_dsoc+cf_mem,cf_agex,cf_mac1,cf_mac2")
264 ;; Takes 7 cycles.
265 (define_reservation "cfv3_mac_w_i0"
266   "cf_dsoc,cf_agex,cf_agex,cf_dsoc+cf_mem1,cf_dsoc+cf_mem2,cf_agex,cf_mac1,cf_mac2")
267
268 ;; Multiplication with emac.
269 ;; Takes 4 cycles.
270 (define_reservation "cfv123_emac_00"
271   "cf_dsoc,cf_agex+cf_mac1,cf_mac2,cf_mac3,cf_mac4")
272
273 ;; Multiplication with emac.
274 ;; Takes 6 cycles.
275 (define_reservation "cfv12_emac_10"
276   "cf_dsoc,cf_agex,cf_dsoc+cf_mem,cf_agex+cf_mac1,cf_mac2,cf_mac3,cf_mac4")
277 ;; Takes 7 cycles.
278 (define_reservation "cfv3_emac_10"
279   "cf_dsoc,cf_agex,cf_dsoc+cf_mem1,cf_dsoc+cf_mem2,cf_agex+cf_mac1,cf_mac2,cf_mac3,cf_mac4")
280
281 ;; Word multiplication with emac.
282 ;; Takes 7 cycles.
283 (define_reservation "cfv12_emac_w_i0"
284   "cf_dsoc,cf_agex,cf_agex,cf_dsoc+cf_mem,cf_agex+cf_mac1,cf_mac2,cf_mac3,cf_mac4")
285 ;; Takes 8 cycles.
286 (define_reservation "cfv3_emac_w_i0"
287   "cf_dsoc,cf_agex,cf_agex,cf_dsoc+cf_mem1,cf_dsoc+cf_mem2,cf_agex+cf_mac1,cf_mac2,cf_mac3,cf_mac4")
288
289 ;; Return instruction.
290 ;; ??? As return reads target address from stack, use a mem-read reservation
291 ;; ??? for it.
292 ;; ??? It's not clear what the core does during these 5 cycles.
293 ;; ??? Luckily, we don't care that much about an insn that won't be moved.
294 ;; Takes 5 cycles.
295 (define_reservation "cfv12_rts" "cfv12_alu_10")
296 ;; Takes 8 cycles.
297 (define_reservation "cfv3_rts" "cfv3_alu_10")
298
299 ;; Call instruction.
300 ;; ??? It's not clear what reservation is best to use for calls.
301 ;; ??? For now we use mem-write + return reservations to reflect the fact of
302 ;; ??? pushing and poping return address to and from the stack.
303 ;; Takes 3 cycles.
304 (define_reservation "cfv12_call" "cfv12_alu_01,cfv12_rts")
305 ;; Takes 1/5 cycles.
306 (define_reservation "cfv3_call" "cfv3_alu_01,cfv3_rts")
307
308 ;; Conditional branch instruction.
309 ;; ??? Branch reservations are unclear to me so far.  Luckily, we don't care
310 ;; ??? that much about branches.
311 ;; Takes 2 cycles.
312 (define_reservation "cfv12_bcc" "cfv123_alu_00")
313 ;; Takes 1 cycles.
314 (define_reservation "cfv3_bcc" "cfv123_alu_00")
315
316 ;; Unconditional branch instruciton.
317 ;; Takes 2 cycles.
318 (define_reservation "cfv12_bra" "cfv12_alu_01")
319 ;; Takes 1 cycles.
320 (define_reservation "cfv3_bra" "cfv3_alu_01")
321
322 ;; Computed jump instruction.
323 ;; Takes 3 cycles.
324 (define_reservation "cfv12_jmp"
325   "(cf_dsoc+cf_agex)*3")
326 ;; Takes 5 cycles.
327 (define_reservation "cfv3_jmp"
328   "(cf_dsoc+cf_agex)*5")
329
330 ;; Instruction reservations.
331
332 ;; Below reservations are simple derivation from the above reservations.
333 ;; Each reservation from the above expands into 3 reservations below - one
334 ;; for each instruction size.
335 ;; A number in the end of reservation's name is the size of the instruction.
336
337 (define_insn_reservation "cfv123_alu_00_1" 1
338   (and (and (and (eq_attr "cpu" "cfv1,cfv2,cfv3")
339                  (eq_attr "type" "
340 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
341 clr,clr_l,mov3q_l,move,moveq_l,tst,
342 move_l,tst_l"))
343             (eq_attr "op_mem" "00"))
344        (eq_attr "size" "1"))
345   "cf_ib1+cfv123_alu_00")
346
347 (define_insn_reservation "cfv123_alu_00_2" 1
348   (and (and (and (eq_attr "cpu" "cfv1,cfv2,cfv3")
349                  (eq_attr "type" "
350 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
351 clr,clr_l,mov3q_l,move,moveq_l,tst,
352 move_l,tst_l"))
353             (eq_attr "op_mem" "00"))
354        (eq_attr "size" "2"))
355   "cf_ib2+cfv123_alu_00")
356
357 (define_insn_reservation "cfv123_alu_00_3" 1
358   (and (and (and (eq_attr "cpu" "cfv1,cfv2,cfv3")
359                  (eq_attr "type" "
360 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
361 clr,clr_l,mov3q_l,move,moveq_l,tst,
362 move_l,tst_l"))
363             (eq_attr "op_mem" "00"))
364        (eq_attr "size" "3"))
365   "cf_ib3+cfv123_alu_00")
366
367 (define_insn_reservation "cfv1_alu_10_1" 3
368   (and (and (and (eq_attr "cpu" "cfv1")
369                  (eq_attr "type" "
370 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift"))
371             (eq_attr "op_mem" "10"))
372        (eq_attr "size" "1"))
373   "cf_ib1+cfv12_alu_10")
374
375 (define_insn_reservation "cfv1_alu_10_2" 3
376   (and (and (and (eq_attr "cpu" "cfv1")
377                  (eq_attr "type" "
378 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift"))
379             (eq_attr "op_mem" "10"))
380        (eq_attr "size" "2"))
381   "cf_ib2+cfv12_alu_10")
382
383 (define_insn_reservation "cfv1_alu_10_3" 3
384   (and (and (and (eq_attr "cpu" "cfv1")
385                  (eq_attr "type" "
386 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift"))
387             (eq_attr "op_mem" "10"))
388        (eq_attr "size" "3"))
389   "cf_ib3+cfv12_alu_10")
390
391 (define_insn_reservation "cfv1_omove_10_1" 2
392   (and (and (and (eq_attr "cpu" "cfv1")
393                  (eq_attr "type" "
394 clr,clr_l,mov3q_l,move,moveq_l,tst,
395 move_l,tst_l"))
396             (eq_attr "op_mem" "10"))
397        (eq_attr "size" "1"))
398   "cf_ib1+cfv12_omove_10")
399
400 (define_insn_reservation "cfv1_omove_10_2" 2
401   (and (and (and (eq_attr "cpu" "cfv1")
402                  (eq_attr "type" "
403 clr,clr_l,mov3q_l,move,moveq_l,tst,
404 move_l,tst_l"))
405             (eq_attr "op_mem" "10"))
406        (eq_attr "size" "2"))
407   "cf_ib2+cfv12_omove_10")
408
409 (define_insn_reservation "cfv1_omove_10_3" 2
410   (and (and (and (eq_attr "cpu" "cfv1")
411                  (eq_attr "type" "
412 clr,clr_l,mov3q_l,move,moveq_l,tst,
413 move_l,tst_l"))
414             (eq_attr "op_mem" "10"))
415        (eq_attr "size" "3"))
416   "cf_ib3+cfv12_omove_10")
417
418 (define_insn_reservation "cfv2_alu_10_1" 3
419   (and (and (and (eq_attr "cpu" "cfv2")
420                  (eq_attr "type" "
421 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
422 clr,clr_l,mov3q_l,move,moveq_l,tst"))
423             (eq_attr "op_mem" "10"))
424        (eq_attr "size" "1"))
425   "cf_ib1+cfv12_alu_10")
426
427 (define_insn_reservation "cfv2_alu_10_2" 3
428   (and (and (and (eq_attr "cpu" "cfv2")
429                  (eq_attr "type" "
430 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
431 clr,clr_l,mov3q_l,move,moveq_l,tst"))
432             (eq_attr "op_mem" "10"))
433        (eq_attr "size" "2"))
434   "cf_ib2+cfv12_alu_10")
435
436 (define_insn_reservation "cfv2_alu_10_3" 3
437   (and (and (and (eq_attr "cpu" "cfv2")
438                  (eq_attr "type" "
439 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
440 clr,clr_l,mov3q_l,move,moveq_l,tst"))
441             (eq_attr "op_mem" "10"))
442        (eq_attr "size" "3"))
443   "cf_ib3+cfv12_alu_10")
444
445 (define_insn_reservation "cfv2_omove_10_1" 2
446   (and (and (and (eq_attr "cpu" "cfv2")
447                  (eq_attr "type" "
448 move_l,tst_l"))
449             (eq_attr "op_mem" "10"))
450        (eq_attr "size" "1"))
451   "cf_ib1+cfv12_omove_10")
452
453 (define_insn_reservation "cfv2_omove_10_2" 2
454   (and (and (and (eq_attr "cpu" "cfv2")
455                  (eq_attr "type" "
456 move_l,tst_l"))
457             (eq_attr "op_mem" "10"))
458        (eq_attr "size" "2"))
459   "cf_ib2+cfv12_omove_10")
460
461 (define_insn_reservation "cfv2_omove_10_3" 2
462   (and (and (and (eq_attr "cpu" "cfv2")
463                  (eq_attr "type" "
464 move_l,tst_l"))
465             (eq_attr "op_mem" "10"))
466        (eq_attr "size" "3"))
467   "cf_ib3+cfv12_omove_10")
468
469 (define_insn_reservation "cfv3_alu_10_1" 4
470   (and (and (and (eq_attr "cpu" "cfv3")
471                  (eq_attr "type" "
472 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
473 clr,clr_l,mov3q_l,move,moveq_l,tst"))
474             (eq_attr "op_mem" "10"))
475        (eq_attr "size" "1"))
476   "cf_ib1+cfv3_alu_10")
477
478 (define_insn_reservation "cfv3_alu_10_2" 4
479   (and (and (and (eq_attr "cpu" "cfv3")
480                  (eq_attr "type" "
481 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
482 clr,clr_l,mov3q_l,move,moveq_l,tst"))
483             (eq_attr "op_mem" "10"))
484        (eq_attr "size" "2"))
485   "cf_ib2+cfv3_alu_10")
486
487 (define_insn_reservation "cfv3_alu_10_3" 4
488   (and (and (and (eq_attr "cpu" "cfv3")
489                  (eq_attr "type" "
490 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
491 clr,clr_l,mov3q_l,move,moveq_l,tst"))
492             (eq_attr "op_mem" "10"))
493        (eq_attr "size" "3"))
494   "cf_ib3+cfv3_alu_10")
495
496 (define_insn_reservation "cfv3_omove_10_1" 3
497   (and (and (and (eq_attr "cpu" "cfv3")
498                  (eq_attr "type" "
499 move_l,tst_l"))
500             (eq_attr "op_mem" "10"))
501        (eq_attr "size" "1"))
502   "cf_ib1+cfv3_omove_10")
503
504 (define_insn_reservation "cfv3_omove_10_2" 3
505   (and (and (and (eq_attr "cpu" "cfv3")
506                  (eq_attr "type" "
507 move_l,tst_l"))
508             (eq_attr "op_mem" "10"))
509        (eq_attr "size" "2"))
510   "cf_ib2+cfv3_omove_10")
511
512 (define_insn_reservation "cfv3_omove_10_3" 3
513   (and (and (and (eq_attr "cpu" "cfv3")
514                  (eq_attr "type" "
515 move_l,tst_l"))
516             (eq_attr "op_mem" "10"))
517        (eq_attr "size" "3"))
518   "cf_ib3+cfv3_omove_10")
519
520 (define_insn_reservation "cfv1_alu_i0_2" 4
521   (and (and (and (eq_attr "cpu" "cfv1")
522                  (eq_attr "type" "
523 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift"))
524             (eq_attr "op_mem" "i0"))
525        (eq_attr "size" "1,2"))
526   "cf_ib2+cfv12_alu_i0")
527
528 (define_insn_reservation "cfv1_alu_i0_3" 4
529   (and (and (and (eq_attr "cpu" "cfv1")
530                  (eq_attr "type" "
531 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift"))
532             (eq_attr "op_mem" "i0"))
533        (eq_attr "size" "3"))
534   "cf_ib3+cfv12_alu_i0")
535
536 (define_insn_reservation "cfv1_omove_i0_2" 3
537   (and (and (and (eq_attr "cpu" "cfv1")
538                  (eq_attr "type" "
539 clr,clr_l,mov3q_l,move,moveq_l,tst,
540 move_l,tst_l"))
541             (eq_attr "op_mem" "i0"))
542        (eq_attr "size" "1,2"))
543   "cf_ib2+cfv12_omove_i0")
544
545 (define_insn_reservation "cfv1_omove_i0_3" 3
546   (and (and (and (eq_attr "cpu" "cfv1")
547                  (eq_attr "type" "
548 clr,clr_l,mov3q_l,move,moveq_l,tst,
549 move_l,tst_l"))
550             (eq_attr "op_mem" "i0"))
551        (eq_attr "size" "3"))
552   "cf_ib3+cfv12_omove_i0")
553
554 (define_insn_reservation "cfv2_alu_i0_2" 4
555   (and (and (and (eq_attr "cpu" "cfv2")
556                  (eq_attr "type" "
557 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
558 clr,clr_l,mov3q_l,move,moveq_l,tst"))
559             (eq_attr "op_mem" "i0"))
560        (eq_attr "size" "1,2"))
561   "cf_ib2+cfv12_alu_i0")
562
563 (define_insn_reservation "cfv2_alu_i0_3" 4
564   (and (and (and (eq_attr "cpu" "cfv2")
565                  (eq_attr "type" "
566 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
567 clr,clr_l,mov3q_l,move,moveq_l,tst"))
568             (eq_attr "op_mem" "i0"))
569        (eq_attr "size" "3"))
570   "cf_ib3+cfv12_alu_i0")
571
572 (define_insn_reservation "cfv2_omove_i0_2" 3
573   (and (and (and (eq_attr "cpu" "cfv2")
574                  (eq_attr "type" "
575 move_l,tst_l"))
576             (eq_attr "op_mem" "i0"))
577        (eq_attr "size" "1,2"))
578   "cf_ib2+cfv12_omove_i0")
579
580 (define_insn_reservation "cfv2_omove_i0_3" 3
581   (and (and (and (eq_attr "cpu" "cfv2")
582                  (eq_attr "type" "
583 move_l,tst_l"))
584             (eq_attr "op_mem" "i0"))
585        (eq_attr "size" "3"))
586   "cf_ib3+cfv12_omove_i0")
587
588 (define_insn_reservation "cfv3_alu_i0_2" 5
589   (and (and (and (eq_attr "cpu" "cfv3")
590                  (eq_attr "type" "
591 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
592 clr,clr_l,mov3q_l,move,moveq_l,tst"))
593             (eq_attr "op_mem" "i0"))
594        (eq_attr "size" "1,2"))
595   "cf_ib2+cfv3_alu_i0")
596
597 (define_insn_reservation "cfv3_alu_i0_3" 5
598   (and (and (and (eq_attr "cpu" "cfv3")
599                  (eq_attr "type" "
600 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
601 clr,clr_l,mov3q_l,move,moveq_l,tst"))
602             (eq_attr "op_mem" "i0"))
603        (eq_attr "size" "3"))
604   "cf_ib3+cfv3_alu_i0")
605
606 (define_insn_reservation "cfv3_omove_i0_2" 4
607   (and (and (and (eq_attr "cpu" "cfv3")
608                  (eq_attr "type" "
609 move_l,tst_l"))
610             (eq_attr "op_mem" "i0"))
611        (eq_attr "size" "1,2"))
612   "cf_ib2+cfv3_omove_i0")
613
614 (define_insn_reservation "cfv3_omove_i0_3" 4
615   (and (and (and (eq_attr "cpu" "cfv3")
616                  (eq_attr "type" "
617 move_l,tst_l"))
618             (eq_attr "op_mem" "i0"))
619        (eq_attr "size" "3"))
620   "cf_ib3+cfv3_omove_i0")
621
622 (define_insn_reservation "cfv12_alu_01_1" 1
623   (and (and (and (eq_attr "cpu" "cfv1,cfv2")
624                  (eq_attr "type" "
625 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
626 clr,clr_l,mov3q_l,move,moveq_l,tst,
627 move_l,tst_l"))
628             (eq_attr "op_mem" "01"))
629        (eq_attr "size" "1"))
630   "cf_ib1+cfv12_alu_01")
631
632 (define_insn_reservation "cfv12_alu_01_2" 1
633   (and (and (and (eq_attr "cpu" "cfv1,cfv2")
634                  (eq_attr "type" "
635 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
636 clr,clr_l,mov3q_l,move,moveq_l,tst,
637 move_l,tst_l"))
638             (eq_attr "op_mem" "01"))
639        (eq_attr "size" "2"))
640   "cf_ib2+cfv12_alu_01")
641
642 (define_insn_reservation "cfv12_alu_01_3" 1
643   (and (and (and (eq_attr "cpu" "cfv1,cfv2")
644                  (eq_attr "type" "
645 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
646 clr,clr_l,mov3q_l,move,moveq_l,tst,
647 move_l,tst_l"))
648             (eq_attr "op_mem" "01"))
649        (eq_attr "size" "3"))
650   "cf_ib3+cfv12_alu_01")
651
652 (define_insn_reservation "cfv3_alu_01_1" 1
653   (and (and (and (eq_attr "cpu" "cfv3")
654                  (eq_attr "type" "
655 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
656 clr,clr_l,mov3q_l,move,moveq_l,tst,
657 move_l,tst_l"))
658             (eq_attr "op_mem" "01"))
659        (eq_attr "size" "1"))
660   "cf_ib1+cfv3_alu_01")
661
662 (define_insn_reservation "cfv3_alu_01_2" 1
663   (and (and (and (eq_attr "cpu" "cfv3")
664                  (eq_attr "type" "
665 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
666 clr,clr_l,mov3q_l,move,moveq_l,tst,
667 move_l,tst_l"))
668             (eq_attr "op_mem" "01"))
669        (eq_attr "size" "2"))
670   "cf_ib2+cfv3_alu_01")
671
672 (define_insn_reservation "cfv3_alu_01_3" 1
673   (and (and (and (eq_attr "cpu" "cfv3")
674                  (eq_attr "type" "
675 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
676 clr,clr_l,mov3q_l,move,moveq_l,tst,
677 move_l,tst_l"))
678             (eq_attr "op_mem" "01"))
679        (eq_attr "size" "3"))
680   "cf_ib3+cfv3_alu_01")
681
682 (define_insn_reservation "cfv12_alu_0i_2" 2
683   (and (and (and (eq_attr "cpu" "cfv1,cfv2")
684                  (eq_attr "type" "
685 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
686 clr,clr_l,mov3q_l,move,moveq_l,tst,
687 move_l,tst_l"))
688             (eq_attr "op_mem" "0i"))
689        (eq_attr "size" "1,2"))
690   "cf_ib2+cfv12_alu_0i")
691
692 (define_insn_reservation "cfv12_alu_0i_3" 2
693   (and (and (and (eq_attr "cpu" "cfv1,cfv2")
694                  (eq_attr "type" "
695 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
696 clr,clr_l,mov3q_l,move,moveq_l,tst,
697 move_l,tst_l"))
698             (eq_attr "op_mem" "0i"))
699        (eq_attr "size" "3"))
700   "cf_ib3+cfv12_alu_0i")
701
702 (define_insn_reservation "cfv3_alu_0i_2" 2
703   (and (and (and (eq_attr "cpu" "cfv3")
704                  (eq_attr "type" "
705 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
706 clr,clr_l,mov3q_l,move,moveq_l,tst,
707 move_l,tst_l"))
708             (eq_attr "op_mem" "0i"))
709        (eq_attr "size" "1,2"))
710   "cf_ib2+cfv3_alu_0i")
711
712 (define_insn_reservation "cfv3_alu_0i_3" 2
713   (and (and (and (eq_attr "cpu" "cfv3")
714                  (eq_attr "type" "
715 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
716 clr,clr_l,mov3q_l,move,moveq_l,tst,
717 move_l,tst_l"))
718             (eq_attr "op_mem" "0i"))
719        (eq_attr "size" "3"))
720   "cf_ib3+cfv3_alu_0i")
721
722 (define_insn_reservation "cfv1_alu_11_1" 1
723   (and (and (and (eq_attr "cpu" "cfv1")
724                  (eq_attr "type" "
725 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift"))
726             (eq_attr "op_mem" "11"))
727        (eq_attr "size" "1"))
728   "cf_ib1+cfv12_alu_11")
729
730 (define_insn_reservation "cfv1_alu_11_2" 1
731   (and (and (and (eq_attr "cpu" "cfv1")
732                  (eq_attr "type" "
733 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift"))
734             (eq_attr "op_mem" "11"))
735        (eq_attr "size" "2"))
736   "cf_ib2+cfv12_alu_11")
737
738 (define_insn_reservation "cfv1_alu_11_3" 1
739   (and (and (and (eq_attr "cpu" "cfv1")
740                  (eq_attr "type" "
741 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift"))
742             (eq_attr "op_mem" "11"))
743        (eq_attr "size" "3"))
744   "cf_ib3+cfv12_alu_11")
745
746 (define_insn_reservation "cfv1_omove_11_1" 1
747   (and (and (and (eq_attr "cpu" "cfv1")
748                  (eq_attr "type" "
749 clr,clr_l,mov3q_l,move,moveq_l,tst,
750 move_l,tst_l"))
751             (eq_attr "op_mem" "11"))
752        (eq_attr "size" "1"))
753   "cf_ib1+cfv12_omove_11")
754
755 (define_insn_reservation "cfv1_omove_11_2" 1
756   (and (and (and (eq_attr "cpu" "cfv1")
757                  (eq_attr "type" "
758 clr,clr_l,mov3q_l,move,moveq_l,tst,
759 move_l,tst_l"))
760             (eq_attr "op_mem" "11"))
761        (eq_attr "size" "2"))
762   "cf_ib2+cfv12_omove_11")
763
764 (define_insn_reservation "cfv1_omove_11_3" 1
765   (and (and (and (eq_attr "cpu" "cfv1")
766                  (eq_attr "type" "
767 clr,clr_l,mov3q_l,move,moveq_l,tst,
768 move_l,tst_l"))
769             (eq_attr "op_mem" "11"))
770        (eq_attr "size" "3"))
771   "cf_ib3+cfv12_omove_11")
772
773 (define_insn_reservation "cfv2_alu_11_1" 1
774   (and (and (and (eq_attr "cpu" "cfv2")
775                  (eq_attr "type" "
776 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
777 clr,clr_l,mov3q_l,move,moveq_l,tst"))
778             (eq_attr "op_mem" "11"))
779        (eq_attr "size" "1"))
780   "cf_ib1+cfv12_alu_11")
781
782 (define_insn_reservation "cfv2_alu_11_2" 1
783   (and (and (and (eq_attr "cpu" "cfv2")
784                  (eq_attr "type" "
785 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
786 clr,clr_l,mov3q_l,move,moveq_l,tst"))
787             (eq_attr "op_mem" "11"))
788        (eq_attr "size" "2"))
789   "cf_ib2+cfv12_alu_11")
790
791 (define_insn_reservation "cfv2_alu_11_3" 1
792   (and (and (and (eq_attr "cpu" "cfv2")
793                  (eq_attr "type" "
794 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
795 clr,clr_l,mov3q_l,move,moveq_l,tst"))
796             (eq_attr "op_mem" "11"))
797        (eq_attr "size" "3"))
798   "cf_ib3+cfv12_alu_11")
799
800 (define_insn_reservation "cfv2_omove_11_1" 1
801   (and (and (and (eq_attr "cpu" "cfv2")
802                  (eq_attr "type" "
803 move_l,tst_l"))
804             (eq_attr "op_mem" "11"))
805        (eq_attr "size" "1"))
806   "cf_ib1+cfv12_omove_11")
807
808 (define_insn_reservation "cfv2_omove_11_2" 1
809   (and (and (and (eq_attr "cpu" "cfv2")
810                  (eq_attr "type" "
811 move_l,tst_l"))
812             (eq_attr "op_mem" "11"))
813        (eq_attr "size" "2"))
814   "cf_ib2+cfv12_omove_11")
815
816 (define_insn_reservation "cfv2_omove_11_3" 1
817   (and (and (and (eq_attr "cpu" "cfv2")
818                  (eq_attr "type" "
819 move_l,tst_l"))
820             (eq_attr "op_mem" "11"))
821        (eq_attr "size" "3"))
822   "cf_ib3+cfv12_omove_11")
823
824 (define_insn_reservation "cfv3_alu_11_1" 1
825   (and (and (and (eq_attr "cpu" "cfv3")
826                  (eq_attr "type" "
827 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
828 clr,clr_l,mov3q_l,move,moveq_l,tst"))
829             (eq_attr "op_mem" "11"))
830        (eq_attr "size" "1"))
831   "cf_ib1+cfv3_alu_11")
832
833 (define_insn_reservation "cfv3_alu_11_2" 1
834   (and (and (and (eq_attr "cpu" "cfv3")
835                  (eq_attr "type" "
836 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
837 clr,clr_l,mov3q_l,move,moveq_l,tst"))
838             (eq_attr "size" "2"))
839        (eq_attr "op_mem" "11"))
840   "cf_ib2+cfv3_alu_11")
841
842 (define_insn_reservation "cfv3_alu_11_3" 1
843   (and (and (and (eq_attr "cpu" "cfv3")
844                  (eq_attr "type" "
845 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
846 clr,clr_l,mov3q_l,move,moveq_l,tst"))
847             (eq_attr "op_mem" "11"))
848        (eq_attr "size" "3"))
849   "cf_ib3+cfv3_alu_11")
850
851 (define_insn_reservation "cfv3_omove_11_1" 1
852   (and (and (and (eq_attr "cpu" "cfv3")
853                  (eq_attr "type" "
854 move_l,tst_l"))
855             (eq_attr "op_mem" "11"))
856        (eq_attr "size" "1"))
857   "cf_ib1+cfv3_omove_11")
858
859 (define_insn_reservation "cfv3_omove_11_2" 1
860   (and (and (and (eq_attr "cpu" "cfv3")
861                  (eq_attr "type" "
862 move_l,tst_l"))
863             (eq_attr "size" "2"))
864        (eq_attr "op_mem" "11"))
865   "cf_ib2+cfv3_omove_11")
866
867 (define_insn_reservation "cfv3_omove_11_3" 1
868   (and (and (and (eq_attr "cpu" "cfv3")
869                  (eq_attr "type" "
870 move_l,tst_l"))
871             (eq_attr "op_mem" "11"))
872        (eq_attr "size" "3"))
873   "cf_ib3+cfv3_omove_11")
874
875 (define_insn_reservation "cfv1_alu_i1_2" 2
876   (and (and (and (eq_attr "cpu" "cfv1")
877                  (eq_attr "type" "
878 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift"))
879             (eq_attr "op_mem" "i1"))
880        (eq_attr "size" "1,2"))
881   "cf_ib2+cfv12_alu_i1")
882
883 (define_insn_reservation "cfv1_alu_i1_3" 2
884   (and (and (and (eq_attr "cpu" "cfv1")
885                  (eq_attr "type" "
886 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift"))
887             (eq_attr "op_mem" "i1"))
888        (eq_attr "size" "3"))
889   "cf_ib3+cfv12_alu_i1")
890
891 (define_insn_reservation "cfv1_omove_i1_2" 2
892   (and (and (and (eq_attr "cpu" "cfv1")
893                  (eq_attr "type" "
894 clr,clr_l,mov3q_l,move,moveq_l,tst,
895 move_l,tst_l"))
896             (eq_attr "op_mem" "i1"))
897        (eq_attr "size" "1,2"))
898   "cf_ib2+cfv12_omove_i1")
899
900 (define_insn_reservation "cfv1_omove_i1_3" 2
901   (and (and (and (eq_attr "cpu" "cfv1")
902                  (eq_attr "type" "
903 clr,clr_l,mov3q_l,move,moveq_l,tst,
904 move_l,tst_l"))
905             (eq_attr "op_mem" "i1"))
906        (eq_attr "size" "3"))
907   "cf_ib3+cfv12_omove_i1")
908
909 (define_insn_reservation "cfv2_alu_i1_2" 2
910   (and (and (and (eq_attr "cpu" "cfv2")
911                  (eq_attr "type" "
912 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
913 clr,clr_l,mov3q_l,move,moveq_l,tst"))
914             (eq_attr "op_mem" "i1"))
915        (eq_attr "size" "1,2"))
916   "cf_ib2+cfv12_alu_i1")
917
918 (define_insn_reservation "cfv2_alu_i1_3" 2
919   (and (and (and (eq_attr "cpu" "cfv2")
920                  (eq_attr "type" "
921 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
922 clr,clr_l,mov3q_l,move,moveq_l,tst"))
923             (eq_attr "op_mem" "i1"))
924        (eq_attr "size" "3"))
925   "cf_ib3+cfv12_alu_i1")
926
927 (define_insn_reservation "cfv2_omove_i1_2" 2
928   (and (and (and (eq_attr "cpu" "cfv2")
929                  (eq_attr "type" "
930 move_l,tst_l"))
931             (eq_attr "op_mem" "i1"))
932        (eq_attr "size" "1,2"))
933   "cf_ib2+cfv12_omove_i1")
934
935 (define_insn_reservation "cfv2_omove_i1_3" 2
936   (and (and (and (eq_attr "cpu" "cfv2")
937                  (eq_attr "type" "
938 move_l,tst_l"))
939             (eq_attr "op_mem" "i1"))
940        (eq_attr "size" "3"))
941   "cf_ib3+cfv12_omove_i1")
942
943 (define_insn_reservation "cfv3_alu_i1_2" 2
944   (and (and (and (eq_attr "cpu" "cfv3")
945                  (eq_attr "type" "
946 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
947 clr,clr_l,mov3q_l,move,moveq_l,tst"))
948             (eq_attr "op_mem" "i1"))
949        (eq_attr "size" "1,2"))
950   "cf_ib2+cfv3_alu_i1")
951
952 (define_insn_reservation "cfv3_alu_i1_3" 2
953   (and (and (and (eq_attr "cpu" "cfv3")
954                  (eq_attr "type" "
955 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
956 clr,clr_l,mov3q_l,move,moveq_l,tst"))
957             (eq_attr "op_mem" "i1"))
958        (eq_attr "size" "3"))
959   "cf_ib3+cfv3_alu_i1")
960
961 (define_insn_reservation "cfv3_omove_i1_2" 2
962   (and (and (and (eq_attr "cpu" "cfv3")
963                  (eq_attr "type" "
964 move_l,tst_l"))
965             (eq_attr "op_mem" "i1"))
966        (eq_attr "size" "1,2"))
967   "cf_ib2+cfv3_omove_i1")
968
969 (define_insn_reservation "cfv3_omove_i1_3" 2
970   (and (and (and (eq_attr "cpu" "cfv3")
971                  (eq_attr "type" "
972 move_l,tst_l"))
973             (eq_attr "op_mem" "i1"))
974        (eq_attr "size" "3"))
975   "cf_ib3+cfv3_omove_i1")
976
977 (define_insn_reservation "cfv1_alu_1i_2" 2
978   (and (and (and (eq_attr "cpu" "cfv1")
979                  (eq_attr "type" "
980 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift"))
981             (eq_attr "op_mem" "1i"))
982        (eq_attr "size" "1,2"))
983   "cf_ib2+cfv12_alu_1i")
984
985 (define_insn_reservation "cfv1_alu_1i_3" 2
986   (and (and (and (eq_attr "cpu" "cfv1")
987                  (eq_attr "type" "
988 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift"))
989             (eq_attr "op_mem" "1i"))
990        (eq_attr "size" "3"))
991   "cf_ib3+cfv12_alu_1i")
992
993 (define_insn_reservation "cfv1_omove_1i_2" 2
994   (and (and (and (eq_attr "cpu" "cfv1")
995                  (eq_attr "type" "
996 clr,clr_l,mov3q_l,move,moveq_l,tst,
997 move_l,tst_l"))
998             (eq_attr "op_mem" "1i"))
999        (eq_attr "size" "1,2"))
1000   "cf_ib2+cfv12_omove_1i")
1001
1002 (define_insn_reservation "cfv1_omove_1i_3" 2
1003   (and (and (and (eq_attr "cpu" "cfv1")
1004                  (eq_attr "type" "
1005 clr,clr_l,mov3q_l,move,moveq_l,tst,
1006 move_l,tst_l"))
1007             (eq_attr "op_mem" "1i"))
1008        (eq_attr "size" "3"))
1009   "cf_ib3+cfv12_omove_1i")
1010
1011 (define_insn_reservation "cfv2_alu_1i_2" 2
1012   (and (and (and (eq_attr "cpu" "cfv2")
1013                  (eq_attr "type" "
1014 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
1015 clr,clr_l,mov3q_l,move,moveq_l,tst"))
1016             (eq_attr "op_mem" "1i"))
1017        (eq_attr "size" "1,2"))
1018   "cf_ib2+cfv12_alu_1i")
1019
1020 (define_insn_reservation "cfv2_alu_1i_3" 2
1021   (and (and (and (eq_attr "cpu" "cfv2")
1022                  (eq_attr "type" "
1023 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
1024 clr,clr_l,mov3q_l,move,moveq_l,tst"))
1025             (eq_attr "op_mem" "1i"))
1026        (eq_attr "size" "3"))
1027   "cf_ib3+cfv12_alu_1i")
1028
1029 (define_insn_reservation "cfv2_omove_1i_2" 2
1030   (and (and (and (eq_attr "cpu" "cfv2")
1031                  (eq_attr "type" "
1032 move_l,tst_l"))
1033             (eq_attr "op_mem" "1i"))
1034        (eq_attr "size" "1,2"))
1035   "cf_ib2+cfv12_omove_1i")
1036
1037 (define_insn_reservation "cfv2_omove_1i_3" 2
1038   (and (and (and (eq_attr "cpu" "cfv2")
1039                  (eq_attr "type" "
1040 move_l,tst_l"))
1041             (eq_attr "op_mem" "1i"))
1042        (eq_attr "size" "3"))
1043   "cf_ib3+cfv12_omove_1i")
1044
1045 (define_insn_reservation "cfv3_alu_1i_2" 2
1046   (and (and (and (eq_attr "cpu" "cfv3")
1047                  (eq_attr "type" "
1048 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
1049 clr,clr_l,mov3q_l,move,moveq_l,tst"))
1050             (eq_attr "op_mem" "1i"))
1051        (eq_attr "size" "1,2"))
1052   "cf_ib2+cfv3_alu_1i")
1053
1054 (define_insn_reservation "cfv3_alu_1i_3" 2
1055   (and (and (and (eq_attr "cpu" "cfv3")
1056                  (eq_attr "type" "
1057 alu_l,aluq_l,bitr,bitrw,cmp,cmp_l,alux_l,ext,neg_l,scc,shift,
1058 clr,clr_l,mov3q_l,move,moveq_l,tst"))
1059             (eq_attr "op_mem" "1i"))
1060        (eq_attr "size" "3"))
1061   "cf_ib3+cfv3_alu_1i")
1062
1063 (define_insn_reservation "cfv3_omove_1i_2" 2
1064   (and (and (and (eq_attr "cpu" "cfv3")
1065                  (eq_attr "type" "
1066 move_l,tst_l"))
1067             (eq_attr "op_mem" "1i"))
1068        (eq_attr "size" "1,2"))
1069   "cf_ib2+cfv3_omove_1i")
1070
1071 (define_insn_reservation "cfv3_omove_1i_3" 2
1072   (and (and (and (eq_attr "cpu" "cfv3")
1073                  (eq_attr "type" "
1074 move_l,tst_l"))
1075             (eq_attr "op_mem" "1i"))
1076        (eq_attr "size" "3"))
1077   "cf_ib3+cfv3_omove_1i")
1078
1079 (define_insn_reservation "cfv123_lea_10_1" 1
1080   (and (and (and (eq_attr "cpu" "cfv1,cfv2,cfv3")
1081                  (eq_attr "type" "lea"))
1082             (eq_attr "op_mem" "10,11,1i"))
1083        (eq_attr "size" "1"))
1084   "cf_ib1+cfv123_lea_10")
1085
1086 (define_insn_reservation "cfv123_lea_10_2" 1
1087   (and (and (and (eq_attr "cpu" "cfv1,cfv2,cfv3")
1088                  (eq_attr "type" "lea"))
1089             (eq_attr "op_mem" "10,11,1i"))
1090        (eq_attr "size" "2"))
1091   "cf_ib2+cfv123_lea_10")
1092
1093 (define_insn_reservation "cfv123_lea_10_3" 1
1094   (and (and (and (eq_attr "cpu" "cfv1,cfv2,cfv3")
1095                  (eq_attr "type" "lea"))
1096             (eq_attr "op_mem" "10,11,1i"))
1097        (eq_attr "size" "3"))
1098   "cf_ib3+cfv123_lea_10")
1099
1100 (define_insn_reservation "cfv123_lea_i0_2" 2
1101   (and (and (and (eq_attr "cpu" "cfv1,cfv2,cfv3")
1102                  (eq_attr "type" "lea"))
1103             (eq_attr "op_mem" "i0,i1"))
1104        (eq_attr "size" "1,2"))
1105   "cf_ib2+cfv123_lea_i0")
1106
1107 (define_insn_reservation "cfv123_lea_i0_3" 2
1108   (and (and (and (eq_attr "cpu" "cfv1,cfv2,cfv3")
1109                  (eq_attr "type" "lea"))
1110             (eq_attr "op_mem" "i0,i1"))
1111        (eq_attr "size" "3"))
1112   "cf_ib3+cfv123_lea_i0")
1113
1114 (define_insn_reservation "cfv12_pea_11_1" 1
1115   (and (and (and (eq_attr "cpu" "cfv1,cfv2")
1116                  (eq_attr "type" "pea"))
1117             (eq_attr "op_mem" "11"))
1118        (eq_attr "size" "1"))
1119   "cf_ib1+cfv12_pea_11")
1120
1121 (define_insn_reservation "cfv12_pea_11_2" 1
1122   (and (and (and (eq_attr "cpu" "cfv1,cfv2")
1123                  (eq_attr "type" "pea"))
1124             (eq_attr "op_mem" "11"))
1125        (eq_attr "size" "2"))
1126   "cf_ib2+cfv12_pea_11")
1127
1128 (define_insn_reservation "cfv12_pea_11_3" 1
1129   (and (and (and (eq_attr "cpu" "cfv1,cfv2")
1130                  (eq_attr "type" "pea"))
1131             (eq_attr "op_mem" "11"))
1132        (eq_attr "size" "3"))
1133   "cf_ib3+cfv12_pea_11")
1134
1135 (define_insn_reservation "cfv3_pea_11_1" 1
1136   (and (and (and (eq_attr "cpu" "cfv3")
1137                  (eq_attr "type" "pea"))
1138             (eq_attr "op_mem" "11"))
1139        (eq_attr "size" "1"))
1140   "cf_ib1+cfv3_pea_11")
1141
1142 (define_insn_reservation "cfv3_pea_11_2" 1
1143   (and (and (and (eq_attr "cpu" "cfv3")
1144                  (eq_attr "type" "pea"))
1145             (eq_attr "op_mem" "11"))
1146        (eq_attr "size" "2"))
1147   "cf_ib2+cfv3_pea_11")
1148
1149 (define_insn_reservation "cfv3_pea_11_3" 1
1150   (and (and (and (eq_attr "cpu" "cfv3")
1151                  (eq_attr "type" "pea"))
1152             (eq_attr "op_mem" "11"))
1153        (eq_attr "size" "3"))
1154   "cf_ib3+cfv3_pea_11")
1155
1156 (define_insn_reservation "cfv12_pea_i1_2" 2
1157   (and (and (and (eq_attr "cpu" "cfv1,cfv2")
1158                  (eq_attr "type" "pea"))
1159             (eq_attr "op_mem" "i1"))
1160        (eq_attr "size" "1,2"))
1161   "cf_ib2+cfv12_pea_i1")
1162
1163 (define_insn_reservation "cfv12_pea_i1_3" 2
1164   (and (and (and (eq_attr "cpu" "cfv1,cfv2")
1165                  (eq_attr "type" "pea"))
1166             (eq_attr "op_mem" "i1"))
1167        (eq_attr "size" "3"))
1168   "cf_ib3+cfv12_pea_i1")
1169
1170 (define_insn_reservation "cfv3_pea_i1_2" 2
1171   (and (and (and (eq_attr "cpu" "cfv3")
1172                  (eq_attr "type" "pea"))
1173             (eq_attr "op_mem" "i1"))
1174        (eq_attr "size" "1,2"))
1175   "cf_ib2+cfv3_pea_i1")
1176
1177 (define_insn_reservation "cfv3_pea_i1_3" 2
1178   (and (and (and (eq_attr "cpu" "cfv3")
1179                  (eq_attr "type" "pea"))
1180             (eq_attr "op_mem" "i1"))
1181        (eq_attr "size" "3"))
1182   "cf_ib3+cfv3_pea_i1")
1183
1184 (define_insn_reservation "cfv123_mul_l_00_1" 18
1185   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2,cfv3")
1186                       (eq_attr "mac" "no"))
1187                  (eq_attr "type" "mul_l"))
1188             (eq_attr "op_mem" "00,01,0i"))
1189        (eq_attr "size" "1"))
1190   "cf_ib1+cfv123_mul_l_00")
1191
1192 (define_insn_reservation "cfv123_mul_l_00_2" 18
1193   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2,cfv3")
1194                       (eq_attr "mac" "no"))
1195                  (eq_attr "type" "mul_l"))
1196             (eq_attr "op_mem" "00,01,0i"))
1197        (eq_attr "size" "2"))
1198   "cf_ib2+cfv123_mul_l_00")
1199
1200 (define_insn_reservation "cfv123_mul_l_00_3" 18
1201   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2,cfv3")
1202                       (eq_attr "mac" "no"))
1203                  (eq_attr "type" "mul_l"))
1204             (eq_attr "op_mem" "00,01,0i"))
1205        (eq_attr "size" "3"))
1206   "cf_ib3+cfv123_mul_l_00")
1207
1208 (define_insn_reservation "cfv123_mul_w_00_1" 9
1209   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2,cfv3")
1210                       (eq_attr "mac" "no"))
1211                  (eq_attr "type" "mul_w"))
1212             (eq_attr "op_mem" "00,01,0i"))
1213        (eq_attr "size" "1"))
1214   "cf_ib1+cfv123_mul_w_00")
1215
1216 (define_insn_reservation "cfv123_mul_w_00_2" 9
1217   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2,cfv3")
1218                       (eq_attr "mac" "no"))
1219                  (eq_attr "type" "mul_w"))
1220             (eq_attr "op_mem" "00,01,0i"))
1221        (eq_attr "size" "2"))
1222   "cf_ib2+cfv123_mul_w_00")
1223
1224 (define_insn_reservation "cfv123_mul_w_00_3" 9
1225   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2,cfv3")
1226                       (eq_attr "mac" "no"))
1227                  (eq_attr "type" "mul_w"))
1228             (eq_attr "op_mem" "00,01,0i"))
1229        (eq_attr "size" "3"))
1230   "cf_ib3+cfv123_mul_w_00")
1231
1232 (define_insn_reservation "cfv12_mul_l_10_1" 20
1233   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2")
1234                       (eq_attr "mac" "no"))
1235                  (eq_attr "type" "mul_l"))
1236             (eq_attr "op_mem" "10,i0,i1,11,1i"))
1237        (eq_attr "size" "1"))
1238   "cf_ib1+cfv12_mul_l_10")
1239
1240 (define_insn_reservation "cfv12_mul_l_10_2" 20
1241   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2")
1242                       (eq_attr "mac" "no"))
1243                  (eq_attr "type" "mul_l"))
1244             (eq_attr "op_mem" "10,i0,i1,11,1i"))
1245        (eq_attr "size" "2"))
1246   "cf_ib2+cfv12_mul_l_10")
1247
1248 (define_insn_reservation "cfv12_mul_l_10_3" 20
1249   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2")
1250                       (eq_attr "mac" "no"))
1251                  (eq_attr "type" "mul_l"))
1252             (eq_attr "op_mem" "10,i0,i1,11,1i"))
1253        (eq_attr "size" "3"))
1254   "cf_ib3+cfv12_mul_l_10")
1255
1256 (define_insn_reservation "cfv3_mul_l_10_1" 21
1257   (and (and (and (and (eq_attr "cpu" "cfv3")
1258                       (eq_attr "mac" "no"))
1259                  (eq_attr "type" "mul_l"))
1260             (eq_attr "op_mem" "10,i0,i1,11,1i"))
1261        (eq_attr "size" "1"))
1262   "cf_ib1+cfv3_mul_l_10")
1263
1264 (define_insn_reservation "cfv3_mul_l_10_2" 21
1265   (and (and (and (and (eq_attr "cpu" "cfv3")
1266                       (eq_attr "mac" "no"))
1267                  (eq_attr "type" "mul_l"))
1268             (eq_attr "op_mem" "10,i0,i1,11,1i"))
1269        (eq_attr "size" "2"))
1270   "cf_ib2+cfv3_mul_l_10")
1271
1272 (define_insn_reservation "cfv3_mul_l_10_3" 21
1273   (and (and (and (and (eq_attr "cpu" "cfv3")
1274                       (eq_attr "mac" "no"))
1275                  (eq_attr "type" "mul_l"))
1276             (eq_attr "op_mem" "10,i0,i1,11,1i"))
1277        (eq_attr "size" "3"))
1278   "cf_ib3+cfv3_mul_l_10")
1279
1280 (define_insn_reservation "cfv12_mul_w_10_1" 11
1281   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2")
1282                       (eq_attr "mac" "no"))
1283                  (eq_attr "type" "mul_w"))
1284             (eq_attr "op_mem" "10,11,1i"))
1285        (eq_attr "size" "1"))
1286   "cf_ib1+cfv12_mul_w_10")
1287
1288 (define_insn_reservation "cfv12_mul_w_10_2" 11
1289   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2")
1290                       (eq_attr "mac" "no"))
1291                  (eq_attr "type" "mul_w"))
1292             (eq_attr "op_mem" "10,11,1i"))
1293        (eq_attr "size" "2"))
1294   "cf_ib2+cfv12_mul_w_10")
1295
1296 (define_insn_reservation "cfv12_mul_w_10_3" 11
1297   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2")
1298                       (eq_attr "mac" "no"))
1299                  (eq_attr "type" "mul_w"))
1300             (eq_attr "op_mem" "10,11,1i"))
1301        (eq_attr "size" "3"))
1302   "cf_ib3+cfv12_mul_w_10")
1303
1304 (define_insn_reservation "cfv3_mul_w_10_1" 12
1305   (and (and (and (and (eq_attr "cpu" "cfv3")
1306                       (eq_attr "mac" "no"))
1307                  (eq_attr "type" "mul_w"))
1308             (eq_attr "op_mem" "10,11,1i"))
1309        (eq_attr "size" "1"))
1310   "cf_ib1+cfv3_mul_w_10")
1311
1312 (define_insn_reservation "cfv3_mul_w_10_2" 12
1313   (and (and (and (and (eq_attr "cpu" "cfv3")
1314                       (eq_attr "mac" "no"))
1315                  (eq_attr "type" "mul_w"))
1316             (eq_attr "op_mem" "10,11,1i"))
1317        (eq_attr "size" "2"))
1318   "cf_ib2+cfv3_mul_w_10")
1319
1320 (define_insn_reservation "cfv3_mul_w_10_3" 12
1321   (and (and (and (and (eq_attr "cpu" "cfv3")
1322                       (eq_attr "mac" "no"))
1323                  (eq_attr "type" "mul_w"))
1324             (eq_attr "op_mem" "10,11,1i"))
1325        (eq_attr "size" "3"))
1326   "cf_ib3+cfv3_mul_w_10")
1327
1328 (define_insn_reservation "cfv12_mul_w_i0_2" 12
1329   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2")
1330                       (eq_attr "mac" "no"))
1331                  (eq_attr "type" "mul_w"))
1332             (eq_attr "op_mem" "i0,i1"))
1333        (eq_attr "size" "1,2"))
1334   "cf_ib2+cfv12_mul_w_i0")
1335
1336 (define_insn_reservation "cfv12_mul_w_i0_3" 12
1337   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2")
1338                       (eq_attr "mac" "no"))
1339                  (eq_attr "type" "mul_w"))
1340             (eq_attr "op_mem" "i0,i1"))
1341        (eq_attr "size" "3"))
1342   "cf_ib3+cfv12_mul_w_i0")
1343
1344 (define_insn_reservation "cfv3_mul_w_i0_2" 13
1345   (and (and (and (and (eq_attr "cpu" "cfv3")
1346                       (eq_attr "mac" "no"))
1347                  (eq_attr "type" "mul_w"))
1348             (eq_attr "op_mem" "i0,i1"))
1349        (eq_attr "size" "1,2"))
1350   "cf_ib2+cfv3_mul_w_i0")
1351
1352 (define_insn_reservation "cfv3_mul_w_i0_3" 13
1353   (and (and (and (and (eq_attr "cpu" "cfv3")
1354                       (eq_attr "mac" "no"))
1355                  (eq_attr "type" "mul_w"))
1356             (eq_attr "op_mem" "i0,i1"))
1357        (eq_attr "size" "3"))
1358   "cf_ib3+cfv3_mul_w_i0")
1359
1360 (define_insn_reservation "cfv123_mac_l_00_1" 5
1361   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2,cfv3")
1362                       (eq_attr "mac" "cf_mac"))
1363                  (eq_attr "type" "mul_l"))
1364             (eq_attr "op_mem" "00,01,0i"))
1365        (eq_attr "size" "1"))
1366   "cf_ib1+cfv123_mac_l_00")
1367
1368 (define_insn_reservation "cfv123_mac_l_00_2" 5
1369   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2,cfv3")
1370                       (eq_attr "mac" "cf_mac"))
1371                  (eq_attr "type" "mul_l"))
1372             (eq_attr "op_mem" "00,01,0i"))
1373        (eq_attr "size" "2"))
1374   "cf_ib2+cfv123_mac_l_00")
1375
1376 (define_insn_reservation "cfv123_mac_l_00_3" 5
1377   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2,cfv3")
1378                       (eq_attr "mac" "cf_mac"))
1379                  (eq_attr "type" "mul_l"))
1380             (eq_attr "op_mem" "00,01,0i"))
1381        (eq_attr "size" "3"))
1382   "cf_ib3+cfv123_mac_l_00")
1383
1384 (define_insn_reservation "cfv123_mac_w_00_1" 3
1385   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2,cfv3")
1386                       (eq_attr "mac" "cf_mac"))
1387                  (eq_attr "type" "mul_w"))
1388             (eq_attr "op_mem" "00,01,0i"))
1389        (eq_attr "size" "1"))
1390   "cf_ib1+cfv123_mac_w_00")
1391
1392 (define_insn_reservation "cfv123_mac_w_00_2" 3
1393   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2,cfv3")
1394                       (eq_attr "mac" "cf_mac"))
1395                  (eq_attr "type" "mul_w"))
1396             (eq_attr "op_mem" "00,01,0i"))
1397        (eq_attr "size" "2"))
1398   "cf_ib2+cfv123_mac_w_00")
1399
1400 (define_insn_reservation "cfv123_mac_w_00_3" 3
1401   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2,cfv3")
1402                       (eq_attr "mac" "cf_mac"))
1403                  (eq_attr "type" "mul_w"))
1404             (eq_attr "op_mem" "00,01,0i"))
1405        (eq_attr "size" "3"))
1406   "cf_ib3+cfv123_mac_w_00")
1407
1408 (define_insn_reservation "cfv12_mac_l_10_1" 7
1409   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2")
1410                       (eq_attr "mac" "cf_mac"))
1411                  (eq_attr "type" "mul_l"))
1412             (eq_attr "op_mem" "10,i0,i1,11,1i"))
1413        (eq_attr "size" "1"))
1414   "cf_ib1+cfv12_mac_l_10")
1415
1416 (define_insn_reservation "cfv12_mac_l_10_2" 7
1417   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2")
1418                       (eq_attr "mac" "cf_mac"))
1419                  (eq_attr "type" "mul_l"))
1420             (eq_attr "op_mem" "10,i0,i1,11,1i"))
1421        (eq_attr "size" "2"))
1422   "cf_ib2+cfv12_mac_l_10")
1423
1424 (define_insn_reservation "cfv12_mac_l_10_3" 7
1425   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2")
1426                       (eq_attr "mac" "cf_mac"))
1427                  (eq_attr "type" "mul_l"))
1428             (eq_attr "op_mem" "10,i0,i1,11,1i"))
1429        (eq_attr "size" "3"))
1430   "cf_ib3+cfv12_mac_l_10")
1431
1432 (define_insn_reservation "cfv3_mac_l_10_1" 8
1433   (and (and (and (and (eq_attr "cpu" "cfv3")
1434                       (eq_attr "mac" "cf_mac"))
1435                  (eq_attr "type" "mul_l"))
1436             (eq_attr "op_mem" "10,i0,i1,11,1i"))
1437        (eq_attr "size" "1"))
1438   "cf_ib1+cfv3_mac_l_10")
1439
1440 (define_insn_reservation "cfv3_mac_l_10_2" 8
1441   (and (and (and (and (eq_attr "cpu" "cfv3")
1442                       (eq_attr "mac" "cf_mac"))
1443                  (eq_attr "type" "mul_l"))
1444             (eq_attr "op_mem" "10,i0,i1,11,1i"))
1445        (eq_attr "size" "2"))
1446   "cf_ib2+cfv3_mac_l_10")
1447
1448 (define_insn_reservation "cfv3_mac_l_10_3" 8
1449   (and (and (and (and (eq_attr "cpu" "cfv3")
1450                       (eq_attr "mac" "cf_mac"))
1451                  (eq_attr "type" "mul_l"))
1452             (eq_attr "op_mem" "10,i0,i1,11,1i"))
1453        (eq_attr "size" "3"))
1454   "cf_ib3+cfv3_mac_l_10")
1455
1456 (define_insn_reservation "cfv12_mac_w_10_1" 5
1457   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2")
1458                       (eq_attr "mac" "cf_mac"))
1459                  (eq_attr "type" "mul_w"))
1460             (eq_attr "op_mem" "10,11,1i"))
1461        (eq_attr "size" "1"))
1462   "cf_ib1+cfv12_mac_w_10")
1463
1464 (define_insn_reservation "cfv12_mac_w_10_2" 5
1465   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2")
1466                       (eq_attr "mac" "cf_mac"))
1467                  (eq_attr "type" "mul_w"))
1468             (eq_attr "op_mem" "10,11,1i"))
1469        (eq_attr "size" "2"))
1470   "cf_ib2+cfv12_mac_w_10")
1471
1472 (define_insn_reservation "cfv12_mac_w_10_3" 5
1473   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2")
1474                       (eq_attr "mac" "cf_mac"))
1475                  (eq_attr "type" "mul_w"))
1476             (eq_attr "op_mem" "10,11,1i"))
1477        (eq_attr "size" "3"))
1478   "cf_ib3+cfv12_mac_w_10")
1479
1480 (define_insn_reservation "cfv3_mac_w_10_1" 6
1481   (and (and (and (and (eq_attr "cpu" "cfv3")
1482                       (eq_attr "mac" "cf_mac"))
1483                  (eq_attr "type" "mul_w"))
1484             (eq_attr "op_mem" "10,11,1i"))
1485        (eq_attr "size" "1"))
1486   "cf_ib1+cfv3_mac_w_10")
1487
1488 (define_insn_reservation "cfv3_mac_w_10_2" 6
1489   (and (and (and (and (eq_attr "cpu" "cfv3")
1490                       (eq_attr "mac" "cf_mac"))
1491                  (eq_attr "type" "mul_w"))
1492             (eq_attr "op_mem" "10,11,1i"))
1493        (eq_attr "size" "2"))
1494   "cf_ib2+cfv3_mac_w_10")
1495
1496 (define_insn_reservation "cfv3_mac_w_10_3" 6
1497   (and (and (and (and (eq_attr "cpu" "cfv3")
1498                       (eq_attr "mac" "cf_mac"))
1499                  (eq_attr "type" "mul_w"))
1500             (eq_attr "op_mem" "10,11,1i"))
1501        (eq_attr "size" "3"))
1502   "cf_ib3+cfv3_mac_w_10")
1503
1504 (define_insn_reservation "cfv12_mac_w_i0_2" 6
1505   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2")
1506                       (eq_attr "mac" "cf_mac"))
1507                  (eq_attr "type" "mul_w"))
1508             (eq_attr "op_mem" "i0,i1"))
1509        (eq_attr "size" "1,2"))
1510   "cf_ib2+cfv12_mac_w_i0")
1511
1512 (define_insn_reservation "cfv12_mac_w_i0_3" 6
1513   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2")
1514                       (eq_attr "mac" "cf_mac"))
1515                  (eq_attr "type" "mul_w"))
1516             (eq_attr "op_mem" "i0,i1"))
1517        (eq_attr "size" "3"))
1518   "cf_ib3+cfv12_mac_w_i0")
1519
1520 (define_insn_reservation "cfv3_mac_w_i0_2" 7
1521   (and (and (and (and (eq_attr "cpu" "cfv3")
1522                       (eq_attr "mac" "cf_mac"))
1523                  (eq_attr "type" "mul_w"))
1524             (eq_attr "op_mem" "i0,i1"))
1525        (eq_attr "size" "1,2"))
1526   "cf_ib2+cfv3_mac_w_i0")
1527
1528 (define_insn_reservation "cfv3_mac_w_i0_3" 7
1529   (and (and (and (and (eq_attr "cpu" "cfv3")
1530                       (eq_attr "mac" "cf_mac"))
1531                  (eq_attr "type" "mul_w"))
1532             (eq_attr "op_mem" "i0,i1"))
1533        (eq_attr "size" "3"))
1534   "cf_ib3+cfv3_mac_w_i0")
1535
1536 (define_insn_reservation "cfv123_emac_00_1" 4
1537   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2,cfv3")
1538                       (eq_attr "mac" "cf_emac"))
1539                  (eq_attr "type" "mul_l,mul_w"))
1540             (eq_attr "op_mem" "00,01,0i"))
1541        (eq_attr "size" "1"))
1542   "cf_ib1+cfv123_emac_00")
1543
1544 (define_insn_reservation "cfv123_emac_00_2" 4
1545   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2,cfv3")
1546                       (eq_attr "mac" "cf_emac"))
1547                  (eq_attr "type" "mul_l,mul_w"))
1548             (eq_attr "op_mem" "00,01,0i"))
1549        (eq_attr "size" "2"))
1550   "cf_ib2+cfv123_emac_00")
1551
1552 (define_insn_reservation "cfv123_emac_00_3" 4
1553   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2,cfv3")
1554                       (eq_attr "mac" "cf_emac"))
1555                  (eq_attr "type" "mul_l,mul_w"))
1556             (eq_attr "op_mem" "00,01,0i"))
1557        (eq_attr "size" "3"))
1558   "cf_ib3+cfv123_emac_00")
1559
1560 (define_insn_reservation "cfv12_emac_l_10_1" 6
1561   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2")
1562                       (eq_attr "mac" "cf_emac"))
1563                  (eq_attr "type" "mul_l"))
1564             (eq_attr "op_mem" "10,i0,i1,11,1i"))
1565        (eq_attr "size" "1"))
1566   "cf_ib1+cfv12_emac_10")
1567
1568 (define_insn_reservation "cfv12_emac_l_10_2" 6
1569   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2")
1570                       (eq_attr "mac" "cf_emac"))
1571                  (eq_attr "type" "mul_l"))
1572             (eq_attr "op_mem" "10,i0,i1,11,1i"))
1573        (eq_attr "size" "2"))
1574   "cf_ib2+cfv12_emac_10")
1575
1576 (define_insn_reservation "cfv12_emac_l_10_3" 6
1577   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2")
1578                       (eq_attr "mac" "cf_emac"))
1579                  (eq_attr "type" "mul_l"))
1580             (eq_attr "op_mem" "10,i0,i1,11,1i"))
1581        (eq_attr "size" "3"))
1582   "cf_ib3+cfv12_emac_10")
1583
1584 (define_insn_reservation "cfv3_emac_l_10_1" 7
1585   (and (and (and (and (eq_attr "cpu" "cfv3")
1586                       (eq_attr "mac" "cf_emac"))
1587                  (eq_attr "type" "mul_l"))
1588             (eq_attr "op_mem" "10,i0,i1,11,1i"))
1589        (eq_attr "size" "1"))
1590   "cf_ib1+cfv3_emac_10")
1591
1592 (define_insn_reservation "cfv3_emac_l_10_2" 7
1593   (and (and (and (and (eq_attr "cpu" "cfv3")
1594                       (eq_attr "mac" "cf_emac"))
1595                  (eq_attr "type" "mul_l"))
1596             (eq_attr "op_mem" "10,i0,i1,11,1i"))
1597        (eq_attr "size" "2"))
1598   "cf_ib2+cfv3_emac_10")
1599
1600 (define_insn_reservation "cfv3_emac_l_10_3" 7
1601   (and (and (and (and (eq_attr "cpu" "cfv3")
1602                       (eq_attr "mac" "cf_emac"))
1603                  (eq_attr "type" "mul_l"))
1604             (eq_attr "op_mem" "10,i0,i1,11,1i"))
1605        (eq_attr "size" "3"))
1606   "cf_ib3+cfv3_emac_10")
1607
1608 (define_insn_reservation "cfv12_emac_w_10_1" 6
1609   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2")
1610                       (eq_attr "mac" "cf_emac"))
1611                  (eq_attr "type" "mul_w"))
1612             (eq_attr "op_mem" "10,11,1i"))
1613        (eq_attr "size" "1"))
1614   "cf_ib1+cfv12_emac_10")
1615
1616 (define_insn_reservation "cfv12_emac_w_10_2" 6
1617   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2")
1618                       (eq_attr "mac" "cf_emac"))
1619                  (eq_attr "type" "mul_w"))
1620             (eq_attr "op_mem" "10,11,1i"))
1621        (eq_attr "size" "2"))
1622   "cf_ib2+cfv12_emac_10")
1623
1624 (define_insn_reservation "cfv12_emac_w_10_3" 6
1625   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2")
1626                       (eq_attr "mac" "cf_emac"))
1627                  (eq_attr "type" "mul_w"))
1628             (eq_attr "op_mem" "10,11,1i"))
1629        (eq_attr "size" "3"))
1630   "cf_ib3+cfv12_emac_10")
1631
1632 (define_insn_reservation "cfv3_emac_w_10_1" 7
1633   (and (and (and (and (eq_attr "cpu" "cfv3")
1634                       (eq_attr "mac" "cf_emac"))
1635                  (eq_attr "type" "mul_w"))
1636             (eq_attr "op_mem" "10,11,1i"))
1637        (eq_attr "size" "1"))
1638   "cf_ib1+cfv3_emac_10")
1639
1640 (define_insn_reservation "cfv3_emac_w_10_2" 7
1641   (and (and (and (and (eq_attr "cpu" "cfv3")
1642                       (eq_attr "mac" "cf_emac"))
1643                  (eq_attr "type" "mul_w"))
1644             (eq_attr "op_mem" "10,11,1i"))
1645        (eq_attr "size" "2"))
1646   "cf_ib2+cfv3_emac_10")
1647
1648 (define_insn_reservation "cfv3_emac_w_10_3" 7
1649   (and (and (and (and (eq_attr "cpu" "cfv3")
1650                       (eq_attr "mac" "cf_emac"))
1651                  (eq_attr "type" "mul_w"))
1652             (eq_attr "op_mem" "10,11,1i"))
1653        (eq_attr "size" "3"))
1654   "cf_ib3+cfv3_emac_10")
1655
1656 (define_insn_reservation "cfv12_emac_w_i0_2" 7
1657   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2")
1658                       (eq_attr "mac" "cf_emac"))
1659                  (eq_attr "type" "mul_w"))
1660             (eq_attr "op_mem" "i0,i1"))
1661        (eq_attr "size" "1,2"))
1662   "cf_ib2+cfv12_emac_w_i0")
1663
1664 (define_insn_reservation "cfv12_emac_w_i0_3" 7
1665   (and (and (and (and (eq_attr "cpu" "cfv1,cfv2")
1666                       (eq_attr "mac" "cf_emac"))
1667                  (eq_attr "type" "mul_w"))
1668             (eq_attr "op_mem" "i0,i1"))
1669        (eq_attr "size" "3"))
1670   "cf_ib3+cfv12_emac_w_i0")
1671
1672 (define_insn_reservation "cfv3_emac_w_i0_2" 8
1673   (and (and (and (and (eq_attr "cpu" "cfv3")
1674                       (eq_attr "mac" "cf_emac"))
1675                  (eq_attr "type" "mul_w"))
1676             (eq_attr "op_mem" "i0,i1"))
1677        (eq_attr "size" "1,2"))
1678   "cf_ib2+cfv3_emac_w_i0")
1679
1680 (define_insn_reservation "cfv3_emac_w_i0_3" 8
1681   (and (and (and (and (eq_attr "cpu" "cfv3")
1682                       (eq_attr "mac" "cf_emac"))
1683                  (eq_attr "type" "mul_w"))
1684             (eq_attr "op_mem" "i0,i1"))
1685        (eq_attr "size" "3"))
1686   "cf_ib3+cfv3_emac_w_i0")
1687
1688 (define_insn_reservation "cfv12_rts" 5
1689   (and (eq_attr "cpu" "cfv1,cfv2")
1690        (eq_attr "type" "rts"))
1691   "cf_ib1+cfv12_rts")
1692
1693 (define_insn_reservation "cfv3_rts" 8
1694   (and (eq_attr "cpu" "cfv3")
1695        (eq_attr "type" "rts"))
1696   "cf_ib1+cfv3_rts")
1697
1698 (define_insn_reservation "cfv12_call_1" 3
1699   (and (and (eq_attr "cpu" "cfv1,cfv2")
1700             (eq_attr "type" "bsr,jsr"))
1701        (eq_attr "size" "1"))
1702   "cf_ib1+cfv12_call")
1703
1704 (define_insn_reservation "cfv12_call_2" 3
1705   (and (and (eq_attr "cpu" "cfv1,cfv2")
1706             (eq_attr "type" "bsr,jsr"))
1707        (eq_attr "size" "2"))
1708   "cf_ib2+cfv12_call")
1709
1710 (define_insn_reservation "cfv12_call_3" 3
1711   (and (and (eq_attr "cpu" "cfv1,cfv2")
1712             (eq_attr "type" "bsr,jsr"))
1713        (eq_attr "size" "3"))
1714   "cf_ib3+cfv12_call")
1715
1716 (define_insn_reservation "cfv3_call_1" 1
1717   (and (and (eq_attr "cpu" "cfv3")
1718             (eq_attr "type" "bsr,jsr"))
1719        (eq_attr "size" "1"))
1720   "cf_ib1+cfv3_call")
1721
1722 (define_insn_reservation "cfv3_call_2" 1
1723   (and (and (eq_attr "cpu" "cfv3")
1724             (eq_attr "type" "bsr,jsr"))
1725        (eq_attr "size" "2"))
1726   "cf_ib2+cfv3_call")
1727
1728 (define_insn_reservation "cfv3_call_3" 1
1729   (and (and (eq_attr "cpu" "cfv3")
1730             (eq_attr "type" "bsr,jsr"))
1731        (eq_attr "size" "3"))
1732   "cf_ib3+cfv3_call")
1733
1734 (define_insn_reservation "cfv12_bcc_1" 2
1735   (and (and (eq_attr "cpu" "cfv1,cfv2")
1736             (eq_attr "type" "bcc"))
1737        (eq_attr "size" "1"))
1738   "cf_ib1+cfv12_bcc")
1739
1740 (define_insn_reservation "cfv12_bcc_2" 2
1741   (and (and (eq_attr "cpu" "cfv1,cfv2")
1742             (eq_attr "type" "bcc"))
1743        (eq_attr "size" "2"))
1744   "cf_ib2+cfv12_bcc")
1745
1746 (define_insn_reservation "cfv12_bcc_3" 2
1747   (and (and (eq_attr "cpu" "cfv1,cfv2")
1748             (eq_attr "type" "bcc"))
1749        (eq_attr "size" "3"))
1750   "cf_ib3+cfv12_bcc")
1751
1752 (define_insn_reservation "cfv3_bcc_1" 1
1753   (and (and (eq_attr "cpu" "cfv3")
1754             (eq_attr "type" "bcc"))
1755        (eq_attr "size" "1"))
1756   "cf_ib1+cfv3_bcc")
1757
1758 (define_insn_reservation "cfv3_bcc_2" 1
1759   (and (and (eq_attr "cpu" "cfv3")
1760             (eq_attr "type" "bcc"))
1761        (eq_attr "size" "2"))
1762   "cf_ib2+cfv3_bcc")
1763
1764 (define_insn_reservation "cfv3_bcc_3" 1
1765   (and (and (eq_attr "cpu" "cfv3")
1766             (eq_attr "type" "bcc"))
1767        (eq_attr "size" "3"))
1768   "cf_ib3+cfv3_bcc")
1769
1770 (define_insn_reservation "cfv12_bra_1" 2
1771   (and (and (eq_attr "cpu" "cfv1,cfv2")
1772             (eq_attr "type" "bra"))
1773        (eq_attr "size" "1"))
1774   "cf_ib1+cfv12_bra")
1775
1776 (define_insn_reservation "cfv12_bra_2" 2
1777   (and (and (eq_attr "cpu" "cfv1,cfv2")
1778             (eq_attr "type" "bra"))
1779        (eq_attr "size" "2"))
1780   "cf_ib2+cfv12_bra")
1781
1782 (define_insn_reservation "cfv12_bra_3" 2
1783   (and (and (eq_attr "cpu" "cfv1,cfv2")
1784             (eq_attr "type" "bra"))
1785        (eq_attr "size" "3"))
1786   "cf_ib3+cfv12_bra")
1787
1788 (define_insn_reservation "cfv3_bra_1" 1
1789   (and (and (eq_attr "cpu" "cfv3")
1790             (eq_attr "type" "bra"))
1791        (eq_attr "size" "1"))
1792   "cf_ib1+cfv3_bra")
1793
1794 (define_insn_reservation "cfv3_bra_2" 1
1795   (and (and (eq_attr "cpu" "cfv3")
1796             (eq_attr "type" "bra"))
1797        (eq_attr "size" "2"))
1798   "cf_ib2+cfv3_bra")
1799
1800 (define_insn_reservation "cfv3_bra_3" 1
1801   (and (and (eq_attr "cpu" "cfv3")
1802             (eq_attr "type" "bra"))
1803        (eq_attr "size" "3"))
1804   "cf_ib3+cfv3_bra")
1805
1806 (define_insn_reservation "cfv12_jmp_1" 3
1807   (and (and (eq_attr "cpu" "cfv1,cfv2")
1808             (eq_attr "type" "jmp"))
1809        (eq_attr "size" "1"))
1810   "cf_ib1+cfv12_jmp")
1811
1812 (define_insn_reservation "cfv12_jmp_2" 3
1813   (and (and (eq_attr "cpu" "cfv1,cfv2")
1814             (eq_attr "type" "jmp"))
1815        (eq_attr "size" "2"))
1816   "cf_ib2+cfv12_jmp")
1817
1818 (define_insn_reservation "cfv12_jmp_3" 3
1819   (and (and (eq_attr "cpu" "cfv1,cfv2")
1820             (eq_attr "type" "jmp"))
1821        (eq_attr "size" "3"))
1822   "cf_ib3+cfv12_jmp")
1823
1824 (define_insn_reservation "cfv3_jmp_1" 5
1825   (and (and (eq_attr "cpu" "cfv3")
1826             (eq_attr "type" "jmp"))
1827        (eq_attr "size" "1"))
1828   "cf_ib1+cfv3_jmp")
1829
1830 (define_insn_reservation "cfv3_jmp_2" 5
1831   (and (and (eq_attr "cpu" "cfv3")
1832             (eq_attr "type" "jmp"))
1833        (eq_attr "size" "2"))
1834   "cf_ib2+cfv3_jmp")
1835
1836 (define_insn_reservation "cfv3_jmp_3" 5
1837   (and (and (eq_attr "cpu" "cfv3")
1838             (eq_attr "type" "jmp"))
1839        (eq_attr "size" "3"))
1840   "cf_ib3+cfv3_jmp")
1841
1842 (define_insn_reservation "cfv12_unlk" 2
1843   (and (eq_attr "cpu" "cfv1,cfv2")
1844        (eq_attr "type" "unlk"))
1845   "cf_ib1+cfv12_alu_10")
1846
1847 (define_insn_reservation "cfv3_unlk" 3
1848   (and (eq_attr "cpu" "cfv3")
1849        (eq_attr "type" "unlk"))
1850   "cf_ib1+cfv3_alu_10")
1851
1852 ;; Dummy reservation for instructions that are not handled.
1853 (define_insn_reservation "cfv123_guess" 3
1854   (and (eq_attr "cpu" "cfv1,cfv2,cfv3")
1855        (eq_attr "type" "falu,fbcc,fcmp,fdiv,fmove,fmul,fneg,fsqrt,ftst,
1856                         div_w,div_l,link,mvsz,nop,trap,unknown"))
1857   "cf_ib3+cfv123_guess+cf_dsoc+cf_agex+cf_mem")
1858
1859 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1860 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1861 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1862
1863 ;; Below is pipeline description of ColdFire V4 core.
1864 ;; It is substantially different from the description of V1, V2 or V3 cores,
1865 ;; primarily due to no need to model the instruction buffer.
1866 ;;
1867 ;; V4 pipeline model uses a completely separate set of cpu units.
1868
1869 ;; Operand Execution Pipeline.
1870 (define_automaton "cfv4_oep")
1871
1872 (define_cpu_unit "cfv4_oag,cfv4_oc1,cfv4_oc2,cfv4_ex,cfv4_da"
1873   "cfv4_oep")
1874
1875 ;; V4 has 3 cases of dual-issue.
1876 ;; After issuing a cfv4_pOEPx instruction, it'll be possible to issue
1877 ;; a cfv4_sOEPx instruction on the same cycle (see final_presence_sets below).
1878 (define_cpu_unit "cfv4_pOEP1,cfv4_sOEP1,
1879                   cfv4_pOEP2,cfv4_sOEP2,
1880                   cfv4_pOEP3,cfv4_sOEP3" "cfv4_oep")
1881
1882 (final_presence_set "cfv4_sOEP1" "cfv4_pOEP1")
1883 (final_presence_set "cfv4_sOEP2" "cfv4_pOEP2")
1884 (final_presence_set "cfv4_sOEP3" "cfv4_pOEP3")
1885
1886 ;; Reservation for instructions that don't allow dual-issue.
1887 (define_reservation "cfv4_ds" "cfv4_pOEP1+cfv4_sOEP1+
1888                                cfv4_pOEP2+cfv4_sOEP2+
1889                                cfv4_pOEP3+cfv4_sOEP3")
1890
1891 ;; Memory access resource.
1892 (define_automaton "cfv4_mem")
1893
1894 (define_cpu_unit "cfv4_mem" "cfv4_mem")
1895
1896 ;; EMAC.
1897 (define_automaton "cfv4_emac")
1898
1899 (define_cpu_unit "cfv4_emac" "cfv4_emac")
1900
1901 ;; FPU.
1902 (define_automaton "cfv4_fp")
1903
1904 (define_cpu_unit "cfv4_fp" "cfv4_fp")
1905
1906 ;; Automaton for unknown instruction.
1907 (define_automaton "cfv4_guess")
1908
1909 (define_query_cpu_unit "cfv4_guess" "cfv4_guess")
1910
1911 ;; This bypass allows 1st case of dual-issue.
1912 (define_bypass 0 "cfv4_00_oag_pOEP1,cfv4_10_pOEP1,cfv4_i0_pOEP1"
1913   "cfv4_00_oag,cfv4_00_oag_pOEP3_sOEP12,cfv4_00_oag_pOEP1,
1914    cfv4_00_oag_moveql,cfv4_00_ex_sOEP13")
1915
1916 ;; The following bypasses decrease the latency of producers if it modifies
1917 ;; a target register in the EX stage and the consumer also uses
1918 ;; that register in the EX stage.
1919 (define_bypass 1 "cfv4_00_ex" "cfv4_00_ex,cfv4_00_ex_sOEP13")
1920 (define_bypass 1 "cfv4_00_ex" "cfv4_10,cfv4_10_pOEP1,cfv4_i0,cfv4_i0_pOEP1"
1921   "!m68k_sched_address_bypass_p")
1922
1923 ;; Indexed loads with scale factors 2 and 4 require an update of the index
1924 ;; register in the register file.  Considering that the index register is
1925 ;; only needed at the second cycle of address generation, we get
1926 ;; a latency of 4.
1927 ;; Producers for indexed loads with scale factor 1 should have
1928 ;; a latency of 3.  Since we're only allowed one bypass, we handle it
1929 ;; in the adjust_cost hook.
1930 (define_bypass 4
1931   "cfv4_00_oag,cfv4_00_oag_pOEP3_sOEP12,cfv4_00_oag_lea,cfv4_00_oag_pOEP1,
1932    cfv4_00_oag_moveql"
1933   "cfv4_i0,cfv4_i0_pOEP1"
1934   "m68k_sched_indexed_address_bypass_p")
1935
1936 ;; First part of cfv4_00.
1937 ;; If issued in pairs with cfv4_movel_?0, the cost should be increased.
1938 ;; ??? Is it possible that combined cfv4_movel_00 and cfv4_oag_00 instructions
1939 ;; have longer latency than the two instructions emitted sequentially?
1940 ;; Due to register renaming, the result of the sequence would be available
1941 ;; after 3 cycles, instead of 4 for combined instruction?
1942 (define_insn_reservation "cfv4_00_oag" 1
1943   (and (and (eq_attr "cpu" "cfv4")
1944             (eq_attr "type" "alu_l,aluq_l,clr_l,cmp_l,mov3q_l,neg_l"))
1945        (eq_attr "op_mem" "00"))
1946   "cfv4_sOEP1|cfv4_sOEP3|(cfv4_ds,cfv4_oag,cfv4_oc1,cfv4_oc2,cfv4_ex)")
1947
1948 (define_insn_reservation "cfv4_00_oag_pOEP3_sOEP12" 1
1949   (and (and (eq_attr "cpu" "cfv4")
1950             (eq_attr "type" "move_l,mov3q_l,clr_l"))
1951        (and (eq_attr "op_mem" "00")
1952             (and (eq_attr "opx_type" "Rn")
1953                  (eq_attr "opy_type" "none,imm_q,imm_w,imm_l"))))
1954   "cfv4_sOEP1|cfv4_sOEP2|(cfv4_pOEP3,cfv4_oag,cfv4_oc1,cfv4_oc2,cfv4_ex)")
1955
1956 (define_insn_reservation "cfv4_00_oag_lea" 1
1957   (and (eq_attr "cpu" "cfv4")
1958        (eq_attr "type" "lea"))
1959   "cfv4_pOEP3,cfv4_oag,cfv4_oc1,cfv4_oc2,cfv4_ex")
1960
1961 (define_insn_reservation "cfv4_00_oag_pOEP1" 1
1962   (and (and (eq_attr "cpu" "cfv4")
1963             (eq_attr "type" "move_l,mov3q_l,clr_l"))
1964        (and (eq_attr "op_mem" "00")
1965             (ior (eq_attr "opx_type" "!Rn")
1966                  (eq_attr "opy_type" "!none,imm_q,imm_w,imm_l"))))
1967   "cfv4_sOEP1|(cfv4_pOEP1,cfv4_oag,cfv4_oc1,cfv4_oc2,cfv4_ex)")
1968
1969 (define_insn_reservation "cfv4_00_oag_moveql" 1
1970   (and (and (eq_attr "cpu" "cfv4")
1971             (eq_attr "type" "moveq_l"))
1972        (eq_attr "op_mem" "00"))
1973   "cfv4_sOEP1|cfv4_sOEP2|cfv4_sOEP3|(cfv4_pOEP3,cfv4_oag,cfv4_oc1,cfv4_oc2,cfv4_ex)")
1974
1975 ;; Second part of cfv4_00.
1976 ;; Latency is either 1 or 4 depending on which stage the consumer
1977 ;; will need the data.
1978
1979 (define_insn_reservation "cfv4_00_ex" 4
1980   (and (and (eq_attr "cpu" "cfv4")
1981             (eq_attr "type" "bitr,bitrw,clr,cmp,move,mvsz,scc,tst"))
1982        (eq_attr "op_mem" "00"))
1983   "cfv4_ds,cfv4_oag,cfv4_oc1,cfv4_oc2,cfv4_ex")
1984
1985 (define_insn_reservation "cfv4_00_ex_sOEP13" 4
1986   (and (and (eq_attr "cpu" "cfv4")
1987             (eq_attr "type" "alux_l,ext,shift,tst_l"))
1988        (eq_attr "op_mem" "00"))
1989   "cfv4_sOEP1|cfv4_sOEP3|(cfv4_ds,cfv4_oag,cfv4_oc1,cfv4_oc2,cfv4_ex)")
1990
1991 ;; Several types mentioned in this reservation (e.g., ext and shift) don't
1992 ;; support implicit load.  But we handle them anyway due to first scheduling
1993 ;; pass, which handles non-strict rtl.
1994 ;;
1995 ;; Latency is either 1 or 4 depending in which stage the consumer
1996 ;; will need the data.
1997 (define_insn_reservation "cfv4_10" 4
1998   (and (and (eq_attr "cpu" "cfv4")
1999             (eq_attr "type" "alu_l,aluq_l,alux_l,bitr,bitrw,
2000                              clr,clr_l,cmp,cmp_l,ext,
2001                              mov3q_l,move,moveq_l,mvsz,neg_l,
2002                              shift,tst,tst_l"))
2003        (eq_attr "op_mem" "10"))
2004   "cfv4_ds,cfv4_oag,cfv4_oc1+cfv4_mem,cfv4_oc2,cfv4_ex")
2005
2006 ;; Specialization of cfv4_10.
2007 ;; move.l has OC2-to-DS forwarding path, that saves one cycle of latency.
2008 (define_insn_reservation "cfv4_10_pOEP1" 3
2009   (and (and (eq_attr "cpu" "cfv4")
2010             (eq_attr "type" "move_l"))
2011        (eq_attr "op_mem" "10"))
2012   "cfv4_pOEP1,cfv4_oag,cfv4_oc1+cfv4_mem,cfv4_oc2,cfv4_ex")
2013
2014 ;; Same here.  But +1 to latency due to longer OAG.
2015 (define_insn_reservation "cfv4_i0" 5
2016   (and (and (eq_attr "cpu" "cfv4")
2017             (eq_attr "type" "alu_l,aluq_l,alux_l,bitr,bitrw,
2018                              clr,clr_l,cmp,cmp_l,ext,
2019                              mov3q_l,move,moveq_l,mvsz,neg_l,
2020                              shift,tst,tst_l"))
2021        (eq_attr "op_mem" "i0"))
2022   "cfv4_ds,cfv4_oag,cfv4_oag,cfv4_oc1+cfv4_mem,cfv4_oc2,cfv4_ex")
2023
2024 ;; ??? Does indexed load trigger dual-issue?
2025 ;; ??? Does OC2-to-DS forwarding path saves a cycle?
2026 (define_insn_reservation "cfv4_i0_pOEP1" 4
2027   (and (and (eq_attr "cpu" "cfv4")
2028             (eq_attr "type" "move_l"))
2029        (eq_attr "op_mem" "i0"))
2030   "cfv4_ds,cfv4_oag,cfv4_oag,cfv4_oc1+cfv4_mem,cfv4_oc2,cfv4_ex")
2031
2032 ;; This reservation is for moves and clr.  Arithmetic instructions
2033 ;; don't write to memory unless they also read from it.
2034 ;; But, before reload we can have all sorts of things.
2035 ;; With cfv4_pOEP2 allow dual-issue for type 2 cases.
2036 (define_insn_reservation "cfv4_01" 1
2037   (and (and (eq_attr "cpu" "cfv4")
2038             (eq_attr "type" "alu_l,aluq_l,alux_l,bitr,bitrw,
2039                              clr,clr_l,cmp,cmp_l,ext,
2040                              mov3q_l,move,move_l,moveq_l,mvsz,neg_l,
2041                              shift"))
2042        (eq_attr "op_mem" "01"))
2043   "cfv4_pOEP2,cfv4_oag,cfv4_oc1,cfv4_oc2,cfv4_ex,cfv4_da,cfv4_mem")
2044
2045 ;; ??? Does indexed store trigger dual-issue?
2046 (define_insn_reservation "cfv4_0i" 2
2047   (and (and (eq_attr "cpu" "cfv4")
2048             (eq_attr "type" "alu_l,aluq_l,alux_l,bitr,bitrw,
2049                              clr,clr_l,cmp,cmp_l,ext,
2050                              mov3q_l,move,move_l,moveq_l,mvsz,neg_l,
2051                              shift"))
2052        (eq_attr "op_mem" "0i"))
2053   "cfv4_pOEP2,cfv4_oag,cfv4_oag,cfv4_oc1,cfv4_oc2,cfv4_ex,cfv4_da,cfv4_mem")
2054
2055 (define_insn_reservation "cfv4_11" 1
2056   (and (and (eq_attr "cpu" "cfv4")
2057             (eq_attr "type" "alu_l,aluq_l,alux_l,bitr,bitrw,
2058                              clr,clr_l,cmp,cmp_l,ext,
2059                              mov3q_l,move,move_l,moveq_l,mvsz,neg_l,
2060                              shift"))
2061        (eq_attr "op_mem" "11"))
2062   "cfv4_ds,cfv4_oag,cfv4_oc1+cfv4_mem,cfv4_oc2,cfv4_ex,cfv4_da,cfv4_mem")
2063
2064 ;; Latency is 2 due to long OAG stage.
2065 (define_insn_reservation "cfv4_i1" 2
2066   (and (and (eq_attr "cpu" "cfv4")
2067             (eq_attr "type" "alu_l,aluq_l,alux_l,bitr,bitrw,
2068                              clr,clr_l,cmp,cmp_l,ext,
2069                              mov3q_l,move,move_l,moveq_l,mvsz,neg_l,
2070                              shift"))
2071        (eq_attr "op_mem" "i1"))
2072   "cfv4_ds,cfv4_oag,cfv4_oag,cfv4_oc1+cfv4_mem,cfv4_oc2,cfv4_ex,cfv4_da,cfv4_mem")
2073
2074 ;; This one is the same as cfv4_i1.
2075 ;; ??? Should it be different?
2076 (define_insn_reservation "cfv4_1i" 2
2077   (and (and (eq_attr "cpu" "cfv4")
2078             (eq_attr "type" "alu_l,aluq_l,alux_l,bitr,bitrw,
2079                              clr,clr_l,cmp,cmp_l,ext,
2080                              mov3q_l,move,move_l,moveq_l,mvsz,neg_l,
2081                              shift"))
2082        (eq_attr "op_mem" "1i"))
2083   "cfv4_ds,cfv4_oag,cfv4_oag,cfv4_oc1+cfv4_mem,cfv4_oc2,cfv4_ex,cfv4_da,cfv4_mem")
2084
2085 ;; ??? Does pea indeed support case 2 of dual-issue?
2086 (define_insn_reservation "cfv4_11_pea" 1
2087   (and (and (eq_attr "cpu" "cfv4")
2088             (eq_attr "type" "pea"))
2089        (eq_attr "op_mem" "11,00,01,0i,10"))
2090   "cfv4_pOEP2,cfv4_oag,cfv4_oc1,cfv4_oc2,cfv4_ex,cfv4_da,cfv4_mem")
2091
2092 ;; ??? Does pea indeed support case 2 of dual-issue?
2093 ;; ??? Does indexed store trigger dual-issue?
2094 (define_insn_reservation "cfv4_i1_pea" 1
2095   (and (and (eq_attr "cpu" "cfv4")
2096             (eq_attr "type" "pea"))
2097        (eq_attr "op_mem" "i1,1i"))
2098   "cfv4_pOEP2,cfv4_oag,cfv4_oag,cfv4_oc1,cfv4_oc2,cfv4_ex,cfv4_da,cfv4_mem")
2099
2100 (define_insn_reservation "cfv4_link" 2
2101   (and (eq_attr "cpu" "cfv4")
2102        (eq_attr "type" "link"))
2103   "cfv4_ds,cfv4_oag,cfv4_oc1,cfv4_oc2,cfv4_ex,cfv4_ex,cfv4_da,cfv4_mem")
2104
2105 (define_insn_reservation "cfv4_unlink" 2
2106   (and (eq_attr "cpu" "cfv4")
2107        (eq_attr "type" "unlk"))
2108   "cfv4_ds,cfv4_oag,cfv4_oc1+cfv4_mem,cfv4_oc2,cfv4_ex")
2109
2110 (define_insn_reservation "cfv4_divw_00" 20
2111   (and (and (eq_attr "cpu" "cfv4")
2112             (eq_attr "type" "div_w"))
2113        (eq_attr "op_mem" "00,01,0i"))
2114   "cfv4_ds,cfv4_oag,cfv4_oc1,cfv4_oc2,cfv4_ex*15")
2115
2116 (define_insn_reservation "cfv4_divw_10" 20
2117   (and (and (eq_attr "cpu" "cfv4")
2118             (eq_attr "type" "div_w"))
2119        (eq_attr "op_mem" "10,11,1i"))
2120   "cfv4_ds,cfv4_oag,cfv4_oc1+cfv4_mem,cfv4_oc2,cfv4_ex*15")
2121
2122 (define_insn_reservation "cfv4_divw_i0" 21
2123   (and (and (eq_attr "cpu" "cfv4")
2124             (eq_attr "type" "div_w"))
2125        (eq_attr "op_mem" "i0,i1"))
2126   "cfv4_ds,cfv4_oag,cfv4_oag,cfv4_oc1+cfv4_mem,cfv4_oc2,cfv4_ex*15")
2127
2128 (define_insn_reservation "cfv4_divl_00" 35
2129   (and (and (eq_attr "cpu" "cfv4")
2130             (eq_attr "type" "div_l"))
2131        (eq_attr "op_mem" "00,01,0i"))
2132   "cfv4_ds,cfv4_oag,cfv4_oc1,cfv4_oc2,cfv4_ex*30")
2133
2134 (define_insn_reservation "cfv4_divl_10" 35
2135   (and (and (eq_attr "cpu" "cfv4")
2136             (eq_attr "type" "div_l"))
2137        (eq_attr "op_mem" "10,11,1i,i0,i1"))
2138   "cfv4_ds,cfv4_oag,cfv4_oc1+cfv4_mem,cfv4_oc2,cfv4_ex*30")
2139
2140 (define_insn_reservation "cfv4_emac_mul_00" 7
2141   (and (and (eq_attr "cpu" "cfv4")
2142             (eq_attr "type" "mul_w,mul_l"))
2143        (eq_attr "op_mem" "00,01,0i"))
2144   "cfv4_ds,cfv4_oag,cfv4_oc1,cfv4_oc2,cfv4_ex,cfv4_emac")
2145
2146 (define_insn_reservation "cfv4_emac_mul_10" 7
2147   (and (and (eq_attr "cpu" "cfv4")
2148             (eq_attr "type" "mul_w,mul_l"))
2149        (eq_attr "op_mem" "10,11,1i"))
2150   "cfv4_ds,cfv4_oag,cfv4_oc1+cfv4_mem,cfv4_oc2,cfv4_ex,cfv4_emac")
2151
2152 (define_insn_reservation "cfv4_emac_mul_i0" 8
2153   (and (and (eq_attr "cpu" "cfv4")
2154             (eq_attr "type" "mul_w,mul_l"))
2155        (eq_attr "op_mem" "i0,i1"))
2156   "cfv4_ds,cfv4_oag,cfv4_oag,cfv4_oc1+cfv4_mem,cfv4_oc2,cfv4_ex,cfv4_emac")
2157
2158 (define_insn_reservation "cfv4_falu_00" 7
2159   (and (and (eq_attr "cpu" "cfv4")
2160             (eq_attr "type" "falu,fcmp,fmul"))
2161        (eq_attr "op_mem" "00,01,0i"))
2162   "cfv4_ds,cfv4_oag,cfv4_oc1,cfv4_oc2,cfv4_ex,cfv4_fp")
2163
2164 (define_insn_reservation "cfv4_falu_10" 7
2165   (and (and (eq_attr "cpu" "cfv4")
2166             (eq_attr "type" "falu,fcmp,fmul"))
2167        (eq_attr "op_mem" "10,i0,11,1i,i1"))
2168   "cfv4_ds,cfv4_oag,cfv4_oc1+cfv4_mem,cfv4_oc2,cfv4_ex,cfv4_fp")
2169
2170 (define_insn_reservation "cfv4_fneg_00" 4
2171   (and (and (eq_attr "cpu" "cfv4")
2172             (eq_attr "type" "fmove,fneg,ftst"))
2173        (eq_attr "op_mem" "00"))
2174   "cfv4_ds,cfv4_oag,cfv4_oc1,cfv4_oc2,cfv4_ex,cfv4_fp")
2175
2176 (define_insn_reservation "cfv4_fmove_fneg_10" 4
2177   (and (and (eq_attr "cpu" "cfv4")
2178             (eq_attr "type" "fmove,fneg,ftst"))
2179        (eq_attr "op_mem" "10,i0,11,1i,i1"))
2180   "cfv4_ds,cfv4_oag,cfv4_oc1+cfv4_mem,cfv4_oc2,cfv4_ex,cfv4_fp")
2181
2182 (define_insn_reservation "cfv4_fmove_01" 1
2183   (and (and (eq_attr "cpu" "cfv4")
2184             (eq_attr "type" "fmove,fneg,ftst"))
2185        (eq_attr "op_mem" "01,0i"))
2186   "cfv4_ds,cfv4_oag,cfv4_oc1,cfv4_oc2,cfv4_ex,cfv4_fp,cfv4_da,cfv4_mem")
2187
2188 (define_insn_reservation "cfv4_fdiv_00" 23
2189   (and (and (eq_attr "cpu" "cfv4")
2190             (eq_attr "type" "fdiv"))
2191        (eq_attr "op_mem" "00,01,0i"))
2192   "cfv4_ds,cfv4_oag,cfv4_oc1,cfv4_oc2,cfv4_ex,cfv4_fp*17")
2193
2194 (define_insn_reservation "cfv4_fdiv_10" 23
2195   (and (and (eq_attr "cpu" "cfv4")
2196             (eq_attr "type" "fdiv"))
2197        (eq_attr "op_mem" "10,i0,11,1i,i1"))
2198   "cfv4_ds,cfv4_oag,cfv4_oc1+cfv4_mem,cfv4_oc2,cfv4_ex,cfv4_fp*17")
2199
2200 (define_insn_reservation "cfv4_fsqrt_00" 56
2201   (and (and (eq_attr "cpu" "cfv4")
2202             (eq_attr "type" "fsqrt"))
2203        (eq_attr "op_mem" "00,01,0i"))
2204   "cfv4_ds,cfv4_oag,cfv4_oc1,cfv4_oc2,cfv4_ex,cfv4_fp*50")
2205
2206 (define_insn_reservation "cfv4_fsqrt_10" 56
2207   (and (and (eq_attr "cpu" "cfv4")
2208             (eq_attr "type" "fsqrt"))
2209        (eq_attr "op_mem" "10,i0,11,1i,i1"))
2210   "cfv4_ds,cfv4_oag,cfv4_oc1+cfv4_mem,cfv4_oc2,cfv4_ex,cfv4_fp*50")
2211
2212 (define_insn_reservation "cfv4_bcc" 0
2213   (and (eq_attr "cpu" "cfv4")
2214        (eq_attr "type" "bcc"))
2215   "cfv4_ds,cfv4_oag,cfv4_oc1,cfv4_oc2,cfv4_ex")
2216
2217 (define_insn_reservation "cfv4_fbcc" 2
2218   (and (eq_attr "cpu" "cfv4")
2219        (eq_attr "type" "fbcc"))
2220   "cfv4_ds,cfv4_oag,cfv4_oc1,cfv4_oc2,cfv4_ex,cfv4_fp")
2221
2222 ;; ??? Why is bra said to write to memory: 1(0/1) ?
2223 (define_insn_reservation "cfv4_bra_bsr" 1
2224   (and (eq_attr "cpu" "cfv4")
2225        (eq_attr "type" "bra,bsr"))
2226   "cfv4_ds,cfv4_oag,cfv4_oc1,cfv4_oc2,cfv4_ex")
2227
2228 (define_insn_reservation "cfv4_jmp_jsr" 5
2229   (and (eq_attr "cpu" "cfv4")
2230        (eq_attr "type" "jmp,jsr"))
2231   "cfv4_ds,cfv4_oag,cfv4_oc1,cfv4_oc2,cfv4_ex")
2232
2233 (define_insn_reservation "cfv4_rts" 2
2234   (and (eq_attr "cpu" "cfv4")
2235        (eq_attr "type" "rts"))
2236   "cfv4_ds,cfv4_oag,cfv4_oc1+cfv4_mem,cfv4_oc2,cfv4_ex")
2237
2238 (define_insn_reservation "cfv4_nop" 1
2239   (and (eq_attr "cpu" "cfv4")
2240        (eq_attr "type" "nop"))
2241   "cfv4_ds+cfv4_oag+cfv4_oc1+cfv4_mem+cfv4_oc2+cfv4_ex")
2242
2243 (define_insn_reservation "cfv4_guess" 10
2244   (and (eq_attr "cpu" "cfv4")
2245        (eq_attr "type" "trap,unknown"))
2246   "cfv4_guess+cfv4_ds,cfv4_oag,cfv4_oc1+cfv4_mem,cfv4_oc2,cfv4_ex,cfv4_emac+cfv4_fp")
2247
2248 (define_insn_reservation "ignore" 0
2249   (eq_attr "type" "ignore")
2250   "nothing")