1*9880d681SAndroid Build Coastguard Worker//===- X86ScheduleAtom.td - X86 Atom 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 Intel Atom 11*9880d681SAndroid Build Coastguard Worker// in order (Saltwell-32nm/Bonnell-45nm) processors. 12*9880d681SAndroid Build Coastguard Worker// 13*9880d681SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Worker// 16*9880d681SAndroid Build Coastguard Worker// Scheduling information derived from the "Intel 64 and IA32 Architectures 17*9880d681SAndroid Build Coastguard Worker// Optimization Reference Manual", Chapter 13, Section 4. 18*9880d681SAndroid Build Coastguard Worker// Functional Units 19*9880d681SAndroid Build Coastguard Worker// Port 0 20*9880d681SAndroid Build Coastguard Workerdef Port0 : FuncUnit; // ALU: ALU0, shift/rotate, load/store 21*9880d681SAndroid Build Coastguard Worker // SIMD/FP: SIMD ALU, Shuffle,SIMD/FP multiply, divide 22*9880d681SAndroid Build Coastguard Workerdef Port1 : FuncUnit; // ALU: ALU1, bit processing, jump, and LEA 23*9880d681SAndroid Build Coastguard Worker // SIMD/FP: SIMD ALU, FP Adder 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Workerdef AtomItineraries : ProcessorItineraries< 26*9880d681SAndroid Build Coastguard Worker [ Port0, Port1 ], 27*9880d681SAndroid Build Coastguard Worker [], [ 28*9880d681SAndroid Build Coastguard Worker // P0 only 29*9880d681SAndroid Build Coastguard Worker // InstrItinData<class, [InstrStage<N, [P0]>] >, 30*9880d681SAndroid Build Coastguard Worker // P0 or P1 31*9880d681SAndroid Build Coastguard Worker // InstrItinData<class, [InstrStage<N, [P0, P1]>] >, 32*9880d681SAndroid Build Coastguard Worker // P0 and P1 33*9880d681SAndroid Build Coastguard Worker // InstrItinData<class, [InstrStage<N, [P0], 0>, InstrStage<N, [P1]>] >, 34*9880d681SAndroid Build Coastguard Worker // 35*9880d681SAndroid Build Coastguard Worker // Default is 1 cycle, port0 or port1 36*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_ALU_MEM, [InstrStage<1, [Port0]>] >, 37*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_ALU_NONMEM, [InstrStage<1, [Port0, Port1]>] >, 38*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_LEA, [InstrStage<1, [Port1]>] >, 39*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_LEA_16, [InstrStage<2, [Port0, Port1]>] >, 40*9880d681SAndroid Build Coastguard Worker // mul 41*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MUL8, [InstrStage<7, [Port0, Port1]>] >, 42*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MUL16_MEM, [InstrStage<8, [Port0, Port1]>] >, 43*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MUL16_REG, [InstrStage<7, [Port0, Port1]>] >, 44*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MUL32_MEM, [InstrStage<7, [Port0, Port1]>] >, 45*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MUL32_REG, [InstrStage<6, [Port0, Port1]>] >, 46*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MUL64, [InstrStage<12, [Port0, Port1]>] >, 47*9880d681SAndroid Build Coastguard Worker // imul by al, ax, eax, rax 48*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_IMUL8, [InstrStage<7, [Port0, Port1]>] >, 49*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_IMUL16_MEM, [InstrStage<8, [Port0, Port1]>] >, 50*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_IMUL16_REG, [InstrStage<7, [Port0, Port1]>] >, 51*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_IMUL32_MEM, [InstrStage<7, [Port0, Port1]>] >, 52*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_IMUL32_REG, [InstrStage<6, [Port0, Port1]>] >, 53*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_IMUL64, [InstrStage<12, [Port0, Port1]>] >, 54*9880d681SAndroid Build Coastguard Worker // imul reg by reg|mem 55*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_IMUL16_RM, [InstrStage<7, [Port0, Port1]>] >, 56*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_IMUL16_RR, [InstrStage<6, [Port0, Port1]>] >, 57*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_IMUL32_RM, [InstrStage<5, [Port0]>] >, 58*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_IMUL32_RR, [InstrStage<5, [Port0]>] >, 59*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_IMUL64_RM, [InstrStage<12, [Port0, Port1]>] >, 60*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_IMUL64_RR, [InstrStage<12, [Port0, Port1]>] >, 61*9880d681SAndroid Build Coastguard Worker // imul reg = reg/mem * imm 62*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_IMUL16_RRI, [InstrStage<6, [Port0, Port1]>] >, 63*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_IMUL32_RRI, [InstrStage<5, [Port0]>] >, 64*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_IMUL64_RRI, [InstrStage<14, [Port0, Port1]>] >, 65*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_IMUL16_RMI, [InstrStage<7, [Port0, Port1]>] >, 66*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_IMUL32_RMI, [InstrStage<5, [Port0]>] >, 67*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_IMUL64_RMI, [InstrStage<14, [Port0, Port1]>] >, 68*9880d681SAndroid Build Coastguard Worker // idiv 69*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_IDIV8, [InstrStage<62, [Port0, Port1]>] >, 70*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_IDIV16, [InstrStage<62, [Port0, Port1]>] >, 71*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_IDIV32, [InstrStage<62, [Port0, Port1]>] >, 72*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_IDIV64, [InstrStage<130, [Port0, Port1]>] >, 73*9880d681SAndroid Build Coastguard Worker // div 74*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_DIV8_REG, [InstrStage<50, [Port0, Port1]>] >, 75*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_DIV8_MEM, [InstrStage<68, [Port0, Port1]>] >, 76*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_DIV16, [InstrStage<50, [Port0, Port1]>] >, 77*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_DIV32, [InstrStage<50, [Port0, Port1]>] >, 78*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_DIV64, [InstrStage<130, [Port0, Port1]>] >, 79*9880d681SAndroid Build Coastguard Worker // neg/not/inc/dec 80*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_UNARY_REG, [InstrStage<1, [Port0, Port1]>] >, 81*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_UNARY_MEM, [InstrStage<1, [Port0]>] >, 82*9880d681SAndroid Build Coastguard Worker // add/sub/and/or/xor/cmp/test 83*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_BIN_NONMEM, [InstrStage<1, [Port0, Port1]>] >, 84*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_BIN_MEM, [InstrStage<1, [Port0]>] >, 85*9880d681SAndroid Build Coastguard Worker // adc/sbc 86*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_BIN_CARRY_NONMEM, [InstrStage<1, [Port0, Port1]>] >, 87*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_BIN_CARRY_MEM, [InstrStage<1, [Port0]>] >, 88*9880d681SAndroid Build Coastguard Worker // shift/rotate 89*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SR, [InstrStage<1, [Port0]>] >, 90*9880d681SAndroid Build Coastguard Worker // shift double 91*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SHD16_REG_IM, [InstrStage<6, [Port0, Port1]>] >, 92*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SHD16_REG_CL, [InstrStage<6, [Port0, Port1]>] >, 93*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SHD16_MEM_IM, [InstrStage<6, [Port0, Port1]>] >, 94*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SHD16_MEM_CL, [InstrStage<6, [Port0, Port1]>] >, 95*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SHD32_REG_IM, [InstrStage<2, [Port0, Port1]>] >, 96*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SHD32_REG_CL, [InstrStage<2, [Port0, Port1]>] >, 97*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SHD32_MEM_IM, [InstrStage<4, [Port0, Port1]>] >, 98*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SHD32_MEM_CL, [InstrStage<4, [Port0, Port1]>] >, 99*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SHD64_REG_IM, [InstrStage<9, [Port0, Port1]>] >, 100*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SHD64_REG_CL, [InstrStage<8, [Port0, Port1]>] >, 101*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SHD64_MEM_IM, [InstrStage<9, [Port0, Port1]>] >, 102*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SHD64_MEM_CL, [InstrStage<9, [Port0, Port1]>] >, 103*9880d681SAndroid Build Coastguard Worker // cmov 104*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_CMOV16_RM, [InstrStage<1, [Port0]>] >, 105*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_CMOV16_RR, [InstrStage<1, [Port0, Port1]>] >, 106*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_CMOV32_RM, [InstrStage<1, [Port0]>] >, 107*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_CMOV32_RR, [InstrStage<1, [Port0, Port1]>] >, 108*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_CMOV64_RM, [InstrStage<1, [Port0]>] >, 109*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_CMOV64_RR, [InstrStage<1, [Port0, Port1]>] >, 110*9880d681SAndroid Build Coastguard Worker // set 111*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SET_M, [InstrStage<2, [Port0, Port1]>] >, 112*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SET_R, [InstrStage<1, [Port0, Port1]>] >, 113*9880d681SAndroid Build Coastguard Worker // jcc 114*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_Jcc, [InstrStage<1, [Port1]>] >, 115*9880d681SAndroid Build Coastguard Worker // jcxz/jecxz/jrcxz 116*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_JCXZ, [InstrStage<4, [Port0, Port1]>] >, 117*9880d681SAndroid Build Coastguard Worker // jmp rel 118*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_JMP_REL, [InstrStage<1, [Port1]>] >, 119*9880d681SAndroid Build Coastguard Worker // jmp indirect 120*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_JMP_REG, [InstrStage<1, [Port1]>] >, 121*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_JMP_MEM, [InstrStage<2, [Port0, Port1]>] >, 122*9880d681SAndroid Build Coastguard Worker // jmp far 123*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_JMP_FAR_MEM, [InstrStage<32, [Port0, Port1]>] >, 124*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_JMP_FAR_PTR, [InstrStage<31, [Port0, Port1]>] >, 125*9880d681SAndroid Build Coastguard Worker // loop/loope/loopne 126*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_LOOP, [InstrStage<18, [Port0, Port1]>] >, 127*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_LOOPE, [InstrStage<8, [Port0, Port1]>] >, 128*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_LOOPNE, [InstrStage<17, [Port0, Port1]>] >, 129*9880d681SAndroid Build Coastguard Worker // call - all but reg/imm 130*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_CALL_RI, [InstrStage<1, [Port0], 0>, 131*9880d681SAndroid Build Coastguard Worker InstrStage<1, [Port1]>] >, 132*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_CALL_MEM, [InstrStage<15, [Port0, Port1]>] >, 133*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_CALL_FAR_MEM, [InstrStage<40, [Port0, Port1]>] >, 134*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_CALL_FAR_PTR, [InstrStage<39, [Port0, Port1]>] >, 135*9880d681SAndroid Build Coastguard Worker //ret 136*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_RET, [InstrStage<79, [Port0, Port1]>] >, 137*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_RET_IMM, [InstrStage<1, [Port0], 0>, InstrStage<1, [Port1]>] >, 138*9880d681SAndroid Build Coastguard Worker //sign extension movs 139*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MOVSX,[InstrStage<1, [Port0] >] >, 140*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MOVSX_R16_R8, [InstrStage<2, [Port0, Port1]>] >, 141*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MOVSX_R16_M8, [InstrStage<3, [Port0, Port1]>] >, 142*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MOVSX_R16_R16, [InstrStage<1, [Port0, Port1]>] >, 143*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MOVSX_R32_R32, [InstrStage<1, [Port0, Port1]>] >, 144*9880d681SAndroid Build Coastguard Worker //zero extension movs 145*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MOVZX,[InstrStage<1, [Port0]>] >, 146*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MOVZX_R16_R8, [InstrStage<2, [Port0, Port1]>] >, 147*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MOVZX_R16_M8, [InstrStage<3, [Port0, Port1]>] >, 148*9880d681SAndroid Build Coastguard Worker 149*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_REP_MOVS, [InstrStage<75, [Port0, Port1]>] >, 150*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_REP_STOS, [InstrStage<74, [Port0, Port1]>] >, 151*9880d681SAndroid Build Coastguard Worker 152*9880d681SAndroid Build Coastguard Worker // SSE binary operations 153*9880d681SAndroid Build Coastguard Worker // arithmetic fp scalar 154*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_ALU_F32S_RR, [InstrStage<5, [Port1]>] >, 155*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_ALU_F32S_RM, [InstrStage<5, [Port0], 0>, 156*9880d681SAndroid Build Coastguard Worker InstrStage<5, [Port1]>] >, 157*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_ALU_F64S_RR, [InstrStage<5, [Port1]>] >, 158*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_ALU_F64S_RM, [InstrStage<5, [Port0], 0>, 159*9880d681SAndroid Build Coastguard Worker InstrStage<5, [Port1]>] >, 160*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_MUL_F32S_RR, [InstrStage<4, [Port0]>] >, 161*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_MUL_F32S_RM, [InstrStage<4, [Port0]>] >, 162*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_MUL_F64S_RR, [InstrStage<5, [Port0]>] >, 163*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_MUL_F64S_RM, [InstrStage<5, [Port0]>] >, 164*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_DIV_F32S_RR, [InstrStage<34, [Port0, Port1]>] >, 165*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_DIV_F32S_RM, [InstrStage<34, [Port0, Port1]>] >, 166*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_DIV_F64S_RR, [InstrStage<62, [Port0, Port1]>] >, 167*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_DIV_F64S_RM, [InstrStage<62, [Port0, Port1]>] >, 168*9880d681SAndroid Build Coastguard Worker 169*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_COMIS_RR, [InstrStage<9, [Port0, Port1]>] >, 170*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_COMIS_RM, [InstrStage<10, [Port0, Port1]>] >, 171*9880d681SAndroid Build Coastguard Worker 172*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_HADDSUB_RR, [InstrStage<8, [Port0, Port1]>] >, 173*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_HADDSUB_RM, [InstrStage<9, [Port0, Port1]>] >, 174*9880d681SAndroid Build Coastguard Worker 175*9880d681SAndroid Build Coastguard Worker // arithmetic fp parallel 176*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_ALU_F32P_RR, [InstrStage<5, [Port1]>] >, 177*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_ALU_F32P_RM, [InstrStage<5, [Port0], 0>, 178*9880d681SAndroid Build Coastguard Worker InstrStage<5, [Port1]>] >, 179*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_ALU_F64P_RR, [InstrStage<6, [Port0, Port1]>] >, 180*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_ALU_F64P_RM, [InstrStage<7, [Port0, Port1]>] >, 181*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_MUL_F32P_RR, [InstrStage<5, [Port0]>] >, 182*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_MUL_F32P_RM, [InstrStage<5, [Port0]>] >, 183*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_MUL_F64P_RR, [InstrStage<9, [Port0, Port1]>] >, 184*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_MUL_F64P_RM, [InstrStage<10, [Port0, Port1]>] >, 185*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_DIV_F32P_RR, [InstrStage<70, [Port0, Port1]>] >, 186*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_DIV_F32P_RM, [InstrStage<70, [Port0, Port1]>] >, 187*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_DIV_F64P_RR, [InstrStage<125, [Port0, Port1]>] >, 188*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_DIV_F64P_RM, [InstrStage<125, [Port0, Port1]>] >, 189*9880d681SAndroid Build Coastguard Worker 190*9880d681SAndroid Build Coastguard Worker // bitwise parallel 191*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_BIT_P_RR, [InstrStage<1, [Port0, Port1]>] >, 192*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_BIT_P_RM, [InstrStage<1, [Port0]>] >, 193*9880d681SAndroid Build Coastguard Worker 194*9880d681SAndroid Build Coastguard Worker // arithmetic int parallel 195*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_INTALU_P_RR, [InstrStage<1, [Port0, Port1]>] >, 196*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_INTALU_P_RM, [InstrStage<1, [Port0]>] >, 197*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_INTALUQ_P_RR, [InstrStage<2, [Port0, Port1]>] >, 198*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_INTALUQ_P_RM, [InstrStage<3, [Port0, Port1]>] >, 199*9880d681SAndroid Build Coastguard Worker 200*9880d681SAndroid Build Coastguard Worker // multiply int parallel 201*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_INTMUL_P_RR, [InstrStage<5, [Port0]>] >, 202*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_INTMUL_P_RM, [InstrStage<5, [Port0]>] >, 203*9880d681SAndroid Build Coastguard Worker 204*9880d681SAndroid Build Coastguard Worker // shift parallel 205*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_INTSH_P_RR, [InstrStage<2, [Port0, Port1]>] >, 206*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_INTSH_P_RM, [InstrStage<3, [Port0, Port1]>] >, 207*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_INTSH_P_RI, [InstrStage<1, [Port0, Port1]>] >, 208*9880d681SAndroid Build Coastguard Worker 209*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_INTSHDQ_P_RI, [InstrStage<1, [Port0, Port1]>] >, 210*9880d681SAndroid Build Coastguard Worker 211*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_SHUFP, [InstrStage<1, [Port0]>] >, 212*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_PSHUF_RI, [InstrStage<1, [Port0]>] >, 213*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_PSHUF_MI, [InstrStage<1, [Port0]>] >, 214*9880d681SAndroid Build Coastguard Worker 215*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_UNPCK, [InstrStage<1, [Port0]>] >, 216*9880d681SAndroid Build Coastguard Worker 217*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_SQRTPS_RR, [InstrStage<70, [Port0, Port1]>] >, 218*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_SQRTPS_RM, [InstrStage<70, [Port0, Port1]>] >, 219*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_SQRTSS_RR, [InstrStage<34, [Port0, Port1]>] >, 220*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_SQRTSS_RM, [InstrStage<34, [Port0, Port1]>] >, 221*9880d681SAndroid Build Coastguard Worker 222*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_SQRTPD_RR, [InstrStage<125, [Port0, Port1]>] >, 223*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_SQRTPD_RM, [InstrStage<125, [Port0, Port1]>] >, 224*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_SQRTSD_RR, [InstrStage<62, [Port0, Port1]>] >, 225*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_SQRTSD_RM, [InstrStage<62, [Port0, Port1]>] >, 226*9880d681SAndroid Build Coastguard Worker 227*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_RSQRTPS_RR, [InstrStage<9, [Port0, Port1]>] >, 228*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_RSQRTPS_RM, [InstrStage<10, [Port0, Port1]>] >, 229*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_RSQRTSS_RR, [InstrStage<4, [Port0]>] >, 230*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_RSQRTSS_RM, [InstrStage<4, [Port0]>] >, 231*9880d681SAndroid Build Coastguard Worker 232*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_RCPP_RR, [InstrStage<9, [Port0, Port1]>] >, 233*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_RCPP_RM, [InstrStage<10, [Port0, Port1]>] >, 234*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_RCPS_RR, [InstrStage<4, [Port0]>] >, 235*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_RCPS_RM, [InstrStage<4, [Port0]>] >, 236*9880d681SAndroid Build Coastguard Worker 237*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_MOVMSK, [InstrStage<3, [Port0]>] >, 238*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_MASKMOV, [InstrStage<2, [Port0, Port1]>] >, 239*9880d681SAndroid Build Coastguard Worker 240*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_PEXTRW, [InstrStage<4, [Port0, Port1]>] >, 241*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_PINSRW, [InstrStage<1, [Port0]>] >, 242*9880d681SAndroid Build Coastguard Worker 243*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_PABS_RR, [InstrStage<1, [Port0, Port1]>] >, 244*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_PABS_RM, [InstrStage<1, [Port0]>] >, 245*9880d681SAndroid Build Coastguard Worker 246*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_MOV_S_RR, [InstrStage<1, [Port0, Port1]>] >, 247*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_MOV_S_RM, [InstrStage<1, [Port0]>] >, 248*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_MOV_S_MR, [InstrStage<1, [Port0]>] >, 249*9880d681SAndroid Build Coastguard Worker 250*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_MOVA_P_RR, [InstrStage<1, [Port0, Port1]>] >, 251*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_MOVA_P_RM, [InstrStage<1, [Port0]>] >, 252*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_MOVA_P_MR, [InstrStage<1, [Port0]>] >, 253*9880d681SAndroid Build Coastguard Worker 254*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_MOVU_P_RR, [InstrStage<1, [Port0, Port1]>] >, 255*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_MOVU_P_RM, [InstrStage<3, [Port0, Port1]>] >, 256*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_MOVU_P_MR, [InstrStage<2, [Port0, Port1]>] >, 257*9880d681SAndroid Build Coastguard Worker 258*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_MOV_LH, [InstrStage<1, [Port0]>] >, 259*9880d681SAndroid Build Coastguard Worker 260*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_LDDQU, [InstrStage<3, [Port0, Port1]>] >, 261*9880d681SAndroid Build Coastguard Worker 262*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_MOVDQ, [InstrStage<1, [Port0]>] >, 263*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_MOVD_ToGP, [InstrStage<3, [Port0]>] >, 264*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_MOVQ_RR, [InstrStage<1, [Port0, Port1]>] >, 265*9880d681SAndroid Build Coastguard Worker 266*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_MOVNT, [InstrStage<1, [Port0]>] >, 267*9880d681SAndroid Build Coastguard Worker 268*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_PREFETCH, [InstrStage<1, [Port0]>] >, 269*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_PAUSE, [InstrStage<17, [Port0, Port1]>] >, 270*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_LFENCE, [InstrStage<1, [Port0, Port1]>] >, 271*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_MFENCE, [InstrStage<1, [Port0]>] >, 272*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_SFENCE, [InstrStage<1, [Port0]>] >, 273*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_LDMXCSR, [InstrStage<5, [Port0, Port1]>] >, 274*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_STMXCSR, [InstrStage<15, [Port0, Port1]>] >, 275*9880d681SAndroid Build Coastguard Worker 276*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_PHADDSUBD_RR, [InstrStage<3, [Port0, Port1]>] >, 277*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_PHADDSUBD_RM, [InstrStage<4, [Port0, Port1]>] >, 278*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_PHADDSUBSW_RR, [InstrStage<7, [Port0, Port1]>] >, 279*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_PHADDSUBSW_RM, [InstrStage<8, [Port0, Port1]>] >, 280*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_PHADDSUBW_RR, [InstrStage<7, [Port0, Port1]>] >, 281*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_PHADDSUBW_RM, [InstrStage<8, [Port0, Port1]>] >, 282*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_PSHUFB_RR, [InstrStage<4, [Port0, Port1]>] >, 283*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_PSHUFB_RM, [InstrStage<5, [Port0, Port1]>] >, 284*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_PSIGN_RR, [InstrStage<1, [Port0, Port1]>] >, 285*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_PSIGN_RM, [InstrStage<1, [Port0]>] >, 286*9880d681SAndroid Build Coastguard Worker 287*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_PMADD, [InstrStage<5, [Port0]>] >, 288*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_PMULHRSW, [InstrStage<5, [Port0]>] >, 289*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_PALIGNRR, [InstrStage<1, [Port0]>] >, 290*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_PALIGNRM, [InstrStage<1, [Port0]>] >, 291*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_MWAIT, [InstrStage<46, [Port0, Port1]>] >, 292*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_MONITOR, [InstrStage<45, [Port0, Port1]>] >, 293*9880d681SAndroid Build Coastguard Worker 294*9880d681SAndroid Build Coastguard Worker // conversions 295*9880d681SAndroid Build Coastguard Worker // to/from PD ... 296*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_CVT_PD_RR, [InstrStage<7, [Port0, Port1]>] >, 297*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_CVT_PD_RM, [InstrStage<8, [Port0, Port1]>] >, 298*9880d681SAndroid Build Coastguard Worker // to/from PS except to/from PD and PS2PI 299*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_CVT_PS_RR, [InstrStage<6, [Port0, Port1]>] >, 300*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_CVT_PS_RM, [InstrStage<7, [Port0, Port1]>] >, 301*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_CVT_Scalar_RR, [InstrStage<6, [Port0, Port1]>] >, 302*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_CVT_Scalar_RM, [InstrStage<7, [Port0, Port1]>] >, 303*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_CVT_SS2SI32_RR, [InstrStage<8, [Port0, Port1]>] >, 304*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_CVT_SS2SI32_RM, [InstrStage<9, [Port0, Port1]>] >, 305*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_CVT_SS2SI64_RR, [InstrStage<9, [Port0, Port1]>] >, 306*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_CVT_SS2SI64_RM, [InstrStage<10, [Port0, Port1]>] >, 307*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_CVT_SD2SI_RR, [InstrStage<8, [Port0, Port1]>] >, 308*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SSE_CVT_SD2SI_RM, [InstrStage<9, [Port0, Port1]>] >, 309*9880d681SAndroid Build Coastguard Worker 310*9880d681SAndroid Build Coastguard Worker // MMX MOVs 311*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MMX_MOV_MM_RM, [InstrStage<1, [Port0]>] >, 312*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MMX_MOV_REG_MM, [InstrStage<3, [Port0]>] >, 313*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MMX_MOVQ_RM, [InstrStage<1, [Port0]>] >, 314*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MMX_MOVQ_RR, [InstrStage<1, [Port0, Port1]>] >, 315*9880d681SAndroid Build Coastguard Worker // other MMX 316*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MMX_ALU_RM, [InstrStage<1, [Port0]>] >, 317*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MMX_ALU_RR, [InstrStage<1, [Port0, Port1]>] >, 318*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MMX_ALUQ_RM, [InstrStage<3, [Port0, Port1]>] >, 319*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MMX_ALUQ_RR, [InstrStage<2, [Port0, Port1]>] >, 320*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MMX_PHADDSUBW_RM, [InstrStage<6, [Port0, Port1]>] >, 321*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MMX_PHADDSUBW_RR, [InstrStage<5, [Port0, Port1]>] >, 322*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MMX_PHADDSUBD_RM, [InstrStage<4, [Port0, Port1]>] >, 323*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MMX_PHADDSUBD_RR, [InstrStage<3, [Port0, Port1]>] >, 324*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MMX_PMUL, [InstrStage<4, [Port0]>] >, 325*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MMX_MISC_FUNC_MEM, [InstrStage<1, [Port0]>] >, 326*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MMX_MISC_FUNC_REG, [InstrStage<1, [Port0, Port1]>] >, 327*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MMX_PSADBW, [InstrStage<4, [Port0, Port1]>] >, 328*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MMX_SHIFT_RI, [InstrStage<1, [Port0, Port1]>] >, 329*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MMX_SHIFT_RM, [InstrStage<3, [Port0, Port1]>] >, 330*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MMX_SHIFT_RR, [InstrStage<2, [Port0, Port1]>] >, 331*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MMX_UNPCK_H_RM, [InstrStage<1, [Port0]>] >, 332*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MMX_UNPCK_H_RR, [InstrStage<1, [Port0, Port1]>] >, 333*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MMX_UNPCK_L, [InstrStage<1, [Port0]>] >, 334*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MMX_PCK_RM, [InstrStage<1, [Port0]>] >, 335*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MMX_PCK_RR, [InstrStage<1, [Port0, Port1]>] >, 336*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MMX_PSHUF, [InstrStage<1, [Port0]>] >, 337*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MMX_PEXTR, [InstrStage<4, [Port0, Port1]>] >, 338*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MMX_PINSRW, [InstrStage<1, [Port0]>] >, 339*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MMX_MASKMOV, [InstrStage<1, [Port0]>] >, 340*9880d681SAndroid Build Coastguard Worker // conversions 341*9880d681SAndroid Build Coastguard Worker // from/to PD 342*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MMX_CVT_PD_RR, [InstrStage<7, [Port0, Port1]>] >, 343*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MMX_CVT_PD_RM, [InstrStage<8, [Port0, Port1]>] >, 344*9880d681SAndroid Build Coastguard Worker // from/to PI 345*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MMX_CVT_PS_RR, [InstrStage<5, [Port1]>] >, 346*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MMX_CVT_PS_RM, [InstrStage<5, [Port0], 0>, 347*9880d681SAndroid Build Coastguard Worker InstrStage<5, [Port1]>]>, 348*9880d681SAndroid Build Coastguard Worker 349*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_CMPX_LOCK, [InstrStage<14, [Port0, Port1]>] >, 350*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_CMPX_LOCK_8, [InstrStage<6, [Port0, Port1]>] >, 351*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_CMPX_LOCK_8B, [InstrStage<18, [Port0, Port1]>] >, 352*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_CMPX_LOCK_16B, [InstrStage<22, [Port0, Port1]>] >, 353*9880d681SAndroid Build Coastguard Worker 354*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_XADD_LOCK_MEM, [InstrStage<2, [Port0, Port1]>] >, 355*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_XADD_LOCK_MEM, [InstrStage<3, [Port0, Port1]>] >, 356*9880d681SAndroid Build Coastguard Worker 357*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_FILD, [InstrStage<5, [Port0], 0>, InstrStage<5, [Port1]>] >, 358*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_FLD, [InstrStage<1, [Port0]>] >, 359*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_FLD80, [InstrStage<4, [Port0, Port1]>] >, 360*9880d681SAndroid Build Coastguard Worker 361*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_FST, [InstrStage<2, [Port0, Port1]>] >, 362*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_FST80, [InstrStage<5, [Port0, Port1]>] >, 363*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_FIST, [InstrStage<6, [Port0, Port1]>] >, 364*9880d681SAndroid Build Coastguard Worker 365*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_FLDZ, [InstrStage<1, [Port0, Port1]>] >, 366*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_FUCOM, [InstrStage<1, [Port1]>] >, 367*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_FUCOMI, [InstrStage<9, [Port0, Port1]>] >, 368*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_FCOMI, [InstrStage<9, [Port0, Port1]>] >, 369*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_FNSTSW, [InstrStage<10, [Port0, Port1]>] >, 370*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_FNSTCW, [InstrStage<8, [Port0, Port1]>] >, 371*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_FLDCW, [InstrStage<5, [Port0, Port1]>] >, 372*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_FNINIT, [InstrStage<63, [Port0, Port1]>] >, 373*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_FFREE, [InstrStage<1, [Port0, Port1]>] >, 374*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_FNCLEX, [InstrStage<25, [Port0, Port1]>] >, 375*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_WAIT, [InstrStage<1, [Port0, Port1]>] >, 376*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_FXAM, [InstrStage<1, [Port0]>] >, 377*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_FNOP, [InstrStage<1, [Port0, Port1]>] >, 378*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_FLDL, [InstrStage<10, [Port0, Port1]>] >, 379*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_F2XM1, [InstrStage<99, [Port0, Port1]>] >, 380*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_FYL2X, [InstrStage<146, [Port0, Port1]>] >, 381*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_FPTAN, [InstrStage<168, [Port0, Port1]>] >, 382*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_FPATAN, [InstrStage<183, [Port0, Port1]>] >, 383*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_FXTRACT, [InstrStage<25, [Port0, Port1]>] >, 384*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_FPREM1, [InstrStage<71, [Port0, Port1]>] >, 385*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_FPSTP, [InstrStage<1, [Port0, Port1]>] >, 386*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_FPREM, [InstrStage<55, [Port0, Port1]>] >, 387*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_FYL2XP1, [InstrStage<147, [Port0, Port1]>] >, 388*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_FSINCOS, [InstrStage<174, [Port0, Port1]>] >, 389*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_FRNDINT, [InstrStage<46, [Port0, Port1]>] >, 390*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_FSCALE, [InstrStage<77, [Port0, Port1]>] >, 391*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_FCOMPP, [InstrStage<1, [Port1]>] >, 392*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_FXSAVE, [InstrStage<140, [Port0, Port1]>] >, 393*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_FXRSTOR, [InstrStage<141, [Port0, Port1]>] >, 394*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_FXCH, [InstrStage<1, [Port0], 0>, InstrStage<1, [Port1]>] >, 395*9880d681SAndroid Build Coastguard Worker 396*9880d681SAndroid Build Coastguard Worker // System instructions 397*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_CPUID, [InstrStage<121, [Port0, Port1]>] >, 398*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_INT, [InstrStage<127, [Port0, Port1]>] >, 399*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_INT3, [InstrStage<130, [Port0, Port1]>] >, 400*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_INVD, [InstrStage<1003, [Port0, Port1]>] >, 401*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_INVLPG, [InstrStage<71, [Port0, Port1]>] >, 402*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_IRET, [InstrStage<109, [Port0, Port1]>] >, 403*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_HLT, [InstrStage<121, [Port0, Port1]>] >, 404*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_LXS, [InstrStage<10, [Port0, Port1]>] >, 405*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_LTR, [InstrStage<83, [Port0, Port1]>] >, 406*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_RDTSC, [InstrStage<30, [Port0, Port1]>] >, 407*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_RSM, [InstrStage<741, [Port0, Port1]>] >, 408*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SIDT, [InstrStage<4, [Port0, Port1]>] >, 409*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SGDT, [InstrStage<4, [Port0, Port1]>] >, 410*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SLDT, [InstrStage<3, [Port0, Port1]>] >, 411*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_STR, [InstrStage<3, [Port0, Port1]>] >, 412*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SWAPGS, [InstrStage<22, [Port0, Port1]>] >, 413*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SYSCALL, [InstrStage<96, [Port0, Port1]>] >, 414*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SYS_ENTER_EXIT, [InstrStage<88, [Port0, Port1]>] >, 415*9880d681SAndroid Build Coastguard Worker 416*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_IN_RR, [InstrStage<94, [Port0, Port1]>] >, 417*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_IN_RI, [InstrStage<92, [Port0, Port1]>] >, 418*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_OUT_RR, [InstrStage<68, [Port0, Port1]>] >, 419*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_OUT_IR, [InstrStage<72, [Port0, Port1]>] >, 420*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_INS, [InstrStage<59, [Port0, Port1]>] >, 421*9880d681SAndroid Build Coastguard Worker 422*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MOV_REG_DR, [InstrStage<88, [Port0, Port1]>] >, 423*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MOV_DR_REG, [InstrStage<123, [Port0, Port1]>] >, 424*9880d681SAndroid Build Coastguard Worker // worst case for mov REG_CRx 425*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MOV_REG_CR, [InstrStage<12, [Port0, Port1]>] >, 426*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MOV_CR_REG, [InstrStage<136, [Port0, Port1]>] >, 427*9880d681SAndroid Build Coastguard Worker 428*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MOV_REG_SR, [InstrStage<1, [Port0]>] >, 429*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MOV_MEM_SR, [InstrStage<2, [Port0, Port1]>] >, 430*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MOV_SR_REG, [InstrStage<21, [Port0, Port1]>] >, 431*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MOV_SR_MEM, [InstrStage<26, [Port0, Port1]>] >, 432*9880d681SAndroid Build Coastguard Worker // LAR 433*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_LAR_RM, [InstrStage<50, [Port0, Port1]>] >, 434*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_LAR_RR, [InstrStage<54, [Port0, Port1]>] >, 435*9880d681SAndroid Build Coastguard Worker // LSL 436*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_LSL_RM, [InstrStage<46, [Port0, Port1]>] >, 437*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_LSL_RR, [InstrStage<49, [Port0, Port1]>] >, 438*9880d681SAndroid Build Coastguard Worker 439*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_LGDT, [InstrStage<44, [Port0, Port1]>] >, 440*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_LIDT, [InstrStage<44, [Port0, Port1]>] >, 441*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_LLDT_REG, [InstrStage<60, [Port0, Port1]>] >, 442*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_LLDT_MEM, [InstrStage<64, [Port0, Port1]>] >, 443*9880d681SAndroid Build Coastguard Worker // push control register, segment registers 444*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_PUSH_CS, [InstrStage<2, [Port0, Port1]>] >, 445*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_PUSH_SR, [InstrStage<2, [Port0, Port1]>] >, 446*9880d681SAndroid Build Coastguard Worker // pop control register, segment registers 447*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_POP_SR, [InstrStage<29, [Port0, Port1]>] >, 448*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_POP_SR_SS, [InstrStage<48, [Port0, Port1]>] >, 449*9880d681SAndroid Build Coastguard Worker // VERR, VERW 450*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VERR, [InstrStage<41, [Port0, Port1]>] >, 451*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VERW_REG, [InstrStage<51, [Port0, Port1]>] >, 452*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_VERW_MEM, [InstrStage<50, [Port0, Port1]>] >, 453*9880d681SAndroid Build Coastguard Worker // WRMSR, RDMSR 454*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_WRMSR, [InstrStage<202, [Port0, Port1]>] >, 455*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_RDMSR, [InstrStage<78, [Port0, Port1]>] >, 456*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_RDPMC, [InstrStage<46, [Port0, Port1]>] >, 457*9880d681SAndroid Build Coastguard Worker // SMSW, LMSW 458*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SMSW, [InstrStage<9, [Port0, Port1]>] >, 459*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_LMSW_REG, [InstrStage<69, [Port0, Port1]>] >, 460*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_LMSW_MEM, [InstrStage<67, [Port0, Port1]>] >, 461*9880d681SAndroid Build Coastguard Worker 462*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_ENTER, [InstrStage<32, [Port0, Port1]>] >, 463*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_LEAVE, [InstrStage<2, [Port0, Port1]>] >, 464*9880d681SAndroid Build Coastguard Worker 465*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_POP_MEM, [InstrStage<3, [Port0, Port1]>] >, 466*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_POP_REG16, [InstrStage<2, [Port0, Port1]>] >, 467*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_POP_REG, [InstrStage<1, [Port0], 0>, 468*9880d681SAndroid Build Coastguard Worker InstrStage<1, [Port1]>] >, 469*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_POP_F, [InstrStage<32, [Port0, Port1]>] >, 470*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_POP_FD, [InstrStage<26, [Port0, Port1]>] >, 471*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_POP_A, [InstrStage<9, [Port0, Port1]>] >, 472*9880d681SAndroid Build Coastguard Worker 473*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_PUSH_IMM, [InstrStage<1, [Port0], 0>, 474*9880d681SAndroid Build Coastguard Worker InstrStage<1, [Port1]>] >, 475*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_PUSH_MEM, [InstrStage<2, [Port0, Port1]>] >, 476*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_PUSH_REG, [InstrStage<1, [Port0], 0>, 477*9880d681SAndroid Build Coastguard Worker InstrStage<1, [Port1]>] >, 478*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_PUSH_F, [InstrStage<9, [Port0, Port1]>] >, 479*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_PUSH_A, [InstrStage<8, [Port0, Port1]>] >, 480*9880d681SAndroid Build Coastguard Worker 481*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_BSWAP, [InstrStage<1, [Port0]>] >, 482*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_BIT_SCAN_MEM, [InstrStage<16, [Port0, Port1]>] >, 483*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_BIT_SCAN_REG, [InstrStage<16, [Port0, Port1]>] >, 484*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MOVS, [InstrStage<3, [Port0, Port1]>] >, 485*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_STOS, [InstrStage<1, [Port0, Port1]>] >, 486*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_SCAS, [InstrStage<2, [Port0, Port1]>] >, 487*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_CMPS, [InstrStage<3, [Port0, Port1]>] >, 488*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MOV, [InstrStage<1, [Port0, Port1]>] >, 489*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MOV_MEM, [InstrStage<1, [Port0]>] >, 490*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_AHF, [InstrStage<1, [Port0, Port1]>] >, 491*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_BT_MI, [InstrStage<1, [Port0, Port1]>] >, 492*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_BT_MR, [InstrStage<9, [Port0, Port1]>] >, 493*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_BT_RI, [InstrStage<1, [Port1]>] >, 494*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_BT_RR, [InstrStage<1, [Port1]>] >, 495*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_BTX_MI, [InstrStage<2, [Port0, Port1]>] >, 496*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_BTX_MR, [InstrStage<11, [Port0, Port1]>] >, 497*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_BTX_RI, [InstrStage<1, [Port1]>] >, 498*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_BTX_RR, [InstrStage<1, [Port1]>] >, 499*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_XCHG_REG, [InstrStage<2, [Port0, Port1]>] >, 500*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_XCHG_MEM, [InstrStage<3, [Port0, Port1]>] >, 501*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_XADD_REG, [InstrStage<2, [Port0, Port1]>] >, 502*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_XADD_MEM, [InstrStage<3, [Port0, Port1]>] >, 503*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_CMPXCHG_MEM, [InstrStage<14, [Port0, Port1]>] >, 504*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_CMPXCHG_REG, [InstrStage<15, [Port0, Port1]>] >, 505*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_CMPXCHG_MEM8, [InstrStage<6, [Port0, Port1]>] >, 506*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_CMPXCHG_REG8, [InstrStage<9, [Port0, Port1]>] >, 507*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_CMPXCHG_8B, [InstrStage<18, [Port0, Port1]>] >, 508*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_CMPXCHG_16B, [InstrStage<22, [Port0, Port1]>] >, 509*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_LODS, [InstrStage<2, [Port0, Port1]>] >, 510*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_OUTS, [InstrStage<74, [Port0, Port1]>] >, 511*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_CLC, [InstrStage<1, [Port0, Port1]>] >, 512*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_CLD, [InstrStage<3, [Port0, Port1]>] >, 513*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_CLI, [InstrStage<14, [Port0, Port1]>] >, 514*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_CMC, [InstrStage<1, [Port0, Port1]>] >, 515*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_CLTS, [InstrStage<33, [Port0, Port1]>] >, 516*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_STC, [InstrStage<1, [Port0, Port1]>] >, 517*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_STI, [InstrStage<17, [Port0, Port1]>] >, 518*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_STD, [InstrStage<21, [Port0, Port1]>] >, 519*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_XLAT, [InstrStage<6, [Port0, Port1]>] >, 520*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_AAA, [InstrStage<13, [Port0, Port1]>] >, 521*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_AAD, [InstrStage<7, [Port0, Port1]>] >, 522*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_AAM, [InstrStage<21, [Port0, Port1]>] >, 523*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_AAS, [InstrStage<13, [Port0, Port1]>] >, 524*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_DAA, [InstrStage<18, [Port0, Port1]>] >, 525*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_DAS, [InstrStage<20, [Port0, Port1]>] >, 526*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_BOUND, [InstrStage<11, [Port0, Port1]>] >, 527*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_ARPL_REG, [InstrStage<24, [Port0, Port1]>] >, 528*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_ARPL_MEM, [InstrStage<23, [Port0, Port1]>] >, 529*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MOVBE, [InstrStage<1, [Port0]>] >, 530*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_CBW, [InstrStage<4, [Port0, Port1]>] >, 531*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_MMX_EMMS, [InstrStage<5, [Port0, Port1]>] >, 532*9880d681SAndroid Build Coastguard Worker 533*9880d681SAndroid Build Coastguard Worker InstrItinData<IIC_NOP, [InstrStage<1, [Port0, Port1]>] > 534*9880d681SAndroid Build Coastguard Worker ]>; 535*9880d681SAndroid Build Coastguard Worker 536*9880d681SAndroid Build Coastguard Worker// Atom machine model. 537*9880d681SAndroid Build Coastguard Workerdef AtomModel : SchedMachineModel { 538*9880d681SAndroid Build Coastguard Worker let IssueWidth = 2; // Allows 2 instructions per scheduling group. 539*9880d681SAndroid Build Coastguard Worker let MicroOpBufferSize = 0; // In-order execution, always hide latency. 540*9880d681SAndroid Build Coastguard Worker let LoadLatency = 3; // Expected cycles, may be overriden by OperandCycles. 541*9880d681SAndroid Build Coastguard Worker let HighLatency = 30;// Expected, may be overriden by OperandCycles. 542*9880d681SAndroid Build Coastguard Worker 543*9880d681SAndroid Build Coastguard Worker // On the Atom, the throughput for taken branches is 2 cycles. For small 544*9880d681SAndroid Build Coastguard Worker // simple loops, expand by a small factor to hide the backedge cost. 545*9880d681SAndroid Build Coastguard Worker let LoopMicroOpBufferSize = 10; 546*9880d681SAndroid Build Coastguard Worker let PostRAScheduler = 1; 547*9880d681SAndroid Build Coastguard Worker let CompleteModel = 0; 548*9880d681SAndroid Build Coastguard Worker 549*9880d681SAndroid Build Coastguard Worker let Itineraries = AtomItineraries; 550*9880d681SAndroid Build Coastguard Worker} 551