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// Instruction Itinerary classes used for PowerPC 12// 13def IIC_IntSimple : InstrItinClass; 14def IIC_IntGeneral : InstrItinClass; 15def IIC_IntCompare : InstrItinClass; 16def IIC_IntDivD : InstrItinClass; 17def IIC_IntDivW : InstrItinClass; 18def IIC_IntMFFS : InstrItinClass; 19def IIC_IntMFVSCR : InstrItinClass; 20def IIC_IntMTFSB0 : InstrItinClass; 21def IIC_IntMTSRD : InstrItinClass; 22def IIC_IntMulHD : InstrItinClass; 23def IIC_IntMulHW : InstrItinClass; 24def IIC_IntMulHWU : InstrItinClass; 25def IIC_IntMulLI : InstrItinClass; 26def IIC_IntRFID : InstrItinClass; 27def IIC_IntRotateD : InstrItinClass; 28def IIC_IntRotateDI : InstrItinClass; 29def IIC_IntRotate : InstrItinClass; 30def IIC_IntShift : InstrItinClass; 31def IIC_IntTrapD : InstrItinClass; 32def IIC_IntTrapW : InstrItinClass; 33def IIC_BrB : InstrItinClass; 34def IIC_BrCR : InstrItinClass; 35def IIC_BrMCR : InstrItinClass; 36def IIC_BrMCRX : InstrItinClass; 37def IIC_LdStDCBA : InstrItinClass; 38def IIC_LdStDCBF : InstrItinClass; 39def IIC_LdStDCBI : InstrItinClass; 40def IIC_LdStLoad : InstrItinClass; 41def IIC_LdStLoadUpd : InstrItinClass; 42def IIC_LdStLoadUpdX : InstrItinClass; 43def IIC_LdStStore : InstrItinClass; 44def IIC_LdStStoreUpd : InstrItinClass; 45def IIC_LdStDSS : InstrItinClass; 46def IIC_LdStICBI : InstrItinClass; 47def IIC_LdStLD : InstrItinClass; 48def IIC_LdStLDU : InstrItinClass; 49def IIC_LdStLDUX : InstrItinClass; 50def IIC_LdStLDARX : InstrItinClass; 51def IIC_LdStLFD : InstrItinClass; 52def IIC_LdStLFDU : InstrItinClass; 53def IIC_LdStLFDUX : InstrItinClass; 54def IIC_LdStLHA : InstrItinClass; 55def IIC_LdStLHAU : InstrItinClass; 56def IIC_LdStLHAUX : InstrItinClass; 57def IIC_LdStLMW : InstrItinClass; 58def IIC_LdStLVecX : InstrItinClass; 59def IIC_LdStLWA : InstrItinClass; 60def IIC_LdStLWARX : InstrItinClass; 61def IIC_LdStSLBIA : InstrItinClass; 62def IIC_LdStSLBIE : InstrItinClass; 63def IIC_LdStSTD : InstrItinClass; 64def IIC_LdStSTDCX : InstrItinClass; 65def IIC_LdStSTDU : InstrItinClass; 66def IIC_LdStSTDUX : InstrItinClass; 67def IIC_LdStSTFD : InstrItinClass; 68def IIC_LdStSTFDU : InstrItinClass; 69def IIC_LdStSTVEBX : InstrItinClass; 70def IIC_LdStSTWCX : InstrItinClass; 71def IIC_LdStSync : InstrItinClass; 72def IIC_SprISYNC : InstrItinClass; 73def IIC_SprMFSR : InstrItinClass; 74def IIC_SprMTMSR : InstrItinClass; 75def IIC_SprMTSR : InstrItinClass; 76def IIC_SprTLBSYNC : InstrItinClass; 77def IIC_SprMFCR : InstrItinClass; 78def IIC_SprMFCRF : InstrItinClass; 79def IIC_SprMFMSR : InstrItinClass; 80def IIC_SprMFSPR : InstrItinClass; 81def IIC_SprMFTB : InstrItinClass; 82def IIC_SprMTSPR : InstrItinClass; 83def IIC_SprMTSRIN : InstrItinClass; 84def IIC_SprRFI : InstrItinClass; 85def IIC_SprSC : InstrItinClass; 86def IIC_FPGeneral : InstrItinClass; 87def IIC_FPAddSub : InstrItinClass; 88def IIC_FPCompare : InstrItinClass; 89def IIC_FPDivD : InstrItinClass; 90def IIC_FPDivS : InstrItinClass; 91def IIC_FPFused : InstrItinClass; 92def IIC_FPRes : InstrItinClass; 93def IIC_FPSqrtD : InstrItinClass; 94def IIC_FPSqrtS : InstrItinClass; 95def IIC_VecGeneral : InstrItinClass; 96def IIC_VecFP : InstrItinClass; 97def IIC_VecFPCompare : InstrItinClass; 98def IIC_VecComplex : InstrItinClass; 99def IIC_VecPerm : InstrItinClass; 100def IIC_VecFPRound : InstrItinClass; 101def IIC_VecVSL : InstrItinClass; 102def IIC_VecVSR : InstrItinClass; 103def IIC_SprMTMSRD : InstrItinClass; 104def IIC_SprSLIE : InstrItinClass; 105def IIC_SprSLBIE : InstrItinClass; 106def IIC_SprSLBMTE : InstrItinClass; 107def IIC_SprSLBMFEE : InstrItinClass; 108def IIC_SprSLBIA : InstrItinClass; 109def IIC_SprTLBIEL : InstrItinClass; 110def IIC_SprTLBIE : InstrItinClass; 111 112//===----------------------------------------------------------------------===// 113// Processor instruction itineraries. 114 115include "PPCScheduleG3.td" 116include "PPCSchedule440.td" 117include "PPCScheduleG4.td" 118include "PPCScheduleG4Plus.td" 119include "PPCScheduleG5.td" 120include "PPCScheduleP7.td" 121include "PPCScheduleA2.td" 122include "PPCScheduleE500mc.td" 123include "PPCScheduleE5500.td" 124 125//===----------------------------------------------------------------------===// 126// Instruction to itinerary class map - When add new opcodes to the supported 127// set, refer to the following table to determine which itinerary class the 128// opcode belongs. 129// 130// opcode itinerary class 131// ====== =============== 132// add IIC_IntSimple 133// addc IIC_IntGeneral 134// adde IIC_IntGeneral 135// addi IIC_IntSimple 136// addic IIC_IntGeneral 137// addic. IIC_IntGeneral 138// addis IIC_IntSimple 139// addme IIC_IntGeneral 140// addze IIC_IntGeneral 141// and IIC_IntSimple 142// andc IIC_IntSimple 143// andi. IIC_IntGeneral 144// andis. IIC_IntGeneral 145// b IIC_BrB 146// bc IIC_BrB 147// bcctr IIC_BrB 148// bclr IIC_BrB 149// cmp IIC_IntCompare 150// cmpi IIC_IntCompare 151// cmpl IIC_IntCompare 152// cmpli IIC_IntCompare 153// cntlzd IIC_IntRotateD 154// cntlzw IIC_IntGeneral 155// crand IIC_BrCR 156// crandc IIC_BrCR 157// creqv IIC_BrCR 158// crnand IIC_BrCR 159// crnor IIC_BrCR 160// cror IIC_BrCR 161// crorc IIC_BrCR 162// crxor IIC_BrCR 163// dcba IIC_LdStDCBA 164// dcbf IIC_LdStDCBF 165// dcbi IIC_LdStDCBI 166// dcbst IIC_LdStDCBF 167// dcbt IIC_LdStLoad 168// dcbtst IIC_LdStLoad 169// dcbz IIC_LdStDCBF 170// divd IIC_IntDivD 171// divdu IIC_IntDivD 172// divw IIC_IntDivW 173// divwu IIC_IntDivW 174// dss IIC_LdStDSS 175// dst IIC_LdStDSS 176// dstst IIC_LdStDSS 177// eciwx IIC_LdStLoad 178// ecowx IIC_LdStLoad 179// eieio IIC_LdStLoad 180// eqv IIC_IntSimple 181// extsb IIC_IntSimple 182// extsh IIC_IntSimple 183// extsw IIC_IntSimple 184// fabs IIC_FPGeneral 185// fadd IIC_FPAddSub 186// fadds IIC_FPGeneral 187// fcfid IIC_FPGeneral 188// fcmpo IIC_FPCompare 189// fcmpu IIC_FPCompare 190// fctid IIC_FPGeneral 191// fctidz IIC_FPGeneral 192// fctiw IIC_FPGeneral 193// fctiwz IIC_FPGeneral 194// fdiv IIC_FPDivD 195// fdivs IIC_FPDivS 196// fmadd IIC_FPFused 197// fmadds IIC_FPGeneral 198// fmr IIC_FPGeneral 199// fmsub IIC_FPFused 200// fmsubs IIC_FPGeneral 201// fmul IIC_FPFused 202// fmuls IIC_FPGeneral 203// fnabs IIC_FPGeneral 204// fneg IIC_FPGeneral 205// fnmadd IIC_FPFused 206// fnmadds IIC_FPGeneral 207// fnmsub IIC_FPFused 208// fnmsubs IIC_FPGeneral 209// fres IIC_FPRes 210// frsp IIC_FPGeneral 211// frsqrte IIC_FPGeneral 212// fsel IIC_FPGeneral 213// fsqrt IIC_FPSqrtD 214// fsqrts IIC_FPSqrtS 215// fsub IIC_FPAddSub 216// fsubs IIC_FPGeneral 217// icbi IIC_LdStICBI 218// isync IIC_SprISYNC 219// lbz IIC_LdStLoad 220// lbzu IIC_LdStLoadUpd 221// lbzux IIC_LdStLoadUpdX 222// lbzx IIC_LdStLoad 223// ld IIC_LdStLD 224// ldarx IIC_LdStLDARX 225// ldu IIC_LdStLDU 226// ldux IIC_LdStLDUX 227// ldx IIC_LdStLD 228// lfd IIC_LdStLFD 229// lfdu IIC_LdStLFDU 230// lfdux IIC_LdStLFDUX 231// lfdx IIC_LdStLFD 232// lfs IIC_LdStLFD 233// lfsu IIC_LdStLFDU 234// lfsux IIC_LdStLFDUX 235// lfsx IIC_LdStLFD 236// lha IIC_LdStLHA 237// lhau IIC_LdStLHAU 238// lhaux IIC_LdStLHAUX 239// lhax IIC_LdStLHA 240// lhbrx IIC_LdStLoad 241// lhz IIC_LdStLoad 242// lhzu IIC_LdStLoadUpd 243// lhzux IIC_LdStLoadUpdX 244// lhzx IIC_LdStLoad 245// lmw IIC_LdStLMW 246// lswi IIC_LdStLMW 247// lswx IIC_LdStLMW 248// lvebx IIC_LdStLVecX 249// lvehx IIC_LdStLVecX 250// lvewx IIC_LdStLVecX 251// lvsl IIC_LdStLVecX 252// lvsr IIC_LdStLVecX 253// lvx IIC_LdStLVecX 254// lvxl IIC_LdStLVecX 255// lwa IIC_LdStLWA 256// lwarx IIC_LdStLWARX 257// lwaux IIC_LdStLHAUX 258// lwax IIC_LdStLHA 259// lwbrx IIC_LdStLoad 260// lwz IIC_LdStLoad 261// lwzu IIC_LdStLoadUpd 262// lwzux IIC_LdStLoadUpdX 263// lwzx IIC_LdStLoad 264// mcrf IIC_BrMCR 265// mcrfs IIC_FPGeneral 266// mcrxr IIC_BrMCRX 267// mfcr IIC_SprMFCR 268// mffs IIC_IntMFFS 269// mfmsr IIC_SprMFMSR 270// mfspr IIC_SprMFSPR 271// mfsr IIC_SprMFSR 272// mfsrin IIC_SprMFSR 273// mftb IIC_SprMFTB 274// mfvscr IIC_IntMFVSCR 275// mtcrf IIC_BrMCRX 276// mtfsb0 IIC_IntMTFSB0 277// mtfsb1 IIC_IntMTFSB0 278// mtfsf IIC_IntMTFSB0 279// mtfsfi IIC_IntMTFSB0 280// mtmsr IIC_SprMTMSR 281// mtmsrd IIC_LdStLD 282// mtspr IIC_SprMTSPR 283// mtsr IIC_SprMTSR 284// mtsrd IIC_IntMTSRD 285// mtsrdin IIC_IntMTSRD 286// mtsrin IIC_SprMTSRIN 287// mtvscr IIC_IntMFVSCR 288// mulhd IIC_IntMulHD 289// mulhdu IIC_IntMulHD 290// mulhw IIC_IntMulHW 291// mulhwu IIC_IntMulHWU 292// mulld IIC_IntMulHD 293// mulli IIC_IntMulLI 294// mullw IIC_IntMulHW 295// nand IIC_IntSimple 296// neg IIC_IntSimple 297// nor IIC_IntSimple 298// or IIC_IntSimple 299// orc IIC_IntSimple 300// ori IIC_IntSimple 301// oris IIC_IntSimple 302// rfi IIC_SprRFI 303// rfid IIC_IntRFID 304// rldcl IIC_IntRotateD 305// rldcr IIC_IntRotateD 306// rldic IIC_IntRotateDI 307// rldicl IIC_IntRotateDI 308// rldicr IIC_IntRotateDI 309// rldimi IIC_IntRotateDI 310// rlwimi IIC_IntRotate 311// rlwinm IIC_IntGeneral 312// rlwnm IIC_IntGeneral 313// sc IIC_SprSC 314// slbia IIC_LdStSLBIA 315// slbie IIC_LdStSLBIE 316// sld IIC_IntRotateD 317// slw IIC_IntGeneral 318// srad IIC_IntRotateD 319// sradi IIC_IntRotateDI 320// sraw IIC_IntShift 321// srawi IIC_IntShift 322// srd IIC_IntRotateD 323// srw IIC_IntGeneral 324// stb IIC_LdStStore 325// stbu IIC_LdStStoreUpd 326// stbux IIC_LdStStoreUpd 327// stbx IIC_LdStStore 328// std IIC_LdStSTD 329// stdcx. IIC_LdStSTDCX 330// stdu IIC_LdStSTDU 331// stdux IIC_LdStSTDUX 332// stdx IIC_LdStSTD 333// stfd IIC_LdStSTFD 334// stfdu IIC_LdStSTFDU 335// stfdux IIC_LdStSTFDU 336// stfdx IIC_LdStSTFD 337// stfiwx IIC_LdStSTFD 338// stfs IIC_LdStSTFD 339// stfsu IIC_LdStSTFDU 340// stfsux IIC_LdStSTFDU 341// stfsx IIC_LdStSTFD 342// sth IIC_LdStStore 343// sthbrx IIC_LdStStore 344// sthu IIC_LdStStoreUpd 345// sthux IIC_LdStStoreUpd 346// sthx IIC_LdStStore 347// stmw IIC_LdStLMW 348// stswi IIC_LdStLMW 349// stswx IIC_LdStLMW 350// stvebx IIC_LdStSTVEBX 351// stvehx IIC_LdStSTVEBX 352// stvewx IIC_LdStSTVEBX 353// stvx IIC_LdStSTVEBX 354// stvxl IIC_LdStSTVEBX 355// stw IIC_LdStStore 356// stwbrx IIC_LdStStore 357// stwcx. IIC_LdStSTWCX 358// stwu IIC_LdStStoreUpd 359// stwux IIC_LdStStoreUpd 360// stwx IIC_LdStStore 361// subf IIC_IntGeneral 362// subfc IIC_IntGeneral 363// subfe IIC_IntGeneral 364// subfic IIC_IntGeneral 365// subfme IIC_IntGeneral 366// subfze IIC_IntGeneral 367// sync IIC_LdStSync 368// td IIC_IntTrapD 369// tdi IIC_IntTrapD 370// tlbia IIC_LdStSLBIA 371// tlbie IIC_LdStDCBF 372// tlbsync IIC_SprTLBSYNC 373// tw IIC_IntTrapW 374// twi IIC_IntTrapW 375// vaddcuw IIC_VecGeneral 376// vaddfp IIC_VecFP 377// vaddsbs IIC_VecGeneral 378// vaddshs IIC_VecGeneral 379// vaddsws IIC_VecGeneral 380// vaddubm IIC_VecGeneral 381// vaddubs IIC_VecGeneral 382// vadduhm IIC_VecGeneral 383// vadduhs IIC_VecGeneral 384// vadduwm IIC_VecGeneral 385// vadduws IIC_VecGeneral 386// vand IIC_VecGeneral 387// vandc IIC_VecGeneral 388// vavgsb IIC_VecGeneral 389// vavgsh IIC_VecGeneral 390// vavgsw IIC_VecGeneral 391// vavgub IIC_VecGeneral 392// vavguh IIC_VecGeneral 393// vavguw IIC_VecGeneral 394// vcfsx IIC_VecFP 395// vcfux IIC_VecFP 396// vcmpbfp IIC_VecFPCompare 397// vcmpeqfp IIC_VecFPCompare 398// vcmpequb IIC_VecGeneral 399// vcmpequh IIC_VecGeneral 400// vcmpequw IIC_VecGeneral 401// vcmpgefp IIC_VecFPCompare 402// vcmpgtfp IIC_VecFPCompare 403// vcmpgtsb IIC_VecGeneral 404// vcmpgtsh IIC_VecGeneral 405// vcmpgtsw IIC_VecGeneral 406// vcmpgtub IIC_VecGeneral 407// vcmpgtuh IIC_VecGeneral 408// vcmpgtuw IIC_VecGeneral 409// vctsxs IIC_VecFP 410// vctuxs IIC_VecFP 411// vexptefp IIC_VecFP 412// vlogefp IIC_VecFP 413// vmaddfp IIC_VecFP 414// vmaxfp IIC_VecFPCompare 415// vmaxsb IIC_VecGeneral 416// vmaxsh IIC_VecGeneral 417// vmaxsw IIC_VecGeneral 418// vmaxub IIC_VecGeneral 419// vmaxuh IIC_VecGeneral 420// vmaxuw IIC_VecGeneral 421// vmhaddshs IIC_VecComplex 422// vmhraddshs IIC_VecComplex 423// vminfp IIC_VecFPCompare 424// vminsb IIC_VecGeneral 425// vminsh IIC_VecGeneral 426// vminsw IIC_VecGeneral 427// vminub IIC_VecGeneral 428// vminuh IIC_VecGeneral 429// vminuw IIC_VecGeneral 430// vmladduhm IIC_VecComplex 431// vmrghb IIC_VecPerm 432// vmrghh IIC_VecPerm 433// vmrghw IIC_VecPerm 434// vmrglb IIC_VecPerm 435// vmrglh IIC_VecPerm 436// vmrglw IIC_VecPerm 437// vmsubfp IIC_VecFP 438// vmsummbm IIC_VecComplex 439// vmsumshm IIC_VecComplex 440// vmsumshs IIC_VecComplex 441// vmsumubm IIC_VecComplex 442// vmsumuhm IIC_VecComplex 443// vmsumuhs IIC_VecComplex 444// vmulesb IIC_VecComplex 445// vmulesh IIC_VecComplex 446// vmuleub IIC_VecComplex 447// vmuleuh IIC_VecComplex 448// vmulosb IIC_VecComplex 449// vmulosh IIC_VecComplex 450// vmuloub IIC_VecComplex 451// vmulouh IIC_VecComplex 452// vnor IIC_VecGeneral 453// vor IIC_VecGeneral 454// vperm IIC_VecPerm 455// vpkpx IIC_VecPerm 456// vpkshss IIC_VecPerm 457// vpkshus IIC_VecPerm 458// vpkswss IIC_VecPerm 459// vpkswus IIC_VecPerm 460// vpkuhum IIC_VecPerm 461// vpkuhus IIC_VecPerm 462// vpkuwum IIC_VecPerm 463// vpkuwus IIC_VecPerm 464// vrefp IIC_VecFPRound 465// vrfim IIC_VecFPRound 466// vrfin IIC_VecFPRound 467// vrfip IIC_VecFPRound 468// vrfiz IIC_VecFPRound 469// vrlb IIC_VecGeneral 470// vrlh IIC_VecGeneral 471// vrlw IIC_VecGeneral 472// vrsqrtefp IIC_VecFP 473// vsel IIC_VecGeneral 474// vsl IIC_VecVSL 475// vslb IIC_VecGeneral 476// vsldoi IIC_VecPerm 477// vslh IIC_VecGeneral 478// vslo IIC_VecPerm 479// vslw IIC_VecGeneral 480// vspltb IIC_VecPerm 481// vsplth IIC_VecPerm 482// vspltisb IIC_VecPerm 483// vspltish IIC_VecPerm 484// vspltisw IIC_VecPerm 485// vspltw IIC_VecPerm 486// vsr IIC_VecVSR 487// vsrab IIC_VecGeneral 488// vsrah IIC_VecGeneral 489// vsraw IIC_VecGeneral 490// vsrb IIC_VecGeneral 491// vsrh IIC_VecGeneral 492// vsro IIC_VecPerm 493// vsrw IIC_VecGeneral 494// vsubcuw IIC_VecGeneral 495// vsubfp IIC_VecFP 496// vsubsbs IIC_VecGeneral 497// vsubshs IIC_VecGeneral 498// vsubsws IIC_VecGeneral 499// vsububm IIC_VecGeneral 500// vsububs IIC_VecGeneral 501// vsubuhm IIC_VecGeneral 502// vsubuhs IIC_VecGeneral 503// vsubuwm IIC_VecGeneral 504// vsubuws IIC_VecGeneral 505// vsum2sws IIC_VecComplex 506// vsum4sbs IIC_VecComplex 507// vsum4shs IIC_VecComplex 508// vsum4ubs IIC_VecComplex 509// vsumsws IIC_VecComplex 510// vupkhpx IIC_VecPerm 511// vupkhsb IIC_VecPerm 512// vupkhsh IIC_VecPerm 513// vupklpx IIC_VecPerm 514// vupklsb IIC_VecPerm 515// vupklsh IIC_VecPerm 516// vxor IIC_VecGeneral 517// xor IIC_IntSimple 518// xori IIC_IntSimple 519// xoris IIC_IntSimple 520// 521