Home | History | Annotate | Download | only in ARM
      1 //===-- ARMSchedule.td - ARM 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 ARM
     12 //
     13 def IIC_iALUx      : InstrItinClass;
     14 def IIC_iALUi      : InstrItinClass;
     15 def IIC_iALUr      : InstrItinClass;
     16 def IIC_iALUsi     : InstrItinClass;
     17 def IIC_iALUsir    : InstrItinClass;
     18 def IIC_iALUsr     : InstrItinClass;
     19 def IIC_iBITi      : InstrItinClass;
     20 def IIC_iBITr      : InstrItinClass;
     21 def IIC_iBITsi     : InstrItinClass;
     22 def IIC_iBITsr     : InstrItinClass;
     23 def IIC_iUNAr      : InstrItinClass;
     24 def IIC_iUNAsi     : InstrItinClass;
     25 def IIC_iEXTr      : InstrItinClass;
     26 def IIC_iEXTAr     : InstrItinClass;
     27 def IIC_iEXTAsr    : InstrItinClass;
     28 def IIC_iCMPi      : InstrItinClass;
     29 def IIC_iCMPr      : InstrItinClass;
     30 def IIC_iCMPsi     : InstrItinClass;
     31 def IIC_iCMPsr     : InstrItinClass;
     32 def IIC_iTSTi      : InstrItinClass;
     33 def IIC_iTSTr      : InstrItinClass;
     34 def IIC_iTSTsi     : InstrItinClass;
     35 def IIC_iTSTsr     : InstrItinClass;
     36 def IIC_iMOVi      : InstrItinClass;
     37 def IIC_iMOVr      : InstrItinClass;
     38 def IIC_iMOVsi     : InstrItinClass;
     39 def IIC_iMOVsr     : InstrItinClass;
     40 def IIC_iMOVix2    : InstrItinClass;
     41 def IIC_iMOVix2addpc : InstrItinClass;
     42 def IIC_iMOVix2ld  : InstrItinClass;
     43 def IIC_iMVNi      : InstrItinClass;
     44 def IIC_iMVNr      : InstrItinClass;
     45 def IIC_iMVNsi     : InstrItinClass;
     46 def IIC_iMVNsr     : InstrItinClass;
     47 def IIC_iCMOVi     : InstrItinClass;
     48 def IIC_iCMOVr     : InstrItinClass;
     49 def IIC_iCMOVsi    : InstrItinClass;
     50 def IIC_iCMOVsr    : InstrItinClass;
     51 def IIC_iCMOVix2   : InstrItinClass;
     52 def IIC_iMUL16     : InstrItinClass;
     53 def IIC_iMAC16     : InstrItinClass;
     54 def IIC_iMUL32     : InstrItinClass;
     55 def IIC_iMAC32     : InstrItinClass;
     56 def IIC_iMUL64     : InstrItinClass;
     57 def IIC_iMAC64     : InstrItinClass;
     58 def IIC_iLoad_i    : InstrItinClass;
     59 def IIC_iLoad_r    : InstrItinClass;
     60 def IIC_iLoad_si   : InstrItinClass;
     61 def IIC_iLoad_iu   : InstrItinClass;
     62 def IIC_iLoad_ru   : InstrItinClass;
     63 def IIC_iLoad_siu  : InstrItinClass;
     64 def IIC_iLoad_bh_i   : InstrItinClass;
     65 def IIC_iLoad_bh_r   : InstrItinClass;
     66 def IIC_iLoad_bh_si  : InstrItinClass;
     67 def IIC_iLoad_bh_iu  : InstrItinClass;
     68 def IIC_iLoad_bh_ru  : InstrItinClass;
     69 def IIC_iLoad_bh_siu : InstrItinClass;
     70 def IIC_iLoad_d_i  : InstrItinClass;
     71 def IIC_iLoad_d_r  : InstrItinClass;
     72 def IIC_iLoad_d_ru : InstrItinClass;
     73 def IIC_iLoad_m    : InstrItinClass;
     74 def IIC_iLoad_mu   : InstrItinClass;
     75 def IIC_iLoad_mBr  : InstrItinClass;
     76 def IIC_iPop       : InstrItinClass;
     77 def IIC_iPop_Br    : InstrItinClass;
     78 def IIC_iLoadiALU  : InstrItinClass;
     79 def IIC_iStore_i   : InstrItinClass;
     80 def IIC_iStore_r   : InstrItinClass;
     81 def IIC_iStore_si  : InstrItinClass;
     82 def IIC_iStore_iu  : InstrItinClass;
     83 def IIC_iStore_ru  : InstrItinClass;
     84 def IIC_iStore_siu : InstrItinClass;
     85 def IIC_iStore_bh_i   : InstrItinClass;
     86 def IIC_iStore_bh_r   : InstrItinClass;
     87 def IIC_iStore_bh_si  : InstrItinClass;
     88 def IIC_iStore_bh_iu  : InstrItinClass;
     89 def IIC_iStore_bh_ru  : InstrItinClass;
     90 def IIC_iStore_bh_siu : InstrItinClass;
     91 def IIC_iStore_d_i   : InstrItinClass;
     92 def IIC_iStore_d_r   : InstrItinClass;
     93 def IIC_iStore_d_ru  : InstrItinClass;
     94 def IIC_iStore_m   : InstrItinClass;
     95 def IIC_iStore_mu  : InstrItinClass;
     96 def IIC_Preload    : InstrItinClass;
     97 def IIC_Br         : InstrItinClass;
     98 def IIC_fpSTAT     : InstrItinClass;
     99 def IIC_fpUNA32    : InstrItinClass;
    100 def IIC_fpUNA64    : InstrItinClass;
    101 def IIC_fpCMP32    : InstrItinClass;
    102 def IIC_fpCMP64    : InstrItinClass;
    103 def IIC_fpCVTSD    : InstrItinClass;
    104 def IIC_fpCVTDS    : InstrItinClass;
    105 def IIC_fpCVTSH    : InstrItinClass;
    106 def IIC_fpCVTHS    : InstrItinClass;
    107 def IIC_fpCVTIS    : InstrItinClass;
    108 def IIC_fpCVTID    : InstrItinClass;
    109 def IIC_fpCVTSI    : InstrItinClass;
    110 def IIC_fpCVTDI    : InstrItinClass;
    111 def IIC_fpMOVIS    : InstrItinClass;
    112 def IIC_fpMOVID    : InstrItinClass;
    113 def IIC_fpMOVSI    : InstrItinClass;
    114 def IIC_fpMOVDI    : InstrItinClass;
    115 def IIC_fpALU32    : InstrItinClass;
    116 def IIC_fpALU64    : InstrItinClass;
    117 def IIC_fpMUL32    : InstrItinClass;
    118 def IIC_fpMUL64    : InstrItinClass;
    119 def IIC_fpMAC32    : InstrItinClass;
    120 def IIC_fpMAC64    : InstrItinClass;
    121 def IIC_fpFMAC32   : InstrItinClass;
    122 def IIC_fpFMAC64   : InstrItinClass;
    123 def IIC_fpDIV32    : InstrItinClass;
    124 def IIC_fpDIV64    : InstrItinClass;
    125 def IIC_fpSQRT32   : InstrItinClass;
    126 def IIC_fpSQRT64   : InstrItinClass;
    127 def IIC_fpLoad32   : InstrItinClass;
    128 def IIC_fpLoad64   : InstrItinClass;
    129 def IIC_fpLoad_m   : InstrItinClass;
    130 def IIC_fpLoad_mu  : InstrItinClass;
    131 def IIC_fpStore32  : InstrItinClass;
    132 def IIC_fpStore64  : InstrItinClass;
    133 def IIC_fpStore_m  : InstrItinClass;
    134 def IIC_fpStore_mu : InstrItinClass;
    135 def IIC_VLD1       : InstrItinClass;
    136 def IIC_VLD1x2     : InstrItinClass;
    137 def IIC_VLD1x3     : InstrItinClass;
    138 def IIC_VLD1x4     : InstrItinClass;
    139 def IIC_VLD1u      : InstrItinClass;
    140 def IIC_VLD1x2u    : InstrItinClass;
    141 def IIC_VLD1x3u    : InstrItinClass;
    142 def IIC_VLD1x4u    : InstrItinClass;
    143 def IIC_VLD1ln     : InstrItinClass;
    144 def IIC_VLD1lnu    : InstrItinClass;
    145 def IIC_VLD1dup    : InstrItinClass;
    146 def IIC_VLD1dupu   : InstrItinClass;
    147 def IIC_VLD2       : InstrItinClass;
    148 def IIC_VLD2x2     : InstrItinClass;
    149 def IIC_VLD2u      : InstrItinClass;
    150 def IIC_VLD2x2u    : InstrItinClass;
    151 def IIC_VLD2ln     : InstrItinClass;
    152 def IIC_VLD2lnu    : InstrItinClass;
    153 def IIC_VLD2dup    : InstrItinClass;
    154 def IIC_VLD2dupu   : InstrItinClass;
    155 def IIC_VLD3       : InstrItinClass;
    156 def IIC_VLD3ln     : InstrItinClass;
    157 def IIC_VLD3u      : InstrItinClass;
    158 def IIC_VLD3lnu    : InstrItinClass;
    159 def IIC_VLD3dup    : InstrItinClass;
    160 def IIC_VLD3dupu   : InstrItinClass;
    161 def IIC_VLD4       : InstrItinClass;
    162 def IIC_VLD4ln     : InstrItinClass;
    163 def IIC_VLD4u      : InstrItinClass;
    164 def IIC_VLD4lnu    : InstrItinClass;
    165 def IIC_VLD4dup    : InstrItinClass;
    166 def IIC_VLD4dupu   : InstrItinClass;
    167 def IIC_VST1       : InstrItinClass;
    168 def IIC_VST1x2     : InstrItinClass;
    169 def IIC_VST1x3     : InstrItinClass;
    170 def IIC_VST1x4     : InstrItinClass;
    171 def IIC_VST1u      : InstrItinClass;
    172 def IIC_VST1x2u    : InstrItinClass;
    173 def IIC_VST1x3u    : InstrItinClass;
    174 def IIC_VST1x4u    : InstrItinClass;
    175 def IIC_VST1ln     : InstrItinClass;
    176 def IIC_VST1lnu    : InstrItinClass;
    177 def IIC_VST2       : InstrItinClass;
    178 def IIC_VST2x2     : InstrItinClass;
    179 def IIC_VST2u      : InstrItinClass;
    180 def IIC_VST2x2u    : InstrItinClass;
    181 def IIC_VST2ln     : InstrItinClass;
    182 def IIC_VST2lnu    : InstrItinClass;
    183 def IIC_VST3       : InstrItinClass;
    184 def IIC_VST3u      : InstrItinClass;
    185 def IIC_VST3ln     : InstrItinClass;
    186 def IIC_VST3lnu    : InstrItinClass;
    187 def IIC_VST4       : InstrItinClass;
    188 def IIC_VST4u      : InstrItinClass;
    189 def IIC_VST4ln     : InstrItinClass;
    190 def IIC_VST4lnu    : InstrItinClass;
    191 def IIC_VUNAD      : InstrItinClass;
    192 def IIC_VUNAQ      : InstrItinClass;
    193 def IIC_VBIND      : InstrItinClass;
    194 def IIC_VBINQ      : InstrItinClass;
    195 def IIC_VPBIND     : InstrItinClass;
    196 def IIC_VFMULD     : InstrItinClass;
    197 def IIC_VFMULQ     : InstrItinClass;
    198 def IIC_VMOV       : InstrItinClass;
    199 def IIC_VMOVImm    : InstrItinClass;
    200 def IIC_VMOVD      : InstrItinClass;
    201 def IIC_VMOVQ      : InstrItinClass;
    202 def IIC_VMOVIS     : InstrItinClass;
    203 def IIC_VMOVID     : InstrItinClass;
    204 def IIC_VMOVISL    : InstrItinClass;
    205 def IIC_VMOVSI     : InstrItinClass;
    206 def IIC_VMOVDI     : InstrItinClass;
    207 def IIC_VMOVN      : InstrItinClass;
    208 def IIC_VPERMD     : InstrItinClass;
    209 def IIC_VPERMQ     : InstrItinClass;
    210 def IIC_VPERMQ3    : InstrItinClass;
    211 def IIC_VMACD      : InstrItinClass;
    212 def IIC_VMACQ      : InstrItinClass;
    213 def IIC_VFMACD     : InstrItinClass;
    214 def IIC_VFMACQ     : InstrItinClass;
    215 def IIC_VRECSD     : InstrItinClass;
    216 def IIC_VRECSQ     : InstrItinClass;
    217 def IIC_VCNTiD     : InstrItinClass;
    218 def IIC_VCNTiQ     : InstrItinClass;
    219 def IIC_VUNAiD     : InstrItinClass;
    220 def IIC_VUNAiQ     : InstrItinClass;
    221 def IIC_VQUNAiD    : InstrItinClass;
    222 def IIC_VQUNAiQ    : InstrItinClass;
    223 def IIC_VBINiD     : InstrItinClass;
    224 def IIC_VBINiQ     : InstrItinClass;
    225 def IIC_VSUBiD     : InstrItinClass;
    226 def IIC_VSUBiQ     : InstrItinClass;
    227 def IIC_VBINi4D    : InstrItinClass;
    228 def IIC_VBINi4Q    : InstrItinClass;
    229 def IIC_VSUBi4D    : InstrItinClass;
    230 def IIC_VSUBi4Q    : InstrItinClass;
    231 def IIC_VABAD      : InstrItinClass;
    232 def IIC_VABAQ      : InstrItinClass;
    233 def IIC_VSHLiD     : InstrItinClass;
    234 def IIC_VSHLiQ     : InstrItinClass;
    235 def IIC_VSHLi4D    : InstrItinClass;
    236 def IIC_VSHLi4Q    : InstrItinClass;
    237 def IIC_VPALiD     : InstrItinClass;
    238 def IIC_VPALiQ     : InstrItinClass;
    239 def IIC_VMULi16D   : InstrItinClass;
    240 def IIC_VMULi32D   : InstrItinClass;
    241 def IIC_VMULi16Q   : InstrItinClass;
    242 def IIC_VMULi32Q   : InstrItinClass;
    243 def IIC_VMACi16D   : InstrItinClass;
    244 def IIC_VMACi32D   : InstrItinClass;
    245 def IIC_VMACi16Q   : InstrItinClass;
    246 def IIC_VMACi32Q   : InstrItinClass;
    247 def IIC_VEXTD      : InstrItinClass;
    248 def IIC_VEXTQ      : InstrItinClass;
    249 def IIC_VTB1       : InstrItinClass;
    250 def IIC_VTB2       : InstrItinClass;
    251 def IIC_VTB3       : InstrItinClass;
    252 def IIC_VTB4       : InstrItinClass;
    253 def IIC_VTBX1      : InstrItinClass;
    254 def IIC_VTBX2      : InstrItinClass;
    255 def IIC_VTBX3      : InstrItinClass;
    256 def IIC_VTBX4      : InstrItinClass;
    257 
    258 //===----------------------------------------------------------------------===//
    259 // Processor instruction itineraries.
    260 
    261 include "ARMScheduleV6.td"
    262 include "ARMScheduleA8.td"
    263 include "ARMScheduleA9.td"
    264