1*0b57cec5SDimitry Andric//===-- PPCSchedule440.td - PPC 440 Scheduling Definitions -*- tablegen -*-===// 2*0b57cec5SDimitry Andric// 3*0b57cec5SDimitry Andric// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*0b57cec5SDimitry Andric// See https://llvm.org/LICENSE.txt for license information. 5*0b57cec5SDimitry Andric// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*0b57cec5SDimitry Andric// 7*0b57cec5SDimitry Andric//===----------------------------------------------------------------------===// 8*0b57cec5SDimitry Andric 9*0b57cec5SDimitry Andric// Primary reference: 10*0b57cec5SDimitry Andric// PowerPC 440x6 Embedded Processor Core User's Manual. 11*0b57cec5SDimitry Andric// IBM (as updated in) 2010. 12*0b57cec5SDimitry Andric 13*0b57cec5SDimitry Andric// The basic PPC 440 does not include a floating-point unit; the pipeline 14*0b57cec5SDimitry Andric// timings here are constructed to match the FP2 unit shipped with the 15*0b57cec5SDimitry Andric// PPC-440- and PPC-450-based Blue Gene (L and P) supercomputers. 16*0b57cec5SDimitry Andric// References: 17*0b57cec5SDimitry Andric// S. Chatterjee, et al. Design and exploitation of a high-performance 18*0b57cec5SDimitry Andric// SIMD floating-point unit for Blue Gene/L. 19*0b57cec5SDimitry Andric// IBM J. Res. & Dev. 49 (2/3) March/May 2005. 20*0b57cec5SDimitry Andric// also: 21*0b57cec5SDimitry Andric// Carlos Sosa and Brant Knudson. IBM System Blue Gene Solution: 22*0b57cec5SDimitry Andric// Blue Gene/P Application Development. 23*0b57cec5SDimitry Andric// IBM (as updated in) 2009. 24*0b57cec5SDimitry Andric 25*0b57cec5SDimitry Andric//===----------------------------------------------------------------------===// 26*0b57cec5SDimitry Andric// Functional units on the PowerPC 440/450 chip sets 27*0b57cec5SDimitry Andric// 28*0b57cec5SDimitry Andricdef P440_DISS1 : FuncUnit; // Issue unit 1 29*0b57cec5SDimitry Andricdef P440_DISS2 : FuncUnit; // Issue unit 2 30*0b57cec5SDimitry Andricdef P440_LRACC : FuncUnit; // Register access and dispatch for 31*0b57cec5SDimitry Andric // the simple integer (J-pipe) and 32*0b57cec5SDimitry Andric // load/store (L-pipe) pipelines 33*0b57cec5SDimitry Andricdef P440_IRACC : FuncUnit; // Register access and dispatch for 34*0b57cec5SDimitry Andric // the complex integer (I-pipe) pipeline 35*0b57cec5SDimitry Andricdef P440_FRACC : FuncUnit; // Register access and dispatch for 36*0b57cec5SDimitry Andric // the floating-point execution (F-pipe) pipeline 37*0b57cec5SDimitry Andricdef P440_IEXE1 : FuncUnit; // Execution stage 1 for the I pipeline 38*0b57cec5SDimitry Andricdef P440_IEXE2 : FuncUnit; // Execution stage 2 for the I pipeline 39*0b57cec5SDimitry Andricdef P440_IWB : FuncUnit; // Write-back unit for the I pipeline 40*0b57cec5SDimitry Andricdef P440_JEXE1 : FuncUnit; // Execution stage 1 for the J pipeline 41*0b57cec5SDimitry Andricdef P440_JEXE2 : FuncUnit; // Execution stage 2 for the J pipeline 42*0b57cec5SDimitry Andricdef P440_JWB : FuncUnit; // Write-back unit for the J pipeline 43*0b57cec5SDimitry Andricdef P440_AGEN : FuncUnit; // Address generation for the L pipeline 44*0b57cec5SDimitry Andricdef P440_CRD : FuncUnit; // D-cache access for the L pipeline 45*0b57cec5SDimitry Andricdef P440_LWB : FuncUnit; // Write-back unit for the L pipeline 46*0b57cec5SDimitry Andricdef P440_FEXE1 : FuncUnit; // Execution stage 1 for the F pipeline 47*0b57cec5SDimitry Andricdef P440_FEXE2 : FuncUnit; // Execution stage 2 for the F pipeline 48*0b57cec5SDimitry Andricdef P440_FEXE3 : FuncUnit; // Execution stage 3 for the F pipeline 49*0b57cec5SDimitry Andricdef P440_FEXE4 : FuncUnit; // Execution stage 4 for the F pipeline 50*0b57cec5SDimitry Andricdef P440_FEXE5 : FuncUnit; // Execution stage 5 for the F pipeline 51*0b57cec5SDimitry Andricdef P440_FEXE6 : FuncUnit; // Execution stage 6 for the F pipeline 52*0b57cec5SDimitry Andricdef P440_FWB : FuncUnit; // Write-back unit for the F pipeline 53*0b57cec5SDimitry Andric 54*0b57cec5SDimitry Andricdef P440_LWARX_Hold : FuncUnit; // This is a pseudo-unit which is used 55*0b57cec5SDimitry Andric // to make sure that no lwarx/stwcx. 56*0b57cec5SDimitry Andric // instructions are issued while another 57*0b57cec5SDimitry Andric // lwarx/stwcx. is in the L pipe. 58*0b57cec5SDimitry Andric 59*0b57cec5SDimitry Andricdef P440_GPR_Bypass : Bypass; // The bypass for general-purpose regs. 60*0b57cec5SDimitry Andricdef P440_FPR_Bypass : Bypass; // The bypass for floating-point regs. 61*0b57cec5SDimitry Andric 62*0b57cec5SDimitry Andric// Notes: 63*0b57cec5SDimitry Andric// Instructions are held in the FRACC, LRACC and IRACC pipeline 64*0b57cec5SDimitry Andric// stages until their source operands become ready. Exceptions: 65*0b57cec5SDimitry Andric// - Store instructions will hold in the AGEN stage 66*0b57cec5SDimitry Andric// - The integer multiply-accumulate instruction will hold in 67*0b57cec5SDimitry Andric// the IEXE1 stage 68*0b57cec5SDimitry Andric// 69*0b57cec5SDimitry Andric// For most I-pipe operations, the result is available at the end of 70*0b57cec5SDimitry Andric// the IEXE1 stage. Operations such as multiply and divide must 71*0b57cec5SDimitry Andric// continue to execute in IEXE2 and IWB. Divide resides in IWB for 72*0b57cec5SDimitry Andric// 33 cycles (multiply also calculates its result in IWB). For all 73*0b57cec5SDimitry Andric// J-pipe instructions, the result is available 74*0b57cec5SDimitry Andric// at the end of the JEXE1 stage. Loads have a 3-cycle latency 75*0b57cec5SDimitry Andric// (data is not available until after the LWB stage). 76*0b57cec5SDimitry Andric// 77*0b57cec5SDimitry Andric// The L1 cache hit latency is four cycles for floating point loads 78*0b57cec5SDimitry Andric// and three cycles for integer loads. 79*0b57cec5SDimitry Andric// 80*0b57cec5SDimitry Andric// The stwcx. instruction requires both the LRACC and the IRACC 81*0b57cec5SDimitry Andric// dispatch stages. It must be issued from DISS0. 82*0b57cec5SDimitry Andric// 83*0b57cec5SDimitry Andric// All lwarx/stwcx. instructions hold in LRACC if another 84*0b57cec5SDimitry Andric// uncommitted lwarx/stwcx. is in AGEN, CRD, or LWB. 85*0b57cec5SDimitry Andric// 86*0b57cec5SDimitry Andric// msync (a.k.a. sync) and mbar will hold in LWB until all load/store 87*0b57cec5SDimitry Andric// resources are empty. AGEN and CRD are held empty until the msync/mbar 88*0b57cec5SDimitry Andric// commits. 89*0b57cec5SDimitry Andric// 90*0b57cec5SDimitry Andric// Most floating-point instructions, computational and move, 91*0b57cec5SDimitry Andric// have a 5-cycle latency. Divide takes longer (30 cycles). Instructions that 92*0b57cec5SDimitry Andric// update the CR take 2 cycles. Stores take 3 cycles and, as mentioned above, 93*0b57cec5SDimitry Andric// loads take 4 cycles (for L1 hit). 94*0b57cec5SDimitry Andric 95*0b57cec5SDimitry Andric// 96*0b57cec5SDimitry Andric// This file defines the itinerary class data for the PPC 440 processor. 97*0b57cec5SDimitry Andric// 98*0b57cec5SDimitry Andric//===----------------------------------------------------------------------===// 99*0b57cec5SDimitry Andric 100*0b57cec5SDimitry Andric 101*0b57cec5SDimitry Andricdef PPC440Itineraries : ProcessorItineraries< 102*0b57cec5SDimitry Andric [P440_DISS1, P440_DISS2, P440_FRACC, P440_IRACC, P440_IEXE1, P440_IEXE2, 103*0b57cec5SDimitry Andric P440_IWB, P440_LRACC, P440_JEXE1, P440_JEXE2, P440_JWB, P440_AGEN, P440_CRD, 104*0b57cec5SDimitry Andric P440_LWB, P440_FEXE1, P440_FEXE2, P440_FEXE3, P440_FEXE4, P440_FEXE5, 105*0b57cec5SDimitry Andric P440_FEXE6, P440_FWB, P440_LWARX_Hold], 106*0b57cec5SDimitry Andric [P440_GPR_Bypass, P440_FPR_Bypass], [ 107*0b57cec5SDimitry Andric InstrItinData<IIC_IntSimple, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 108*0b57cec5SDimitry Andric InstrStage<1, [P440_IRACC, P440_LRACC]>, 109*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE1, P440_JEXE1]>, 110*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE2, P440_JEXE2]>, 111*0b57cec5SDimitry Andric InstrStage<1, [P440_IWB, P440_JWB]>], 112*0b57cec5SDimitry Andric [2, 0, 0], 113*0b57cec5SDimitry Andric [P440_GPR_Bypass, 114*0b57cec5SDimitry Andric P440_GPR_Bypass, P440_GPR_Bypass]>, 115*0b57cec5SDimitry Andric InstrItinData<IIC_IntGeneral, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 116*0b57cec5SDimitry Andric InstrStage<1, [P440_IRACC, P440_LRACC]>, 117*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE1, P440_JEXE1]>, 118*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE2, P440_JEXE2]>, 119*0b57cec5SDimitry Andric InstrStage<1, [P440_IWB, P440_JWB]>], 120*0b57cec5SDimitry Andric [2, 0, 0], 121*0b57cec5SDimitry Andric [P440_GPR_Bypass, 122*0b57cec5SDimitry Andric P440_GPR_Bypass, P440_GPR_Bypass]>, 123*0b57cec5SDimitry Andric InstrItinData<IIC_IntISEL, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 124*0b57cec5SDimitry Andric InstrStage<1, [P440_IRACC, P440_LRACC]>, 125*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE1, P440_JEXE1]>, 126*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE2, P440_JEXE2]>, 127*0b57cec5SDimitry Andric InstrStage<1, [P440_IWB, P440_JWB]>], 128*0b57cec5SDimitry Andric [2, 0, 0, 0], 129*0b57cec5SDimitry Andric [P440_GPR_Bypass, 130*0b57cec5SDimitry Andric P440_GPR_Bypass, P440_GPR_Bypass, NoBypass]>, 131*0b57cec5SDimitry Andric InstrItinData<IIC_IntCompare, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 132*0b57cec5SDimitry Andric InstrStage<1, [P440_IRACC, P440_LRACC]>, 133*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE1, P440_JEXE1]>, 134*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE2, P440_JEXE2]>, 135*0b57cec5SDimitry Andric InstrStage<1, [P440_IWB, P440_JWB]>], 136*0b57cec5SDimitry Andric [2, 0, 0], 137*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>, 138*0b57cec5SDimitry Andric InstrItinData<IIC_IntDivW, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 139*0b57cec5SDimitry Andric InstrStage<1, [P440_IRACC]>, 140*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE1]>, 141*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE2]>, 142*0b57cec5SDimitry Andric InstrStage<33, [P440_IWB]>], 143*0b57cec5SDimitry Andric [36, 0, 0], 144*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>, 145*0b57cec5SDimitry Andric InstrItinData<IIC_IntMFFS, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 146*0b57cec5SDimitry Andric InstrStage<1, [P440_IRACC]>, 147*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE1]>, 148*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE2]>, 149*0b57cec5SDimitry Andric InstrStage<1, [P440_IWB]>], 150*0b57cec5SDimitry Andric [3, 0, 0], 151*0b57cec5SDimitry Andric [P440_GPR_Bypass, 152*0b57cec5SDimitry Andric P440_GPR_Bypass, P440_GPR_Bypass]>, 153*0b57cec5SDimitry Andric InstrItinData<IIC_IntMTFSB0, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 154*0b57cec5SDimitry Andric InstrStage<1, [P440_IRACC]>, 155*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE1]>, 156*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE2]>, 157*0b57cec5SDimitry Andric InstrStage<1, [P440_IWB]>], 158*0b57cec5SDimitry Andric [3, 0, 0], 159*0b57cec5SDimitry Andric [P440_GPR_Bypass, 160*0b57cec5SDimitry Andric P440_GPR_Bypass, P440_GPR_Bypass]>, 161*0b57cec5SDimitry Andric InstrItinData<IIC_IntMulHW, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 162*0b57cec5SDimitry Andric InstrStage<1, [P440_IRACC]>, 163*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE1]>, 164*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE2]>, 165*0b57cec5SDimitry Andric InstrStage<1, [P440_IWB]>], 166*0b57cec5SDimitry Andric [4, 0, 0], 167*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>, 168*0b57cec5SDimitry Andric InstrItinData<IIC_IntMulHWU, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 169*0b57cec5SDimitry Andric InstrStage<1, [P440_IRACC]>, 170*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE1]>, 171*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE2]>, 172*0b57cec5SDimitry Andric InstrStage<1, [P440_IWB]>], 173*0b57cec5SDimitry Andric [4, 0, 0], 174*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>, 175*0b57cec5SDimitry Andric InstrItinData<IIC_IntMulLI, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 176*0b57cec5SDimitry Andric InstrStage<1, [P440_IRACC]>, 177*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE1]>, 178*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE2]>, 179*0b57cec5SDimitry Andric InstrStage<1, [P440_IWB]>], 180*0b57cec5SDimitry Andric [4, 0, 0], 181*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>, 182*0b57cec5SDimitry Andric InstrItinData<IIC_IntRotate, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 183*0b57cec5SDimitry Andric InstrStage<1, [P440_IRACC, P440_LRACC]>, 184*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE1, P440_JEXE1]>, 185*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE2, P440_JEXE2]>, 186*0b57cec5SDimitry Andric InstrStage<1, [P440_IWB, P440_JWB]>], 187*0b57cec5SDimitry Andric [2, 0, 0], 188*0b57cec5SDimitry Andric [P440_GPR_Bypass, 189*0b57cec5SDimitry Andric P440_GPR_Bypass, P440_GPR_Bypass]>, 190*0b57cec5SDimitry Andric InstrItinData<IIC_IntShift, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 191*0b57cec5SDimitry Andric InstrStage<1, [P440_IRACC, P440_LRACC]>, 192*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE1, P440_JEXE1]>, 193*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE2, P440_JEXE2]>, 194*0b57cec5SDimitry Andric InstrStage<1, [P440_IWB, P440_JWB]>], 195*0b57cec5SDimitry Andric [2, 0, 0], 196*0b57cec5SDimitry Andric [P440_GPR_Bypass, 197*0b57cec5SDimitry Andric P440_GPR_Bypass, P440_GPR_Bypass]>, 198*0b57cec5SDimitry Andric InstrItinData<IIC_IntTrapW, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 199*0b57cec5SDimitry Andric InstrStage<1, [P440_IRACC]>, 200*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE1]>, 201*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE2]>, 202*0b57cec5SDimitry Andric InstrStage<1, [P440_IWB]>], 203*0b57cec5SDimitry Andric [2, 0], 204*0b57cec5SDimitry Andric [P440_GPR_Bypass, P440_GPR_Bypass]>, 205*0b57cec5SDimitry Andric InstrItinData<IIC_BrB, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 206*0b57cec5SDimitry Andric InstrStage<1, [P440_IRACC]>, 207*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE1]>, 208*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE2]>, 209*0b57cec5SDimitry Andric InstrStage<1, [P440_IWB]>], 210*0b57cec5SDimitry Andric [4, 0], 211*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass]>, 212*0b57cec5SDimitry Andric InstrItinData<IIC_BrCR, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 213*0b57cec5SDimitry Andric InstrStage<1, [P440_IRACC]>, 214*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE1]>, 215*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE2]>, 216*0b57cec5SDimitry Andric InstrStage<1, [P440_IWB]>], 217*0b57cec5SDimitry Andric [4, 0, 0], 218*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>, 219*0b57cec5SDimitry Andric InstrItinData<IIC_BrMCR, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 220*0b57cec5SDimitry Andric InstrStage<1, [P440_IRACC]>, 221*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE1]>, 222*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE2]>, 223*0b57cec5SDimitry Andric InstrStage<1, [P440_IWB]>], 224*0b57cec5SDimitry Andric [4, 0, 0], 225*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>, 226*0b57cec5SDimitry Andric InstrItinData<IIC_BrMCRX, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 227*0b57cec5SDimitry Andric InstrStage<1, [P440_IRACC]>, 228*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE1]>, 229*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE2]>, 230*0b57cec5SDimitry Andric InstrStage<1, [P440_IWB]>], 231*0b57cec5SDimitry Andric [4, 0, 0], 232*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>, 233*0b57cec5SDimitry Andric InstrItinData<IIC_LdStDCBA, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 234*0b57cec5SDimitry Andric InstrStage<1, [P440_LRACC]>, 235*0b57cec5SDimitry Andric InstrStage<1, [P440_AGEN]>, 236*0b57cec5SDimitry Andric InstrStage<1, [P440_CRD]>, 237*0b57cec5SDimitry Andric InstrStage<1, [P440_LWB]>], 238*0b57cec5SDimitry Andric [1, 1], 239*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass]>, 240*0b57cec5SDimitry Andric InstrItinData<IIC_LdStDCBF, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 241*0b57cec5SDimitry Andric InstrStage<1, [P440_LRACC]>, 242*0b57cec5SDimitry Andric InstrStage<1, [P440_AGEN]>, 243*0b57cec5SDimitry Andric InstrStage<1, [P440_CRD]>, 244*0b57cec5SDimitry Andric InstrStage<1, [P440_LWB]>], 245*0b57cec5SDimitry Andric [1, 1], 246*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass]>, 247*0b57cec5SDimitry Andric InstrItinData<IIC_LdStDCBI, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 248*0b57cec5SDimitry Andric InstrStage<1, [P440_LRACC]>, 249*0b57cec5SDimitry Andric InstrStage<1, [P440_AGEN]>, 250*0b57cec5SDimitry Andric InstrStage<1, [P440_CRD]>, 251*0b57cec5SDimitry Andric InstrStage<1, [P440_LWB]>], 252*0b57cec5SDimitry Andric [1, 1], 253*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass]>, 254*0b57cec5SDimitry Andric InstrItinData<IIC_LdStLoad, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 255*0b57cec5SDimitry Andric InstrStage<1, [P440_LRACC]>, 256*0b57cec5SDimitry Andric InstrStage<1, [P440_AGEN]>, 257*0b57cec5SDimitry Andric InstrStage<1, [P440_CRD]>, 258*0b57cec5SDimitry Andric InstrStage<2, [P440_LWB]>], 259*0b57cec5SDimitry Andric [5, 1, 1], 260*0b57cec5SDimitry Andric [P440_GPR_Bypass, P440_GPR_Bypass]>, 261*0b57cec5SDimitry Andric InstrItinData<IIC_LdStLoadUpd,[InstrStage<1, [P440_DISS1, P440_DISS2]>, 262*0b57cec5SDimitry Andric InstrStage<1, [P440_LRACC]>, 263*0b57cec5SDimitry Andric InstrStage<1, [P440_AGEN]>, 264*0b57cec5SDimitry Andric InstrStage<1, [P440_CRD]>, 265*0b57cec5SDimitry Andric InstrStage<2, [P440_LWB]>], 266*0b57cec5SDimitry Andric [5, 2, 1, 1], 267*0b57cec5SDimitry Andric [P440_GPR_Bypass, P440_GPR_Bypass]>, 268*0b57cec5SDimitry Andric InstrItinData<IIC_LdStLoadUpdX,[InstrStage<1, [P440_DISS1, P440_DISS2]>, 269*0b57cec5SDimitry Andric InstrStage<1, [P440_LRACC]>, 270*0b57cec5SDimitry Andric InstrStage<1, [P440_AGEN]>, 271*0b57cec5SDimitry Andric InstrStage<1, [P440_CRD]>, 272*0b57cec5SDimitry Andric InstrStage<2, [P440_LWB]>], 273*0b57cec5SDimitry Andric [5, 2, 1, 1], 274*0b57cec5SDimitry Andric [P440_GPR_Bypass, P440_GPR_Bypass]>, 275*0b57cec5SDimitry Andric InstrItinData<IIC_LdStStore, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 276*0b57cec5SDimitry Andric InstrStage<1, [P440_LRACC]>, 277*0b57cec5SDimitry Andric InstrStage<1, [P440_AGEN]>, 278*0b57cec5SDimitry Andric InstrStage<1, [P440_CRD]>, 279*0b57cec5SDimitry Andric InstrStage<2, [P440_LWB]>], 280*0b57cec5SDimitry Andric [1, 1, 1], 281*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass]>, 282*0b57cec5SDimitry Andric InstrItinData<IIC_LdStICBI, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 283*0b57cec5SDimitry Andric InstrStage<1, [P440_LRACC]>, 284*0b57cec5SDimitry Andric InstrStage<1, [P440_AGEN]>, 285*0b57cec5SDimitry Andric InstrStage<1, [P440_CRD]>, 286*0b57cec5SDimitry Andric InstrStage<1, [P440_LWB]>], 287*0b57cec5SDimitry Andric [4, 1, 1], 288*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass]>, 289*0b57cec5SDimitry Andric InstrItinData<IIC_LdStSTFD, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 290*0b57cec5SDimitry Andric InstrStage<1, [P440_LRACC]>, 291*0b57cec5SDimitry Andric InstrStage<1, [P440_AGEN]>, 292*0b57cec5SDimitry Andric InstrStage<1, [P440_CRD]>, 293*0b57cec5SDimitry Andric InstrStage<1, [P440_LWB]>], 294*0b57cec5SDimitry Andric [1, 1, 1], 295*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>, 296*0b57cec5SDimitry Andric InstrItinData<IIC_LdStSTFDU, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 297*0b57cec5SDimitry Andric InstrStage<1, [P440_LRACC]>, 298*0b57cec5SDimitry Andric InstrStage<1, [P440_AGEN]>, 299*0b57cec5SDimitry Andric InstrStage<1, [P440_CRD]>, 300*0b57cec5SDimitry Andric InstrStage<1, [P440_LWB]>], 301*0b57cec5SDimitry Andric [2, 1, 1, 1], 302*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>, 303*0b57cec5SDimitry Andric InstrItinData<IIC_LdStLFD, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 304*0b57cec5SDimitry Andric InstrStage<1, [P440_LRACC]>, 305*0b57cec5SDimitry Andric InstrStage<1, [P440_AGEN]>, 306*0b57cec5SDimitry Andric InstrStage<1, [P440_CRD]>, 307*0b57cec5SDimitry Andric InstrStage<2, [P440_LWB]>], 308*0b57cec5SDimitry Andric [5, 1, 1], 309*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>, 310*0b57cec5SDimitry Andric InstrItinData<IIC_LdStLFDU, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 311*0b57cec5SDimitry Andric InstrStage<1, [P440_LRACC]>, 312*0b57cec5SDimitry Andric InstrStage<1, [P440_AGEN]>, 313*0b57cec5SDimitry Andric InstrStage<1, [P440_CRD]>, 314*0b57cec5SDimitry Andric InstrStage<1, [P440_LWB]>], 315*0b57cec5SDimitry Andric [5, 2, 1, 1], 316*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>, 317*0b57cec5SDimitry Andric InstrItinData<IIC_LdStLFDUX, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 318*0b57cec5SDimitry Andric InstrStage<1, [P440_LRACC]>, 319*0b57cec5SDimitry Andric InstrStage<1, [P440_AGEN]>, 320*0b57cec5SDimitry Andric InstrStage<1, [P440_CRD]>, 321*0b57cec5SDimitry Andric InstrStage<1, [P440_LWB]>], 322*0b57cec5SDimitry Andric [5, 2, 1, 1], 323*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass, P440_GPR_Bypass]>, 324*0b57cec5SDimitry Andric InstrItinData<IIC_LdStLHA, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 325*0b57cec5SDimitry Andric InstrStage<1, [P440_LRACC]>, 326*0b57cec5SDimitry Andric InstrStage<1, [P440_AGEN]>, 327*0b57cec5SDimitry Andric InstrStage<1, [P440_CRD]>, 328*0b57cec5SDimitry Andric InstrStage<1, [P440_LWB]>], 329*0b57cec5SDimitry Andric [4, 1, 1], 330*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass]>, 331*0b57cec5SDimitry Andric InstrItinData<IIC_LdStLHAU, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 332*0b57cec5SDimitry Andric InstrStage<1, [P440_LRACC]>, 333*0b57cec5SDimitry Andric InstrStage<1, [P440_AGEN]>, 334*0b57cec5SDimitry Andric InstrStage<1, [P440_CRD]>, 335*0b57cec5SDimitry Andric InstrStage<1, [P440_LWB]>], 336*0b57cec5SDimitry Andric [4, 1, 1], 337*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass]>, 338*0b57cec5SDimitry Andric InstrItinData<IIC_LdStLHAUX, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 339*0b57cec5SDimitry Andric InstrStage<1, [P440_LRACC]>, 340*0b57cec5SDimitry Andric InstrStage<1, [P440_AGEN]>, 341*0b57cec5SDimitry Andric InstrStage<1, [P440_CRD]>, 342*0b57cec5SDimitry Andric InstrStage<1, [P440_LWB]>], 343*0b57cec5SDimitry Andric [4, 1, 1], 344*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass]>, 345*0b57cec5SDimitry Andric InstrItinData<IIC_LdStLMW, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 346*0b57cec5SDimitry Andric InstrStage<1, [P440_LRACC]>, 347*0b57cec5SDimitry Andric InstrStage<1, [P440_AGEN]>, 348*0b57cec5SDimitry Andric InstrStage<1, [P440_CRD]>, 349*0b57cec5SDimitry Andric InstrStage<1, [P440_LWB]>], 350*0b57cec5SDimitry Andric [4, 1, 1], 351*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass]>, 352*0b57cec5SDimitry Andric InstrItinData<IIC_LdStLWARX, [InstrStage<1, [P440_DISS1]>, 353*0b57cec5SDimitry Andric InstrStage<1, [P440_IRACC], 0>, 354*0b57cec5SDimitry Andric InstrStage<4, [P440_LWARX_Hold], 0>, 355*0b57cec5SDimitry Andric InstrStage<1, [P440_LRACC]>, 356*0b57cec5SDimitry Andric InstrStage<1, [P440_AGEN]>, 357*0b57cec5SDimitry Andric InstrStage<1, [P440_CRD]>, 358*0b57cec5SDimitry Andric InstrStage<1, [P440_LWB]>], 359*0b57cec5SDimitry Andric [4, 1, 1], 360*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass]>, 361*0b57cec5SDimitry Andric InstrItinData<IIC_LdStSTD, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 362*0b57cec5SDimitry Andric InstrStage<1, [P440_LRACC]>, 363*0b57cec5SDimitry Andric InstrStage<1, [P440_AGEN]>, 364*0b57cec5SDimitry Andric InstrStage<1, [P440_CRD]>, 365*0b57cec5SDimitry Andric InstrStage<2, [P440_LWB]>], 366*0b57cec5SDimitry Andric [4, 1, 1], 367*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass]>, 368*0b57cec5SDimitry Andric InstrItinData<IIC_LdStSTU, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 369*0b57cec5SDimitry Andric InstrStage<1, [P440_LRACC]>, 370*0b57cec5SDimitry Andric InstrStage<1, [P440_AGEN]>, 371*0b57cec5SDimitry Andric InstrStage<1, [P440_CRD]>, 372*0b57cec5SDimitry Andric InstrStage<2, [P440_LWB]>], 373*0b57cec5SDimitry Andric [2, 1, 1, 1], 374*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass]>, 375*0b57cec5SDimitry Andric InstrItinData<IIC_LdStSTUX, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 376*0b57cec5SDimitry Andric InstrStage<1, [P440_LRACC]>, 377*0b57cec5SDimitry Andric InstrStage<1, [P440_AGEN]>, 378*0b57cec5SDimitry Andric InstrStage<1, [P440_CRD]>, 379*0b57cec5SDimitry Andric InstrStage<2, [P440_LWB]>], 380*0b57cec5SDimitry Andric [2, 1, 1, 1], 381*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass]>, 382*0b57cec5SDimitry Andric InstrItinData<IIC_LdStSTDCX, [InstrStage<1, [P440_DISS1]>, 383*0b57cec5SDimitry Andric InstrStage<1, [P440_IRACC], 0>, 384*0b57cec5SDimitry Andric InstrStage<4, [P440_LWARX_Hold], 0>, 385*0b57cec5SDimitry Andric InstrStage<1, [P440_LRACC]>, 386*0b57cec5SDimitry Andric InstrStage<1, [P440_AGEN]>, 387*0b57cec5SDimitry Andric InstrStage<1, [P440_CRD]>, 388*0b57cec5SDimitry Andric InstrStage<1, [P440_LWB]>], 389*0b57cec5SDimitry Andric [4, 1, 1], 390*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass]>, 391*0b57cec5SDimitry Andric InstrItinData<IIC_LdStSTWCX, [InstrStage<1, [P440_DISS1]>, 392*0b57cec5SDimitry Andric InstrStage<1, [P440_IRACC], 0>, 393*0b57cec5SDimitry Andric InstrStage<4, [P440_LWARX_Hold], 0>, 394*0b57cec5SDimitry Andric InstrStage<1, [P440_LRACC]>, 395*0b57cec5SDimitry Andric InstrStage<1, [P440_AGEN]>, 396*0b57cec5SDimitry Andric InstrStage<1, [P440_CRD]>, 397*0b57cec5SDimitry Andric InstrStage<1, [P440_LWB]>], 398*0b57cec5SDimitry Andric [4, 1, 1], 399*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass]>, 400*0b57cec5SDimitry Andric InstrItinData<IIC_LdStSync, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 401*0b57cec5SDimitry Andric InstrStage<1, [P440_LRACC]>, 402*0b57cec5SDimitry Andric InstrStage<3, [P440_AGEN], 1>, 403*0b57cec5SDimitry Andric InstrStage<2, [P440_CRD], 1>, 404*0b57cec5SDimitry Andric InstrStage<1, [P440_LWB]>]>, 405*0b57cec5SDimitry Andric InstrItinData<IIC_SprISYNC, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 406*0b57cec5SDimitry Andric InstrStage<1, [P440_FRACC], 0>, 407*0b57cec5SDimitry Andric InstrStage<1, [P440_LRACC], 0>, 408*0b57cec5SDimitry Andric InstrStage<1, [P440_IRACC]>, 409*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE1], 0>, 410*0b57cec5SDimitry Andric InstrStage<1, [P440_AGEN], 0>, 411*0b57cec5SDimitry Andric InstrStage<1, [P440_JEXE1], 0>, 412*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE1]>, 413*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE2], 0>, 414*0b57cec5SDimitry Andric InstrStage<1, [P440_CRD], 0>, 415*0b57cec5SDimitry Andric InstrStage<1, [P440_JEXE2], 0>, 416*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE2]>, 417*0b57cec5SDimitry Andric InstrStage<6, [P440_FEXE3], 0>, 418*0b57cec5SDimitry Andric InstrStage<6, [P440_LWB], 0>, 419*0b57cec5SDimitry Andric InstrStage<6, [P440_JWB], 0>, 420*0b57cec5SDimitry Andric InstrStage<6, [P440_IWB]>]>, 421*0b57cec5SDimitry Andric InstrItinData<IIC_SprMFSR, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 422*0b57cec5SDimitry Andric InstrStage<1, [P440_IRACC]>, 423*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE1]>, 424*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE2]>, 425*0b57cec5SDimitry Andric InstrStage<1, [P440_IWB]>], 426*0b57cec5SDimitry Andric [2, 0], 427*0b57cec5SDimitry Andric [P440_GPR_Bypass, P440_GPR_Bypass]>, 428*0b57cec5SDimitry Andric InstrItinData<IIC_SprMTMSR, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 429*0b57cec5SDimitry Andric InstrStage<1, [P440_IRACC]>, 430*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE1]>, 431*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE2]>, 432*0b57cec5SDimitry Andric InstrStage<1, [P440_IWB]>], 433*0b57cec5SDimitry Andric [2, 0], 434*0b57cec5SDimitry Andric [P440_GPR_Bypass, P440_GPR_Bypass]>, 435*0b57cec5SDimitry Andric InstrItinData<IIC_SprMTSR, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 436*0b57cec5SDimitry Andric InstrStage<1, [P440_IRACC]>, 437*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE1]>, 438*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE2]>, 439*0b57cec5SDimitry Andric InstrStage<3, [P440_IWB]>], 440*0b57cec5SDimitry Andric [5, 0], 441*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass]>, 442*0b57cec5SDimitry Andric InstrItinData<IIC_SprTLBSYNC, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 443*0b57cec5SDimitry Andric InstrStage<1, [P440_IRACC]>, 444*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE1]>, 445*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE2]>, 446*0b57cec5SDimitry Andric InstrStage<1, [P440_IWB]>]>, 447*0b57cec5SDimitry Andric InstrItinData<IIC_SprMFCR, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 448*0b57cec5SDimitry Andric InstrStage<1, [P440_IRACC]>, 449*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE1]>, 450*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE2]>, 451*0b57cec5SDimitry Andric InstrStage<1, [P440_IWB]>], 452*0b57cec5SDimitry Andric [4, 0], 453*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass]>, 454*0b57cec5SDimitry Andric InstrItinData<IIC_SprMFMSR, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 455*0b57cec5SDimitry Andric InstrStage<1, [P440_IRACC]>, 456*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE1]>, 457*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE2]>, 458*0b57cec5SDimitry Andric InstrStage<1, [P440_IWB]>], 459*0b57cec5SDimitry Andric [3, 0], 460*0b57cec5SDimitry Andric [P440_GPR_Bypass, P440_GPR_Bypass]>, 461*0b57cec5SDimitry Andric InstrItinData<IIC_SprMFSPR, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 462*0b57cec5SDimitry Andric InstrStage<1, [P440_IRACC]>, 463*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE1]>, 464*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE2]>, 465*0b57cec5SDimitry Andric InstrStage<3, [P440_IWB]>], 466*0b57cec5SDimitry Andric [6, 0], 467*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass]>, 468*0b57cec5SDimitry Andric InstrItinData<IIC_SprMFTB, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 469*0b57cec5SDimitry Andric InstrStage<1, [P440_IRACC]>, 470*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE1]>, 471*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE2]>, 472*0b57cec5SDimitry Andric InstrStage<3, [P440_IWB]>], 473*0b57cec5SDimitry Andric [6, 0], 474*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass]>, 475*0b57cec5SDimitry Andric InstrItinData<IIC_SprMTSPR, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 476*0b57cec5SDimitry Andric InstrStage<1, [P440_IRACC]>, 477*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE1]>, 478*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE2]>, 479*0b57cec5SDimitry Andric InstrStage<3, [P440_IWB]>], 480*0b57cec5SDimitry Andric [6, 0], 481*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass]>, 482*0b57cec5SDimitry Andric InstrItinData<IIC_SprMTSRIN, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 483*0b57cec5SDimitry Andric InstrStage<1, [P440_IRACC]>, 484*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE1]>, 485*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE2]>, 486*0b57cec5SDimitry Andric InstrStage<3, [P440_IWB]>], 487*0b57cec5SDimitry Andric [6, 0], 488*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass]>, 489*0b57cec5SDimitry Andric InstrItinData<IIC_SprRFI, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 490*0b57cec5SDimitry Andric InstrStage<1, [P440_IRACC]>, 491*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE1]>, 492*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE2]>, 493*0b57cec5SDimitry Andric InstrStage<1, [P440_IWB]>], 494*0b57cec5SDimitry Andric [4, 0], 495*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass]>, 496*0b57cec5SDimitry Andric InstrItinData<IIC_SprSC, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 497*0b57cec5SDimitry Andric InstrStage<1, [P440_IRACC]>, 498*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE1]>, 499*0b57cec5SDimitry Andric InstrStage<1, [P440_IEXE2]>, 500*0b57cec5SDimitry Andric InstrStage<1, [P440_IWB]>], 501*0b57cec5SDimitry Andric [4, 0], 502*0b57cec5SDimitry Andric [NoBypass, P440_GPR_Bypass]>, 503*0b57cec5SDimitry Andric InstrItinData<IIC_FPGeneral, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 504*0b57cec5SDimitry Andric InstrStage<1, [P440_FRACC]>, 505*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE1]>, 506*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE2]>, 507*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE3]>, 508*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE4]>, 509*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE5]>, 510*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE6]>, 511*0b57cec5SDimitry Andric InstrStage<1, [P440_FWB]>], 512*0b57cec5SDimitry Andric [6, 0, 0], 513*0b57cec5SDimitry Andric [P440_FPR_Bypass, 514*0b57cec5SDimitry Andric P440_FPR_Bypass, P440_FPR_Bypass]>, 515*0b57cec5SDimitry Andric InstrItinData<IIC_FPAddSub, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 516*0b57cec5SDimitry Andric InstrStage<1, [P440_FRACC]>, 517*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE1]>, 518*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE2]>, 519*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE3]>, 520*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE4]>, 521*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE5]>, 522*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE6]>, 523*0b57cec5SDimitry Andric InstrStage<1, [P440_FWB]>], 524*0b57cec5SDimitry Andric [6, 0, 0], 525*0b57cec5SDimitry Andric [P440_FPR_Bypass, 526*0b57cec5SDimitry Andric P440_FPR_Bypass, P440_FPR_Bypass]>, 527*0b57cec5SDimitry Andric InstrItinData<IIC_FPCompare, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 528*0b57cec5SDimitry Andric InstrStage<1, [P440_FRACC]>, 529*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE1]>, 530*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE2]>, 531*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE3]>, 532*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE4]>, 533*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE5]>, 534*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE6]>, 535*0b57cec5SDimitry Andric InstrStage<1, [P440_FWB]>], 536*0b57cec5SDimitry Andric [6, 0, 0], 537*0b57cec5SDimitry Andric [P440_FPR_Bypass, P440_FPR_Bypass, 538*0b57cec5SDimitry Andric P440_FPR_Bypass]>, 539*0b57cec5SDimitry Andric InstrItinData<IIC_FPDivD, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 540*0b57cec5SDimitry Andric InstrStage<1, [P440_FRACC]>, 541*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE1]>, 542*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE2]>, 543*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE3]>, 544*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE4]>, 545*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE5]>, 546*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE6]>, 547*0b57cec5SDimitry Andric InstrStage<25, [P440_FWB]>], 548*0b57cec5SDimitry Andric [31, 0, 0], 549*0b57cec5SDimitry Andric [NoBypass, P440_FPR_Bypass, P440_FPR_Bypass]>, 550*0b57cec5SDimitry Andric InstrItinData<IIC_FPDivS, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 551*0b57cec5SDimitry Andric InstrStage<1, [P440_FRACC]>, 552*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE1]>, 553*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE2]>, 554*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE3]>, 555*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE4]>, 556*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE5]>, 557*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE6]>, 558*0b57cec5SDimitry Andric InstrStage<13, [P440_FWB]>], 559*0b57cec5SDimitry Andric [19, 0, 0], 560*0b57cec5SDimitry Andric [NoBypass, P440_FPR_Bypass, P440_FPR_Bypass]>, 561*0b57cec5SDimitry Andric InstrItinData<IIC_FPFused, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 562*0b57cec5SDimitry Andric InstrStage<1, [P440_FRACC]>, 563*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE1]>, 564*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE2]>, 565*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE3]>, 566*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE4]>, 567*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE5]>, 568*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE6]>, 569*0b57cec5SDimitry Andric InstrStage<1, [P440_FWB]>], 570*0b57cec5SDimitry Andric [6, 0, 0, 0], 571*0b57cec5SDimitry Andric [P440_FPR_Bypass, 572*0b57cec5SDimitry Andric P440_FPR_Bypass, P440_FPR_Bypass, 573*0b57cec5SDimitry Andric P440_FPR_Bypass]>, 574*0b57cec5SDimitry Andric InstrItinData<IIC_FPRes, [InstrStage<1, [P440_DISS1, P440_DISS2]>, 575*0b57cec5SDimitry Andric InstrStage<1, [P440_FRACC]>, 576*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE1]>, 577*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE2]>, 578*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE3]>, 579*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE4]>, 580*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE5]>, 581*0b57cec5SDimitry Andric InstrStage<1, [P440_FEXE6]>, 582*0b57cec5SDimitry Andric InstrStage<1, [P440_FWB]>], 583*0b57cec5SDimitry Andric [6, 0], 584*0b57cec5SDimitry Andric [P440_FPR_Bypass, P440_FPR_Bypass]> 585*0b57cec5SDimitry Andric]>; 586*0b57cec5SDimitry Andric 587*0b57cec5SDimitry Andric// ===---------------------------------------------------------------------===// 588*0b57cec5SDimitry Andric// PPC440 machine model for scheduling and other instruction cost heuristics. 589*0b57cec5SDimitry Andric 590*0b57cec5SDimitry Andricdef PPC440Model : SchedMachineModel { 591*0b57cec5SDimitry Andric let IssueWidth = 2; // 2 instructions are dispatched per cycle. 592*0b57cec5SDimitry Andric let LoadLatency = 5; // Optimistic load latency assuming bypass. 593*0b57cec5SDimitry Andric // This is overriden by OperandCycles if the 594*0b57cec5SDimitry Andric // Itineraries are queried instead. 595*0b57cec5SDimitry Andric 596*0b57cec5SDimitry Andric let CompleteModel = 0; 597*0b57cec5SDimitry Andric 598*0b57cec5SDimitry Andric let Itineraries = PPC440Itineraries; 599*0b57cec5SDimitry Andric} 600*0b57cec5SDimitry Andric 601