PPCSchedule.td revision 263508
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 IntSimple : InstrItinClass; 29def IntGeneral : InstrItinClass; 30def IntCompare : InstrItinClass; 31def IntDivD : InstrItinClass; 32def IntDivW : InstrItinClass; 33def IntMFFS : InstrItinClass; 34def IntMFVSCR : InstrItinClass; 35def IntMTFSB0 : InstrItinClass; 36def IntMTSRD : InstrItinClass; 37def IntMulHD : InstrItinClass; 38def IntMulHW : InstrItinClass; 39def IntMulHWU : InstrItinClass; 40def IntMulLI : InstrItinClass; 41def IntRFID : InstrItinClass; 42def IntRotateD : InstrItinClass; 43def IntRotateDI : InstrItinClass; 44def IntRotate : InstrItinClass; 45def IntShift : InstrItinClass; 46def IntTrapD : InstrItinClass; 47def IntTrapW : InstrItinClass; 48def BrB : InstrItinClass; 49def BrCR : InstrItinClass; 50def BrMCR : InstrItinClass; 51def BrMCRX : InstrItinClass; 52def LdStDCBA : InstrItinClass; 53def LdStDCBF : InstrItinClass; 54def LdStDCBI : InstrItinClass; 55def LdStLoad : InstrItinClass; 56def LdStLoadUpd : InstrItinClass; 57def LdStStore : InstrItinClass; 58def LdStStoreUpd : InstrItinClass; 59def LdStDSS : InstrItinClass; 60def LdStICBI : InstrItinClass; 61def LdStLD : InstrItinClass; 62def LdStLDU : InstrItinClass; 63def LdStLDARX : InstrItinClass; 64def LdStLFD : InstrItinClass; 65def LdStLFDU : InstrItinClass; 66def LdStLHA : InstrItinClass; 67def LdStLHAU : InstrItinClass; 68def LdStLMW : InstrItinClass; 69def LdStLVecX : InstrItinClass; 70def LdStLWA : InstrItinClass; 71def LdStLWARX : InstrItinClass; 72def LdStSLBIA : InstrItinClass; 73def LdStSLBIE : InstrItinClass; 74def LdStSTD : InstrItinClass; 75def LdStSTDCX : InstrItinClass; 76def LdStSTDU : InstrItinClass; 77def LdStSTFD : InstrItinClass; 78def LdStSTFDU : InstrItinClass; 79def LdStSTVEBX : InstrItinClass; 80def LdStSTWCX : InstrItinClass; 81def LdStSync : InstrItinClass; 82def SprISYNC : InstrItinClass; 83def SprMFSR : InstrItinClass; 84def SprMTMSR : InstrItinClass; 85def SprMTSR : InstrItinClass; 86def SprTLBSYNC : InstrItinClass; 87def SprMFCR : InstrItinClass; 88def SprMFMSR : InstrItinClass; 89def SprMFSPR : InstrItinClass; 90def SprMFTB : InstrItinClass; 91def SprMTSPR : InstrItinClass; 92def SprMTSRIN : InstrItinClass; 93def SprRFI : InstrItinClass; 94def SprSC : InstrItinClass; 95def FPGeneral : InstrItinClass; 96def FPAddSub : InstrItinClass; 97def FPCompare : InstrItinClass; 98def FPDivD : InstrItinClass; 99def FPDivS : InstrItinClass; 100def FPFused : InstrItinClass; 101def FPRes : InstrItinClass; 102def FPSqrt : InstrItinClass; 103def VecGeneral : InstrItinClass; 104def VecFP : InstrItinClass; 105def VecFPCompare : InstrItinClass; 106def VecComplex : InstrItinClass; 107def VecPerm : InstrItinClass; 108def VecFPRound : InstrItinClass; 109def VecVSL : InstrItinClass; 110def VecVSR : InstrItinClass; 111def SprMTMSRD : InstrItinClass; 112def SprSLIE : InstrItinClass; 113def SprSLBIE : InstrItinClass; 114def SprSLBMTE : InstrItinClass; 115def SprSLBMFEE : InstrItinClass; 116def SprSLBIA : InstrItinClass; 117def SprTLBIEL : InstrItinClass; 118def SprTLBIE : InstrItinClass; 119 120//===----------------------------------------------------------------------===// 121// Processor instruction itineraries. 122 123include "PPCScheduleG3.td" 124include "PPCSchedule440.td" 125include "PPCScheduleG4.td" 126include "PPCScheduleG4Plus.td" 127include "PPCScheduleG5.td" 128include "PPCScheduleA2.td" 129include "PPCScheduleE500mc.td" 130include "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// 528