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