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