comparison lib/Target/PowerPC/PPCSchedule.td @ 0:95c75e76d11b

LLVM 3.4
author Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
date Thu, 12 Dec 2013 13:56:28 +0900
parents
children e4204d083e25
comparison
equal deleted inserted replaced
-1:000000000000 0:95c75e76d11b
1 //===-- PPCSchedule.td - PowerPC Scheduling Definitions ----*- tablegen -*-===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 //===----------------------------------------------------------------------===//
11 // Functional units across PowerPC chips sets
12 //
13 def BPU : FuncUnit; // Branch unit
14 def SLU : FuncUnit; // Store/load unit
15 def SRU : FuncUnit; // special register unit
16 def IU1 : FuncUnit; // integer unit 1 (simple)
17 def IU2 : FuncUnit; // integer unit 2 (complex)
18 def FPU1 : FuncUnit; // floating point unit 1
19 def FPU2 : FuncUnit; // floating point unit 2
20 def VPU : FuncUnit; // vector permutation unit
21 def VIU1 : FuncUnit; // vector integer unit 1 (simple)
22 def VIU2 : FuncUnit; // vector integer unit 2 (complex)
23 def VFPU : FuncUnit; // vector floating point unit
24
25 //===----------------------------------------------------------------------===//
26 // Instruction Itinerary classes used for PowerPC
27 //
28 def IntSimple : InstrItinClass;
29 def IntGeneral : InstrItinClass;
30 def IntCompare : InstrItinClass;
31 def IntDivD : InstrItinClass;
32 def IntDivW : InstrItinClass;
33 def IntMFFS : InstrItinClass;
34 def IntMFVSCR : InstrItinClass;
35 def IntMTFSB0 : InstrItinClass;
36 def IntMTSRD : InstrItinClass;
37 def IntMulHD : InstrItinClass;
38 def IntMulHW : InstrItinClass;
39 def IntMulHWU : InstrItinClass;
40 def IntMulLI : InstrItinClass;
41 def IntRFID : InstrItinClass;
42 def IntRotateD : InstrItinClass;
43 def IntRotateDI : InstrItinClass;
44 def IntRotate : InstrItinClass;
45 def IntShift : InstrItinClass;
46 def IntTrapD : InstrItinClass;
47 def IntTrapW : InstrItinClass;
48 def BrB : InstrItinClass;
49 def BrCR : InstrItinClass;
50 def BrMCR : InstrItinClass;
51 def BrMCRX : InstrItinClass;
52 def LdStDCBA : InstrItinClass;
53 def LdStDCBF : InstrItinClass;
54 def LdStDCBI : InstrItinClass;
55 def LdStLoad : InstrItinClass;
56 def LdStLoadUpd : InstrItinClass;
57 def LdStStore : InstrItinClass;
58 def LdStStoreUpd : InstrItinClass;
59 def LdStDSS : InstrItinClass;
60 def LdStICBI : InstrItinClass;
61 def LdStLD : InstrItinClass;
62 def LdStLDU : InstrItinClass;
63 def LdStLDARX : InstrItinClass;
64 def LdStLFD : InstrItinClass;
65 def LdStLFDU : InstrItinClass;
66 def LdStLHA : InstrItinClass;
67 def LdStLHAU : InstrItinClass;
68 def LdStLMW : InstrItinClass;
69 def LdStLVecX : InstrItinClass;
70 def LdStLWA : InstrItinClass;
71 def LdStLWARX : InstrItinClass;
72 def LdStSLBIA : InstrItinClass;
73 def LdStSLBIE : InstrItinClass;
74 def LdStSTD : InstrItinClass;
75 def LdStSTDCX : InstrItinClass;
76 def LdStSTDU : InstrItinClass;
77 def LdStSTFD : InstrItinClass;
78 def LdStSTFDU : InstrItinClass;
79 def LdStSTVEBX : InstrItinClass;
80 def LdStSTWCX : InstrItinClass;
81 def LdStSync : InstrItinClass;
82 def SprISYNC : InstrItinClass;
83 def SprMFSR : InstrItinClass;
84 def SprMTMSR : InstrItinClass;
85 def SprMTSR : InstrItinClass;
86 def SprTLBSYNC : InstrItinClass;
87 def SprMFCR : InstrItinClass;
88 def SprMFMSR : InstrItinClass;
89 def SprMFSPR : InstrItinClass;
90 def SprMFTB : InstrItinClass;
91 def SprMTSPR : InstrItinClass;
92 def SprMTSRIN : InstrItinClass;
93 def SprRFI : InstrItinClass;
94 def SprSC : InstrItinClass;
95 def FPGeneral : InstrItinClass;
96 def FPAddSub : InstrItinClass;
97 def FPCompare : InstrItinClass;
98 def FPDivD : InstrItinClass;
99 def FPDivS : InstrItinClass;
100 def FPFused : InstrItinClass;
101 def FPRes : InstrItinClass;
102 def FPSqrt : InstrItinClass;
103 def VecGeneral : InstrItinClass;
104 def VecFP : InstrItinClass;
105 def VecFPCompare : InstrItinClass;
106 def VecComplex : InstrItinClass;
107 def VecPerm : InstrItinClass;
108 def VecFPRound : InstrItinClass;
109 def VecVSL : InstrItinClass;
110 def VecVSR : InstrItinClass;
111 def SprMTMSRD : InstrItinClass;
112 def SprSLIE : InstrItinClass;
113 def SprSLBIE : InstrItinClass;
114 def SprSLBMTE : InstrItinClass;
115 def SprSLBMFEE : InstrItinClass;
116 def SprSLBIA : InstrItinClass;
117 def SprTLBIEL : InstrItinClass;
118 def SprTLBIE : InstrItinClass;
119
120 //===----------------------------------------------------------------------===//
121 // Processor instruction itineraries.
122
123 include "PPCScheduleG3.td"
124 include "PPCSchedule440.td"
125 include "PPCScheduleG4.td"
126 include "PPCScheduleG4Plus.td"
127 include "PPCScheduleG5.td"
128 include "PPCScheduleA2.td"
129 include "PPCScheduleE500mc.td"
130 include "PPCScheduleE5500.td"
131
132 //===----------------------------------------------------------------------===//
133 // Instruction to itinerary class map - When add new opcodes to the supported
134 // set, refer to the following table to determine which itinerary class the
135 // opcode belongs.
136 //
137 // opcode itinerary class
138 // ====== ===============
139 // add IntSimple
140 // addc IntGeneral
141 // adde IntGeneral
142 // addi IntSimple
143 // addic IntGeneral
144 // addic. IntGeneral
145 // addis IntSimple
146 // addme IntGeneral
147 // addze IntGeneral
148 // and IntSimple
149 // andc IntSimple
150 // andi. IntGeneral
151 // andis. IntGeneral
152 // b BrB
153 // bc BrB
154 // bcctr BrB
155 // bclr BrB
156 // cmp IntCompare
157 // cmpi IntCompare
158 // cmpl IntCompare
159 // cmpli IntCompare
160 // cntlzd IntRotateD
161 // cntlzw IntGeneral
162 // crand BrCR
163 // crandc BrCR
164 // creqv BrCR
165 // crnand BrCR
166 // crnor BrCR
167 // cror BrCR
168 // crorc BrCR
169 // crxor BrCR
170 // dcba LdStDCBA
171 // dcbf LdStDCBF
172 // dcbi LdStDCBI
173 // dcbst LdStDCBF
174 // dcbt LdStLoad
175 // dcbtst LdStLoad
176 // dcbz LdStDCBF
177 // divd IntDivD
178 // divdu IntDivD
179 // divw IntDivW
180 // divwu IntDivW
181 // dss LdStDSS
182 // dst LdStDSS
183 // dstst LdStDSS
184 // eciwx LdStLoad
185 // ecowx LdStLoad
186 // eieio LdStLoad
187 // eqv IntSimple
188 // extsb IntSimple
189 // extsh IntSimple
190 // extsw IntSimple
191 // fabs FPGeneral
192 // fadd FPAddSub
193 // fadds FPGeneral
194 // fcfid FPGeneral
195 // fcmpo FPCompare
196 // fcmpu FPCompare
197 // fctid FPGeneral
198 // fctidz FPGeneral
199 // fctiw FPGeneral
200 // fctiwz FPGeneral
201 // fdiv FPDivD
202 // fdivs FPDivS
203 // fmadd FPFused
204 // fmadds FPGeneral
205 // fmr FPGeneral
206 // fmsub FPFused
207 // fmsubs FPGeneral
208 // fmul FPFused
209 // fmuls FPGeneral
210 // fnabs FPGeneral
211 // fneg FPGeneral
212 // fnmadd FPFused
213 // fnmadds FPGeneral
214 // fnmsub FPFused
215 // fnmsubs FPGeneral
216 // fres FPRes
217 // frsp FPGeneral
218 // frsqrte FPGeneral
219 // fsel FPGeneral
220 // fsqrt FPSqrt
221 // fsqrts FPSqrt
222 // fsub FPAddSub
223 // fsubs FPGeneral
224 // icbi LdStICBI
225 // isync SprISYNC
226 // lbz LdStLoad
227 // lbzu LdStLoadUpd
228 // lbzux LdStLoadUpd
229 // lbzx LdStLoad
230 // ld LdStLD
231 // ldarx LdStLDARX
232 // ldu LdStLDU
233 // ldux LdStLDU
234 // ldx LdStLD
235 // lfd LdStLFD
236 // lfdu LdStLFDU
237 // lfdux LdStLFDU
238 // lfdx LdStLFD
239 // lfs LdStLFD
240 // lfsu LdStLFDU
241 // lfsux LdStLFDU
242 // lfsx LdStLFD
243 // lha LdStLHA
244 // lhau LdStLHAU
245 // lhaux LdStLHAU
246 // lhax LdStLHA
247 // lhbrx LdStLoad
248 // lhz LdStLoad
249 // lhzu LdStLoadUpd
250 // lhzux LdStLoadUpd
251 // lhzx LdStLoad
252 // lmw LdStLMW
253 // lswi LdStLMW
254 // lswx LdStLMW
255 // lvebx LdStLVecX
256 // lvehx LdStLVecX
257 // lvewx LdStLVecX
258 // lvsl LdStLVecX
259 // lvsr LdStLVecX
260 // lvx LdStLVecX
261 // lvxl LdStLVecX
262 // lwa LdStLWA
263 // lwarx LdStLWARX
264 // lwaux LdStLHAU
265 // lwax LdStLHA
266 // lwbrx LdStLoad
267 // lwz LdStLoad
268 // lwzu LdStLoadUpd
269 // lwzux LdStLoadUpd
270 // lwzx LdStLoad
271 // mcrf BrMCR
272 // mcrfs FPGeneral
273 // mcrxr BrMCRX
274 // mfcr SprMFCR
275 // mffs IntMFFS
276 // mfmsr SprMFMSR
277 // mfspr SprMFSPR
278 // mfsr SprMFSR
279 // mfsrin SprMFSR
280 // mftb SprMFTB
281 // mfvscr IntMFVSCR
282 // mtcrf BrMCRX
283 // mtfsb0 IntMTFSB0
284 // mtfsb1 IntMTFSB0
285 // mtfsf IntMTFSB0
286 // mtfsfi IntMTFSB0
287 // mtmsr SprMTMSR
288 // mtmsrd LdStLD
289 // mtspr SprMTSPR
290 // mtsr SprMTSR
291 // mtsrd IntMTSRD
292 // mtsrdin IntMTSRD
293 // mtsrin SprMTSRIN
294 // mtvscr IntMFVSCR
295 // mulhd IntMulHD
296 // mulhdu IntMulHD
297 // mulhw IntMulHW
298 // mulhwu IntMulHWU
299 // mulld IntMulHD
300 // mulli IntMulLI
301 // mullw IntMulHW
302 // nand IntSimple
303 // neg IntSimple
304 // nor IntSimple
305 // or IntSimple
306 // orc IntSimple
307 // ori IntSimple
308 // oris IntSimple
309 // rfi SprRFI
310 // rfid IntRFID
311 // rldcl IntRotateD
312 // rldcr IntRotateD
313 // rldic IntRotateDI
314 // rldicl IntRotateDI
315 // rldicr IntRotateDI
316 // rldimi IntRotateDI
317 // rlwimi IntRotate
318 // rlwinm IntGeneral
319 // rlwnm IntGeneral
320 // sc SprSC
321 // slbia LdStSLBIA
322 // slbie LdStSLBIE
323 // sld IntRotateD
324 // slw IntGeneral
325 // srad IntRotateD
326 // sradi IntRotateDI
327 // sraw IntShift
328 // srawi IntShift
329 // srd IntRotateD
330 // srw IntGeneral
331 // stb LdStStore
332 // stbu LdStStoreUpd
333 // stbux LdStStoreUpd
334 // stbx LdStStore
335 // std LdStSTD
336 // stdcx. LdStSTDCX
337 // stdu LdStSTDU
338 // stdux LdStSTDU
339 // stdx LdStSTD
340 // stfd LdStSTFD
341 // stfdu LdStSTFDU
342 // stfdux LdStSTFDU
343 // stfdx LdStSTFD
344 // stfiwx LdStSTFD
345 // stfs LdStSTFD
346 // stfsu LdStSTFDU
347 // stfsux LdStSTFDU
348 // stfsx LdStSTFD
349 // sth LdStStore
350 // sthbrx LdStStore
351 // sthu LdStStoreUpd
352 // sthux LdStStoreUpd
353 // sthx LdStStore
354 // stmw LdStLMW
355 // stswi LdStLMW
356 // stswx LdStLMW
357 // stvebx LdStSTVEBX
358 // stvehx LdStSTVEBX
359 // stvewx LdStSTVEBX
360 // stvx LdStSTVEBX
361 // stvxl LdStSTVEBX
362 // stw LdStStore
363 // stwbrx LdStStore
364 // stwcx. LdStSTWCX
365 // stwu LdStStoreUpd
366 // stwux LdStStoreUpd
367 // stwx LdStStore
368 // subf IntGeneral
369 // subfc IntGeneral
370 // subfe IntGeneral
371 // subfic IntGeneral
372 // subfme IntGeneral
373 // subfze IntGeneral
374 // sync LdStSync
375 // td IntTrapD
376 // tdi IntTrapD
377 // tlbia LdStSLBIA
378 // tlbie LdStDCBF
379 // tlbsync SprTLBSYNC
380 // tw IntTrapW
381 // twi IntTrapW
382 // vaddcuw VecGeneral
383 // vaddfp VecFP
384 // vaddsbs VecGeneral
385 // vaddshs VecGeneral
386 // vaddsws VecGeneral
387 // vaddubm VecGeneral
388 // vaddubs VecGeneral
389 // vadduhm VecGeneral
390 // vadduhs VecGeneral
391 // vadduwm VecGeneral
392 // vadduws VecGeneral
393 // vand VecGeneral
394 // vandc VecGeneral
395 // vavgsb VecGeneral
396 // vavgsh VecGeneral
397 // vavgsw VecGeneral
398 // vavgub VecGeneral
399 // vavguh VecGeneral
400 // vavguw VecGeneral
401 // vcfsx VecFP
402 // vcfux VecFP
403 // vcmpbfp VecFPCompare
404 // vcmpeqfp VecFPCompare
405 // vcmpequb VecGeneral
406 // vcmpequh VecGeneral
407 // vcmpequw VecGeneral
408 // vcmpgefp VecFPCompare
409 // vcmpgtfp VecFPCompare
410 // vcmpgtsb VecGeneral
411 // vcmpgtsh VecGeneral
412 // vcmpgtsw VecGeneral
413 // vcmpgtub VecGeneral
414 // vcmpgtuh VecGeneral
415 // vcmpgtuw VecGeneral
416 // vctsxs VecFP
417 // vctuxs VecFP
418 // vexptefp VecFP
419 // vlogefp VecFP
420 // vmaddfp VecFP
421 // vmaxfp VecFPCompare
422 // vmaxsb VecGeneral
423 // vmaxsh VecGeneral
424 // vmaxsw VecGeneral
425 // vmaxub VecGeneral
426 // vmaxuh VecGeneral
427 // vmaxuw VecGeneral
428 // vmhaddshs VecComplex
429 // vmhraddshs VecComplex
430 // vminfp VecFPCompare
431 // vminsb VecGeneral
432 // vminsh VecGeneral
433 // vminsw VecGeneral
434 // vminub VecGeneral
435 // vminuh VecGeneral
436 // vminuw VecGeneral
437 // vmladduhm VecComplex
438 // vmrghb VecPerm
439 // vmrghh VecPerm
440 // vmrghw VecPerm
441 // vmrglb VecPerm
442 // vmrglh VecPerm
443 // vmrglw VecPerm
444 // vmsubfp VecFP
445 // vmsummbm VecComplex
446 // vmsumshm VecComplex
447 // vmsumshs VecComplex
448 // vmsumubm VecComplex
449 // vmsumuhm VecComplex
450 // vmsumuhs VecComplex
451 // vmulesb VecComplex
452 // vmulesh VecComplex
453 // vmuleub VecComplex
454 // vmuleuh VecComplex
455 // vmulosb VecComplex
456 // vmulosh VecComplex
457 // vmuloub VecComplex
458 // vmulouh VecComplex
459 // vnor VecGeneral
460 // vor VecGeneral
461 // vperm VecPerm
462 // vpkpx VecPerm
463 // vpkshss VecPerm
464 // vpkshus VecPerm
465 // vpkswss VecPerm
466 // vpkswus VecPerm
467 // vpkuhum VecPerm
468 // vpkuhus VecPerm
469 // vpkuwum VecPerm
470 // vpkuwus VecPerm
471 // vrefp VecFPRound
472 // vrfim VecFPRound
473 // vrfin VecFPRound
474 // vrfip VecFPRound
475 // vrfiz VecFPRound
476 // vrlb VecGeneral
477 // vrlh VecGeneral
478 // vrlw VecGeneral
479 // vrsqrtefp VecFP
480 // vsel VecGeneral
481 // vsl VecVSL
482 // vslb VecGeneral
483 // vsldoi VecPerm
484 // vslh VecGeneral
485 // vslo VecPerm
486 // vslw VecGeneral
487 // vspltb VecPerm
488 // vsplth VecPerm
489 // vspltisb VecPerm
490 // vspltish VecPerm
491 // vspltisw VecPerm
492 // vspltw VecPerm
493 // vsr VecVSR
494 // vsrab VecGeneral
495 // vsrah VecGeneral
496 // vsraw VecGeneral
497 // vsrb VecGeneral
498 // vsrh VecGeneral
499 // vsro VecPerm
500 // vsrw VecGeneral
501 // vsubcuw VecGeneral
502 // vsubfp VecFP
503 // vsubsbs VecGeneral
504 // vsubshs VecGeneral
505 // vsubsws VecGeneral
506 // vsububm VecGeneral
507 // vsububs VecGeneral
508 // vsubuhm VecGeneral
509 // vsubuhs VecGeneral
510 // vsubuwm VecGeneral
511 // vsubuws VecGeneral
512 // vsum2sws VecComplex
513 // vsum4sbs VecComplex
514 // vsum4shs VecComplex
515 // vsum4ubs VecComplex
516 // vsumsws VecComplex
517 // vupkhpx VecPerm
518 // vupkhsb VecPerm
519 // vupkhsh VecPerm
520 // vupklpx VecPerm
521 // vupklsb VecPerm
522 // vupklsh VecPerm
523 // vxor VecGeneral
524 // xor IntSimple
525 // xori IntSimple
526 // xoris IntSimple
527 //