-//===- PPCSchedule.td - PowerPC Scheduling Definitions -----*- tablegen -*-===//
-//
+//===-- PPCSchedule.td - PowerPC Scheduling Definitions ----*- tablegen -*-===//
+//
// The LLVM Compiler Infrastructure
//
-// This file was developed by James M. Laskey and is distributed under
-// the University of Illinois Open Source License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "../TargetSchedule.td"
-
-//===----------------------------------------------------------------------===//
-// PowerPC chips sets supported by scheduling (Apple naming)
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
//
-def G3 : Processor;
-def G4 : Processor;
-def G4Plus : Processor;
-def G5 : Processor;
+//===----------------------------------------------------------------------===//
//===----------------------------------------------------------------------===//
// Functional units across PowerPC chips sets
//
-def NoUnit : FuncUnit; // Instruction not supported on chip set
def BPU : FuncUnit; // Branch unit
def SLU : FuncUnit; // Store/load unit
def SRU : FuncUnit; // special register unit
def IU1 : FuncUnit; // integer unit 1 (simple)
def IU2 : FuncUnit; // integer unit 2 (complex)
-def IU3 : FuncUnit; // integer unit 3 (7450 simple)
-def IU4 : FuncUnit; // integer unit 4 (7450 simple)
def FPU1 : FuncUnit; // floating point unit 1
def FPU2 : FuncUnit; // floating point unit 2
def VPU : FuncUnit; // vector permutation unit
def VIU2 : FuncUnit; // vector integer unit 2 (complex)
def VFPU : FuncUnit; // vector floating point unit
-
//===----------------------------------------------------------------------===//
// Instruction Itinerary classes used for PowerPC
//
+def IntSimple : InstrItinClass;
def IntGeneral : InstrItinClass;
def IntCompare : InstrItinClass;
def IntDivD : InstrItinClass;
def LdStDCBA : InstrItinClass;
def LdStDCBF : InstrItinClass;
def LdStDCBI : InstrItinClass;
-def LdStDCBT : InstrItinClass;
+def LdStLoad : InstrItinClass;
+def LdStStore : InstrItinClass;
def LdStDSS : InstrItinClass;
def LdStICBI : InstrItinClass;
-def LdStLBZUX : InstrItinClass;
+def LdStUX : InstrItinClass;
def LdStLD : InstrItinClass;
def LdStLDARX : InstrItinClass;
def LdStLFD : InstrItinClass;
def LdStLFDU : InstrItinClass;
def LdStLHA : InstrItinClass;
def LdStLMW : InstrItinClass;
-def LdStLVEBX : InstrItinClass;
+def LdStLVecX : InstrItinClass;
def LdStLWA : InstrItinClass;
def LdStLWARX : InstrItinClass;
def LdStSLBIA : InstrItinClass;
//===----------------------------------------------------------------------===//
// Processor instruction itineraries.
-#include "PPCScheduleG3.td"
-#include "PPCScheduleG4.td"
-#include "PPCScheduleG4Plus.td"
-#include "PPCScheduleG5.td"
+include "PPCScheduleG3.td"
+include "PPCSchedule440.td"
+include "PPCScheduleG4.td"
+include "PPCScheduleG4Plus.td"
+include "PPCScheduleG5.td"
+include "PPCScheduleA2.td"
//===----------------------------------------------------------------------===//
// Instruction to itinerary class map - When add new opcodes to the supported
//
// opcode itinerary class
// ====== ===============
-// add IntGeneral
+// add IntSimple
// addc IntGeneral
// adde IntGeneral
-// addi IntGeneral
+// addi IntSimple
// addic IntGeneral
// addic. IntGeneral
-// addis IntGeneral
+// addis IntSimple
// addme IntGeneral
// addze IntGeneral
-// and IntGeneral
-// andc IntGeneral
+// and IntSimple
+// andc IntSimple
// andi. IntGeneral
// andis. IntGeneral
// b BrB
// dcbf LdStDCBF
// dcbi LdStDCBI
// dcbst LdStDCBF
-// dcbt LdStDCBT
-// dcbtst LdStDCBT
+// dcbt LdStLoad
+// dcbtst LdStLoad
// dcbz LdStDCBF
// divd IntDivD
// divdu IntDivD
// dss LdStDSS
// dst LdStDSS
// dstst LdStDSS
-// eciwx LdStDCBT
-// ecowx LdStDCBT
-// eieio LdStDCBT
-// eqv IntGeneral
-// extsb IntGeneral
-// extsh IntGeneral
-// extsw IntRotateD
+// eciwx LdStLoad
+// ecowx LdStLoad
+// eieio LdStLoad
+// eqv IntSimple
+// extsb IntSimple
+// extsh IntSimple
+// extsw IntSimple
// fabs FPGeneral
// fadd FPGeneral
// fadds FPGeneral
// fsubs FPGeneral
// icbi LdStICBI
// isync SprISYNC
-// lbz LdStDCBT
-// lbzu LdStDCBT
-// lbzux LdStLBZUX
-// lbzx LdStDCBT
+// lbz LdStLoad
+// lbzu LdStLoad
+// lbzux LdStUX
+// lbzx LdStLoad
// ld LdStLD
// ldarx LdStLDARX
// ldu LdStLD
// lhau LdStLHA
// lhaux LdStLHA
// lhax LdStLHA
-// lhbrx LdStDCBT
-// lhz LdStDCBT
-// lhzu LdStDCBT
-// lhzux LdStLBZUX
-// lhzx LdStDCBT
+// lhbrx LdStLoad
+// lhz LdStLoad
+// lhzu LdStLoad
+// lhzux LdStUX
+// lhzx LdStLoad
// lmw LdStLMW
// lswi LdStLMW
// lswx LdStLMW
-// lvebx LdStLVEBX
-// lvehx LdStLVEBX
-// lvewx LdStLVEBX
-// lvsl LdStLVEBX
-// lvsr LdStLVEBX
-// lvx LdStLVEBX
-// lvxl LdStLVEBX
+// lvebx LdStLVecX
+// lvehx LdStLVecX
+// lvewx LdStLVecX
+// lvsl LdStLVecX
+// lvsr LdStLVecX
+// lvx LdStLVecX
+// lvxl LdStLVecX
// lwa LdStLWA
// lwarx LdStLWARX
// lwaux LdStLHA
// lwax LdStLHA
-// lwbrx LdStDCBT
-// lwz LdStDCBT
-// lwzu LdStDCBT
-// lwzux LdStLBZUX
-// lwzx LdStDCBT
+// lwbrx LdStLoad
+// lwz LdStLoad
+// lwzu LdStLoad
+// lwzux LdStUX
+// lwzx LdStLoad
// mcrf BrMCR
// mcrfs FPGeneral
// mcrxr BrMCRX
// mulld IntMulHD
// mulli IntMulLI
// mullw IntMulHW
-// nand IntGeneral
-// neg IntGeneral
-// nor IntGeneral
-// or IntGeneral
-// orc IntGeneral
-// ori IntGeneral
-// oris IntGeneral
+// nand IntSimple
+// neg IntSimple
+// nor IntSimple
+// or IntSimple
+// orc IntSimple
+// ori IntSimple
+// oris IntSimple
// rfi SprRFI
// rfid IntRFID
// rldcl IntRotateD
// srawi IntShift
// srd IntRotateD
// srw IntGeneral
-// stb LdStDCBT
-// stbu LdStDCBT
-// stbux LdStDCBT
-// stbx LdStDCBT
+// stb LdStStore
+// stbu LdStStore
+// stbux LdStStore
+// stbx LdStStore
// std LdStSTD
// stdcx. LdStSTDCX
// stdu LdStSTD
// stdux LdStSTD
// stdx LdStSTD
-// stfd LdStLBZUX
-// stfdu LdStLBZUX
-// stfdux LdStLBZUX
-// stfdx LdStLBZUX
-// stfiwx LdStLBZUX
-// stfs LdStLBZUX
-// stfsu LdStLBZUX
-// stfsux LdStLBZUX
-// stfsx LdStLBZUX
-// sth LdStDCBT
-// sthbrx LdStDCBT
-// sthu LdStDCBT
-// sthux LdStDCBT
-// sthx LdStDCBT
+// stfd LdStUX
+// stfdu LdStUX
+// stfdux LdStUX
+// stfdx LdStUX
+// stfiwx LdStUX
+// stfs LdStUX
+// stfsu LdStUX
+// stfsux LdStUX
+// stfsx LdStUX
+// sth LdStStore
+// sthbrx LdStStore
+// sthu LdStStore
+// sthux LdStStore
+// sthx LdStStore
// stmw LdStLMW
// stswi LdStLMW
// stswx LdStLMW
// stvewx LdStSTVEBX
// stvx LdStSTVEBX
// stvxl LdStSTVEBX
-// stw LdStDCBT
-// stwbrx LdStDCBT
+// stw LdStStore
+// stwbrx LdStStore
// stwcx. LdStSTWCX
-// stwu LdStDCBT
-// stwux LdStDCBT
-// stwx LdStDCBT
+// stwu LdStStore
+// stwux LdStStore
+// stwx LdStStore
// subf IntGeneral
// subfc IntGeneral
// subfe IntGeneral
// vupklsb VecPerm
// vupklsh VecPerm
// vxor VecGeneral
-// xor IntGeneral
-// xori IntGeneral
-// xoris IntGeneral
+// xor IntSimple
+// xori IntSimple
+// xoris IntSimple
//
-