]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/config/i386/lujiazui.md
Update copyright years.
[thirdparty/gcc.git] / gcc / config / i386 / lujiazui.md
1 ;; Copyright (C) 2012-2024 Free Software Foundation, Inc.
2 ;;
3 ;; This file is part of GCC.
4 ;;
5 ;; GCC is free software; you can redistribute it and/or modify
6 ;; it under the terms of the GNU General Public License as published by
7 ;; the Free Software Foundation; either version 3, or (at your option)
8 ;; any later version.
9 ;;
10 ;; GCC is distributed in the hope that it will be useful,
11 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
12 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 ;; GNU General Public License for more details.
14 ;;
15 ;; You should have received a copy of the GNU General Public License
16 ;; along with GCC; see the file COPYING3. If not see
17 ;; <http://www.gnu.org/licenses/>.
18 ;;
19
20 ;; Scheduling for ZHAOXIN lujiazui processor.
21
22 ;; Modeling automatons for decoders, execution pipes, AGU pipes, and divider.
23 (define_automaton "lujiazui_decoder,lujiazui_core,lujiazui_agu,lujiazui_div")
24
25 ;; The rules for the decoder are simple:
26 ;; - an instruction with 1 uop can be decoded by any of the three
27 ;; decoders in one cycle.
28 ;; - an instruction with 2 uops can be decoded by decoder 0 or decoder 1
29 ;; but still in only one cycle.
30 ;; - a complex (microcode) instruction can only be decoded by
31 ;; decoder 0, and this takes an unspecified number of cycles.
32 ;;
33 ;; The goal is to schedule such that we have a few-one-two uops sequence
34 ;; in each cycle, to decode as many instructions per cycle as possible.
35 (define_cpu_unit "lua_decoder0" "lujiazui_decoder")
36 (define_cpu_unit "lua_decoder1" "lujiazui_decoder")
37 (define_cpu_unit "lua_decoder2" "lujiazui_decoder")
38
39 ;; We first wish to find an instruction for lua_decoder0, so exclude
40 ;; lua_decoder1 and lua_decoder2 from being reserved until
41 ;; lua_decoder0 is reserved, and also exclude lua_decoder2
42 ;; from being reserved until lua_decoder1 is reserved.
43 (presence_set "lua_decoder1" "lua_decoder0")
44 (presence_set "lua_decoder2" "lua_decoder0")
45 (presence_set "lua_decoder2" "lua_decoder1")
46
47 ;; Most instructions can be decoded on any of the three decoders.
48 (define_reservation "lua_decodern" "lua_decoder0|lua_decoder1|lua_decoder2")
49 (define_reservation "lua_decoder01" "lua_decoder0|lua_decoder1")
50
51 ;; The out-of-order core has six pipelines.
52 ;; Port 4, 5 are responsible for address calculations, load or store.
53 ;; Port 0, 1, 2, 3 for everything else.
54
55 (define_cpu_unit "lua_p0,lua_p1,lua_p2,lua_p3" "lujiazui_core")
56 (define_cpu_unit "lua_p4,lua_p5" "lujiazui_agu")
57
58 (define_cpu_unit "lua_div" "lujiazui_div")
59
60 (define_reservation "lua_p03" "lua_p0|lua_p3")
61 (define_reservation "lua_p12" "lua_p1|lua_p2")
62 (define_reservation "lua_p1p2" "lua_p1+lua_p2")
63 (define_reservation "lua_p45" "lua_p4|lua_p5")
64 (define_reservation "lua_p4p5" "lua_p4+lua_p5")
65 (define_reservation "lua_p0p1p2p3" "lua_p0+lua_p1+lua_p2+lua_p3")
66
67 ;; Only the irregular instructions have to be modeled here.
68
69 ;; Complex instruction.
70 (define_insn_reservation "lua_complex_insn" 6
71 (and (eq_attr "cpu" "lujiazui")
72 (eq_attr "type" "other,multi,str"))
73 "lua_decoder0")
74
75 ;; Call instruction.
76 (define_insn_reservation "lua_call" 1
77 (and (eq_attr "cpu" "lujiazui")
78 (eq_attr "type" "call,callv"))
79 "lua_decoder0,lua_p45,lua_p1")
80
81 ;; MOV - integer moves.
82 (define_insn_reservation "lua_imov" 1
83 (and (eq_attr "cpu" "lujiazui")
84 (and (eq_attr "memory" "none")
85 (eq_attr "type" "imov,imovx")))
86 "lua_decodern,lua_p12")
87
88 (define_insn_reservation "lua_imov_load" 4
89 (and (eq_attr "cpu" "lujiazui")
90 (and (eq_attr "memory" "load")
91 (eq_attr "type" "imov,imovx")))
92 "lua_decoder01,lua_p45")
93
94 (define_insn_reservation "lua_imov_store" 1
95 (and (eq_attr "cpu" "lujiazui")
96 (and (eq_attr "memory" "store")
97 (eq_attr "type" "imov")))
98 "lua_decodern,lua_p12+lua_p45")
99
100 (define_insn_reservation "lua_icmov" 1
101 (and (eq_attr "cpu" "lujiazui")
102 (and (eq_attr "memory" "none,unknown")
103 (eq_attr "type" "icmov")))
104 "lua_decodern,lua_p2")
105
106 (define_insn_reservation "lua_icmov_load" 5
107 (and (eq_attr "cpu" "lujiazui")
108 (and (eq_attr "memory" "load")
109 (eq_attr "type" "icmov")))
110 "lua_decoder01,lua_p45,lua_p2")
111
112 ;; Push and pop.
113 (define_insn_reservation "lua_push_reg" 1
114 (and (eq_attr "cpu" "lujiazui")
115 (and (eq_attr "memory" "store")
116 (eq_attr "type" "push")))
117 "lua_decodern,lua_p12+lua_p45")
118
119 (define_insn_reservation "lua_push_mem" 4
120 (and (eq_attr "cpu" "lujiazui")
121 (and (eq_attr "memory" "both")
122 (eq_attr "type" "push")))
123 "lua_decoder01,lua_p45,lua_p12+lua_p45")
124
125 (define_insn_reservation "lua_pop_reg" 4
126 (and (eq_attr "cpu" "lujiazui")
127 (and (eq_attr "memory" "load")
128 (eq_attr "type" "pop")))
129 "lua_decoder01,lua_p45")
130
131 (define_insn_reservation "lua_pop_mem" 4
132 (and (eq_attr "cpu" "lujiazui")
133 (and (eq_attr "memory" "both")
134 (eq_attr "type" "pop")))
135 "lua_decoder0,lua_p45,lua_p12+lua_p45")
136
137 (define_insn_reservation "lua_lea" 1
138 (and (eq_attr "cpu" "lujiazui")
139 (eq_attr "type" "lea"))
140 "lua_decodern,lua_p45")
141
142 (define_insn_reservation "lua_shift_rotate" 1
143 (and (eq_attr "cpu" "lujiazui")
144 (and (eq_attr "memory" "none,unknown")
145 (eq_attr "type" "ishift,ishift1,rotate,rotate1")))
146 "lua_decodern,lua_p2")
147
148 (define_insn_reservation "lua_shift_rotate_load" 5
149 (and (eq_attr "cpu" "lujiazui")
150 (and (eq_attr "memory" "load")
151 (eq_attr "type" "ishift,ishift1,rotate,rotate1")))
152 "lua_decoder01,lua_p45,lua_p2")
153
154 (define_insn_reservation "lua_shift_rotate_store" 1
155 (and (eq_attr "cpu" "lujiazui")
156 (and (eq_attr "memory" "store")
157 (eq_attr "type" "ishift,ishift1,rotate,rotate1")))
158 "lua_decoder01,lua_p2,lua_p45")
159
160 (define_insn_reservation "lua_shift_rotate_both" 5
161 (and (eq_attr "cpu" "lujiazui")
162 (and (eq_attr "memory" "both")
163 (eq_attr "type" "ishift,ishift1,rotate,rotate1")))
164 "lua_decoder0,lua_p45,lua_p2,lua_p45")
165
166 (define_insn_reservation "lua_branch" 1
167 (and (eq_attr "cpu" "lujiazui")
168 (and (eq_attr "memory" "none")
169 (eq_attr "type" "ibr")))
170 "lua_decodern,lua_p1")
171
172 (define_insn_reservation "lua_indirect_branch_load" 5
173 (and (eq_attr "cpu" "lujiazui")
174 (and (eq_attr "memory" "load")
175 (eq_attr "type" "ibr")))
176 "lua_decodern,lua_p45,lua_p1")
177
178 (define_insn_reservation "lua_leave" 4
179 (and (eq_attr "cpu" "lujiazui")
180 (eq_attr "type" "leave"))
181 "lua_decoder0,lua_p45+lua_p12,lua_p12")
182
183 ;; Multiplication instructions.
184
185 (define_insn_reservation "lua_imul_qi" 2
186 (and (eq_attr "cpu" "lujiazui")
187 (and (eq_attr "memory" "none")
188 (and (eq_attr "mode" "QI")
189 (eq_attr "type" "imul,imulx"))))
190 "lua_decodern,lua_p1p2")
191
192 (define_insn_reservation "lua_imul_qi_mem" 6
193 (and (eq_attr "cpu" "lujiazui")
194 (and (eq_attr "memory" "!none")
195 (and (eq_attr "mode" "QI")
196 (eq_attr "type" "imul,imulx"))))
197 "lua_decoder01,lua_p1p2+lua_p45")
198
199 (define_insn_reservation "lua_imul_hisi" 3
200 (and (eq_attr "cpu" "lujiazui")
201 (and (eq_attr "memory" "none")
202 (and (eq_attr "mode" "HI,SI")
203 (eq_attr "type" "imul,imulx"))))
204 "lua_decoder0,lua_p1p2")
205
206 (define_insn_reservation "lua_imul_hisi_mem" 7
207 (and (eq_attr "cpu" "lujiazui")
208 (and (eq_attr "memory" "!none")
209 (and (eq_attr "mode" "HI,SI")
210 (eq_attr "type" "imul,imulx"))))
211 "lua_decoder0,lua_p1p2+lua_p45")
212
213 (define_insn_reservation "lua_imul_di" 12
214 (and (eq_attr "cpu" "lujiazui")
215 (and (eq_attr "memory" "none")
216 (and (eq_attr "mode" "DI")
217 (eq_attr "type" "imul,imulx"))))
218 "lua_decoder0,lua_p0p1p2p3")
219
220 (define_insn_reservation "lua_imul_di_mem" 16
221 (and (eq_attr "cpu" "lujiazui")
222 (and (eq_attr "memory" "!none")
223 (and (eq_attr "mode" "DI")
224 (eq_attr "type" "imul,imulx"))))
225 "lua_decoder0,lua_p0p1p2p3+lua_p45")
226
227 ;; Division instructions.
228
229 (define_insn_reservation "lua_idiv_qi" 21
230 (and (eq_attr "cpu" "lujiazui")
231 (and (eq_attr "memory" "none")
232 (and (eq_attr "mode" "QI")
233 (eq_attr "type" "idiv"))))
234 "lua_decoder0,lua_p0p1p2p3,lua_div*21")
235
236 (define_insn_reservation "lua_idiv_qi_load" 25
237 (and (eq_attr "cpu" "lujiazui")
238 (and (eq_attr "memory" "load")
239 (and (eq_attr "mode" "QI")
240 (eq_attr "type" "idiv"))))
241 "lua_decoder0,lua_p45,lua_p0p1p2p3,lua_div*21")
242
243 (define_insn_reservation "lua_idiv_hi" 22
244 (and (eq_attr "cpu" "lujiazui")
245 (and (eq_attr "memory" "none")
246 (and (eq_attr "mode" "HI")
247 (eq_attr "type" "idiv"))))
248 "lua_decoder0,lua_p0p1p2p3,lua_div*22")
249
250 (define_insn_reservation "lua_idiv_hi_load" 26
251 (and (eq_attr "cpu" "lujiazui")
252 (and (eq_attr "memory" "load")
253 (and (eq_attr "mode" "HI")
254 (eq_attr "type" "idiv"))))
255 "lua_decoder0,lua_p45,lua_p0p1p2p3,lua_div*22")
256
257 (define_insn_reservation "lua_idiv_si" 20
258 (and (eq_attr "cpu" "lujiazui")
259 (and (eq_attr "memory" "none")
260 (and (eq_attr "mode" "SI")
261 (eq_attr "type" "idiv"))))
262 "lua_decoder0,lua_p0p1p2p3,lua_div*20")
263
264 (define_insn_reservation "lua_idiv_si_load" 24
265 (and (eq_attr "cpu" "lujiazui")
266 (and (eq_attr "memory" "load")
267 (and (eq_attr "mode" "SI")
268 (eq_attr "type" "idiv"))))
269 "lua_decoder0,lua_p45,lua_p0p1p2p3,lua_div*20")
270
271 (define_insn_reservation "lua_idiv_di" 150
272 (and (eq_attr "cpu" "lujiazui")
273 (and (eq_attr "memory" "none")
274 (and (eq_attr "mode" "DI")
275 (eq_attr "type" "idiv"))))
276 "lua_decoder0,lua_p0p1p2p3,lua_div*150")
277
278 (define_insn_reservation "lua_idiv_di_load" 154
279 (and (eq_attr "cpu" "lujiazui")
280 (and (eq_attr "memory" "load")
281 (and (eq_attr "mode" "DI")
282 (eq_attr "type" "idiv"))))
283 "lua_decoder0,lua_p45,lua_p0p1p2p3,lua_div*150")
284
285 ;; x87 floating point operations.
286
287 (define_insn_reservation "lua_fxch" 1
288 (and (eq_attr "cpu" "lujiazui")
289 (eq_attr "type" "fxch"))
290 "lua_decodern,lua_p1")
291
292 (define_insn_reservation "lua_fop" 3
293 (and (eq_attr "cpu" "lujiazui")
294 (and (eq_attr "memory" "none,unknown")
295 (eq_attr "type" "fop")))
296 "lua_decodern,lua_p0")
297
298 (define_insn_reservation "lua_fop_load" 7
299 (and (eq_attr "cpu" "lujiazui")
300 (and (eq_attr "memory" "load")
301 (eq_attr "type" "fop")))
302 "lua_decoder01,lua_p45,lua_p0")
303
304 (define_insn_reservation "lua_fop_store" 3
305 (and (eq_attr "cpu" "lujiazui")
306 (and (eq_attr "memory" "store")
307 (eq_attr "type" "fop")))
308 "lua_decodern,lua_p0,lua_p45")
309
310 (define_insn_reservation "lua_fop_both" 7
311 (and (eq_attr "cpu" "lujiazui")
312 (and (eq_attr "memory" "both")
313 (eq_attr "type" "fop")))
314 "lua_decoder0,lua_p45,lua_p0,lua_p45")
315
316 (define_insn_reservation "lua_fsgn" 1
317 (and (eq_attr "cpu" "lujiazui")
318 (eq_attr "type" "fsgn"))
319 "lua_decodern,lua_p0")
320
321 (define_insn_reservation "lua_fistp" 1
322 (and (eq_attr "cpu" "lujiazui")
323 (and (eq_attr "memory" "none")
324 (eq_attr "type" "fistp")))
325 "lua_decodern,lua_p0")
326
327 (define_insn_reservation "lua_fistp_mem" 4
328 (and (eq_attr "cpu" "lujiazui")
329 (and (eq_attr "memory" "!none")
330 (eq_attr "type" "fistp")))
331 "lua_decoder0,lua_p0+lua_p45")
332
333 (define_insn_reservation "lua_fcmov" 3
334 (and (eq_attr "cpu" "lujiazui")
335 (eq_attr "type" "fcmov"))
336 "lua_decodern,lua_p0")
337
338 (define_insn_reservation "lua_fcmp" 1
339 (and (eq_attr "cpu" "lujiazui")
340 (and (eq_attr "memory" "none")
341 (eq_attr "type" "fcmp")))
342 "lua_decodern,lua_p0")
343
344 (define_insn_reservation "lua_fcmp_load" 5
345 (and (eq_attr "cpu" "lujiazui")
346 (and (eq_attr "memory" "load")
347 (eq_attr "type" "fcmp")))
348 "lua_decoder01,lua_p45,lua_p0")
349
350 (define_insn_reservation "lua_fmov" 1
351 (and (eq_attr "cpu" "lujiazui")
352 (and (eq_attr "memory" "none")
353 (eq_attr "type" "fmov")))
354 "lua_decodern,lua_p0")
355
356 (define_insn_reservation "lua_fmov_load" 4
357 (and (eq_attr "cpu" "lujiazui")
358 (and (eq_attr "memory" "load")
359 (and (eq_attr "mode" "!XF")
360 (eq_attr "type" "fmov"))))
361 "lua_decoder01,lua_p45,lua_p0")
362
363 (define_insn_reservation "lua_fmov_XF_load" 3
364 (and (eq_attr "cpu" "lujiazui")
365 (and (eq_attr "memory" "load")
366 (and (eq_attr "mode" "XF")
367 (eq_attr "type" "fmov"))))
368 "lua_decoder0,lua_p45,lua_p0")
369
370 (define_insn_reservation "lua_fmov_store" 1
371 (and (eq_attr "cpu" "lujiazui")
372 (and (eq_attr "memory" "store")
373 (and (eq_attr "mode" "!XF")
374 (eq_attr "type" "fmov"))))
375 "lua_decoder0,lua_p0,lua_p45")
376
377 (define_insn_reservation "lua_fmov_XF_store" 1
378 (and (eq_attr "cpu" "lujiazui")
379 (and (eq_attr "memory" "store")
380 (and (eq_attr "mode" "XF")
381 (eq_attr "type" "fmov"))))
382 "lua_decoder0,lua_p0,lua_p45")
383
384 (define_insn_reservation "lua_fmul" 4
385 (and (eq_attr "cpu" "lujiazui")
386 (and (eq_attr "memory" "none")
387 (eq_attr "type" "fmul")))
388 "lua_decodern,lua_p3")
389
390 (define_insn_reservation "lua_fmul_load" 8
391 (and (eq_attr "cpu" "lujiazui")
392 (and (eq_attr "fp_int_src" "false")
393 (and (eq_attr "memory" "load")
394 (eq_attr "type" "fmul"))))
395 "lua_decoder01,lua_p45,lua_p3")
396
397 (define_insn_reservation "lua_fimul_load" 8
398 (and (eq_attr "cpu" "lujiazui")
399 (and (eq_attr "fp_int_src" "true")
400 (and (eq_attr "memory" "load")
401 (eq_attr "type" "fmul"))))
402 "lua_decoder0,lua_p45,lua_p3")
403
404 ;; fdiv instructions.
405
406 (define_insn_reservation "lua_fdiv_SF" 15
407 (and (eq_attr "cpu" "lujiazui")
408 (and (eq_attr "memory" "none")
409 (and (eq_attr "mode" "SF")
410 (eq_attr "type" "fdiv,fpspc"))))
411 "lua_decodern,lua_p0,lua_div*15")
412
413 (define_insn_reservation "lua_fdiv_SF_load" 19
414 (and (eq_attr "cpu" "lujiazui")
415 (and (eq_attr "memory" "load")
416 (and (eq_attr "mode" "SF")
417 (eq_attr "type" "fdiv,fpspc"))))
418 "lua_decoder01,lua_p45,lua_p0,lua_div*15")
419
420 (define_insn_reservation "lua_fdiv_DF" 18
421 (and (eq_attr "cpu" "lujiazui")
422 (and (eq_attr "memory" "none")
423 (and (eq_attr "mode" "DF")
424 (eq_attr "type" "fdiv,fpspc"))))
425 "lua_decodern,lua_p0,lua_div*18")
426
427 (define_insn_reservation "lua_fdiv_DF_load" 22
428 (and (eq_attr "cpu" "lujiazui")
429 (and (eq_attr "memory" "load")
430 (and (eq_attr "mode" "DF")
431 (eq_attr "type" "fdiv,fpspc"))))
432 "lua_decoder01,lua_p45,lua_p0,lua_div*18")
433
434 (define_insn_reservation "lua_fdiv_XF" 22
435 (and (eq_attr "cpu" "lujiazui")
436 (and (eq_attr "memory" "none")
437 (and (eq_attr "mode" "XF")
438 (eq_attr "type" "fdiv,fpspc"))))
439 "lua_decoder0,lua_p0,lua_div*22")
440
441 (define_insn_reservation "lua_fdiv_XF_load" 26
442 (and (eq_attr "cpu" "lujiazui")
443 (and (eq_attr "memory" "load")
444 (and (eq_attr "mode" "XF")
445 (eq_attr "type" "fdiv,fpspc"))))
446 "lua_decoder0,lua_p45,lua_p0,lua_div*22")
447
448 ;; MMX instructions.
449
450 (define_insn_reservation "lua_mmx_sse_add_shft" 1
451 (and (eq_attr "cpu" "lujiazui")
452 (and (eq_attr "memory" "none")
453 (eq_attr "type" "mmxadd,sseiadd,mmxshft,sseishft")))
454 "lua_decodern,lua_p0")
455
456 (define_insn_reservation "lua_mmx_sse_add_shft_load" 5
457 (and (eq_attr "cpu" "lujiazui")
458 (and (eq_attr "memory" "load")
459 (eq_attr "type" "mmxadd,sseiadd,mmxshft,sseishft")))
460 "lua_decoder01,lua_p45,lua_p0")
461
462 (define_insn_reservation "lua_mmx_sse_add_shft_store" 1
463 (and (eq_attr "cpu" "lujiazui")
464 (and (eq_attr "memory" "store")
465 (eq_attr "type" "mmxadd,sseiadd,mmxshft,sseishft")))
466 "lua_decodern,lua_p0,lua_p45")
467
468 (define_insn_reservation "lua_mmx_mul" 5
469 (and (eq_attr "cpu" "lujiazui")
470 (and (eq_attr "memory" "none")
471 (eq_attr "type" "mmxmul,sseimul")))
472 "lua_decodern,lua_p3")
473
474 (define_insn_reservation "lua_mmx_mul_load" 9
475 (and (eq_attr "cpu" "lujiazui")
476 (and (eq_attr "memory" "load")
477 (eq_attr "type" "mmxmul,sseimul")))
478 "lua_decoder01,lua_p45,lua_p3")
479
480 (define_insn_reservation "lua_mmxcvt" 1
481 (and (eq_attr "cpu" "lujiazui")
482 (and (eq_attr "memory" "none")
483 (eq_attr "type" "mmxcvt")))
484 "lua_decodern,lua_p03")
485
486 (define_insn_reservation "lua_mmxcvt_load" 5
487 (and (eq_attr "cpu" "lujiazui")
488 (and (eq_attr "memory" "load")
489 (eq_attr "type" "mmxcvt")))
490 "lua_decoder01,lua_p45,lua_p03")
491
492 ;; The sfence instruction.
493 (define_insn_reservation "lua_sse_sfence" 13
494 (and (eq_attr "cpu" "lujiazui")
495 (and (eq_attr "memory" "unknown")
496 (eq_attr "type" "sse")))
497 "lua_decoder0,lua_p45")
498
499 (define_insn_reservation "lua_sse_SFDF" 5
500 (and (eq_attr "cpu" "lujiazui")
501 (and (eq_attr "mode" "SF,DF")
502 (eq_attr "type" "sse")))
503 "lua_decodern,lua_p0")
504
505 (define_insn_reservation "lua_sse_V4SF" 13
506 (and (eq_attr "cpu" "lujiazui")
507 (and (eq_attr "mode" "V4SF")
508 (eq_attr "type" "sse")))
509 "lua_decodern,lua_p0")
510
511 (define_insn_reservation "lua_sse_V8SF" 19
512 (and (eq_attr "cpu" "lujiazui")
513 (and (eq_attr "mode" "V8SF,V4DF")
514 (eq_attr "type" "sse")))
515 "lua_decodern,lua_p0")
516
517 (define_insn_reservation "lua_sse_add1" 5
518 (and (eq_attr "cpu" "lujiazui")
519 (and (eq_attr "memory" "none")
520 (eq_attr "type" "sseadd1")))
521 "lua_decoder0,lua_p0")
522
523 (define_insn_reservation "lua_sse_add1_load" 8
524 (and (eq_attr "cpu" "lujiazui")
525 (and (eq_attr "memory" "load")
526 (eq_attr "type" "sseadd1")))
527 "lua_decoder0,lua_p45,lua_p0")
528
529 (define_insn_reservation "lua_sse_cmp" 3
530 (and (eq_attr "cpu" "lujiazui")
531 (and (eq_attr "memory" "none")
532 (eq_attr "type" "ssecmp,ssecomi")))
533 "lua_decodern,lua_p0")
534
535 (define_insn_reservation "lua_sse_cmp_load" 7
536 (and (eq_attr "cpu" "lujiazui")
537 (and (eq_attr "memory" "load")
538 (eq_attr "type" "ssecmp,ssecomi")))
539 "lua_decoder01,lua_p45,lua_p0")
540
541 (define_insn_reservation "lua_sse_logic" 1
542 (and (eq_attr "cpu" "lujiazui")
543 (and (eq_attr "memory" "none")
544 (eq_attr "type" "sselog,sselog1")))
545 "lua_decodern,lua_p03")
546
547 (define_insn_reservation "lua_sse_logic_load" 5
548 (and (eq_attr "cpu" "lujiazui")
549 (and (eq_attr "memory" "load")
550 (eq_attr "type" "sselog,sselog1")))
551 "lua_decoder01,lua_p45,lua_p03")
552
553 (define_insn_reservation "lua_sse_add" 3
554 (and (eq_attr "cpu" "lujiazui")
555 (and (eq_attr "memory" "none")
556 (eq_attr "type" "sseadd")))
557 "lua_decodern,lua_p0")
558
559 (define_insn_reservation "lua_sse_add_load" 7
560 (and (eq_attr "cpu" "lujiazui")
561 (and (eq_attr "memory" "load")
562 (eq_attr "type" "sseadd")))
563 "lua_decoder01,lua_p45,lua_p0")
564
565 (define_insn_reservation "lua_ssemul_ss_ps" 3
566 (and (eq_attr "cpu" "lujiazui")
567 (and (eq_attr "memory" "none")
568 (and (eq_attr "mode" "SF,V4SF,V8SF")
569 (eq_attr "type" "ssemul"))))
570 "lua_decodern,lua_p3")
571
572 (define_insn_reservation "lua_ssemul_ss_ps_load" 7
573 (and (eq_attr "cpu" "lujiazui")
574 (and (eq_attr "memory" "load")
575 (and (eq_attr "mode" "SF,V4SF,V8SF")
576 (eq_attr "type" "ssemul"))))
577 "lua_decoder01,lua_p45,lua_p3")
578
579 (define_insn_reservation "lua_ssemul_sd_pd" 4
580 (and (eq_attr "cpu" "lujiazui")
581 (and (eq_attr "memory" "none")
582 (and (eq_attr "mode" "DF,V2DF,V4DF")
583 (eq_attr "type" "ssemul"))))
584 "lua_decodern,lua_p3")
585
586 (define_insn_reservation "lua_ssemul_sd_pd_load" 8
587 (and (eq_attr "cpu" "lujiazui")
588 (and (eq_attr "memory" "load")
589 (and (eq_attr "mode" "DF,V2DF,V4DF")
590 (eq_attr "type" "ssemul"))))
591 "lua_decoder01,lua_p45,lua_p3")
592
593 (define_insn_reservation "lua_ssediv_SF" 13
594 (and (eq_attr "cpu" "lujiazui")
595 (and (eq_attr "memory" "none")
596 (and (eq_attr "mode" "SF")
597 (eq_attr "type" "ssediv"))))
598 "lua_decodern,lua_p0,lua_div*13")
599
600 (define_insn_reservation "lua_ssediv_load_SF" 17
601 (and (eq_attr "cpu" "lujiazui")
602 (and (eq_attr "memory" "load")
603 (and (eq_attr "mode" "SF")
604 (eq_attr "type" "ssediv"))))
605 "lua_decoder01,lua_p45,lua_p0,lua_div*13")
606
607 (define_insn_reservation "lua_ssediv_V4SF" 23
608 (and (eq_attr "cpu" "lujiazui")
609 (and (eq_attr "memory" "none")
610 (and (eq_attr "mode" "V4SF")
611 (eq_attr "type" "ssediv"))))
612 "lua_decodern,lua_p0,lua_div*23")
613
614 (define_insn_reservation "lua_ssediv_load_V4SF" 27
615 (and (eq_attr "cpu" "lujiazui")
616 (and (eq_attr "memory" "load")
617 (and (eq_attr "mode" "V4SF")
618 (eq_attr "type" "ssediv"))))
619 "lua_decoder01,lua_p45,lua_p0,lua_div*23")
620
621 (define_insn_reservation "lua_ssediv_V8SF" 47
622 (and (eq_attr "cpu" "lujiazui")
623 (and (eq_attr "memory" "none")
624 (and (eq_attr "mode" "V8SF")
625 (eq_attr "type" "ssediv"))))
626 "lua_decoder0,lua_p0,lua_div*47")
627
628 (define_insn_reservation "lua_ssediv_load_V8SF" 51
629 (and (eq_attr "cpu" "lujiazui")
630 (and (eq_attr "memory" "load")
631 (and (eq_attr "mode" "V8SF")
632 (eq_attr "type" "ssediv"))))
633 "lua_decoder0,lua_p45,lua_p0,lua_div*47")
634
635 (define_insn_reservation "lua_ssediv_SD" 17
636 (and (eq_attr "cpu" "lujiazui")
637 (and (eq_attr "memory" "none")
638 (and (eq_attr "mode" "DF")
639 (eq_attr "type" "ssediv"))))
640 "lua_decodern,lua_p0,lua_div*17")
641
642 (define_insn_reservation "lua_ssediv_load_SD" 21
643 (and (eq_attr "cpu" "lujiazui")
644 (and (eq_attr "memory" "load")
645 (and (eq_attr "mode" "DF")
646 (eq_attr "type" "ssediv"))))
647 "lua_decoder01,lua_p45,lua_p0,lua_div*17")
648
649 (define_insn_reservation "lua_ssediv_V2DF" 30
650 (and (eq_attr "cpu" "lujiazui")
651 (and (eq_attr "memory" "none")
652 (and (eq_attr "mode" "V2DF")
653 (eq_attr "type" "ssediv"))))
654 "lua_decodern,lua_p0,lua_div*30")
655
656 (define_insn_reservation "lua_ssediv_load_V2DF" 34
657 (and (eq_attr "cpu" "lujiazui")
658 (and (eq_attr "memory" "load")
659 (and (eq_attr "mode" "V2DF")
660 (eq_attr "type" "ssediv"))))
661 "lua_decoder01,lua_p45,lua_p0,lua_div*30")
662
663 (define_insn_reservation "lua_ssediv_V4DF" 56
664 (and (eq_attr "cpu" "lujiazui")
665 (and (eq_attr "memory" "none")
666 (and (eq_attr "mode" "V4DF")
667 (eq_attr "type" "ssediv"))))
668 "lua_decoder0,lua_p0,lua_div*56")
669
670 (define_insn_reservation "lua_ssediv_load_V4DF" 60
671 (and (eq_attr "cpu" "lujiazui")
672 (and (eq_attr "memory" "load")
673 (and (eq_attr "mode" "V4DF")
674 (eq_attr "type" "ssediv"))))
675 "lua_decoder0,lua_p4p5,lua_p0,lua_div*56")
676
677
678 (define_insn_reservation "lua_sseicvt_si" 2
679 (and (eq_attr "cpu" "lujiazui")
680 (and (eq_attr "memory" "none")
681 (and (eq_attr "mode" "SI")
682 (and (match_operand:SF 1 "memory_operand")
683 (eq_attr "type" "sseicvt")))))
684 "lua_decoder01,lua_p0")
685
686 (define_insn_reservation "lua_sseicvt_si_load" 6
687 (and (eq_attr "cpu" "lujiazui")
688 (and (eq_attr "memory" "load")
689 (and (eq_attr "mode" "SI")
690 (and (match_operand:SF 1 "memory_operand")
691 (eq_attr "type" "sseicvt")))))
692 "lua_decoder0,lua_p45,lua_p0")
693
694 (define_insn_reservation "lua_sseicvtdf_si" 3
695 (and (eq_attr "cpu" "lujiazui")
696 (and (eq_attr "memory" "none")
697 (and (eq_attr "mode" "SI")
698 (and (match_operand:DF 1 "memory_operand")
699 (eq_attr "type" "sseicvt")))))
700 "lua_decodern,lua_p0")
701
702 (define_insn_reservation "lua_sseicvtdf_si_load" 7
703 (and (eq_attr "cpu" "lujiazui")
704 (and (eq_attr "memory" "load")
705 (and (eq_attr "mode" "SI")
706 (and (match_operand:DF 1 "memory_operand")
707 (eq_attr "type" "sseicvt")))))
708 "lua_decoder01,lua_p45,lua_p0")
709
710 (define_insn_reservation "lua_ssecvt" 6
711 (and (eq_attr "cpu" "lujiazui")
712 (and (eq_attr "memory" "none")
713 (eq_attr "type" "ssecvt")))
714 "lua_decoder01,lua_p03")
715
716 (define_insn_reservation "lua_ssecvt_load" 10
717 (and (eq_attr "cpu" "lujiazui")
718 (and (eq_attr "memory" "load")
719 (eq_attr "type" "ssecvt")))
720 "lua_decoder0,lua_p45,lua_p03")
721
722 (define_insn_reservation "lua_sse_mov" 1
723 (and (eq_attr "cpu" "lujiazui")
724 (and (eq_attr "memory" "none")
725 (eq_attr "type" "ssemov")))
726 "lua_decodern,lua_p03")
727
728 (define_insn_reservation "lua_sse_mov_load" 5
729 (and (eq_attr "cpu" "lujiazui")
730 (and (eq_attr "memory" "load")
731 (eq_attr "type" "ssemov")))
732 "lua_decoder01,lua_p45,lua_p03")
733
734 (define_insn_reservation "lua_sse_mov_store" 1
735 (and (eq_attr "cpu" "lujiazui")
736 (and (eq_attr "memory" "store")
737 (eq_attr "type" "ssemov")))
738 "lua_decoder01,lua_p0,lua_p45")
739
740 (define_insn_reservation "lua_insn_alu" 1
741 (and (eq_attr "cpu" "lujiazui")
742 (and (eq_attr "memory" "none,unknown")
743 (eq_attr "type" "alu")))
744 "lua_decodern,lua_p12")
745
746 (define_insn_reservation "lua_insn_alu_load" 5
747 (and (eq_attr "cpu" "lujiazui")
748 (and (eq_attr "memory" "load")
749 (eq_attr "type" "alu")))
750 "lua_decoder01,lua_p45,lua_p12")
751
752 (define_insn_reservation "lua_insn_alu_store" 1
753 (and (eq_attr "cpu" "lujiazui")
754 (and (eq_attr "memory" "store")
755 (eq_attr "type" "alu")))
756 "lua_decoder01,lua_p12,lua_p45")
757
758 (define_insn_reservation "lua_insn_alu_both" 5
759 (and (eq_attr "cpu" "lujiazui")
760 (and (eq_attr "memory" "both")
761 (eq_attr "type" "alu")))
762 "lua_decoder0,lua_p45,lua_p12,lua_p45")
763
764 (define_insn_reservation "lua_insn_alu1" 1
765 (and (eq_attr "cpu" "lujiazui")
766 (and (eq_attr "memory" "none,unknown")
767 (eq_attr "type" "alu1")))
768 "lua_decodern,lua_p12")
769
770 (define_insn_reservation "lua_insn_alu1_load" 5
771 (and (eq_attr "cpu" "lujiazui")
772 (and (eq_attr "memory" "load")
773 (eq_attr "type" "alu1")))
774 "lua_decoder01,lua_p45,lua_p12")
775
776 (define_insn_reservation "lua_insn_alu1_store" 1
777 (and (eq_attr "cpu" "lujiazui")
778 (and (eq_attr "memory" "store")
779 (eq_attr "type" "alu1")))
780 "lua_decoder01,lua_p12,lua_p45")
781
782 (define_insn_reservation "lua_insn_alu1_both" 5
783 (and (eq_attr "cpu" "lujiazui")
784 (and (eq_attr "memory" "both")
785 (eq_attr "type" "alu1")))
786 "lua_decoder0,lua_p45,lua_p12,lua_p45")
787
788 (define_insn_reservation "lua_insn_negnot_incdec" 1
789 (and (eq_attr "cpu" "lujiazui")
790 (and (eq_attr "memory" "none")
791 (eq_attr "type" "negnot,incdec")))
792 "lua_decodern,lua_p12")
793
794 (define_insn_reservation "lua_insn_negnot_setcc" 1
795 (and (eq_attr "cpu" "lujiazui")
796 (and (eq_attr "memory" "none")
797 (eq_attr "type" "setcc")))
798 "lua_decodern,lua_p2")
799
800 (define_insn_reservation "lua_insn_negnot_setcc_mem" 5
801 (and (eq_attr "cpu" "lujiazui")
802 (and (eq_attr "memory" "!none")
803 (eq_attr "type" "negnot,setcc")))
804 "lua_decoder01,lua_p45,lua_p2,lua_p45")
805
806 (define_insn_reservation "lua_insn_incdec_mem" 5
807 (and (eq_attr "cpu" "lujiazui")
808 (and (eq_attr "memory" "!none")
809 (eq_attr "type" "incdec")))
810 "lua_decoder0,lua_p45,lua_p12,lua_p45")
811
812 (define_insn_reservation "lua_insn_icmptest" 1
813 (and (eq_attr "cpu" "lujiazui")
814 (and (eq_attr "memory" "none,unknown")
815 (eq_attr "type" "icmp,test")))
816 "lua_decodern,lua_p12")
817
818 (define_insn_reservation "lua_insn_icmptest_load" 5
819 (and (eq_attr "cpu" "lujiazui")
820 (and (eq_attr "memory" "load")
821 (eq_attr "type" "icmp,test")))
822 "lua_decoder01,lua_p45,lua_p12")
823
824 (define_insn_reservation "lua_insn_icmptest_store" 1
825 (and (eq_attr "cpu" "lujiazui")
826 (and (eq_attr "memory" "store")
827 (eq_attr "type" "icmp,test")))
828 "lua_decoder01,lua_p12,lua_p45")
829
830 (define_insn_reservation "lua_insn_icmptest_both" 5
831 (and (eq_attr "cpu" "lujiazui")
832 (and (eq_attr "memory" "both")
833 (eq_attr "type" "icmp,test")))
834 "lua_decoder0,lua_p45,lua_p12,lua_p45")
835
836 (define_insn_reservation "lua_insn_sseishft1_mmx" 1
837 (and (eq_attr "cpu" "lujiazui")
838 (and (eq_attr "memory" "none")
839 (eq_attr "type" "sseishft1,mmx,mmxcmp")))
840 "lua_decodern,lua_p03")
841
842 (define_insn_reservation "lua_insn_sseishft1_mmx_mem" 5
843 (and (eq_attr "cpu" "lujiazui")
844 (and (eq_attr "memory" "load")
845 (eq_attr "type" "sseishft1,mmx,mmxcmp")))
846 "lua_decoder01,lua_p45,lua_p03")