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