PPCSchedule.td revision 31d157ae1ac2cd9c787dc3c1d28e64c682803844
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// 13def 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) 18def 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 25//===----------------------------------------------------------------------===// 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; 53def LdStGeneral : InstrItinClass; 54def LdStDSS : InstrItinClass; 55def LdStICBI : InstrItinClass; 56def LdStUX : InstrItinClass; 57def LdStLD : InstrItinClass; 58def LdStLDARX : InstrItinClass; 59def LdStLFD : InstrItinClass; 60def LdStLFDU : InstrItinClass; 61def LdStLHA : InstrItinClass; 62def LdStLMW : InstrItinClass; 63def LdStLVecX : InstrItinClass; 64def 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 105include "PPCScheduleG3.td" 106include "PPCSchedule440.td" 107include "PPCScheduleG4.td" 108include "PPCScheduleG4Plus.td" 109include "PPCScheduleG5.td" 110 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 153// dcbt LdStGeneral 154// dcbtst LdStGeneral 155// dcbz LdStDCBF 156// divd IntDivD 157// divdu IntDivD 158// divw IntDivW 159// divwu IntDivW 160// dss LdStDSS 161// dst LdStDSS 162// dstst LdStDSS 163// eciwx LdStGeneral 164// ecowx LdStGeneral 165// eieio LdStGeneral 166// 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 205// lbz LdStGeneral 206// lbzu LdStGeneral 207// lbzux LdStUX 208// lbzx LdStGeneral 209// 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 226// lhbrx LdStGeneral 227// lhz LdStGeneral 228// lhzu LdStGeneral 229// lhzux LdStUX 230// lhzx LdStGeneral 231// lmw LdStLMW 232// lswi LdStLMW 233// lswx LdStLMW 234// lvebx LdStLVecX 235// lvehx LdStLVecX 236// lvewx LdStLVecX 237// lvsl LdStLVecX 238// lvsr LdStLVecX 239// lvx LdStLVecX 240// lvxl LdStLVecX 241// lwa LdStLWA 242// lwarx LdStLWARX 243// lwaux LdStLHA 244// lwax LdStLHA 245// lwbrx LdStGeneral 246// lwz LdStGeneral 247// lwzu LdStGeneral 248// lwzux LdStUX 249// lwzx LdStGeneral 250// 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 310// stb LdStGeneral 311// stbu LdStGeneral 312// stbux LdStGeneral 313// stbx LdStGeneral 314// std LdStSTD 315// stdcx. LdStSTDCX 316// stdu LdStSTD 317// stdux LdStSTD 318// stdx LdStSTD 319// 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 333// stmw LdStLMW 334// stswi LdStLMW 335// stswx LdStLMW 336// stvebx LdStSTVEBX 337// stvehx LdStSTVEBX 338// stvewx LdStSTVEBX 339// stvx LdStSTVEBX 340// stvxl LdStSTVEBX 341// stw LdStGeneral 342// stwbrx LdStGeneral 343// stwcx. LdStSTWCX 344// stwu LdStGeneral 345// stwux LdStGeneral 346// stwx LdStGeneral 347// 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// 507