blob: 69e435bbfd8584e654db683ca733f75813851bc8 [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"
Hal Finkelc6d08f12011-10-17 04:03:49 +0000106include "PPCSchedule440.td"
Jim Laskey53842142005-10-19 19:51:16 +0000107include "PPCScheduleG4.td"
108include "PPCScheduleG4Plus.td"
109include "PPCScheduleG5.td"
Jim Laskey076866c2005-10-18 16:23:40 +0000110
111//===----------------------------------------------------------------------===//
112// Instruction to itinerary class map - When add new opcodes to the supported
113// set, refer to the following table to determine which itinerary class the
114// opcode belongs.
115//
116// opcode itinerary class
117// ====== ===============
118// add IntGeneral
119// addc IntGeneral
120// adde IntGeneral
121// addi IntGeneral
122// addic IntGeneral
123// addic. IntGeneral
124// addis IntGeneral
125// addme IntGeneral
126// addze IntGeneral
127// and IntGeneral
128// andc IntGeneral
129// andi. IntGeneral
130// andis. IntGeneral
131// b BrB
132// bc BrB
133// bcctr BrB
134// bclr BrB
135// cmp IntCompare
136// cmpi IntCompare
137// cmpl IntCompare
138// cmpli IntCompare
139// cntlzd IntRotateD
140// cntlzw IntGeneral
141// crand BrCR
142// crandc BrCR
143// creqv BrCR
144// crnand BrCR
145// crnor BrCR
146// cror BrCR
147// crorc BrCR
148// crxor BrCR
149// dcba LdStDCBA
150// dcbf LdStDCBF
151// dcbi LdStDCBI
152// dcbst LdStDCBF
Jim Laskey53842142005-10-19 19:51:16 +0000153// dcbt LdStGeneral
154// dcbtst LdStGeneral
Jim Laskey076866c2005-10-18 16:23:40 +0000155// dcbz LdStDCBF
156// divd IntDivD
157// divdu IntDivD
158// divw IntDivW
159// divwu IntDivW
160// dss LdStDSS
161// dst LdStDSS
162// dstst LdStDSS
Jim Laskey53842142005-10-19 19:51:16 +0000163// eciwx LdStGeneral
164// ecowx LdStGeneral
165// eieio LdStGeneral
Jim Laskey076866c2005-10-18 16:23:40 +0000166// eqv IntGeneral
167// extsb IntGeneral
168// extsh IntGeneral
169// extsw IntRotateD
170// fabs FPGeneral
171// fadd FPGeneral
172// fadds FPGeneral
173// fcfid FPGeneral
174// fcmpo FPCompare
175// fcmpu FPCompare
176// fctid FPGeneral
177// fctidz FPGeneral
178// fctiw FPGeneral
179// fctiwz FPGeneral
180// fdiv FPDivD
181// fdivs FPDivS
182// fmadd FPFused
183// fmadds FPGeneral
184// fmr FPGeneral
185// fmsub FPFused
186// fmsubs FPGeneral
187// fmul FPFused
188// fmuls FPGeneral
189// fnabs FPGeneral
190// fneg FPGeneral
191// fnmadd FPFused
192// fnmadds FPGeneral
193// fnmsub FPFused
194// fnmsubs FPGeneral
195// fres FPRes
196// frsp FPGeneral
197// frsqrte FPGeneral
198// fsel FPGeneral
199// fsqrt FPSqrt
200// fsqrts FPSqrt
201// fsub FPGeneral
202// fsubs FPGeneral
203// icbi LdStICBI
204// isync SprISYNC
Jim Laskey53842142005-10-19 19:51:16 +0000205// lbz LdStGeneral
206// lbzu LdStGeneral
207// lbzux LdStUX
208// lbzx LdStGeneral
Jim Laskey076866c2005-10-18 16:23:40 +0000209// ld LdStLD
210// ldarx LdStLDARX
211// ldu LdStLD
212// ldux LdStLD
213// ldx LdStLD
214// lfd LdStLFD
215// lfdu LdStLFDU
216// lfdux LdStLFDU
217// lfdx LdStLFDU
218// lfs LdStLFDU
219// lfsu LdStLFDU
220// lfsux LdStLFDU
221// lfsx LdStLFDU
222// lha LdStLHA
223// lhau LdStLHA
224// lhaux LdStLHA
225// lhax LdStLHA
Jim Laskey53842142005-10-19 19:51:16 +0000226// lhbrx LdStGeneral
227// lhz LdStGeneral
228// lhzu LdStGeneral
229// lhzux LdStUX
230// lhzx LdStGeneral
Jim Laskey076866c2005-10-18 16:23:40 +0000231// lmw LdStLMW
232// lswi LdStLMW
233// lswx LdStLMW
Jim Laskey53842142005-10-19 19:51:16 +0000234// lvebx LdStLVecX
235// lvehx LdStLVecX
236// lvewx LdStLVecX
237// lvsl LdStLVecX
238// lvsr LdStLVecX
239// lvx LdStLVecX
240// lvxl LdStLVecX
Jim Laskey076866c2005-10-18 16:23:40 +0000241// lwa LdStLWA
242// lwarx LdStLWARX
243// lwaux LdStLHA
244// lwax LdStLHA
Jim Laskey53842142005-10-19 19:51:16 +0000245// lwbrx LdStGeneral
246// lwz LdStGeneral
247// lwzu LdStGeneral
248// lwzux LdStUX
249// lwzx LdStGeneral
Jim Laskey076866c2005-10-18 16:23:40 +0000250// mcrf BrMCR
251// mcrfs FPGeneral
252// mcrxr BrMCRX
253// mfcr SprMFCR
254// mffs IntMFFS
255// mfmsr SprMFMSR
256// mfspr SprMFSPR
257// mfsr SprMFSR
258// mfsrin SprMFSR
259// mftb SprMFTB
260// mfvscr IntMFVSCR
261// mtcrf BrMCRX
262// mtfsb0 IntMTFSB0
263// mtfsb1 IntMTFSB0
264// mtfsf IntMTFSB0
265// mtfsfi IntMTFSB0
266// mtmsr SprMTMSR
267// mtmsrd LdStLD
268// mtspr SprMTSPR
269// mtsr SprMTSR
270// mtsrd IntMTSRD
271// mtsrdin IntMTSRD
272// mtsrin SprMTSRIN
273// mtvscr IntMFVSCR
274// mulhd IntMulHD
275// mulhdu IntMulHD
276// mulhw IntMulHW
277// mulhwu IntMulHWU
278// mulld IntMulHD
279// mulli IntMulLI
280// mullw IntMulHW
281// nand IntGeneral
282// neg IntGeneral
283// nor IntGeneral
284// or IntGeneral
285// orc IntGeneral
286// ori IntGeneral
287// oris IntGeneral
288// rfi SprRFI
289// rfid IntRFID
290// rldcl IntRotateD
291// rldcr IntRotateD
292// rldic IntRotateD
293// rldicl IntRotateD
294// rldicr IntRotateD
295// rldimi IntRotateD
296// rlwimi IntRotate
297// rlwinm IntGeneral
298// rlwnm IntGeneral
299// sc SprSC
300// slbia LdStSLBIA
301// slbie LdStSLBIE
302// sld IntRotateD
303// slw IntGeneral
304// srad IntRotateD
305// sradi IntRotateD
306// sraw IntShift
307// srawi IntShift
308// srd IntRotateD
309// srw IntGeneral
Jim Laskey53842142005-10-19 19:51:16 +0000310// stb LdStGeneral
311// stbu LdStGeneral
312// stbux LdStGeneral
313// stbx LdStGeneral
Jim Laskey076866c2005-10-18 16:23:40 +0000314// std LdStSTD
315// stdcx. LdStSTDCX
316// stdu LdStSTD
317// stdux LdStSTD
318// stdx LdStSTD
Jim Laskey53842142005-10-19 19:51:16 +0000319// stfd LdStUX
320// stfdu LdStUX
321// stfdux LdStUX
322// stfdx LdStUX
323// stfiwx LdStUX
324// stfs LdStUX
325// stfsu LdStUX
326// stfsux LdStUX
327// stfsx LdStUX
328// sth LdStGeneral
329// sthbrx LdStGeneral
330// sthu LdStGeneral
331// sthux LdStGeneral
332// sthx LdStGeneral
Jim Laskey076866c2005-10-18 16:23:40 +0000333// stmw LdStLMW
334// stswi LdStLMW
335// stswx LdStLMW
336// stvebx LdStSTVEBX
337// stvehx LdStSTVEBX
338// stvewx LdStSTVEBX
339// stvx LdStSTVEBX
340// stvxl LdStSTVEBX
Jim Laskey53842142005-10-19 19:51:16 +0000341// stw LdStGeneral
342// stwbrx LdStGeneral
Jim Laskey076866c2005-10-18 16:23:40 +0000343// stwcx. LdStSTWCX
Jim Laskey53842142005-10-19 19:51:16 +0000344// stwu LdStGeneral
345// stwux LdStGeneral
346// stwx LdStGeneral
Jim Laskey076866c2005-10-18 16:23:40 +0000347// subf IntGeneral
348// subfc IntGeneral
349// subfe IntGeneral
350// subfic IntGeneral
351// subfme IntGeneral
352// subfze IntGeneral
353// sync LdStSync
354// td IntTrapD
355// tdi IntTrapD
356// tlbia LdStSLBIA
357// tlbie LdStDCBF
358// tlbsync SprTLBSYNC
359// tw IntTrapW
360// twi IntTrapW
361// vaddcuw VecGeneral
362// vaddfp VecFP
363// vaddsbs VecGeneral
364// vaddshs VecGeneral
365// vaddsws VecGeneral
366// vaddubm VecGeneral
367// vaddubs VecGeneral
368// vadduhm VecGeneral
369// vadduhs VecGeneral
370// vadduwm VecGeneral
371// vadduws VecGeneral
372// vand VecGeneral
373// vandc VecGeneral
374// vavgsb VecGeneral
375// vavgsh VecGeneral
376// vavgsw VecGeneral
377// vavgub VecGeneral
378// vavguh VecGeneral
379// vavguw VecGeneral
380// vcfsx VecFP
381// vcfux VecFP
382// vcmpbfp VecFPCompare
383// vcmpeqfp VecFPCompare
384// vcmpequb VecGeneral
385// vcmpequh VecGeneral
386// vcmpequw VecGeneral
387// vcmpgefp VecFPCompare
388// vcmpgtfp VecFPCompare
389// vcmpgtsb VecGeneral
390// vcmpgtsh VecGeneral
391// vcmpgtsw VecGeneral
392// vcmpgtub VecGeneral
393// vcmpgtuh VecGeneral
394// vcmpgtuw VecGeneral
395// vctsxs VecFP
396// vctuxs VecFP
397// vexptefp VecFP
398// vlogefp VecFP
399// vmaddfp VecFP
400// vmaxfp VecFPCompare
401// vmaxsb VecGeneral
402// vmaxsh VecGeneral
403// vmaxsw VecGeneral
404// vmaxub VecGeneral
405// vmaxuh VecGeneral
406// vmaxuw VecGeneral
407// vmhaddshs VecComplex
408// vmhraddshs VecComplex
409// vminfp VecFPCompare
410// vminsb VecGeneral
411// vminsh VecGeneral
412// vminsw VecGeneral
413// vminub VecGeneral
414// vminuh VecGeneral
415// vminuw VecGeneral
416// vmladduhm VecComplex
417// vmrghb VecPerm
418// vmrghh VecPerm
419// vmrghw VecPerm
420// vmrglb VecPerm
421// vmrglh VecPerm
422// vmrglw VecPerm
423// vmsubfp VecFP
424// vmsummbm VecComplex
425// vmsumshm VecComplex
426// vmsumshs VecComplex
427// vmsumubm VecComplex
428// vmsumuhm VecComplex
429// vmsumuhs VecComplex
430// vmulesb VecComplex
431// vmulesh VecComplex
432// vmuleub VecComplex
433// vmuleuh VecComplex
434// vmulosb VecComplex
435// vmulosh VecComplex
436// vmuloub VecComplex
437// vmulouh VecComplex
438// vnor VecGeneral
439// vor VecGeneral
440// vperm VecPerm
441// vpkpx VecPerm
442// vpkshss VecPerm
443// vpkshus VecPerm
444// vpkswss VecPerm
445// vpkswus VecPerm
446// vpkuhum VecPerm
447// vpkuhus VecPerm
448// vpkuwum VecPerm
449// vpkuwus VecPerm
450// vrefp VecFPRound
451// vrfim VecFPRound
452// vrfin VecFPRound
453// vrfip VecFPRound
454// vrfiz VecFPRound
455// vrlb VecGeneral
456// vrlh VecGeneral
457// vrlw VecGeneral
458// vrsqrtefp VecFP
459// vsel VecGeneral
460// vsl VecVSL
461// vslb VecGeneral
462// vsldoi VecPerm
463// vslh VecGeneral
464// vslo VecPerm
465// vslw VecGeneral
466// vspltb VecPerm
467// vsplth VecPerm
468// vspltisb VecPerm
469// vspltish VecPerm
470// vspltisw VecPerm
471// vspltw VecPerm
472// vsr VecVSR
473// vsrab VecGeneral
474// vsrah VecGeneral
475// vsraw VecGeneral
476// vsrb VecGeneral
477// vsrh VecGeneral
478// vsro VecPerm
479// vsrw VecGeneral
480// vsubcuw VecGeneral
481// vsubfp VecFP
482// vsubsbs VecGeneral
483// vsubshs VecGeneral
484// vsubsws VecGeneral
485// vsububm VecGeneral
486// vsububs VecGeneral
487// vsubuhm VecGeneral
488// vsubuhs VecGeneral
489// vsubuwm VecGeneral
490// vsubuws VecGeneral
491// vsum2sws VecComplex
492// vsum4sbs VecComplex
493// vsum4shs VecComplex
494// vsum4ubs VecComplex
495// vsumsws VecComplex
496// vupkhpx VecPerm
497// vupkhsb VecPerm
498// vupkhsh VecPerm
499// vupklpx VecPerm
500// vupklsb VecPerm
501// vupklsh VecPerm
502// vxor VecGeneral
503// xor IntGeneral
504// xori IntGeneral
505// xoris IntGeneral
506//