]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/i386/lujiazui.md
Update copyright years.
[thirdparty/gcc.git] / gcc / config / i386 / lujiazui.md
CommitLineData
a945c346 1;; Copyright (C) 2012-2024 Free Software Foundation, Inc.
a239aff8
M
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
ec1db901
AM
22;; Modeling automatons for decoders, execution pipes, AGU pipes, and divider.
23(define_automaton "lujiazui_decoder,lujiazui_core,lujiazui_agu,lujiazui_div")
a239aff8
M
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
ec1db901
AM
58(define_cpu_unit "lua_div" "lujiazui_div")
59
a239aff8
M
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"))
94c0b26f 140 "lua_decodern,lua_p45")
a239aff8
M
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"))))
ec1db901 234 "lua_decoder0,lua_p0p1p2p3,lua_div*21")
a239aff8
M
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"))))
ec1db901 241 "lua_decoder0,lua_p45,lua_p0p1p2p3,lua_div*21")
a239aff8
M
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"))))
ec1db901 248 "lua_decoder0,lua_p0p1p2p3,lua_div*22")
a239aff8
M
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"))))
ec1db901 255 "lua_decoder0,lua_p45,lua_p0p1p2p3,lua_div*22")
a239aff8
M
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"))))
ec1db901 262 "lua_decoder0,lua_p0p1p2p3,lua_div*20")
a239aff8
M
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"))))
ec1db901 269 "lua_decoder0,lua_p45,lua_p0p1p2p3,lua_div*20")
a239aff8
M
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"))))
ec1db901 276 "lua_decoder0,lua_p0p1p2p3,lua_div*150")
a239aff8
M
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"))))
ec1db901 283 "lua_decoder0,lua_p45,lua_p0p1p2p3,lua_div*150")
a239aff8
M
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"))))
ec1db901 411 "lua_decodern,lua_p0,lua_div*15")
a239aff8
M
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"))))
ec1db901 418 "lua_decoder01,lua_p45,lua_p0,lua_div*15")
a239aff8
M
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"))))
ec1db901 425 "lua_decodern,lua_p0,lua_div*18")
a239aff8
M
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"))))
ec1db901 432 "lua_decoder01,lua_p45,lua_p0,lua_div*18")
a239aff8
M
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"))))
ec1db901 439 "lua_decoder0,lua_p0,lua_div*22")
a239aff8
M
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"))))
ec1db901 446 "lua_decoder0,lua_p45,lua_p0,lua_div*22")
a239aff8
M
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"))))
ec1db901 598 "lua_decodern,lua_p0,lua_div*13")
a239aff8
M
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"))))
ec1db901 605 "lua_decoder01,lua_p45,lua_p0,lua_div*13")
a239aff8
M
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"))))
ec1db901 612 "lua_decodern,lua_p0,lua_div*23")
a239aff8
M
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"))))
ec1db901 619 "lua_decoder01,lua_p45,lua_p0,lua_div*23")
a239aff8
M
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"))))
ec1db901 626 "lua_decoder0,lua_p0,lua_div*47")
a239aff8
M
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"))))
ec1db901 633 "lua_decoder0,lua_p45,lua_p0,lua_div*47")
a239aff8
M
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"))))
ec1db901 640 "lua_decodern,lua_p0,lua_div*17")
a239aff8
M
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"))))
ec1db901 647 "lua_decoder01,lua_p45,lua_p0,lua_div*17")
a239aff8
M
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"))))
ec1db901 654 "lua_decodern,lua_p0,lua_div*30")
a239aff8
M
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"))))
ec1db901 661 "lua_decoder01,lua_p45,lua_p0,lua_div*30")
a239aff8
M
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"))))
ec1db901 668 "lua_decoder0,lua_p0,lua_div*56")
a239aff8
M
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"))))
ec1db901 675 "lua_decoder0,lua_p4p5,lua_p0,lua_div*56")
a239aff8
M
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")