//===- PPCScheduleA2.td - PPC A2 Scheduling Definitions --*- tablegen -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // 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, 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], [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 LoadLatency = 6; // Optimistic load latency assuming bypass. // This is overriden by OperandCycles if the // Itineraries are queried instead. let MispredictPenalty = 13; let CompleteModel = 0; let Itineraries = PPCA2Itineraries; }