1*9880d681SAndroid Build Coastguard Worker//=- ARMScheduleA8.td - ARM Cortex-A8 Scheduling Definitions -*- tablegen -*-=// 2*9880d681SAndroid Build Coastguard Worker// 3*9880d681SAndroid Build Coastguard Worker// The LLVM Compiler Infrastructure 4*9880d681SAndroid Build Coastguard Worker// 5*9880d681SAndroid Build Coastguard Worker// This file is distributed under the University of Illinois Open Source 6*9880d681SAndroid Build Coastguard Worker// License. See LICENSE.TXT for details. 7*9880d681SAndroid Build Coastguard Worker// 8*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 9*9880d681SAndroid Build Coastguard Worker// 10*9880d681SAndroid Build Coastguard Worker// This file defines the itinerary class data for the ARM Cortex A8 processors. 11*9880d681SAndroid Build Coastguard Worker// 12*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Worker// 15*9880d681SAndroid Build Coastguard Worker// Scheduling information derived from "Cortex-A8 Technical Reference Manual". 16*9880d681SAndroid Build Coastguard Worker// Functional Units. 17*9880d681SAndroid Build Coastguard Workerdef A8_Pipe0 : FuncUnit; // pipeline 0 18*9880d681SAndroid Build Coastguard Workerdef A8_Pipe1 : FuncUnit; // pipeline 1 19*9880d681SAndroid Build Coastguard Workerdef A8_LSPipe : FuncUnit; // Load / store pipeline 20*9880d681SAndroid Build Coastguard Workerdef A8_NPipe : FuncUnit; // NEON ALU/MUL pipe 21*9880d681SAndroid Build Coastguard Workerdef A8_NLSPipe : FuncUnit; // NEON LS pipe 22*9880d681SAndroid Build Coastguard Worker// 23*9880d681SAndroid Build Coastguard Worker// Dual issue pipeline represented by A8_Pipe0 | A8_Pipe1 24*9880d681SAndroid Build Coastguard Worker// 25*9880d681SAndroid Build Coastguard Workerdef CortexA8Itineraries : ProcessorItineraries< 26*9880d681SAndroid Build Coastguard Worker [A8_Pipe0, A8_Pipe1, A8_LSPipe, A8_NPipe, A8_NLSPipe], 27*9880d681SAndroid Build Coastguard Worker [], [ 28*9880d681SAndroid Build Coastguard Worker // Two fully-pipelined integer ALU pipelines 29*9880d681SAndroid Build Coastguard Worker // 30*9880d681SAndroid Build Coastguard Worker // No operand cycles 31*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iALUx , [InstrStage<1, [A8_Pipe0, A8_Pipe1]>]>, 32*9880d681SAndroid Build Coastguard Worker // 33*9880d681SAndroid Build Coastguard Worker // Binary Instructions that produce a result 34*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iALUi ,[InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [2, 2]>, 35*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iALUr ,[InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [2, 2, 2]>, 36*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iALUsi,[InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [2, 2, 1]>, 37*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iALUsir,[InstrStage<1,[A8_Pipe0, A8_Pipe1]>], [2, 1, 2]>, 38*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iALUsr,[InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [2, 2, 1, 1]>, 39*9880d681SAndroid Build Coastguard Worker // 40*9880d681SAndroid Build Coastguard Worker // Bitwise Instructions that produce a result 41*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iBITi ,[InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [2, 2]>, 42*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iBITr ,[InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [2, 2, 2]>, 43*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iBITsi,[InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [2, 2, 1]>, 44*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iBITsr,[InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [2, 2, 1, 1]>, 45*9880d681SAndroid Build Coastguard Worker // 46*9880d681SAndroid Build Coastguard Worker // Unary Instructions that produce a result 47*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iUNAr , [InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [2, 2]>, 48*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iUNAsi, [InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [2, 1]>, 49*9880d681SAndroid Build Coastguard Worker // 50*9880d681SAndroid Build Coastguard Worker // Zero and sign extension instructions 51*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iEXTr , [InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [1, 1]>, 52*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iEXTAr, [InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [2, 2, 1]>, 53*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iEXTAsr,[InstrStage<1, [A8_Pipe0, A8_Pipe1]>],[2, 2, 1, 1]>, 54*9880d681SAndroid Build Coastguard Worker // 55*9880d681SAndroid Build Coastguard Worker // Compare instructions 56*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iCMPi , [InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [2]>, 57*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iCMPr , [InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [2, 2]>, 58*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iCMPsi, [InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [2, 1]>, 59*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iCMPsr, [InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [2, 1, 1]>, 60*9880d681SAndroid Build Coastguard Worker // 61*9880d681SAndroid Build Coastguard Worker // Test instructions 62*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iTSTi , [InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [2]>, 63*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iTSTr , [InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [2, 2]>, 64*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iTSTsi, [InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [2, 1]>, 65*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iTSTsr, [InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [2, 1, 1]>, 66*9880d681SAndroid Build Coastguard Worker // 67*9880d681SAndroid Build Coastguard Worker // Move instructions, unconditional 68*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iMOVi , [InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [1]>, 69*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iMOVr , [InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [1, 1]>, 70*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iMOVsi, [InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [1, 1]>, 71*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iMOVsr, [InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [1, 1, 1]>, 72*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iMOVix2,[InstrStage<1, [A8_Pipe0, A8_Pipe1]>, 73*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [2]>, 74*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iMOVix2addpc,[InstrStage<1, [A8_Pipe0, A8_Pipe1]>, 75*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_Pipe0, A8_Pipe1]>, 76*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [3]>, 77*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iMOVix2ld,[InstrStage<1, [A8_Pipe0, A8_Pipe1]>, 78*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_Pipe0, A8_Pipe1]>, 79*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>], [5]>, 80*9880d681SAndroid Build Coastguard Worker // 81*9880d681SAndroid Build Coastguard Worker // Move instructions, conditional 82*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iCMOVi , [InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [2]>, 83*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iCMOVr , [InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [2, 1]>, 84*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iCMOVsi, [InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [2, 1]>, 85*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iCMOVsr, [InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [2, 1, 1]>, 86*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iCMOVix2,[InstrStage<1, [A8_Pipe0, A8_Pipe1]>, 87*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [3, 1]>, 88*9880d681SAndroid Build Coastguard Worker // 89*9880d681SAndroid Build Coastguard Worker // MVN instructions 90*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iMVNi , [InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [1]>, 91*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iMVNr , [InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [1, 1]>, 92*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iMVNsi, [InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [1, 1]>, 93*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iMVNsr, [InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [1, 1, 1]>, 94*9880d681SAndroid Build Coastguard Worker 95*9880d681SAndroid Build Coastguard Worker // Integer multiply pipeline 96*9880d681SAndroid Build Coastguard Worker // Result written in E5, but that is relative to the last cycle of multicycle, 97*9880d681SAndroid Build Coastguard Worker // so we use 6 for those cases 98*9880d681SAndroid Build Coastguard Worker // 99*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iMUL16 , [InstrStage<1, [A8_Pipe0]>], [5, 1, 1]>, 100*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iMAC16 , [InstrStage<2, [A8_Pipe0]>], [6, 1, 1, 4]>, 101*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iMUL32 , [InstrStage<2, [A8_Pipe0]>], [6, 1, 1]>, 102*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iMAC32 , [InstrStage<2, [A8_Pipe0]>], [6, 1, 1, 4]>, 103*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iMUL64 , [InstrStage<3, [A8_Pipe0]>], [6, 6, 1, 1]>, 104*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iMAC64 , [InstrStage<3, [A8_Pipe0]>], [6, 6, 1, 1]>, 105*9880d681SAndroid Build Coastguard Worker 106*9880d681SAndroid Build Coastguard Worker // Integer load pipeline 107*9880d681SAndroid Build Coastguard Worker // 108*9880d681SAndroid Build Coastguard Worker // Immediate offset 109*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iLoad_i , [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 110*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>], [3, 1]>, 111*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iLoad_bh_i, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 112*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>], [3, 1]>, 113*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iLoad_d_i, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 114*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>], [3, 1]>, 115*9880d681SAndroid Build Coastguard Worker // 116*9880d681SAndroid Build Coastguard Worker // Register offset 117*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iLoad_r , [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 118*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>], [3, 1, 1]>, 119*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iLoad_bh_r, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 120*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>], [3, 1, 1]>, 121*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iLoad_d_r , [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 122*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>], [3, 1, 1]>, 123*9880d681SAndroid Build Coastguard Worker // 124*9880d681SAndroid Build Coastguard Worker // Scaled register offset, issues over 2 cycles 125*9880d681SAndroid Build Coastguard Worker // FIXME: lsl by 2 takes 1 cycle. 126*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iLoad_si , [InstrStage<2, [A8_Pipe0, A8_Pipe1], 0>, 127*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>], [4, 1, 1]>, 128*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iLoad_bh_si,[InstrStage<2, [A8_Pipe0, A8_Pipe1], 0>, 129*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>], [4, 1, 1]>, 130*9880d681SAndroid Build Coastguard Worker // 131*9880d681SAndroid Build Coastguard Worker // Immediate offset with update 132*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iLoad_iu , [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 133*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>], [3, 2, 1]>, 134*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iLoad_bh_iu,[InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 135*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>], [3, 2, 1]>, 136*9880d681SAndroid Build Coastguard Worker // 137*9880d681SAndroid Build Coastguard Worker // Register offset with update 138*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iLoad_ru , [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 139*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>], [3, 2, 1, 1]>, 140*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iLoad_bh_ru,[InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 141*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>], [3, 2, 1, 1]>, 142*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iLoad_d_ru, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 143*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>], [3, 2, 1, 1]>, 144*9880d681SAndroid Build Coastguard Worker // 145*9880d681SAndroid Build Coastguard Worker // Scaled register offset with update, issues over 2 cycles 146*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iLoad_siu , [InstrStage<2, [A8_Pipe0, A8_Pipe1], 0>, 147*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_LSPipe]>], [4, 3, 1, 1]>, 148*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iLoad_bh_siu,[InstrStage<2, [A8_Pipe0, A8_Pipe1], 0>, 149*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_LSPipe]>], [4, 3, 1, 1]>, 150*9880d681SAndroid Build Coastguard Worker // 151*9880d681SAndroid Build Coastguard Worker // Load multiple, def is the 5th operand. Pipeline 0 only. 152*9880d681SAndroid Build Coastguard Worker // FIXME: A8_LSPipe cycle time is dynamic, this assumes 3 to 4 registers. 153*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iLoad_m , [InstrStage<2, [A8_Pipe0], 0>, 154*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_LSPipe]>], 155*9880d681SAndroid Build Coastguard Worker [1, 1, 1, 1, 3], [], -1>, // dynamic uops 156*9880d681SAndroid Build Coastguard Worker // 157*9880d681SAndroid Build Coastguard Worker // Load multiple + update, defs are the 1st and 5th operands. 158*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iLoad_mu , [InstrStage<3, [A8_Pipe0], 0>, 159*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_LSPipe]>], 160*9880d681SAndroid Build Coastguard Worker [2, 1, 1, 1, 3], [], -1>, // dynamic uops 161*9880d681SAndroid Build Coastguard Worker // 162*9880d681SAndroid Build Coastguard Worker // Load multiple plus branch 163*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iLoad_mBr, [InstrStage<3, [A8_Pipe0], 0>, 164*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_LSPipe]>, 165*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_Pipe0, A8_Pipe1]>], 166*9880d681SAndroid Build Coastguard Worker [1, 2, 1, 1, 3], [], -1>, // dynamic uops 167*9880d681SAndroid Build Coastguard Worker // 168*9880d681SAndroid Build Coastguard Worker // Pop, def is the 3rd operand. 169*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iPop , [InstrStage<3, [A8_Pipe0], 0>, 170*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_LSPipe]>], 171*9880d681SAndroid Build Coastguard Worker [1, 1, 3], [], -1>, // dynamic uops 172*9880d681SAndroid Build Coastguard Worker // 173*9880d681SAndroid Build Coastguard Worker // Push, def is the 3th operand. 174*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iPop_Br, [InstrStage<3, [A8_Pipe0], 0>, 175*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_LSPipe]>, 176*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_Pipe0, A8_Pipe1]>], 177*9880d681SAndroid Build Coastguard Worker [1, 1, 3], [], -1>, // dynamic uops 178*9880d681SAndroid Build Coastguard Worker // 179*9880d681SAndroid Build Coastguard Worker // iLoadi + iALUr for t2LDRpci_pic. 180*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iLoadiALU, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 181*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>, 182*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [4, 1]>, 183*9880d681SAndroid Build Coastguard Worker 184*9880d681SAndroid Build Coastguard Worker 185*9880d681SAndroid Build Coastguard Worker // Integer store pipeline 186*9880d681SAndroid Build Coastguard Worker // 187*9880d681SAndroid Build Coastguard Worker // Immediate offset 188*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iStore_i , [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 189*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>], [3, 1]>, 190*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iStore_bh_i,[InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 191*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>], [3, 1]>, 192*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iStore_d_i, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 193*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>], [3, 1]>, 194*9880d681SAndroid Build Coastguard Worker // 195*9880d681SAndroid Build Coastguard Worker // Register offset 196*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iStore_r , [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 197*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>], [3, 1, 1]>, 198*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iStore_bh_r,[InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 199*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>], [3, 1, 1]>, 200*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iStore_d_r, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 201*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>], [3, 1, 1]>, 202*9880d681SAndroid Build Coastguard Worker // 203*9880d681SAndroid Build Coastguard Worker // Scaled register offset, issues over 2 cycles 204*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iStore_si , [InstrStage<2, [A8_Pipe0, A8_Pipe1], 0>, 205*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_LSPipe]>], [3, 1, 1]>, 206*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iStore_bh_si,[InstrStage<2, [A8_Pipe0, A8_Pipe1], 0>, 207*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_LSPipe]>], [3, 1, 1]>, 208*9880d681SAndroid Build Coastguard Worker // 209*9880d681SAndroid Build Coastguard Worker // Immediate offset with update 210*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iStore_iu , [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 211*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>], [2, 3, 1]>, 212*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iStore_bh_iu,[InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 213*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>], [2, 3, 1]>, 214*9880d681SAndroid Build Coastguard Worker // 215*9880d681SAndroid Build Coastguard Worker // Register offset with update 216*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iStore_ru , [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 217*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>], [2, 3, 1, 1]>, 218*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iStore_bh_ru,[InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 219*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>], [2, 3, 1, 1]>, 220*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iStore_d_ru, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 221*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>], [2, 3, 1, 1]>, 222*9880d681SAndroid Build Coastguard Worker // 223*9880d681SAndroid Build Coastguard Worker // Scaled register offset with update, issues over 2 cycles 224*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iStore_siu, [InstrStage<2, [A8_Pipe0, A8_Pipe1], 0>, 225*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_LSPipe]>], [3, 3, 1, 1]>, 226*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iStore_bh_siu,[InstrStage<2, [A8_Pipe0, A8_Pipe1], 0>, 227*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_LSPipe]>], [3, 3, 1, 1]>, 228*9880d681SAndroid Build Coastguard Worker // 229*9880d681SAndroid Build Coastguard Worker // Store multiple. Pipeline 0 only. 230*9880d681SAndroid Build Coastguard Worker // FIXME: A8_LSPipe cycle time is dynamic, this assumes 3 to 4 registers. 231*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iStore_m , [InstrStage<2, [A8_Pipe0], 0>, 232*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_LSPipe]>], 233*9880d681SAndroid Build Coastguard Worker [], [], -1>, // dynamic uops 234*9880d681SAndroid Build Coastguard Worker // 235*9880d681SAndroid Build Coastguard Worker // Store multiple + update 236*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_iStore_mu, [InstrStage<2, [A8_Pipe0], 0>, 237*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_LSPipe]>], 238*9880d681SAndroid Build Coastguard Worker [2], [], -1>, // dynamic uops 239*9880d681SAndroid Build Coastguard Worker // 240*9880d681SAndroid Build Coastguard Worker // Preload 241*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_Preload, [InstrStage<1, [A8_Pipe0, A8_Pipe1]>], [2, 2]>, 242*9880d681SAndroid Build Coastguard Worker 243*9880d681SAndroid Build Coastguard Worker // Branch 244*9880d681SAndroid Build Coastguard Worker // 245*9880d681SAndroid Build Coastguard Worker // no delay slots, so the latency of a branch is unimportant 246*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_Br , [InstrStage<1, [A8_Pipe0, A8_Pipe1]>]>, 247*9880d681SAndroid Build Coastguard Worker 248*9880d681SAndroid Build Coastguard Worker // VFP 249*9880d681SAndroid Build Coastguard Worker // Issue through integer pipeline, and execute in NEON unit. We assume 250*9880d681SAndroid Build Coastguard Worker // RunFast mode so that NFP pipeline is used for single-precision when 251*9880d681SAndroid Build Coastguard Worker // possible. 252*9880d681SAndroid Build Coastguard Worker // 253*9880d681SAndroid Build Coastguard Worker // FP Special Register to Integer Register File Move 254*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_fpSTAT , [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 255*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NLSPipe]>], [20]>, 256*9880d681SAndroid Build Coastguard Worker // 257*9880d681SAndroid Build Coastguard Worker // Single-precision FP Unary 258*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_fpUNA32 , [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 259*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [7, 1]>, 260*9880d681SAndroid Build Coastguard Worker // 261*9880d681SAndroid Build Coastguard Worker // Double-precision FP Unary 262*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_fpUNA64 , [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 263*9880d681SAndroid Build Coastguard Worker InstrStage<4, [A8_NPipe], 0>, 264*9880d681SAndroid Build Coastguard Worker InstrStage<4, [A8_NLSPipe]>], [4, 1]>, 265*9880d681SAndroid Build Coastguard Worker // 266*9880d681SAndroid Build Coastguard Worker // Single-precision FP Compare 267*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_fpCMP32 , [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 268*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [1, 1]>, 269*9880d681SAndroid Build Coastguard Worker // 270*9880d681SAndroid Build Coastguard Worker // Double-precision FP Compare 271*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_fpCMP64 , [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 272*9880d681SAndroid Build Coastguard Worker InstrStage<4, [A8_NPipe], 0>, 273*9880d681SAndroid Build Coastguard Worker InstrStage<4, [A8_NLSPipe]>], [4, 1]>, 274*9880d681SAndroid Build Coastguard Worker // 275*9880d681SAndroid Build Coastguard Worker // Single to Double FP Convert 276*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_fpCVTSD , [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 277*9880d681SAndroid Build Coastguard Worker InstrStage<7, [A8_NPipe], 0>, 278*9880d681SAndroid Build Coastguard Worker InstrStage<7, [A8_NLSPipe]>], [7, 1]>, 279*9880d681SAndroid Build Coastguard Worker // 280*9880d681SAndroid Build Coastguard Worker // Double to Single FP Convert 281*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_fpCVTDS , [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 282*9880d681SAndroid Build Coastguard Worker InstrStage<5, [A8_NPipe], 0>, 283*9880d681SAndroid Build Coastguard Worker InstrStage<5, [A8_NLSPipe]>], [5, 1]>, 284*9880d681SAndroid Build Coastguard Worker // 285*9880d681SAndroid Build Coastguard Worker // Single-Precision FP to Integer Convert 286*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_fpCVTSI , [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 287*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [7, 1]>, 288*9880d681SAndroid Build Coastguard Worker // 289*9880d681SAndroid Build Coastguard Worker // Double-Precision FP to Integer Convert 290*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_fpCVTDI , [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 291*9880d681SAndroid Build Coastguard Worker InstrStage<8, [A8_NPipe], 0>, 292*9880d681SAndroid Build Coastguard Worker InstrStage<8, [A8_NLSPipe]>], [8, 1]>, 293*9880d681SAndroid Build Coastguard Worker // 294*9880d681SAndroid Build Coastguard Worker // Integer to Single-Precision FP Convert 295*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_fpCVTIS , [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 296*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [7, 1]>, 297*9880d681SAndroid Build Coastguard Worker // 298*9880d681SAndroid Build Coastguard Worker // Integer to Double-Precision FP Convert 299*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_fpCVTID , [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 300*9880d681SAndroid Build Coastguard Worker InstrStage<8, [A8_NPipe], 0>, 301*9880d681SAndroid Build Coastguard Worker InstrStage<8, [A8_NLSPipe]>], [8, 1]>, 302*9880d681SAndroid Build Coastguard Worker // 303*9880d681SAndroid Build Coastguard Worker // Single-precision FP ALU 304*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_fpALU32 , [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 305*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [7, 1, 1]>, 306*9880d681SAndroid Build Coastguard Worker // 307*9880d681SAndroid Build Coastguard Worker // Double-precision FP ALU 308*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_fpALU64 , [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 309*9880d681SAndroid Build Coastguard Worker InstrStage<9, [A8_NPipe], 0>, 310*9880d681SAndroid Build Coastguard Worker InstrStage<9, [A8_NLSPipe]>], [9, 1, 1]>, 311*9880d681SAndroid Build Coastguard Worker // 312*9880d681SAndroid Build Coastguard Worker // Single-precision FP Multiply 313*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_fpMUL32 , [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 314*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [7, 1, 1]>, 315*9880d681SAndroid Build Coastguard Worker // 316*9880d681SAndroid Build Coastguard Worker // Double-precision FP Multiply 317*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_fpMUL64 , [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 318*9880d681SAndroid Build Coastguard Worker InstrStage<11, [A8_NPipe], 0>, 319*9880d681SAndroid Build Coastguard Worker InstrStage<11, [A8_NLSPipe]>], [11, 1, 1]>, 320*9880d681SAndroid Build Coastguard Worker // 321*9880d681SAndroid Build Coastguard Worker // Single-precision FP MAC 322*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_fpMAC32 , [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 323*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [7, 2, 1, 1]>, 324*9880d681SAndroid Build Coastguard Worker // 325*9880d681SAndroid Build Coastguard Worker // Double-precision FP MAC 326*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_fpMAC64 , [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 327*9880d681SAndroid Build Coastguard Worker InstrStage<19, [A8_NPipe], 0>, 328*9880d681SAndroid Build Coastguard Worker InstrStage<19, [A8_NLSPipe]>], [19, 2, 1, 1]>, 329*9880d681SAndroid Build Coastguard Worker // 330*9880d681SAndroid Build Coastguard Worker // Single-precision Fused FP MAC 331*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_fpFMAC32, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 332*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [7, 2, 1, 1]>, 333*9880d681SAndroid Build Coastguard Worker // 334*9880d681SAndroid Build Coastguard Worker // Double-precision Fused FP MAC 335*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_fpFMAC64, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 336*9880d681SAndroid Build Coastguard Worker InstrStage<19, [A8_NPipe], 0>, 337*9880d681SAndroid Build Coastguard Worker InstrStage<19, [A8_NLSPipe]>], [19, 2, 1, 1]>, 338*9880d681SAndroid Build Coastguard Worker // 339*9880d681SAndroid Build Coastguard Worker // Single-precision FP DIV 340*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_fpDIV32 , [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 341*9880d681SAndroid Build Coastguard Worker InstrStage<20, [A8_NPipe], 0>, 342*9880d681SAndroid Build Coastguard Worker InstrStage<20, [A8_NLSPipe]>], [20, 1, 1]>, 343*9880d681SAndroid Build Coastguard Worker // 344*9880d681SAndroid Build Coastguard Worker // Double-precision FP DIV 345*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_fpDIV64 , [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 346*9880d681SAndroid Build Coastguard Worker InstrStage<29, [A8_NPipe], 0>, 347*9880d681SAndroid Build Coastguard Worker InstrStage<29, [A8_NLSPipe]>], [29, 1, 1]>, 348*9880d681SAndroid Build Coastguard Worker // 349*9880d681SAndroid Build Coastguard Worker // Single-precision FP SQRT 350*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_fpSQRT32, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 351*9880d681SAndroid Build Coastguard Worker InstrStage<19, [A8_NPipe], 0>, 352*9880d681SAndroid Build Coastguard Worker InstrStage<19, [A8_NLSPipe]>], [19, 1]>, 353*9880d681SAndroid Build Coastguard Worker // 354*9880d681SAndroid Build Coastguard Worker // Double-precision FP SQRT 355*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_fpSQRT64, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 356*9880d681SAndroid Build Coastguard Worker InstrStage<29, [A8_NPipe], 0>, 357*9880d681SAndroid Build Coastguard Worker InstrStage<29, [A8_NLSPipe]>], [29, 1]>, 358*9880d681SAndroid Build Coastguard Worker 359*9880d681SAndroid Build Coastguard Worker // 360*9880d681SAndroid Build Coastguard Worker // Integer to Single-precision Move 361*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_fpMOVIS, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 362*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], 363*9880d681SAndroid Build Coastguard Worker [2, 1]>, 364*9880d681SAndroid Build Coastguard Worker // 365*9880d681SAndroid Build Coastguard Worker // Integer to Double-precision Move 366*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_fpMOVID, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 367*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], 368*9880d681SAndroid Build Coastguard Worker [2, 1, 1]>, 369*9880d681SAndroid Build Coastguard Worker // 370*9880d681SAndroid Build Coastguard Worker // Single-precision to Integer Move 371*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_fpMOVSI, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 372*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], 373*9880d681SAndroid Build Coastguard Worker [20, 1]>, 374*9880d681SAndroid Build Coastguard Worker // 375*9880d681SAndroid Build Coastguard Worker // Double-precision to Integer Move 376*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_fpMOVDI, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 377*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], 378*9880d681SAndroid Build Coastguard Worker [20, 20, 1]>, 379*9880d681SAndroid Build Coastguard Worker 380*9880d681SAndroid Build Coastguard Worker // 381*9880d681SAndroid Build Coastguard Worker // Single-precision FP Load 382*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_fpLoad32, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 383*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NLSPipe], 0>, 384*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>], 385*9880d681SAndroid Build Coastguard Worker [2, 1]>, 386*9880d681SAndroid Build Coastguard Worker // 387*9880d681SAndroid Build Coastguard Worker // Double-precision FP Load 388*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_fpLoad64, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 389*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NLSPipe], 0>, 390*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>], 391*9880d681SAndroid Build Coastguard Worker [2, 1]>, 392*9880d681SAndroid Build Coastguard Worker // 393*9880d681SAndroid Build Coastguard Worker // FP Load Multiple 394*9880d681SAndroid Build Coastguard Worker // FIXME: A8_LSPipe cycle time is dynamic, this assumes 3 to 4 registers. 395*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_fpLoad_m, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 396*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NLSPipe], 0>, 397*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>, 398*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NLSPipe], 0>, 399*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>], 400*9880d681SAndroid Build Coastguard Worker [1, 1, 1, 2], [], -1>, // dynamic uops 401*9880d681SAndroid Build Coastguard Worker // 402*9880d681SAndroid Build Coastguard Worker // FP Load Multiple + update 403*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_fpLoad_mu,[InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 404*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NLSPipe], 0>, 405*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>, 406*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NLSPipe], 0>, 407*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>], 408*9880d681SAndroid Build Coastguard Worker [2, 1, 1, 1, 2], [], -1>, // dynamic uops 409*9880d681SAndroid Build Coastguard Worker // 410*9880d681SAndroid Build Coastguard Worker // Single-precision FP Store 411*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_fpStore32,[InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 412*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NLSPipe], 0>, 413*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>], 414*9880d681SAndroid Build Coastguard Worker [1, 1]>, 415*9880d681SAndroid Build Coastguard Worker // 416*9880d681SAndroid Build Coastguard Worker // Double-precision FP Store 417*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_fpStore64,[InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 418*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NLSPipe], 0>, 419*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>], 420*9880d681SAndroid Build Coastguard Worker [1, 1]>, 421*9880d681SAndroid Build Coastguard Worker // 422*9880d681SAndroid Build Coastguard Worker // FP Store Multiple 423*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_fpStore_m,[InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 424*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NLSPipe], 0>, 425*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>, 426*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NLSPipe], 0>, 427*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>], 428*9880d681SAndroid Build Coastguard Worker [1, 1, 1, 1], [], -1>, // dynamic uops 429*9880d681SAndroid Build Coastguard Worker // 430*9880d681SAndroid Build Coastguard Worker // FP Store Multiple + update 431*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_fpStore_mu,[InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 432*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NLSPipe], 0>, 433*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>, 434*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NLSPipe], 0>, 435*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_LSPipe]>], 436*9880d681SAndroid Build Coastguard Worker [2, 1, 1, 1, 1], [], -1>, // dynamic uops 437*9880d681SAndroid Build Coastguard Worker // NEON 438*9880d681SAndroid Build Coastguard Worker // Issue through integer pipeline, and execute in NEON unit. 439*9880d681SAndroid Build Coastguard Worker // 440*9880d681SAndroid Build Coastguard Worker // VLD1 441*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VLD1, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 442*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NLSPipe], 0>, 443*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_LSPipe]>], 444*9880d681SAndroid Build Coastguard Worker [2, 1]>, 445*9880d681SAndroid Build Coastguard Worker // VLD1x2 446*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VLD1x2, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 447*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NLSPipe], 0>, 448*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_LSPipe]>], 449*9880d681SAndroid Build Coastguard Worker [2, 2, 1]>, 450*9880d681SAndroid Build Coastguard Worker // 451*9880d681SAndroid Build Coastguard Worker // VLD1x3 452*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VLD1x3, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 453*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_NLSPipe], 0>, 454*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_LSPipe]>], 455*9880d681SAndroid Build Coastguard Worker [2, 2, 3, 1]>, 456*9880d681SAndroid Build Coastguard Worker // 457*9880d681SAndroid Build Coastguard Worker // VLD1x4 458*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VLD1x4, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 459*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_NLSPipe], 0>, 460*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_LSPipe]>], 461*9880d681SAndroid Build Coastguard Worker [2, 2, 3, 3, 1]>, 462*9880d681SAndroid Build Coastguard Worker // 463*9880d681SAndroid Build Coastguard Worker // VLD1u 464*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VLD1u, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 465*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NLSPipe], 0>, 466*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_LSPipe]>], 467*9880d681SAndroid Build Coastguard Worker [2, 2, 1]>, 468*9880d681SAndroid Build Coastguard Worker // 469*9880d681SAndroid Build Coastguard Worker // VLD1x2u 470*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VLD1x2u, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 471*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NLSPipe], 0>, 472*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_LSPipe]>], 473*9880d681SAndroid Build Coastguard Worker [2, 2, 2, 1]>, 474*9880d681SAndroid Build Coastguard Worker // 475*9880d681SAndroid Build Coastguard Worker // VLD1x3u 476*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VLD1x3u, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 477*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_NLSPipe], 0>, 478*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_LSPipe]>], 479*9880d681SAndroid Build Coastguard Worker [2, 2, 3, 2, 1]>, 480*9880d681SAndroid Build Coastguard Worker // 481*9880d681SAndroid Build Coastguard Worker // VLD1x4u 482*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VLD1x4u, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 483*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_NLSPipe], 0>, 484*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_LSPipe]>], 485*9880d681SAndroid Build Coastguard Worker [2, 2, 3, 3, 2, 1]>, 486*9880d681SAndroid Build Coastguard Worker // 487*9880d681SAndroid Build Coastguard Worker // VLD1ln 488*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VLD1ln, [InstrStage<1, [A8_Pipe0, A8_Pipe1]>, 489*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_NLSPipe], 0>, 490*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_LSPipe]>], 491*9880d681SAndroid Build Coastguard Worker [3, 1, 1, 1]>, 492*9880d681SAndroid Build Coastguard Worker // 493*9880d681SAndroid Build Coastguard Worker // VLD1lnu 494*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VLD1lnu, [InstrStage<1, [A8_Pipe0, A8_Pipe1]>, 495*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_NLSPipe], 0>, 496*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_LSPipe]>], 497*9880d681SAndroid Build Coastguard Worker [3, 2, 1, 1, 1, 1]>, 498*9880d681SAndroid Build Coastguard Worker // 499*9880d681SAndroid Build Coastguard Worker // VLD1dup 500*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VLD1dup, [InstrStage<1, [A8_Pipe0, A8_Pipe1]>, 501*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NLSPipe], 0>, 502*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_LSPipe]>], 503*9880d681SAndroid Build Coastguard Worker [2, 1]>, 504*9880d681SAndroid Build Coastguard Worker // 505*9880d681SAndroid Build Coastguard Worker // VLD1dupu 506*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VLD1dupu, [InstrStage<1, [A8_Pipe0, A8_Pipe1]>, 507*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NLSPipe], 0>, 508*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_LSPipe]>], 509*9880d681SAndroid Build Coastguard Worker [2, 2, 1, 1]>, 510*9880d681SAndroid Build Coastguard Worker // 511*9880d681SAndroid Build Coastguard Worker // VLD2 512*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VLD2, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 513*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NLSPipe], 0>, 514*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_LSPipe]>], 515*9880d681SAndroid Build Coastguard Worker [2, 2, 1]>, 516*9880d681SAndroid Build Coastguard Worker // 517*9880d681SAndroid Build Coastguard Worker // VLD2x2 518*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VLD2x2, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 519*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_NLSPipe], 0>, 520*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_LSPipe]>], 521*9880d681SAndroid Build Coastguard Worker [2, 2, 3, 3, 1]>, 522*9880d681SAndroid Build Coastguard Worker // 523*9880d681SAndroid Build Coastguard Worker // VLD2ln 524*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VLD2ln, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 525*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_NLSPipe], 0>, 526*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_LSPipe]>], 527*9880d681SAndroid Build Coastguard Worker [3, 3, 1, 1, 1, 1]>, 528*9880d681SAndroid Build Coastguard Worker // 529*9880d681SAndroid Build Coastguard Worker // VLD2u 530*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VLD2u, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 531*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NLSPipe], 0>, 532*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_LSPipe]>], 533*9880d681SAndroid Build Coastguard Worker [2, 2, 2, 1, 1, 1]>, 534*9880d681SAndroid Build Coastguard Worker // 535*9880d681SAndroid Build Coastguard Worker // VLD2x2u 536*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VLD2x2u, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 537*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_NLSPipe], 0>, 538*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_LSPipe]>], 539*9880d681SAndroid Build Coastguard Worker [2, 2, 3, 3, 2, 1]>, 540*9880d681SAndroid Build Coastguard Worker // 541*9880d681SAndroid Build Coastguard Worker // VLD2lnu 542*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VLD2lnu, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 543*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_NLSPipe], 0>, 544*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_LSPipe]>], 545*9880d681SAndroid Build Coastguard Worker [3, 3, 2, 1, 1, 1, 1, 1]>, 546*9880d681SAndroid Build Coastguard Worker // 547*9880d681SAndroid Build Coastguard Worker // VLD2dup 548*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VLD2dup, [InstrStage<1, [A8_Pipe0, A8_Pipe1]>, 549*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NLSPipe], 0>, 550*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_LSPipe]>], 551*9880d681SAndroid Build Coastguard Worker [2, 2, 1]>, 552*9880d681SAndroid Build Coastguard Worker // 553*9880d681SAndroid Build Coastguard Worker // VLD2dupu 554*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VLD2dupu, [InstrStage<1, [A8_Pipe0, A8_Pipe1]>, 555*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NLSPipe], 0>, 556*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_LSPipe]>], 557*9880d681SAndroid Build Coastguard Worker [2, 2, 2, 1, 1]>, 558*9880d681SAndroid Build Coastguard Worker // 559*9880d681SAndroid Build Coastguard Worker // VLD3 560*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VLD3, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 561*9880d681SAndroid Build Coastguard Worker InstrStage<4, [A8_NLSPipe], 0>, 562*9880d681SAndroid Build Coastguard Worker InstrStage<4, [A8_LSPipe]>], 563*9880d681SAndroid Build Coastguard Worker [3, 3, 4, 1]>, 564*9880d681SAndroid Build Coastguard Worker // 565*9880d681SAndroid Build Coastguard Worker // VLD3ln 566*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VLD3ln, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 567*9880d681SAndroid Build Coastguard Worker InstrStage<5, [A8_NLSPipe], 0>, 568*9880d681SAndroid Build Coastguard Worker InstrStage<5, [A8_LSPipe]>], 569*9880d681SAndroid Build Coastguard Worker [4, 4, 5, 1, 1, 1, 1, 2]>, 570*9880d681SAndroid Build Coastguard Worker // 571*9880d681SAndroid Build Coastguard Worker // VLD3u 572*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VLD3u, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 573*9880d681SAndroid Build Coastguard Worker InstrStage<4, [A8_NLSPipe], 0>, 574*9880d681SAndroid Build Coastguard Worker InstrStage<4, [A8_LSPipe]>], 575*9880d681SAndroid Build Coastguard Worker [3, 3, 4, 2, 1]>, 576*9880d681SAndroid Build Coastguard Worker // 577*9880d681SAndroid Build Coastguard Worker // VLD3lnu 578*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VLD3lnu, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 579*9880d681SAndroid Build Coastguard Worker InstrStage<5, [A8_NLSPipe], 0>, 580*9880d681SAndroid Build Coastguard Worker InstrStage<5, [A8_LSPipe]>], 581*9880d681SAndroid Build Coastguard Worker [4, 4, 5, 2, 1, 1, 1, 1, 1, 2]>, 582*9880d681SAndroid Build Coastguard Worker // 583*9880d681SAndroid Build Coastguard Worker // VLD3dup 584*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VLD3dup, [InstrStage<1, [A8_Pipe0, A8_Pipe1]>, 585*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_NLSPipe], 0>, 586*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_LSPipe]>], 587*9880d681SAndroid Build Coastguard Worker [2, 2, 3, 1]>, 588*9880d681SAndroid Build Coastguard Worker // 589*9880d681SAndroid Build Coastguard Worker // VLD3dupu 590*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VLD3dupu, [InstrStage<1, [A8_Pipe0, A8_Pipe1]>, 591*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_NLSPipe], 0>, 592*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_LSPipe]>], 593*9880d681SAndroid Build Coastguard Worker [2, 2, 3, 2, 1, 1]>, 594*9880d681SAndroid Build Coastguard Worker // 595*9880d681SAndroid Build Coastguard Worker // VLD4 596*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VLD4, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 597*9880d681SAndroid Build Coastguard Worker InstrStage<4, [A8_NLSPipe], 0>, 598*9880d681SAndroid Build Coastguard Worker InstrStage<4, [A8_LSPipe]>], 599*9880d681SAndroid Build Coastguard Worker [3, 3, 4, 4, 1]>, 600*9880d681SAndroid Build Coastguard Worker // 601*9880d681SAndroid Build Coastguard Worker // VLD4ln 602*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VLD4ln, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 603*9880d681SAndroid Build Coastguard Worker InstrStage<5, [A8_NLSPipe], 0>, 604*9880d681SAndroid Build Coastguard Worker InstrStage<5, [A8_LSPipe]>], 605*9880d681SAndroid Build Coastguard Worker [4, 4, 5, 5, 1, 1, 1, 1, 2, 2]>, 606*9880d681SAndroid Build Coastguard Worker // 607*9880d681SAndroid Build Coastguard Worker // VLD4u 608*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VLD4u, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 609*9880d681SAndroid Build Coastguard Worker InstrStage<4, [A8_NLSPipe], 0>, 610*9880d681SAndroid Build Coastguard Worker InstrStage<4, [A8_LSPipe]>], 611*9880d681SAndroid Build Coastguard Worker [3, 3, 4, 4, 2, 1]>, 612*9880d681SAndroid Build Coastguard Worker // 613*9880d681SAndroid Build Coastguard Worker // VLD4lnu 614*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VLD4lnu, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 615*9880d681SAndroid Build Coastguard Worker InstrStage<5, [A8_NLSPipe], 0>, 616*9880d681SAndroid Build Coastguard Worker InstrStage<5, [A8_LSPipe]>], 617*9880d681SAndroid Build Coastguard Worker [4, 4, 5, 5, 2, 1, 1, 1, 1, 1, 2, 2]>, 618*9880d681SAndroid Build Coastguard Worker // 619*9880d681SAndroid Build Coastguard Worker // VLD4dup 620*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VLD4dup, [InstrStage<1, [A8_Pipe0, A8_Pipe1]>, 621*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_NLSPipe], 0>, 622*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_LSPipe]>], 623*9880d681SAndroid Build Coastguard Worker [2, 2, 3, 3, 1]>, 624*9880d681SAndroid Build Coastguard Worker // 625*9880d681SAndroid Build Coastguard Worker // VLD4dupu 626*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VLD4dupu, [InstrStage<1, [A8_Pipe0, A8_Pipe1]>, 627*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_NLSPipe], 0>, 628*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_LSPipe]>], 629*9880d681SAndroid Build Coastguard Worker [2, 2, 3, 3, 2, 1, 1]>, 630*9880d681SAndroid Build Coastguard Worker // 631*9880d681SAndroid Build Coastguard Worker // VST1 632*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VST1, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 633*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NLSPipe], 0>, 634*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_LSPipe]>], 635*9880d681SAndroid Build Coastguard Worker [1, 1, 1]>, 636*9880d681SAndroid Build Coastguard Worker // 637*9880d681SAndroid Build Coastguard Worker // VST1x2 638*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VST1x2, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 639*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NLSPipe], 0>, 640*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_LSPipe]>], 641*9880d681SAndroid Build Coastguard Worker [1, 1, 1, 1]>, 642*9880d681SAndroid Build Coastguard Worker // 643*9880d681SAndroid Build Coastguard Worker // VST1x3 644*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VST1x3, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 645*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_NLSPipe], 0>, 646*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_LSPipe]>], 647*9880d681SAndroid Build Coastguard Worker [1, 1, 1, 1, 2]>, 648*9880d681SAndroid Build Coastguard Worker // 649*9880d681SAndroid Build Coastguard Worker // VST1x4 650*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VST1x4, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 651*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_NLSPipe], 0>, 652*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_LSPipe]>], 653*9880d681SAndroid Build Coastguard Worker [1, 1, 1, 1, 2, 2]>, 654*9880d681SAndroid Build Coastguard Worker // 655*9880d681SAndroid Build Coastguard Worker // VST1u 656*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VST1u, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 657*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NLSPipe], 0>, 658*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_LSPipe]>], 659*9880d681SAndroid Build Coastguard Worker [2, 1, 1, 1, 1]>, 660*9880d681SAndroid Build Coastguard Worker // 661*9880d681SAndroid Build Coastguard Worker // VST1x2u 662*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VST1x2u, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 663*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NLSPipe], 0>, 664*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_LSPipe]>], 665*9880d681SAndroid Build Coastguard Worker [2, 1, 1, 1, 1, 1]>, 666*9880d681SAndroid Build Coastguard Worker // 667*9880d681SAndroid Build Coastguard Worker // VST1x3u 668*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VST1x3u, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 669*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_NLSPipe], 0>, 670*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_LSPipe]>], 671*9880d681SAndroid Build Coastguard Worker [2, 1, 1, 1, 1, 1, 2]>, 672*9880d681SAndroid Build Coastguard Worker // 673*9880d681SAndroid Build Coastguard Worker // VST1x4u 674*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VST1x4u, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 675*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_NLSPipe], 0>, 676*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_LSPipe]>], 677*9880d681SAndroid Build Coastguard Worker [2, 1, 1, 1, 1, 1, 2, 2]>, 678*9880d681SAndroid Build Coastguard Worker // 679*9880d681SAndroid Build Coastguard Worker // VST1ln 680*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VST1ln, [InstrStage<1, [A8_Pipe0, A8_Pipe1]>, 681*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NLSPipe], 0>, 682*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_LSPipe]>], 683*9880d681SAndroid Build Coastguard Worker [1, 1, 1]>, 684*9880d681SAndroid Build Coastguard Worker // 685*9880d681SAndroid Build Coastguard Worker // VST1lnu 686*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VST1lnu, [InstrStage<1, [A8_Pipe0, A8_Pipe1]>, 687*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NLSPipe], 0>, 688*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_LSPipe]>], 689*9880d681SAndroid Build Coastguard Worker [2, 1, 1, 1, 1]>, 690*9880d681SAndroid Build Coastguard Worker // 691*9880d681SAndroid Build Coastguard Worker // VST2 692*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VST2, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 693*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NLSPipe], 0>, 694*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_LSPipe]>], 695*9880d681SAndroid Build Coastguard Worker [1, 1, 1, 1]>, 696*9880d681SAndroid Build Coastguard Worker // 697*9880d681SAndroid Build Coastguard Worker // VST2x2 698*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VST2x2, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 699*9880d681SAndroid Build Coastguard Worker InstrStage<4, [A8_NLSPipe], 0>, 700*9880d681SAndroid Build Coastguard Worker InstrStage<4, [A8_LSPipe]>], 701*9880d681SAndroid Build Coastguard Worker [1, 1, 1, 1, 2, 2]>, 702*9880d681SAndroid Build Coastguard Worker // 703*9880d681SAndroid Build Coastguard Worker // VST2u 704*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VST2u, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 705*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NLSPipe], 0>, 706*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_LSPipe]>], 707*9880d681SAndroid Build Coastguard Worker [2, 1, 1, 1, 1, 1]>, 708*9880d681SAndroid Build Coastguard Worker // 709*9880d681SAndroid Build Coastguard Worker // VST2x2u 710*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VST2x2u, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 711*9880d681SAndroid Build Coastguard Worker InstrStage<4, [A8_NLSPipe], 0>, 712*9880d681SAndroid Build Coastguard Worker InstrStage<4, [A8_LSPipe]>], 713*9880d681SAndroid Build Coastguard Worker [2, 1, 1, 1, 1, 1, 2, 2]>, 714*9880d681SAndroid Build Coastguard Worker // 715*9880d681SAndroid Build Coastguard Worker // VST2ln 716*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VST2ln, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 717*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NLSPipe], 0>, 718*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_LSPipe]>], 719*9880d681SAndroid Build Coastguard Worker [1, 1, 1, 1]>, 720*9880d681SAndroid Build Coastguard Worker // 721*9880d681SAndroid Build Coastguard Worker // VST2lnu 722*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VST2lnu, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 723*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NLSPipe], 0>, 724*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_LSPipe]>], 725*9880d681SAndroid Build Coastguard Worker [2, 1, 1, 1, 1, 1]>, 726*9880d681SAndroid Build Coastguard Worker // 727*9880d681SAndroid Build Coastguard Worker // VST3 728*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VST3, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 729*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_NLSPipe], 0>, 730*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_LSPipe]>], 731*9880d681SAndroid Build Coastguard Worker [1, 1, 1, 1, 2]>, 732*9880d681SAndroid Build Coastguard Worker // 733*9880d681SAndroid Build Coastguard Worker // VST3u 734*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VST3u, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 735*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_NLSPipe], 0>, 736*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_LSPipe]>], 737*9880d681SAndroid Build Coastguard Worker [2, 1, 1, 1, 1, 1, 2]>, 738*9880d681SAndroid Build Coastguard Worker // 739*9880d681SAndroid Build Coastguard Worker // VST3ln 740*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VST3ln, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 741*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_NLSPipe], 0>, 742*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_LSPipe]>], 743*9880d681SAndroid Build Coastguard Worker [1, 1, 1, 1, 2]>, 744*9880d681SAndroid Build Coastguard Worker // 745*9880d681SAndroid Build Coastguard Worker // VST3lnu 746*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VST3lnu, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 747*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_NLSPipe], 0>, 748*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_LSPipe]>], 749*9880d681SAndroid Build Coastguard Worker [2, 1, 1, 1, 1, 1, 2]>, 750*9880d681SAndroid Build Coastguard Worker // 751*9880d681SAndroid Build Coastguard Worker // VST4 752*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VST4, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 753*9880d681SAndroid Build Coastguard Worker InstrStage<4, [A8_NLSPipe], 0>, 754*9880d681SAndroid Build Coastguard Worker InstrStage<4, [A8_LSPipe]>], 755*9880d681SAndroid Build Coastguard Worker [1, 1, 1, 1, 2, 2]>, 756*9880d681SAndroid Build Coastguard Worker // 757*9880d681SAndroid Build Coastguard Worker // VST4u 758*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VST4u, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 759*9880d681SAndroid Build Coastguard Worker InstrStage<4, [A8_NLSPipe], 0>, 760*9880d681SAndroid Build Coastguard Worker InstrStage<4, [A8_LSPipe]>], 761*9880d681SAndroid Build Coastguard Worker [2, 1, 1, 1, 1, 1, 2, 2]>, 762*9880d681SAndroid Build Coastguard Worker // 763*9880d681SAndroid Build Coastguard Worker // VST4ln 764*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VST4ln, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 765*9880d681SAndroid Build Coastguard Worker InstrStage<4, [A8_NLSPipe], 0>, 766*9880d681SAndroid Build Coastguard Worker InstrStage<4, [A8_LSPipe]>], 767*9880d681SAndroid Build Coastguard Worker [1, 1, 1, 1, 2, 2]>, 768*9880d681SAndroid Build Coastguard Worker // 769*9880d681SAndroid Build Coastguard Worker // VST4lnu 770*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VST4lnu, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 771*9880d681SAndroid Build Coastguard Worker InstrStage<4, [A8_NLSPipe], 0>, 772*9880d681SAndroid Build Coastguard Worker InstrStage<4, [A8_LSPipe]>], 773*9880d681SAndroid Build Coastguard Worker [2, 1, 1, 1, 1, 1, 2, 2]>, 774*9880d681SAndroid Build Coastguard Worker // 775*9880d681SAndroid Build Coastguard Worker // Double-register FP Unary 776*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VUNAD, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 777*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [5, 2]>, 778*9880d681SAndroid Build Coastguard Worker // 779*9880d681SAndroid Build Coastguard Worker // Quad-register FP Unary 780*9880d681SAndroid Build Coastguard Worker // Result written in N5, but that is relative to the last cycle of multicycle, 781*9880d681SAndroid Build Coastguard Worker // so we use 6 for those cases 782*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VUNAQ, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 783*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NPipe]>], [6, 2]>, 784*9880d681SAndroid Build Coastguard Worker // 785*9880d681SAndroid Build Coastguard Worker // Double-register FP Binary 786*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VBIND, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 787*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [5, 2, 2]>, 788*9880d681SAndroid Build Coastguard Worker // 789*9880d681SAndroid Build Coastguard Worker // VPADD, etc. 790*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VPBIND, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 791*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [5, 2, 2]>, 792*9880d681SAndroid Build Coastguard Worker // 793*9880d681SAndroid Build Coastguard Worker // Double-register FP VMUL 794*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VFMULD, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 795*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [5, 2, 1]>, 796*9880d681SAndroid Build Coastguard Worker 797*9880d681SAndroid Build Coastguard Worker // 798*9880d681SAndroid Build Coastguard Worker // Quad-register FP Binary 799*9880d681SAndroid Build Coastguard Worker // Result written in N5, but that is relative to the last cycle of multicycle, 800*9880d681SAndroid Build Coastguard Worker // so we use 6 for those cases 801*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VBINQ, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 802*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NPipe]>], [6, 2, 2]>, 803*9880d681SAndroid Build Coastguard Worker // 804*9880d681SAndroid Build Coastguard Worker // Quad-register FP VMUL 805*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VFMULQ, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 806*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [6, 2, 1]>, 807*9880d681SAndroid Build Coastguard Worker // 808*9880d681SAndroid Build Coastguard Worker // Move 809*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VMOV, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 810*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [1, 1]>, 811*9880d681SAndroid Build Coastguard Worker // 812*9880d681SAndroid Build Coastguard Worker // Move Immediate 813*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VMOVImm, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 814*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [3]>, 815*9880d681SAndroid Build Coastguard Worker // 816*9880d681SAndroid Build Coastguard Worker // Double-register Permute Move 817*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VMOVD, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 818*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NLSPipe]>], [2, 1]>, 819*9880d681SAndroid Build Coastguard Worker // 820*9880d681SAndroid Build Coastguard Worker // Quad-register Permute Move 821*9880d681SAndroid Build Coastguard Worker // Result written in N2, but that is relative to the last cycle of multicycle, 822*9880d681SAndroid Build Coastguard Worker // so we use 3 for those cases 823*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VMOVQ, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 824*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NLSPipe]>], [3, 1]>, 825*9880d681SAndroid Build Coastguard Worker // 826*9880d681SAndroid Build Coastguard Worker // Integer to Single-precision Move 827*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VMOVIS , [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 828*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NLSPipe]>], [2, 1]>, 829*9880d681SAndroid Build Coastguard Worker // 830*9880d681SAndroid Build Coastguard Worker // Integer to Double-precision Move 831*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VMOVID , [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 832*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NLSPipe]>], [2, 1, 1]>, 833*9880d681SAndroid Build Coastguard Worker // 834*9880d681SAndroid Build Coastguard Worker // Single-precision to Integer Move 835*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VMOVSI , [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 836*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NLSPipe]>], [20, 1]>, 837*9880d681SAndroid Build Coastguard Worker // 838*9880d681SAndroid Build Coastguard Worker // Double-precision to Integer Move 839*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VMOVDI , [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 840*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NLSPipe]>], [20, 20, 1]>, 841*9880d681SAndroid Build Coastguard Worker // 842*9880d681SAndroid Build Coastguard Worker // Integer to Lane Move 843*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VMOVISL , [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 844*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NLSPipe]>], [3, 1, 1]>, 845*9880d681SAndroid Build Coastguard Worker // 846*9880d681SAndroid Build Coastguard Worker // Vector narrow move 847*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VMOVN , [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 848*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [2, 1]>, 849*9880d681SAndroid Build Coastguard Worker // 850*9880d681SAndroid Build Coastguard Worker // Double-register Permute 851*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VPERMD, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 852*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NLSPipe]>], [2, 2, 1, 1]>, 853*9880d681SAndroid Build Coastguard Worker // 854*9880d681SAndroid Build Coastguard Worker // Quad-register Permute 855*9880d681SAndroid Build Coastguard Worker // Result written in N2, but that is relative to the last cycle of multicycle, 856*9880d681SAndroid Build Coastguard Worker // so we use 3 for those cases 857*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VPERMQ, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 858*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NLSPipe]>], [3, 3, 1, 1]>, 859*9880d681SAndroid Build Coastguard Worker // 860*9880d681SAndroid Build Coastguard Worker // Quad-register Permute (3 cycle issue) 861*9880d681SAndroid Build Coastguard Worker // Result written in N2, but that is relative to the last cycle of multicycle, 862*9880d681SAndroid Build Coastguard Worker // so we use 4 for those cases 863*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VPERMQ3, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 864*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NLSPipe]>, 865*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe], 0>, 866*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NLSPipe]>], [4, 4, 1, 1]>, 867*9880d681SAndroid Build Coastguard Worker // 868*9880d681SAndroid Build Coastguard Worker // Double-register FP Multiple-Accumulate 869*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VMACD, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 870*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [9, 3, 2, 2]>, 871*9880d681SAndroid Build Coastguard Worker // 872*9880d681SAndroid Build Coastguard Worker // Quad-register FP Multiple-Accumulate 873*9880d681SAndroid Build Coastguard Worker // Result written in N9, but that is relative to the last cycle of multicycle, 874*9880d681SAndroid Build Coastguard Worker // so we use 10 for those cases 875*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VMACQ, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 876*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NPipe]>], [10, 3, 2, 2]>, 877*9880d681SAndroid Build Coastguard Worker // 878*9880d681SAndroid Build Coastguard Worker // Double-register Fused FP Multiple-Accumulate 879*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VFMACD, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 880*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [9, 3, 2, 2]>, 881*9880d681SAndroid Build Coastguard Worker // 882*9880d681SAndroid Build Coastguard Worker // Quad-register Fused FP Multiple-Accumulate 883*9880d681SAndroid Build Coastguard Worker // Result written in N9, but that is relative to the last cycle of multicycle, 884*9880d681SAndroid Build Coastguard Worker // so we use 10 for those cases 885*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VFMACQ, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 886*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NPipe]>], [10, 3, 2, 2]>, 887*9880d681SAndroid Build Coastguard Worker // 888*9880d681SAndroid Build Coastguard Worker // Double-register Reciprical Step 889*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VRECSD, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 890*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [9, 2, 2]>, 891*9880d681SAndroid Build Coastguard Worker // 892*9880d681SAndroid Build Coastguard Worker // Quad-register Reciprical Step 893*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VRECSQ, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 894*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NPipe]>], [10, 2, 2]>, 895*9880d681SAndroid Build Coastguard Worker // 896*9880d681SAndroid Build Coastguard Worker // Double-register Integer Count 897*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VCNTiD, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 898*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [3, 2, 2]>, 899*9880d681SAndroid Build Coastguard Worker // 900*9880d681SAndroid Build Coastguard Worker // Quad-register Integer Count 901*9880d681SAndroid Build Coastguard Worker // Result written in N3, but that is relative to the last cycle of multicycle, 902*9880d681SAndroid Build Coastguard Worker // so we use 4 for those cases 903*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VCNTiQ, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 904*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NPipe]>], [4, 2, 2]>, 905*9880d681SAndroid Build Coastguard Worker // 906*9880d681SAndroid Build Coastguard Worker // Double-register Integer Unary 907*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VUNAiD, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 908*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [4, 2]>, 909*9880d681SAndroid Build Coastguard Worker // 910*9880d681SAndroid Build Coastguard Worker // Quad-register Integer Unary 911*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VUNAiQ, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 912*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [4, 2]>, 913*9880d681SAndroid Build Coastguard Worker // 914*9880d681SAndroid Build Coastguard Worker // Double-register Integer Q-Unary 915*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VQUNAiD, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 916*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [4, 1]>, 917*9880d681SAndroid Build Coastguard Worker // 918*9880d681SAndroid Build Coastguard Worker // Quad-register Integer CountQ-Unary 919*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VQUNAiQ, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 920*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [4, 1]>, 921*9880d681SAndroid Build Coastguard Worker // 922*9880d681SAndroid Build Coastguard Worker // Double-register Integer Binary 923*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VBINiD, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 924*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [3, 2, 2]>, 925*9880d681SAndroid Build Coastguard Worker // 926*9880d681SAndroid Build Coastguard Worker // Quad-register Integer Binary 927*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VBINiQ, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 928*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [3, 2, 2]>, 929*9880d681SAndroid Build Coastguard Worker // 930*9880d681SAndroid Build Coastguard Worker // Double-register Integer Binary (4 cycle) 931*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VBINi4D, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 932*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [4, 2, 1]>, 933*9880d681SAndroid Build Coastguard Worker // 934*9880d681SAndroid Build Coastguard Worker // Quad-register Integer Binary (4 cycle) 935*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VBINi4Q, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 936*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [4, 2, 1]>, 937*9880d681SAndroid Build Coastguard Worker 938*9880d681SAndroid Build Coastguard Worker // 939*9880d681SAndroid Build Coastguard Worker // Double-register Integer Subtract 940*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VSUBiD, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 941*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [3, 2, 1]>, 942*9880d681SAndroid Build Coastguard Worker // 943*9880d681SAndroid Build Coastguard Worker // Quad-register Integer Subtract 944*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VSUBiQ, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 945*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [3, 2, 1]>, 946*9880d681SAndroid Build Coastguard Worker // 947*9880d681SAndroid Build Coastguard Worker // Double-register Integer Subtract 948*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VSUBi4D, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 949*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [4, 2, 1]>, 950*9880d681SAndroid Build Coastguard Worker // 951*9880d681SAndroid Build Coastguard Worker // Quad-register Integer Subtract 952*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VSUBi4Q, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 953*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [4, 2, 1]>, 954*9880d681SAndroid Build Coastguard Worker // 955*9880d681SAndroid Build Coastguard Worker // Double-register Integer Shift 956*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VSHLiD, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 957*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [3, 1, 1]>, 958*9880d681SAndroid Build Coastguard Worker // 959*9880d681SAndroid Build Coastguard Worker // Quad-register Integer Shift 960*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VSHLiQ, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 961*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NPipe]>], [4, 1, 1]>, 962*9880d681SAndroid Build Coastguard Worker // 963*9880d681SAndroid Build Coastguard Worker // Double-register Integer Shift (4 cycle) 964*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VSHLi4D, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 965*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [4, 1, 1]>, 966*9880d681SAndroid Build Coastguard Worker // 967*9880d681SAndroid Build Coastguard Worker // Quad-register Integer Shift (4 cycle) 968*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VSHLi4Q, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 969*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NPipe]>], [5, 1, 1]>, 970*9880d681SAndroid Build Coastguard Worker // 971*9880d681SAndroid Build Coastguard Worker // Double-register Integer Pair Add Long 972*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VPALiD, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 973*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [6, 3, 1]>, 974*9880d681SAndroid Build Coastguard Worker // 975*9880d681SAndroid Build Coastguard Worker // Quad-register Integer Pair Add Long 976*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VPALiQ, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 977*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NPipe]>], [7, 3, 1]>, 978*9880d681SAndroid Build Coastguard Worker // 979*9880d681SAndroid Build Coastguard Worker // Double-register Absolute Difference and Accumulate 980*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VABAD, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 981*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [6, 3, 2, 1]>, 982*9880d681SAndroid Build Coastguard Worker // 983*9880d681SAndroid Build Coastguard Worker // Quad-register Absolute Difference and Accumulate 984*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VABAQ, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 985*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NPipe]>], [6, 3, 2, 1]>, 986*9880d681SAndroid Build Coastguard Worker 987*9880d681SAndroid Build Coastguard Worker // 988*9880d681SAndroid Build Coastguard Worker // Double-register Integer Multiply (.8, .16) 989*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VMULi16D, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 990*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [6, 2, 2]>, 991*9880d681SAndroid Build Coastguard Worker // 992*9880d681SAndroid Build Coastguard Worker // Double-register Integer Multiply (.32) 993*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VMULi32D, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 994*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NPipe]>], [7, 2, 1]>, 995*9880d681SAndroid Build Coastguard Worker // 996*9880d681SAndroid Build Coastguard Worker // Quad-register Integer Multiply (.8, .16) 997*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VMULi16Q, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 998*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NPipe]>], [7, 2, 2]>, 999*9880d681SAndroid Build Coastguard Worker // 1000*9880d681SAndroid Build Coastguard Worker // Quad-register Integer Multiply (.32) 1001*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VMULi32Q, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 1002*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>, 1003*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NLSPipe], 0>, 1004*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_NPipe]>], [9, 2, 1]>, 1005*9880d681SAndroid Build Coastguard Worker // 1006*9880d681SAndroid Build Coastguard Worker // Double-register Integer Multiply-Accumulate (.8, .16) 1007*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VMACi16D, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 1008*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>], [6, 3, 2, 2]>, 1009*9880d681SAndroid Build Coastguard Worker // 1010*9880d681SAndroid Build Coastguard Worker // Double-register Integer Multiply-Accumulate (.32) 1011*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VMACi32D, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 1012*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NPipe]>], [7, 3, 2, 1]>, 1013*9880d681SAndroid Build Coastguard Worker // 1014*9880d681SAndroid Build Coastguard Worker // Quad-register Integer Multiply-Accumulate (.8, .16) 1015*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VMACi16Q, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 1016*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NPipe]>], [7, 3, 2, 2]>, 1017*9880d681SAndroid Build Coastguard Worker // 1018*9880d681SAndroid Build Coastguard Worker // Quad-register Integer Multiply-Accumulate (.32) 1019*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VMACi32Q, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 1020*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe]>, 1021*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NLSPipe], 0>, 1022*9880d681SAndroid Build Coastguard Worker InstrStage<3, [A8_NPipe]>], [9, 3, 2, 1]>, 1023*9880d681SAndroid Build Coastguard Worker // 1024*9880d681SAndroid Build Coastguard Worker // Double-register VEXT 1025*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VEXTD, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 1026*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NLSPipe]>], [2, 1, 1]>, 1027*9880d681SAndroid Build Coastguard Worker // 1028*9880d681SAndroid Build Coastguard Worker // Quad-register VEXT 1029*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VEXTQ, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 1030*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NLSPipe]>], [3, 1, 1]>, 1031*9880d681SAndroid Build Coastguard Worker // 1032*9880d681SAndroid Build Coastguard Worker // VTB 1033*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VTB1, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 1034*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NLSPipe]>], [3, 2, 1]>, 1035*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VTB2, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 1036*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NLSPipe]>], [3, 2, 2, 1]>, 1037*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VTB3, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 1038*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NLSPipe]>, 1039*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe], 0>, 1040*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NLSPipe]>], [4, 2, 2, 3, 1]>, 1041*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VTB4, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 1042*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NLSPipe]>, 1043*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe], 0>, 1044*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NLSPipe]>],[4, 2, 2, 3, 3, 1]>, 1045*9880d681SAndroid Build Coastguard Worker // 1046*9880d681SAndroid Build Coastguard Worker // VTBX 1047*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VTBX1, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 1048*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NLSPipe]>], [3, 1, 2, 1]>, 1049*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VTBX2, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 1050*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NLSPipe]>], [3, 1, 2, 2, 1]>, 1051*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VTBX3, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 1052*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NLSPipe]>, 1053*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe], 0>, 1054*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NLSPipe]>],[4, 1, 2, 2, 3, 1]>, 1055*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VTBX4, [InstrStage<1, [A8_Pipe0, A8_Pipe1], 0>, 1056*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NLSPipe]>, 1057*9880d681SAndroid Build Coastguard Worker InstrStage<1, [A8_NPipe], 0>, 1058*9880d681SAndroid Build Coastguard Worker InstrStage<2, [A8_NLSPipe]>], [4, 1, 2, 2, 3, 3, 1]> 1059*9880d681SAndroid Build Coastguard Worker]>; 1060*9880d681SAndroid Build Coastguard Worker 1061*9880d681SAndroid Build Coastguard Worker// ===---------------------------------------------------------------------===// 1062*9880d681SAndroid Build Coastguard Worker// This following definitions describe the simple machine model which 1063*9880d681SAndroid Build Coastguard Worker// will replace itineraries. 1064*9880d681SAndroid Build Coastguard Worker 1065*9880d681SAndroid Build Coastguard Worker// Cortex-A8 machine model for scheduling and other instruction cost heuristics. 1066*9880d681SAndroid Build Coastguard Workerdef CortexA8Model : SchedMachineModel { 1067*9880d681SAndroid Build Coastguard Worker let IssueWidth = 2; // 2 micro-ops are dispatched per cycle. 1068*9880d681SAndroid Build Coastguard Worker let LoadLatency = 2; // Optimistic load latency assuming bypass. 1069*9880d681SAndroid Build Coastguard Worker // This is overriden by OperandCycles if the 1070*9880d681SAndroid Build Coastguard Worker // Itineraries are queried instead. 1071*9880d681SAndroid Build Coastguard Worker let MispredictPenalty = 13; // Based on estimate of pipeline depth. 1072*9880d681SAndroid Build Coastguard Worker let CompleteModel = 0; 1073*9880d681SAndroid Build Coastguard Worker 1074*9880d681SAndroid Build Coastguard Worker let Itineraries = CortexA8Itineraries; 1075*9880d681SAndroid Build Coastguard Worker} 1076