Home | History | Annotate | Download | only in X86
      1 //===-- X86Schedule.td - X86 Scheduling Definitions --------*- tablegen -*-===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is distributed under the University of Illinois Open Source
      6 // License. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 
     10 //===----------------------------------------------------------------------===//
     11 // Instruction Itinerary classes used for X86
     12 def IIC_DEFAULT     : InstrItinClass;
     13 def IIC_ALU_MEM     : InstrItinClass;
     14 def IIC_ALU_NONMEM  : InstrItinClass;
     15 def IIC_LEA         : InstrItinClass;
     16 def IIC_LEA_16      : InstrItinClass;
     17 def IIC_MUL8        : InstrItinClass;
     18 def IIC_MUL16_MEM   : InstrItinClass;
     19 def IIC_MUL16_REG   : InstrItinClass;
     20 def IIC_MUL32_MEM   : InstrItinClass;
     21 def IIC_MUL32_REG   : InstrItinClass;
     22 def IIC_MUL64       : InstrItinClass;
     23 // imul by al, ax, eax, tax
     24 def IIC_IMUL8       : InstrItinClass;
     25 def IIC_IMUL16_MEM  : InstrItinClass;
     26 def IIC_IMUL16_REG  : InstrItinClass;
     27 def IIC_IMUL32_MEM  : InstrItinClass;
     28 def IIC_IMUL32_REG  : InstrItinClass;
     29 def IIC_IMUL64      : InstrItinClass;
     30 // imul reg by reg|mem
     31 def IIC_IMUL16_RM   : InstrItinClass;
     32 def IIC_IMUL16_RR   : InstrItinClass;
     33 def IIC_IMUL32_RM   : InstrItinClass;
     34 def IIC_IMUL32_RR   : InstrItinClass;
     35 def IIC_IMUL64_RM   : InstrItinClass;
     36 def IIC_IMUL64_RR   : InstrItinClass;
     37 // imul reg = reg/mem * imm
     38 def IIC_IMUL16_RMI  : InstrItinClass;
     39 def IIC_IMUL16_RRI  : InstrItinClass;
     40 def IIC_IMUL32_RMI  : InstrItinClass;
     41 def IIC_IMUL32_RRI  : InstrItinClass;
     42 def IIC_IMUL64_RMI  : InstrItinClass;
     43 def IIC_IMUL64_RRI  : InstrItinClass;
     44 // div
     45 def IIC_DIV8_MEM    : InstrItinClass;
     46 def IIC_DIV8_REG    : InstrItinClass;
     47 def IIC_DIV16       : InstrItinClass;
     48 def IIC_DIV32       : InstrItinClass;
     49 def IIC_DIV64       : InstrItinClass;
     50 // idiv
     51 def IIC_IDIV8       : InstrItinClass;
     52 def IIC_IDIV16      : InstrItinClass;
     53 def IIC_IDIV32      : InstrItinClass;
     54 def IIC_IDIV64      : InstrItinClass;
     55 // neg/not/inc/dec
     56 def IIC_UNARY_REG   : InstrItinClass;
     57 def IIC_UNARY_MEM   : InstrItinClass;
     58 // add/sub/and/or/xor/adc/sbc/cmp/test
     59 def IIC_BIN_MEM     : InstrItinClass;
     60 def IIC_BIN_NONMEM  : InstrItinClass;
     61 // shift/rotate
     62 def IIC_SR          : InstrItinClass;
     63 // shift double
     64 def IIC_SHD16_REG_IM : InstrItinClass;
     65 def IIC_SHD16_REG_CL : InstrItinClass;
     66 def IIC_SHD16_MEM_IM : InstrItinClass;
     67 def IIC_SHD16_MEM_CL : InstrItinClass;
     68 def IIC_SHD32_REG_IM : InstrItinClass;
     69 def IIC_SHD32_REG_CL : InstrItinClass;
     70 def IIC_SHD32_MEM_IM : InstrItinClass;
     71 def IIC_SHD32_MEM_CL : InstrItinClass;
     72 def IIC_SHD64_REG_IM : InstrItinClass;
     73 def IIC_SHD64_REG_CL : InstrItinClass;
     74 def IIC_SHD64_MEM_IM : InstrItinClass;
     75 def IIC_SHD64_MEM_CL : InstrItinClass;
     76 // cmov
     77 def IIC_CMOV16_RM : InstrItinClass;
     78 def IIC_CMOV16_RR : InstrItinClass;
     79 def IIC_CMOV32_RM : InstrItinClass;
     80 def IIC_CMOV32_RR : InstrItinClass;
     81 def IIC_CMOV64_RM : InstrItinClass;
     82 def IIC_CMOV64_RR : InstrItinClass;
     83 // set
     84 def IIC_SET_R : InstrItinClass;
     85 def IIC_SET_M : InstrItinClass;
     86 // jmp/jcc/jcxz
     87 def IIC_Jcc : InstrItinClass;
     88 def IIC_JCXZ : InstrItinClass;
     89 def IIC_JMP_REL : InstrItinClass;
     90 def IIC_JMP_REG : InstrItinClass;
     91 def IIC_JMP_MEM : InstrItinClass;
     92 def IIC_JMP_FAR_MEM : InstrItinClass;
     93 def IIC_JMP_FAR_PTR : InstrItinClass;
     94 // loop
     95 def IIC_LOOP : InstrItinClass;
     96 def IIC_LOOPE : InstrItinClass;
     97 def IIC_LOOPNE : InstrItinClass;
     98 // call
     99 def IIC_CALL_RI : InstrItinClass;
    100 def IIC_CALL_MEM : InstrItinClass;
    101 def IIC_CALL_FAR_MEM : InstrItinClass;
    102 def IIC_CALL_FAR_PTR : InstrItinClass;
    103 // ret
    104 def IIC_RET : InstrItinClass;
    105 def IIC_RET_IMM : InstrItinClass;
    106 //sign extension movs
    107 def IIC_MOVSX : InstrItinClass;
    108 def IIC_MOVSX_R16_R8 : InstrItinClass;
    109 def IIC_MOVSX_R16_M8 : InstrItinClass;
    110 def IIC_MOVSX_R16_R16 : InstrItinClass;
    111 def IIC_MOVSX_R32_R32 : InstrItinClass;
    112 //zero extension movs
    113 def IIC_MOVZX : InstrItinClass;
    114 def IIC_MOVZX_R16_R8 : InstrItinClass;
    115 def IIC_MOVZX_R16_M8 : InstrItinClass;
    116 
    117 def IIC_REP_MOVS : InstrItinClass;
    118 def IIC_REP_STOS : InstrItinClass;
    119 
    120 // SSE scalar/parallel binary operations
    121 def IIC_SSE_ALU_F32S_RR : InstrItinClass;
    122 def IIC_SSE_ALU_F32S_RM : InstrItinClass;
    123 def IIC_SSE_ALU_F64S_RR : InstrItinClass;
    124 def IIC_SSE_ALU_F64S_RM : InstrItinClass;
    125 def IIC_SSE_MUL_F32S_RR : InstrItinClass;
    126 def IIC_SSE_MUL_F32S_RM : InstrItinClass;
    127 def IIC_SSE_MUL_F64S_RR : InstrItinClass;
    128 def IIC_SSE_MUL_F64S_RM : InstrItinClass;
    129 def IIC_SSE_DIV_F32S_RR : InstrItinClass;
    130 def IIC_SSE_DIV_F32S_RM : InstrItinClass;
    131 def IIC_SSE_DIV_F64S_RR : InstrItinClass;
    132 def IIC_SSE_DIV_F64S_RM : InstrItinClass;
    133 def IIC_SSE_ALU_F32P_RR : InstrItinClass;
    134 def IIC_SSE_ALU_F32P_RM : InstrItinClass;
    135 def IIC_SSE_ALU_F64P_RR : InstrItinClass;
    136 def IIC_SSE_ALU_F64P_RM : InstrItinClass;
    137 def IIC_SSE_MUL_F32P_RR : InstrItinClass;
    138 def IIC_SSE_MUL_F32P_RM : InstrItinClass;
    139 def IIC_SSE_MUL_F64P_RR : InstrItinClass;
    140 def IIC_SSE_MUL_F64P_RM : InstrItinClass;
    141 def IIC_SSE_DIV_F32P_RR : InstrItinClass;
    142 def IIC_SSE_DIV_F32P_RM : InstrItinClass;
    143 def IIC_SSE_DIV_F64P_RR : InstrItinClass;
    144 def IIC_SSE_DIV_F64P_RM : InstrItinClass;
    145 
    146 def IIC_SSE_COMIS_RR : InstrItinClass;
    147 def IIC_SSE_COMIS_RM : InstrItinClass;
    148 
    149 def IIC_SSE_HADDSUB_RR : InstrItinClass;
    150 def IIC_SSE_HADDSUB_RM : InstrItinClass;
    151 
    152 def IIC_SSE_BIT_P_RR  : InstrItinClass;
    153 def IIC_SSE_BIT_P_RM  : InstrItinClass;
    154 
    155 def IIC_SSE_INTALU_P_RR  : InstrItinClass;
    156 def IIC_SSE_INTALU_P_RM  : InstrItinClass;
    157 def IIC_SSE_INTALUQ_P_RR  : InstrItinClass;
    158 def IIC_SSE_INTALUQ_P_RM  : InstrItinClass;
    159 
    160 def IIC_SSE_INTMUL_P_RR : InstrItinClass;
    161 def IIC_SSE_INTMUL_P_RM : InstrItinClass;
    162 
    163 def IIC_SSE_INTSH_P_RR : InstrItinClass;
    164 def IIC_SSE_INTSH_P_RM : InstrItinClass;
    165 def IIC_SSE_INTSH_P_RI : InstrItinClass;
    166 
    167 def IIC_SSE_CMPP_RR : InstrItinClass;
    168 def IIC_SSE_CMPP_RM : InstrItinClass;
    169 
    170 def IIC_SSE_SHUFP : InstrItinClass;
    171 def IIC_SSE_PSHUF : InstrItinClass;
    172 
    173 def IIC_SSE_UNPCK : InstrItinClass;
    174 
    175 def IIC_SSE_MOVMSK : InstrItinClass;
    176 def IIC_SSE_MASKMOV : InstrItinClass;
    177 
    178 def IIC_SSE_PEXTRW : InstrItinClass;
    179 def IIC_SSE_PINSRW : InstrItinClass;
    180 
    181 def IIC_SSE_PABS_RR : InstrItinClass;
    182 def IIC_SSE_PABS_RM : InstrItinClass;
    183 
    184 def IIC_SSE_SQRTP_RR : InstrItinClass;
    185 def IIC_SSE_SQRTP_RM : InstrItinClass;
    186 def IIC_SSE_SQRTS_RR : InstrItinClass;
    187 def IIC_SSE_SQRTS_RM : InstrItinClass;
    188 
    189 def IIC_SSE_RCPP_RR : InstrItinClass;
    190 def IIC_SSE_RCPP_RM : InstrItinClass;
    191 def IIC_SSE_RCPS_RR : InstrItinClass;
    192 def IIC_SSE_RCPS_RM : InstrItinClass;
    193 
    194 def IIC_SSE_MOV_S_RR : InstrItinClass;
    195 def IIC_SSE_MOV_S_RM : InstrItinClass;
    196 def IIC_SSE_MOV_S_MR : InstrItinClass;
    197 
    198 def IIC_SSE_MOVA_P_RR : InstrItinClass;
    199 def IIC_SSE_MOVA_P_RM : InstrItinClass;
    200 def IIC_SSE_MOVA_P_MR : InstrItinClass;
    201 
    202 def IIC_SSE_MOVU_P_RR : InstrItinClass;
    203 def IIC_SSE_MOVU_P_RM : InstrItinClass;
    204 def IIC_SSE_MOVU_P_MR : InstrItinClass;
    205 
    206 def IIC_SSE_MOVDQ : InstrItinClass;
    207 def IIC_SSE_MOVD_ToGP : InstrItinClass;
    208 def IIC_SSE_MOVQ_RR : InstrItinClass;
    209 
    210 def IIC_SSE_MOV_LH : InstrItinClass;
    211 
    212 def IIC_SSE_LDDQU : InstrItinClass;
    213 
    214 def IIC_SSE_MOVNT : InstrItinClass;
    215 
    216 def IIC_SSE_PHADDSUBD_RR : InstrItinClass;
    217 def IIC_SSE_PHADDSUBD_RM : InstrItinClass;
    218 def IIC_SSE_PHADDSUBSW_RR : InstrItinClass;
    219 def IIC_SSE_PHADDSUBSW_RM : InstrItinClass;
    220 def IIC_SSE_PHADDSUBW_RR : InstrItinClass;
    221 def IIC_SSE_PHADDSUBW_RM : InstrItinClass;
    222 def IIC_SSE_PSHUFB_RR : InstrItinClass;
    223 def IIC_SSE_PSHUFB_RM : InstrItinClass;
    224 def IIC_SSE_PSIGN_RR : InstrItinClass;
    225 def IIC_SSE_PSIGN_RM : InstrItinClass;
    226 
    227 def IIC_SSE_PMADD : InstrItinClass;
    228 def IIC_SSE_PMULHRSW : InstrItinClass;
    229 def IIC_SSE_PALIGNR : InstrItinClass;
    230 def IIC_SSE_MWAIT : InstrItinClass;
    231 def IIC_SSE_MONITOR : InstrItinClass;
    232 
    233 def IIC_SSE_PREFETCH : InstrItinClass;
    234 def IIC_SSE_PAUSE : InstrItinClass;
    235 def IIC_SSE_LFENCE : InstrItinClass;
    236 def IIC_SSE_MFENCE : InstrItinClass;
    237 def IIC_SSE_SFENCE : InstrItinClass;
    238 def IIC_SSE_LDMXCSR : InstrItinClass;
    239 def IIC_SSE_STMXCSR : InstrItinClass;
    240 
    241 def IIC_SSE_CVT_PD_RR : InstrItinClass;
    242 def IIC_SSE_CVT_PD_RM : InstrItinClass;
    243 def IIC_SSE_CVT_PS_RR : InstrItinClass;
    244 def IIC_SSE_CVT_PS_RM : InstrItinClass;
    245 def IIC_SSE_CVT_PI2PS_RR : InstrItinClass;
    246 def IIC_SSE_CVT_PI2PS_RM : InstrItinClass;
    247 def IIC_SSE_CVT_Scalar_RR : InstrItinClass;
    248 def IIC_SSE_CVT_Scalar_RM : InstrItinClass;
    249 def IIC_SSE_CVT_SS2SI32_RM : InstrItinClass;
    250 def IIC_SSE_CVT_SS2SI32_RR : InstrItinClass;
    251 def IIC_SSE_CVT_SS2SI64_RM : InstrItinClass;
    252 def IIC_SSE_CVT_SS2SI64_RR : InstrItinClass;
    253 def IIC_SSE_CVT_SD2SI_RM : InstrItinClass;
    254 def IIC_SSE_CVT_SD2SI_RR : InstrItinClass;
    255 
    256 // MMX
    257 def IIC_MMX_MOV_MM_RM : InstrItinClass;
    258 def IIC_MMX_MOV_REG_MM : InstrItinClass;
    259 def IIC_MMX_MOVQ_RM : InstrItinClass;
    260 def IIC_MMX_MOVQ_RR : InstrItinClass;
    261 
    262 def IIC_MMX_ALU_RM : InstrItinClass;
    263 def IIC_MMX_ALU_RR : InstrItinClass;
    264 def IIC_MMX_ALUQ_RM : InstrItinClass;
    265 def IIC_MMX_ALUQ_RR : InstrItinClass;
    266 def IIC_MMX_PHADDSUBW_RM : InstrItinClass;
    267 def IIC_MMX_PHADDSUBW_RR : InstrItinClass;
    268 def IIC_MMX_PHADDSUBD_RM : InstrItinClass;
    269 def IIC_MMX_PHADDSUBD_RR : InstrItinClass;
    270 def IIC_MMX_PMUL : InstrItinClass;
    271 def IIC_MMX_MISC_FUNC_MEM : InstrItinClass;
    272 def IIC_MMX_MISC_FUNC_REG : InstrItinClass;
    273 def IIC_MMX_PSADBW : InstrItinClass;
    274 def IIC_MMX_SHIFT_RI : InstrItinClass;
    275 def IIC_MMX_SHIFT_RM : InstrItinClass;
    276 def IIC_MMX_SHIFT_RR : InstrItinClass;
    277 def IIC_MMX_UNPCK_H_RM : InstrItinClass;
    278 def IIC_MMX_UNPCK_H_RR : InstrItinClass;
    279 def IIC_MMX_UNPCK_L : InstrItinClass;
    280 def IIC_MMX_PCK_RM : InstrItinClass;
    281 def IIC_MMX_PCK_RR : InstrItinClass;
    282 def IIC_MMX_PSHUF : InstrItinClass;
    283 def IIC_MMX_PEXTR : InstrItinClass;
    284 def IIC_MMX_PINSRW : InstrItinClass;
    285 def IIC_MMX_MASKMOV : InstrItinClass;
    286 
    287 def IIC_MMX_CVT_PD_RR : InstrItinClass;
    288 def IIC_MMX_CVT_PD_RM : InstrItinClass;
    289 def IIC_MMX_CVT_PS_RR : InstrItinClass;
    290 def IIC_MMX_CVT_PS_RM : InstrItinClass;
    291 
    292 def IIC_CMPX_LOCK : InstrItinClass;
    293 def IIC_CMPX_LOCK_8 : InstrItinClass;
    294 def IIC_CMPX_LOCK_8B : InstrItinClass;
    295 def IIC_CMPX_LOCK_16B : InstrItinClass;
    296 
    297 def IIC_XADD_LOCK_MEM : InstrItinClass;
    298 def IIC_XADD_LOCK_MEM8 : InstrItinClass;
    299 
    300 def IIC_FILD : InstrItinClass;
    301 def IIC_FLD : InstrItinClass;
    302 def IIC_FLD80 : InstrItinClass;
    303 def IIC_FST : InstrItinClass;
    304 def IIC_FST80 : InstrItinClass;
    305 def IIC_FIST : InstrItinClass;
    306 def IIC_FLDZ : InstrItinClass;
    307 def IIC_FUCOM : InstrItinClass;
    308 def IIC_FUCOMI : InstrItinClass;
    309 def IIC_FCOMI : InstrItinClass;
    310 def IIC_FNSTSW : InstrItinClass;
    311 def IIC_FNSTCW : InstrItinClass;
    312 def IIC_FLDCW : InstrItinClass;
    313 def IIC_FNINIT : InstrItinClass;
    314 def IIC_FFREE : InstrItinClass;
    315 def IIC_FNCLEX : InstrItinClass;
    316 def IIC_WAIT : InstrItinClass;
    317 def IIC_FXAM : InstrItinClass;
    318 def IIC_FNOP : InstrItinClass;
    319 def IIC_FLDL : InstrItinClass;
    320 def IIC_F2XM1 : InstrItinClass;
    321 def IIC_FYL2X : InstrItinClass;
    322 def IIC_FPTAN : InstrItinClass;
    323 def IIC_FPATAN : InstrItinClass;
    324 def IIC_FXTRACT : InstrItinClass;
    325 def IIC_FPREM1 : InstrItinClass;
    326 def IIC_FPSTP : InstrItinClass;
    327 def IIC_FPREM : InstrItinClass;
    328 def IIC_FYL2XP1 : InstrItinClass;
    329 def IIC_FSINCOS : InstrItinClass;
    330 def IIC_FRNDINT : InstrItinClass;
    331 def IIC_FSCALE : InstrItinClass;
    332 def IIC_FCOMPP : InstrItinClass;
    333 def IIC_FXSAVE : InstrItinClass;
    334 def IIC_FXRSTOR : InstrItinClass;
    335 
    336 def IIC_FXCH : InstrItinClass;
    337 
    338 // System instructions
    339 def IIC_CPUID : InstrItinClass;
    340 def IIC_INT : InstrItinClass;
    341 def IIC_INT3 : InstrItinClass;
    342 def IIC_INVD : InstrItinClass;
    343 def IIC_INVLPG : InstrItinClass;
    344 def IIC_IRET : InstrItinClass;
    345 def IIC_HLT : InstrItinClass;
    346 def IIC_LXS : InstrItinClass;
    347 def IIC_LTR : InstrItinClass;
    348 def IIC_RDTSC : InstrItinClass;
    349 def IIC_RSM : InstrItinClass;
    350 def IIC_SIDT : InstrItinClass;
    351 def IIC_SGDT : InstrItinClass;
    352 def IIC_SLDT : InstrItinClass;
    353 def IIC_STR : InstrItinClass;
    354 def IIC_SWAPGS : InstrItinClass;
    355 def IIC_SYSCALL : InstrItinClass;
    356 def IIC_SYS_ENTER_EXIT : InstrItinClass;
    357 def IIC_IN_RR : InstrItinClass;
    358 def IIC_IN_RI : InstrItinClass;
    359 def IIC_OUT_RR : InstrItinClass;
    360 def IIC_OUT_IR : InstrItinClass;
    361 def IIC_INS : InstrItinClass;
    362 def IIC_MOV_REG_DR : InstrItinClass;
    363 def IIC_MOV_DR_REG : InstrItinClass;
    364 def IIC_MOV_REG_CR : InstrItinClass;
    365 def IIC_MOV_CR_REG : InstrItinClass;
    366 def IIC_MOV_REG_SR : InstrItinClass;
    367 def IIC_MOV_MEM_SR : InstrItinClass;
    368 def IIC_MOV_SR_REG : InstrItinClass;
    369 def IIC_MOV_SR_MEM : InstrItinClass;
    370 def IIC_LAR_RM : InstrItinClass;
    371 def IIC_LAR_RR : InstrItinClass;
    372 def IIC_LSL_RM : InstrItinClass;
    373 def IIC_LSL_RR : InstrItinClass;
    374 def IIC_LGDT : InstrItinClass;
    375 def IIC_LIDT : InstrItinClass;
    376 def IIC_LLDT_REG : InstrItinClass;
    377 def IIC_LLDT_MEM : InstrItinClass;
    378 def IIC_PUSH_CS : InstrItinClass;
    379 def IIC_PUSH_SR : InstrItinClass;
    380 def IIC_POP_SR : InstrItinClass;
    381 def IIC_POP_SR_SS : InstrItinClass;
    382 def IIC_VERR : InstrItinClass;
    383 def IIC_VERW_REG : InstrItinClass;
    384 def IIC_VERW_MEM : InstrItinClass;
    385 def IIC_WRMSR : InstrItinClass;
    386 def IIC_RDMSR : InstrItinClass;
    387 def IIC_RDPMC : InstrItinClass;
    388 def IIC_SMSW : InstrItinClass;
    389 def IIC_LMSW_REG : InstrItinClass;
    390 def IIC_LMSW_MEM : InstrItinClass;
    391 def IIC_ENTER : InstrItinClass;
    392 def IIC_LEAVE : InstrItinClass;
    393 def IIC_POP_MEM : InstrItinClass;
    394 def IIC_POP_REG16 : InstrItinClass;
    395 def IIC_POP_REG : InstrItinClass;
    396 def IIC_POP_F : InstrItinClass;
    397 def IIC_POP_FD : InstrItinClass;
    398 def IIC_POP_A : InstrItinClass;
    399 def IIC_PUSH_IMM : InstrItinClass;
    400 def IIC_PUSH_MEM : InstrItinClass;
    401 def IIC_PUSH_REG : InstrItinClass;
    402 def IIC_PUSH_F : InstrItinClass;
    403 def IIC_PUSH_A : InstrItinClass;
    404 def IIC_BSWAP : InstrItinClass;
    405 def IIC_BSF : InstrItinClass;
    406 def IIC_BSR : InstrItinClass;
    407 def IIC_MOVS : InstrItinClass;
    408 def IIC_STOS : InstrItinClass;
    409 def IIC_SCAS : InstrItinClass;
    410 def IIC_CMPS : InstrItinClass;
    411 def IIC_MOV : InstrItinClass;
    412 def IIC_MOV_MEM : InstrItinClass;
    413 def IIC_AHF : InstrItinClass;
    414 def IIC_BT_MI : InstrItinClass;
    415 def IIC_BT_MR : InstrItinClass;
    416 def IIC_BT_RI : InstrItinClass;
    417 def IIC_BT_RR : InstrItinClass;
    418 def IIC_BTX_MI : InstrItinClass;
    419 def IIC_BTX_MR : InstrItinClass;
    420 def IIC_BTX_RI : InstrItinClass;
    421 def IIC_BTX_RR : InstrItinClass;
    422 def IIC_XCHG_REG : InstrItinClass;
    423 def IIC_XCHG_MEM : InstrItinClass;
    424 def IIC_XADD_REG : InstrItinClass;
    425 def IIC_XADD_MEM : InstrItinClass;
    426 def IIC_CMPXCHG_MEM : InstrItinClass;
    427 def IIC_CMPXCHG_REG : InstrItinClass;
    428 def IIC_CMPXCHG_MEM8 : InstrItinClass;
    429 def IIC_CMPXCHG_REG8 : InstrItinClass;
    430 def IIC_CMPXCHG_8B : InstrItinClass;
    431 def IIC_CMPXCHG_16B : InstrItinClass;
    432 def IIC_LODS : InstrItinClass;
    433 def IIC_OUTS : InstrItinClass;
    434 def IIC_CLC : InstrItinClass;
    435 def IIC_CLD : InstrItinClass;
    436 def IIC_CLI : InstrItinClass;
    437 def IIC_CMC : InstrItinClass;
    438 def IIC_CLTS : InstrItinClass;
    439 def IIC_STC : InstrItinClass;
    440 def IIC_STI : InstrItinClass;
    441 def IIC_STD : InstrItinClass;
    442 def IIC_XLAT : InstrItinClass;
    443 def IIC_AAA : InstrItinClass;
    444 def IIC_AAD : InstrItinClass;
    445 def IIC_AAM : InstrItinClass;
    446 def IIC_AAS : InstrItinClass;
    447 def IIC_DAA : InstrItinClass;
    448 def IIC_DAS : InstrItinClass;
    449 def IIC_BOUND : InstrItinClass;
    450 def IIC_ARPL_REG : InstrItinClass;
    451 def IIC_ARPL_MEM : InstrItinClass;
    452 def IIC_MOVBE : InstrItinClass;
    453 
    454 def IIC_NOP : InstrItinClass;
    455 
    456 //===----------------------------------------------------------------------===//
    457 // Processor instruction itineraries.
    458 
    459 // IssueWidth is analagous to the number of decode units. Core and its
    460 // descendents, including Nehalem and SandyBridge have 4 decoders.
    461 // Resources beyond the decoder operate on micro-ops and are bufferred
    462 // so adjacent micro-ops don't directly compete.
    463 //
    464 // MinLatency=0 indicates that RAW dependencies can be decoded in the
    465 // same cycle.
    466 //
    467 // HighLatency=10 is optimistic. X86InstrInfo::isHighLatencyDef
    468 // indicates high latency opcodes. Alternatively, InstrItinData
    469 // entries may be included here to define specific operand
    470 // latencies. Since these latencies are not used for pipeline hazards,
    471 // they do not need to be exact.
    472 //
    473 // The GenericModel contains no instruciton itineraries.
    474 def GenericModel : SchedMachineModel {
    475   let IssueWidth = 4;
    476   let MinLatency = 0;
    477   let LoadLatency = 4;
    478   let HighLatency = 10;
    479 }
    480 
    481 include "X86ScheduleAtom.td"
    482