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