//===- 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 XU : FuncUnit; // XU pipeline def FU : FuncUnit; // FI pipeline // // This file defines the itinerary class data for the PPC A2 processor. // //===----------------------------------------------------------------------===// def PPCA2Itineraries : ProcessorItineraries< [XU, FU], [], [ InstrItinData], [1, 1, 1]>, InstrItinData], [2, 1, 1]>, InstrItinData], [2, 1, 1]>, InstrItinData], [39, 1, 1]>, InstrItinData], [71, 1, 1]>, InstrItinData], [5, 1, 1]>, InstrItinData], [5, 1, 1]>, InstrItinData], [6, 1, 1]>, InstrItinData], [2, 1, 1]>, InstrItinData], [2, 1, 1]>, InstrItinData], [2, 1, 1]>, InstrItinData], [2, 1, 1]>, InstrItinData], [2, 1]>, InstrItinData], [2, 1]>, InstrItinData], [6, 1, 1]>, InstrItinData], [1, 1, 1]>, InstrItinData], [5, 1, 1]>, InstrItinData], [1, 1, 1]>, InstrItinData], [1, 1, 1]>, InstrItinData], [1, 1, 1]>, InstrItinData], [1, 1, 1]>, InstrItinData], [6, 1, 1]>, InstrItinData], [6, 8, 1, 1]>, InstrItinData], [6, 1, 1]>, InstrItinData], [1, 1, 1]>, InstrItinData], [2, 1, 1, 1]>, InstrItinData], [16, 1, 1]>, InstrItinData], [1, 1, 1]>, InstrItinData], [2, 1, 1, 1]>, InstrItinData], [7, 1, 1]>, InstrItinData], [7, 9, 1, 1]>, InstrItinData], [6, 1, 1]>, InstrItinData], [6, 8, 1, 1]>, InstrItinData], [82, 1, 1]>, // L2 latency InstrItinData], [1, 1, 1]>, InstrItinData], [2, 1, 1, 1]>, InstrItinData], [82, 1, 1]>, // L2 latency InstrItinData], [82, 1, 1]>, // L2 latency InstrItinData], [6]>, InstrItinData], [16]>, InstrItinData], [16, 1]>, InstrItinData], [6, 1]>, InstrItinData], [4, 1]>, InstrItinData], [6, 1]>, InstrItinData], [4, 1]>, InstrItinData], [6, 1]>, InstrItinData], [16]>, InstrItinData], [16]>, InstrItinData], [6, 1, 1]>, InstrItinData], [6, 1, 1]>, InstrItinData], [5, 1, 1]>, InstrItinData], [72, 1, 1]>, InstrItinData], [59, 1, 1]>, InstrItinData], [69, 1, 1]>, InstrItinData], [6, 1, 1, 1]>, InstrItinData], [6, 1]> ]>; // ===---------------------------------------------------------------------===// // A2 machine model for scheduling and other instruction cost heuristics. def PPCA2Model : SchedMachineModel { let IssueWidth = 1; // 2 micro-ops are 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; }