//===- PPCScheduleA2.td - PPC A2 Scheduling Definitions --*- tablegen -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // Primary reference: // A2 Processor User's Manual. // IBM (as updated in) 2010. //===----------------------------------------------------------------------===// // Functional units on the PowerPC A2 chip sets // def A2_XU : FuncUnit; // A2_XU pipeline def A2_FU : FuncUnit; // FI pipeline // // This file defines the itinerary class data for the PPC A2 processor. // //===----------------------------------------------------------------------===// def PPCA2Itineraries : ProcessorItineraries< [A2_XU, A2_FU], [], [ InstrItinData], [1, 0, 0]>, InstrItinData], [2, 0, 0]>, InstrItinData], [2, 0, 0]>, InstrItinData], [39, 0, 0]>, InstrItinData], [71, 0, 0]>, InstrItinData], [5, 0, 0]>, InstrItinData], [5, 0, 0]>, InstrItinData], [6, 0, 0]>, InstrItinData], [2, 0, 0]>, InstrItinData], [2, 0, 0]>, InstrItinData], [2, 0, 0]>, InstrItinData], [2, 0, 0]>, InstrItinData], [2, 0]>, InstrItinData], [2, 0]>, InstrItinData], [6, 0, 0]>, InstrItinData], [1, 0, 0]>, InstrItinData], [5, 0, 0]>, InstrItinData], [1, 0, 0]>, InstrItinData], [1, 0, 0]>, InstrItinData], [1, 0, 0]>, InstrItinData], [1, 0, 0]>, InstrItinData], [6, 0, 0]>, InstrItinData], [6, 8, 0, 0]>, InstrItinData], [6, 8, 0, 0]>, InstrItinData], [6, 0, 0]>, InstrItinData], [6, 0, 0]>, InstrItinData], [0, 0, 0]>, InstrItinData], [2, 0, 0, 0]>, InstrItinData], [16, 0, 0]>, InstrItinData], [0, 0, 0]>, InstrItinData], [2, 0, 0, 0]>, InstrItinData], [7, 0, 0]>, InstrItinData], [7, 9, 0, 0]>, InstrItinData], [7, 9, 0, 0]>, InstrItinData], [6, 0, 0]>, InstrItinData], [6, 8, 0, 0]>, InstrItinData], [6, 8, 0, 0]>, InstrItinData], [82, 0, 0]>, // L2 latency InstrItinData], [0, 0, 0]>, InstrItinData], [2, 0, 0, 0]>, InstrItinData], [2, 0, 0, 0]>, InstrItinData], [82, 0, 0]>, // L2 latency InstrItinData], [82, 0, 0]>, // L2 latency InstrItinData], [6]>, InstrItinData], [16]>, InstrItinData], [16, 0]>, InstrItinData], [6, 0]>, InstrItinData], [1, 0]>, InstrItinData], [4, 0]>, InstrItinData], [6, 0]>, InstrItinData], [4, 0]>, InstrItinData], [6, 0]>, InstrItinData], [16]>, InstrItinData], [16]>, InstrItinData], [6, 0, 0]>, InstrItinData], [6, 0, 0]>, InstrItinData], [5, 0, 0]>, InstrItinData], [72, 0, 0]>, InstrItinData], [59, 0, 0]>, InstrItinData], [69, 0, 0]>, InstrItinData], [65, 0, 0]>, InstrItinData], [6, 0, 0, 0]>, InstrItinData], [6, 0]> ]>; // ===---------------------------------------------------------------------===// // A2 machine model for scheduling and other instruction cost heuristics. def PPCA2Model : SchedMachineModel { let IssueWidth = 1; // 1 instruction is dispatched per cycle. let MinLatency = -1; // OperandCycles are interpreted as MinLatency. let LoadLatency = 6; // Optimistic load latency assuming bypass. // This is overriden by OperandCycles if the // Itineraries are queried instead. let MispredictPenalty = 13; let Itineraries = PPCA2Itineraries; }