1 //=- AArch64SchedKryoDetails.td - QC Kryo Scheduling Defs ----*- 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 // This file defines the uop and latency details for the machine model for the 11 // Qualcomm Kryo subtarget. 12 // 13 //===----------------------------------------------------------------------===// 14 15 def KryoWrite_3cyc_X_noRSV_138ln : 16 SchedWriteRes<[KryoUnitX]> { 17 let Latency = 3; let NumMicroOps = 2; 18 } 19 def : InstRW<[KryoWrite_3cyc_X_noRSV_138ln], 20 (instregex "(S|U)R?SRA(d|(v2i32|v4i16|v8i8)_shift)")>; 21 22 def KryoWrite_3cyc_X_X_139ln : 23 SchedWriteRes<[KryoUnitX, KryoUnitX]> { 24 let Latency = 3; let NumMicroOps = 2; 25 } 26 def : InstRW<[KryoWrite_3cyc_X_X_139ln], 27 (instregex "(S|U)R?SRA(v2i64|v4i32|v8i16|v16i8)_shift")>; 28 29 def KryoWrite_4cyc_XY_XY_noRSV_172ln : 30 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 31 let Latency = 4; let NumMicroOps = 3; 32 } 33 def : InstRW<[KryoWrite_4cyc_XY_XY_noRSV_172ln], 34 (instregex "(S|U)ABA(v8i8|v4i16|v2i32)")>; 35 def KryoWrite_4cyc_XY_XY_XY_XY_178ln : 36 SchedWriteRes<[KryoUnitXY, KryoUnitXY, KryoUnitXY, KryoUnitXY]> { 37 let Latency = 4; let NumMicroOps = 4; 38 } 39 def : InstRW<[KryoWrite_4cyc_XY_XY_XY_XY_178ln], 40 (instregex "(S|U)ABA(v16i8|v8i16|v4i32)")>; 41 def KryoWrite_3cyc_XY_XY_XY_XY_177ln : 42 SchedWriteRes<[KryoUnitXY, KryoUnitXY, KryoUnitXY, KryoUnitXY]> { 43 let Latency = 3; let NumMicroOps = 4; 44 } 45 def : InstRW<[KryoWrite_3cyc_XY_XY_XY_XY_177ln], 46 (instregex "(S|U)ABALv.*")>; 47 def KryoWrite_3cyc_XY_XY_166ln : 48 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 49 let Latency = 3; let NumMicroOps = 2; 50 } 51 def : InstRW<[KryoWrite_3cyc_XY_XY_166ln], 52 (instregex "(S|U)(ABD|QSUB|RHADD)(v16i8|v8i16|v4i32|v2i64)")>; 53 def KryoWrite_3cyc_XY_noRSV_159ln : 54 SchedWriteRes<[KryoUnitXY]> { 55 let Latency = 3; let NumMicroOps = 2; 56 } 57 def : InstRW<[KryoWrite_3cyc_XY_noRSV_159ln], 58 (instregex "(S|U)(ABD|RHADD)(v8i8|v4i16|v2i32)")>; 59 def KryoWrite_3cyc_XY_XY_165ln : 60 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 61 let Latency = 3; let NumMicroOps = 2; 62 } 63 def : InstRW<[KryoWrite_3cyc_XY_XY_165ln], 64 (instregex "(S|U)ABDLv.*")>; 65 def KryoWrite_3cyc_X_noRSV_154ln : 66 SchedWriteRes<[KryoUnitX]> { 67 let Latency = 3; let NumMicroOps = 2; 68 } 69 def : InstRW<[KryoWrite_3cyc_X_noRSV_154ln], 70 (instregex "(S|U)ADALP(v8i8|v4i16|v2i32)_v.*")>; 71 def KryoWrite_3cyc_X_X_155ln : 72 SchedWriteRes<[KryoUnitX, KryoUnitX]> { 73 let Latency = 3; let NumMicroOps = 2; 74 } 75 def : InstRW<[KryoWrite_3cyc_X_X_155ln], 76 (instregex "(S|U)ADALP(v16i8|v8i16|v4i32)_v.*")>; 77 def KryoWrite_2cyc_XY_XY_151ln : 78 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 79 let Latency = 2; let NumMicroOps = 2; 80 } 81 def : InstRW<[KryoWrite_2cyc_XY_XY_151ln], 82 (instregex "(S|U)(ADD|SUB)Lv.*")>; 83 def KryoWrite_2cyc_XY_noRSV_148ln : 84 SchedWriteRes<[KryoUnitXY]> { 85 let Latency = 2; let NumMicroOps = 2; 86 } 87 def : InstRW<[KryoWrite_2cyc_XY_noRSV_148ln], 88 (instregex "((S|U)ADDLP|ABS)(v2i32|v4i16|v8i8)(_v.*)?")>; 89 def KryoWrite_2cyc_XY_XY_150ln : 90 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 91 let Latency = 2; let NumMicroOps = 2; 92 } 93 def : InstRW<[KryoWrite_2cyc_XY_XY_150ln], 94 (instregex "((S|U)ADDLP|ABS)(v2i64|v4i32|v8i16|v16i8)(_v.*)?")>; 95 def KryoWrite_3cyc_XY_XY_XY_noRSV_179ln : 96 SchedWriteRes<[KryoUnitXY, KryoUnitXY, KryoUnitXY]> { 97 let Latency = 3; let NumMicroOps = 4; 98 } 99 def : InstRW<[KryoWrite_3cyc_XY_XY_XY_noRSV_179ln], 100 (instrs SADDLVv4i32v, UADDLVv4i32v)>; 101 def KryoWrite_5cyc_XY_XY_XY_noRSV_180ln : 102 SchedWriteRes<[KryoUnitXY, KryoUnitXY, KryoUnitXY]> { 103 let Latency = 5; let NumMicroOps = 4; 104 } 105 def : InstRW<[KryoWrite_5cyc_XY_XY_XY_noRSV_180ln], 106 (instrs SADDLVv8i16v, UADDLVv8i16v)>; 107 def KryoWrite_6cyc_XY_XY_X_noRSV_181ln : 108 SchedWriteRes<[KryoUnitXY, KryoUnitXY, KryoUnitX]> { 109 let Latency = 6; let NumMicroOps = 4; 110 } 111 def : InstRW<[KryoWrite_6cyc_XY_XY_X_noRSV_181ln], 112 (instrs SADDLVv16i8v, UADDLVv16i8v)>; 113 def KryoWrite_3cyc_XY_noRSV_158ln : 114 SchedWriteRes<[KryoUnitXY]> { 115 let Latency = 3; let NumMicroOps = 2; 116 } 117 def : InstRW<[KryoWrite_3cyc_XY_noRSV_158ln], 118 (instrs SADDLVv4i16v, UADDLVv4i16v, ADDVv4i16v)>; 119 def KryoWrite_4cyc_X_noRSV_169ln : 120 SchedWriteRes<[KryoUnitX]> { 121 let Latency = 4; let NumMicroOps = 2; 122 } 123 def : InstRW<[KryoWrite_4cyc_X_noRSV_169ln], 124 (instrs SADDLVv8i8v, UADDLVv8i8v, ADDVv8i8v)>; 125 def KryoWrite_2cyc_XY_XY_XY_XY_176ln : 126 SchedWriteRes<[KryoUnitXY, KryoUnitXY, KryoUnitXY, KryoUnitXY]> { 127 let Latency = 2; let NumMicroOps = 4; 128 } 129 def : InstRW<[KryoWrite_2cyc_XY_XY_XY_XY_176ln], 130 (instregex "(S|U)(ADDW|SUBW)v.*")>; 131 def KryoWrite_4cyc_X_noRSV_40ln : 132 SchedWriteRes<[KryoUnitX]> { 133 let Latency = 4; let NumMicroOps = 2; 134 } 135 def : InstRW<[KryoWrite_4cyc_X_noRSV_40ln], 136 (instregex "(S|U)CVTFS(W|X)(D|S)ri")>; 137 def KryoWrite_4cyc_X_noRSV_97ln : 138 SchedWriteRes<[KryoUnitX]> { 139 let Latency = 4; let NumMicroOps = 2; 140 } 141 def : InstRW<[KryoWrite_4cyc_X_noRSV_97ln], 142 (instregex "(S|U)CVTFU(W|X)(D|S)ri")>; 143 def KryoWrite_4cyc_X_noRSV_110ln : 144 SchedWriteRes<[KryoUnitX]> { 145 let Latency = 4; let NumMicroOps = 2; 146 } 147 def : InstRW<[KryoWrite_4cyc_X_noRSV_110ln], 148 (instregex "(S|U)CVTF(v1i32|v2i32|v1i64|v2f32|d|s)(_shift)?")>; 149 def KryoWrite_4cyc_X_X_114ln : 150 SchedWriteRes<[KryoUnitX, KryoUnitX]> { 151 let Latency = 4; let NumMicroOps = 2; 152 } 153 def : InstRW<[KryoWrite_4cyc_X_X_114ln], 154 (instregex "(S|U)CVTF(v2i64|v4i32|v2f64|v4f32)(_shift)?")>; 155 def KryoWrite_1cyc_XA_Y_98ln : 156 SchedWriteRes<[KryoUnitXA, KryoUnitY]> { 157 let Latency = 1; let NumMicroOps = 2; 158 } 159 def : InstRW<[KryoWrite_1cyc_XA_Y_98ln], 160 (instregex "(S|U)DIV(_Int)?(W|X)r")>; 161 def KryoWrite_2cyc_XY_XY_152ln : 162 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 163 let Latency = 2; let NumMicroOps = 2; 164 } 165 def : InstRW<[KryoWrite_2cyc_XY_XY_152ln], 166 (instregex "(S|U)H(ADD|SUB)(v16i8|v8i16|v4i32)")>; 167 def KryoWrite_2cyc_XY_noRSV_149ln : 168 SchedWriteRes<[KryoUnitXY]> { 169 let Latency = 2; let NumMicroOps = 2; 170 } 171 def : InstRW<[KryoWrite_2cyc_XY_noRSV_149ln], 172 (instregex "((S|U)H(ADD|SUB)|ADDP)(v8i8|v4i16|v2i32)")>; 173 def KryoWrite_4cyc_X_70ln : 174 SchedWriteRes<[KryoUnitX]> { 175 let Latency = 4; let NumMicroOps = 1; 176 } 177 def : InstRW<[KryoWrite_4cyc_X_70ln], 178 (instregex "(S|U)(MADDL|MSUBL)rrr")>; 179 def KryoWrite_4cyc_X_X_191ln : 180 SchedWriteRes<[KryoUnitX, KryoUnitX]> { 181 let Latency = 4; let NumMicroOps = 2; 182 } 183 def : InstRW<[KryoWrite_4cyc_X_X_191ln], 184 (instregex "(S|U|SQD)(MLAL|MLSL|MULL)v.*")>; 185 def KryoWrite_1cyc_XY_195ln : 186 SchedWriteRes<[KryoUnitXY]> { 187 let Latency = 1; let NumMicroOps = 1; 188 } 189 def : InstRW<[KryoWrite_1cyc_XY_195ln], 190 (instregex "(S|U)MOVv.*")>; 191 def KryoWrite_5cyc_X_71ln : 192 SchedWriteRes<[KryoUnitX]> { 193 let Latency = 5; let NumMicroOps = 1; 194 } 195 def : InstRW<[KryoWrite_5cyc_X_71ln], 196 (instrs SMULHrr, UMULHrr)>; 197 def KryoWrite_3cyc_XY_noRSV_186ln : 198 SchedWriteRes<[KryoUnitXY]> { 199 let Latency = 3; let NumMicroOps = 2; 200 } 201 def : InstRW<[KryoWrite_3cyc_XY_noRSV_186ln], 202 (instregex "^(S|U)QADD(v8i8|v4i16|v2i32)")>; 203 def KryoWrite_3cyc_XY_XY_187ln : 204 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 205 let Latency = 3; let NumMicroOps = 2; 206 } 207 def : InstRW<[KryoWrite_3cyc_XY_XY_187ln], 208 (instregex "^(S|U)QADD(v16i8|v8i16|v4i32|v2i64)")>; 209 def KryoWrite_3cyc_XY_noRSV_69ln : 210 SchedWriteRes<[KryoUnitXY]> { 211 let Latency = 3; let NumMicroOps = 2; 212 } 213 def : InstRW<[KryoWrite_3cyc_XY_noRSV_69ln], 214 (instregex "(S|U|SU|US)QADD(v1i8|v1i16|v2i16|v1i32|v1i64)")>; 215 def KryoWrite_3cyc_XY_noRSV_248ln : 216 SchedWriteRes<[KryoUnitXY]> { 217 let Latency = 3; let NumMicroOps = 2; 218 } 219 def : InstRW<[KryoWrite_3cyc_XY_noRSV_248ln], 220 (instregex "(S|U)QSHLU?(d|s|h|b|(v8i8|v4i16|v2i32)_shift)$")>; 221 def KryoWrite_3cyc_XY_XY_250ln : 222 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 223 let Latency = 3; let NumMicroOps = 2; 224 } 225 def : InstRW<[KryoWrite_3cyc_XY_XY_250ln], 226 (instregex "(S|U)(QSHLU?|RSHR)(v16i8|v8i16|v4i32|v2i64)_shift$")>; 227 def KryoWrite_3cyc_XY_noRSV_246ln : 228 SchedWriteRes<[KryoUnitXY]> { 229 let Latency = 3; let NumMicroOps = 2; 230 } 231 def : InstRW<[KryoWrite_3cyc_XY_noRSV_246ln], 232 (instregex "(S|U)(QSHL|RSHL|QRSHL)(v1i8|v1i16|v1i32|v1i64|v8i8|v4i16|v2i32)$")>; 233 def KryoWrite_3cyc_XY_XY_251ln : 234 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 235 let Latency = 3; let NumMicroOps = 2; 236 } 237 def : InstRW<[KryoWrite_3cyc_XY_XY_251ln], 238 (instregex "(S|U)(QSHL|RSHL|QRSHL)(v16i8|v8i16|v4i32|v2i64)$")>; 239 def KryoWrite_6cyc_XY_X_238ln : 240 SchedWriteRes<[KryoUnitXY, KryoUnitX]> { 241 let Latency = 6; let NumMicroOps = 2; 242 } 243 def : InstRW<[KryoWrite_6cyc_XY_X_238ln], 244 (instregex "((S|U)QR?SHRN|SQR?SHRUN)(v16i8|v8i16|v4i32)_shift$")>; 245 def KryoWrite_3cyc_XY_noRSV_249ln : 246 SchedWriteRes<[KryoUnitXY]> { 247 let Latency = 3; let NumMicroOps = 2; 248 } 249 def : InstRW<[KryoWrite_3cyc_XY_noRSV_249ln], 250 (instregex "((S|U)QR?SHRN|SQR?SHRUN)(s|h|b)?")>; 251 def KryoWrite_6cyc_XY_X_noRSV_252ln : 252 SchedWriteRes<[KryoUnitXY, KryoUnitX]> { 253 let Latency = 6; let NumMicroOps = 3; 254 } 255 def : InstRW<[KryoWrite_6cyc_XY_X_noRSV_252ln], 256 (instregex "((S|U)QR?SHRN|SQR?SHRUN)(v8i8|v4i16|v2i32)_shift?")>; 257 def KryoWrite_3cyc_XY_noRSV_161ln : 258 SchedWriteRes<[KryoUnitXY]> { 259 let Latency = 3; let NumMicroOps = 2; 260 } 261 def : InstRW<[KryoWrite_3cyc_XY_noRSV_161ln], 262 (instregex "(S|U)QSUB(v8i8|v4i16|v2i32|v1i64|v1i32|v1i16|v1i8)")>; 263 def KryoWrite_3cyc_XY_noRSV_163ln : 264 SchedWriteRes<[KryoUnitXY]> { 265 let Latency = 3; let NumMicroOps = 2; 266 } 267 def : InstRW<[KryoWrite_3cyc_XY_noRSV_163ln], 268 (instregex "(S|U)QXTU?N(v16i8|v8i16|v4i32|v8i8|v4i16|v2i32)")>; 269 def KryoWrite_3cyc_XY_noRSV_162ln : 270 SchedWriteRes<[KryoUnitXY]> { 271 let Latency = 3; let NumMicroOps = 2; 272 } 273 def : InstRW<[KryoWrite_3cyc_XY_noRSV_162ln], 274 (instregex "(S|U)QXTU?N(v1i8|v1i16|v1i32)")>; 275 def KryoWrite_3cyc_XY_noRSV_247ln : 276 SchedWriteRes<[KryoUnitXY]> { 277 let Latency = 3; let NumMicroOps = 2; 278 } 279 def : InstRW<[KryoWrite_3cyc_XY_noRSV_247ln], 280 (instregex "(S|U)RSHR(d|(v8i8|v4i16|v2i32)_shift)$")>; 281 def KryoWrite_2cyc_XY_noRSV_239ln : 282 SchedWriteRes<[KryoUnitXY]> { 283 let Latency = 2; let NumMicroOps = 2; 284 } 285 def : InstRW<[KryoWrite_2cyc_XY_noRSV_239ln], 286 (instregex "(S|U)SHL(d|v8i8|v4i16|v2i32|v1i64)$")>; 287 def KryoWrite_2cyc_XY_XY_243ln : 288 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 289 let Latency = 2; let NumMicroOps = 2; 290 } 291 def : InstRW<[KryoWrite_2cyc_XY_XY_243ln], 292 (instregex "(S|U)SHL(v16i8|v8i16|v4i32|v2i64)$")>; 293 def KryoWrite_2cyc_XY_XY_241ln : 294 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 295 let Latency = 2; let NumMicroOps = 2; 296 } 297 def : InstRW<[KryoWrite_2cyc_XY_XY_241ln], 298 (instregex "(S|U)?SHLL(v16i8|v8i16|v4i32|v8i8|v4i16|v2i32)(_shift)?$")>; 299 def KryoWrite_2cyc_XY_noRSV_240ln : 300 SchedWriteRes<[KryoUnitXY]> { 301 let Latency = 2; let NumMicroOps = 2; 302 } 303 def : InstRW<[KryoWrite_2cyc_XY_noRSV_240ln], 304 (instregex "((S|U)SHR|SHL)(d|(v8i8|v4i16|v2i32)_shift)$")>; 305 def KryoWrite_2cyc_XY_XY_242ln : 306 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 307 let Latency = 2; let NumMicroOps = 2; 308 } 309 def : InstRW<[KryoWrite_2cyc_XY_XY_242ln], 310 (instregex "((S|U)SHR|SHL)(v16i8|v8i16|v4i32|v2i64)_shift$")>; 311 def KryoWrite_2cyc_XY_XY_183ln : 312 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 313 let Latency = 2; let NumMicroOps = 2; 314 } 315 def : InstRW<[KryoWrite_2cyc_XY_XY_183ln], 316 (instregex "(S|U)(MAX|MIN)P?(v16i8|v8i16|v4i32)")>; 317 def KryoWrite_2cyc_XY_noRSV_182ln : 318 SchedWriteRes<[KryoUnitXY]> { 319 let Latency = 2; let NumMicroOps = 2; 320 } 321 def : InstRW<[KryoWrite_2cyc_XY_noRSV_182ln], 322 (instregex "(S|U)(MAX|MIN)P?(v8i8|v4i16|v2i32)")>; 323 def KryoWrite_3cyc_XY_noRSV_184ln : 324 SchedWriteRes<[KryoUnitXY]> { 325 let Latency = 3; let NumMicroOps = 2; 326 } 327 def : InstRW<[KryoWrite_3cyc_XY_noRSV_184ln], 328 (instregex "(S|U)(MAX|MIN)V(v4i16v|v8i8v|v4i32)")>; 329 def KryoWrite_4cyc_X_noRSV_185ln : 330 SchedWriteRes<[KryoUnitX]> { 331 let Latency = 4; let NumMicroOps = 2; 332 } 333 def : InstRW<[KryoWrite_4cyc_X_noRSV_185ln], 334 (instregex "(S|U)(MAX|MIN)V(v16i8v|v8i16v)")>; 335 def KryoWrite_2cyc_XY_noRSV_67ln : 336 SchedWriteRes<[KryoUnitXY]> { 337 let Latency = 2; let NumMicroOps = 2; 338 } 339 def : InstRW<[KryoWrite_2cyc_XY_noRSV_67ln], 340 (instrs ABSv1i64)>; 341 def KryoWrite_1cyc_XY_63ln : 342 SchedWriteRes<[KryoUnitXY]> { 343 let Latency = 1; let NumMicroOps = 1; 344 } 345 def : InstRW<[KryoWrite_1cyc_XY_63ln, ReadI, ReadI], 346 (instregex "ADC.*")>; 347 def KryoWrite_1cyc_XY_63_1ln : 348 SchedWriteRes<[KryoUnitXY]> { 349 let Latency = 1; let NumMicroOps = 1; 350 } 351 def : InstRW<[KryoWrite_1cyc_XY_63_1ln], 352 (instregex "ADR.*")>; 353 def KryoWrite_1cyc_XY_62ln : 354 SchedWriteRes<[KryoUnitXY]> { 355 let Latency = 1; let NumMicroOps = 1; 356 } 357 def : InstRW<[KryoWrite_1cyc_XY_62ln, ReadI], 358 (instregex "ADDS?(W|X)ri")>; 359 def KryoWrite_2cyc_XY_XY_64ln : 360 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 361 let Latency = 2; let NumMicroOps = 2; 362 } 363 def : InstRW<[KryoWrite_2cyc_XY_XY_64ln, ReadI, ReadI], 364 (instregex "ADDS?(W|X)r(r|s|x)(64)?")>; 365 def KryoWrite_1cyc_XY_noRSV_65ln : 366 SchedWriteRes<[KryoUnitXY]> { 367 let Latency = 1; let NumMicroOps = 2; 368 } 369 def : InstRW<[KryoWrite_1cyc_XY_noRSV_65ln], 370 (instrs ADDv1i64)>; 371 def KryoWrite_1cyc_XY_noRSV_144ln : 372 SchedWriteRes<[KryoUnitXY]> { 373 let Latency = 1; let NumMicroOps = 2; 374 } 375 def : InstRW<[KryoWrite_1cyc_XY_noRSV_144ln], 376 (instregex "(ADD|SUB)(v8i8|v4i16|v2i32|v1i64)")>; 377 def KryoWrite_1cyc_XY_XY_146ln : 378 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 379 let Latency = 1; let NumMicroOps = 2; 380 } 381 def : InstRW<[KryoWrite_1cyc_XY_XY_146ln], 382 (instregex "(ADD|SUB)(v16i8|v8i16|v4i32|v2i64)")>; 383 def KryoWrite_4cyc_XY_X_noRSV_171ln : 384 SchedWriteRes<[KryoUnitXY, KryoUnitX]> { 385 let Latency = 4; let NumMicroOps = 3; 386 } 387 def : InstRW<[KryoWrite_4cyc_XY_X_noRSV_171ln], 388 (instregex "(ADD|SUB)HNv.*")>; 389 def KryoWrite_1cyc_XY_noRSV_66ln : 390 SchedWriteRes<[KryoUnitXY]> { 391 let Latency = 1; let NumMicroOps = 2; 392 } 393 def : InstRW<[KryoWrite_1cyc_XY_noRSV_66ln], 394 (instrs ADDPv2i64p)>; 395 def KryoWrite_2cyc_XY_XY_153ln : 396 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 397 let Latency = 2; let NumMicroOps = 2; 398 } 399 def : InstRW<[KryoWrite_2cyc_XY_XY_153ln], 400 (instregex "ADDP(v16i8|v8i16|v4i32|v2i64)")>; 401 def KryoWrite_3cyc_XY_XY_noRSV_170ln : 402 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 403 let Latency = 3; let NumMicroOps = 3; 404 } 405 def : InstRW<[KryoWrite_3cyc_XY_XY_noRSV_170ln], 406 (instrs ADDVv4i32v)>; 407 def KryoWrite_4cyc_XY_XY_noRSV_173ln : 408 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 409 let Latency = 4; let NumMicroOps = 3; 410 } 411 def : InstRW<[KryoWrite_4cyc_XY_XY_noRSV_173ln], 412 (instrs ADDVv8i16v)>; 413 def KryoWrite_5cyc_XY_X_noRSV_174ln : 414 SchedWriteRes<[KryoUnitXY, KryoUnitX]> { 415 let Latency = 5; let NumMicroOps = 3; 416 } 417 def : InstRW<[KryoWrite_5cyc_XY_X_noRSV_174ln], 418 (instrs ADDVv16i8v)>; 419 def KryoWrite_3cyc_XY_XY_X_X_27ln : 420 SchedWriteRes<[KryoUnitXY, KryoUnitXY, KryoUnitX, KryoUnitX]> { 421 let Latency = 3; let NumMicroOps = 4; 422 } 423 def : InstRW<[KryoWrite_3cyc_XY_XY_X_X_27ln], 424 (instrs AESDrr, AESErr)>; 425 def KryoWrite_2cyc_X_X_22ln : 426 SchedWriteRes<[KryoUnitX, KryoUnitX]> { 427 let Latency = 2; let NumMicroOps = 2; 428 } 429 def : InstRW<[KryoWrite_2cyc_X_X_22ln], 430 (instrs AESIMCrr, AESMCrr)>; 431 def KryoWrite_1cyc_XY_noRSV_76ln : 432 SchedWriteRes<[KryoUnitXY]> { 433 let Latency = 1; let NumMicroOps = 2; 434 } 435 def : InstRW<[KryoWrite_1cyc_XY_noRSV_76ln], 436 (instregex "((AND|ORN|EOR|EON)S?(Wr[rsi]|v8i8|v4i16|v2i32)|(ORR|BIC)S?(Wr[rs]|v8i8|v4i16|v2i32))")>; 437 def KryoWrite_1cyc_XY_XY_79ln : 438 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 439 let Latency = 1; let NumMicroOps = 2; 440 } 441 def : InstRW<[KryoWrite_1cyc_XY_XY_79ln], 442 (instregex "((AND|ORN|EOR|EON)S?(Xr[rsi]|v16i8|v8i16|v4i32)|(ORR|BIC)S?(Xr[rs]|v16i8|v8i16|v4i32))")>; 443 def KryoWrite_1cyc_X_72ln : 444 SchedWriteRes<[KryoUnitX]> { 445 let Latency = 1; let NumMicroOps = 1; 446 } 447 def : InstRW<[KryoWrite_1cyc_X_72ln], 448 (instregex "(S|U)?BFM.*")>; 449 def KryoWrite_1cyc_XY_noRSV_77ln : 450 SchedWriteRes<[KryoUnitXY]> { 451 let Latency = 1; let NumMicroOps = 2; 452 } 453 def : InstRW<[KryoWrite_1cyc_XY_noRSV_77ln], 454 (instregex "(BIC|ORR)S?Wri")>; 455 def KryoWrite_1cyc_XY_XY_78ln : 456 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 457 let Latency = 1; let NumMicroOps = 2; 458 } 459 def : InstRW<[KryoWrite_1cyc_XY_XY_78ln], 460 (instregex "(BIC|ORR)S?Xri")>; 461 def KryoWrite_1cyc_X_noRSV_74ln : 462 SchedWriteRes<[KryoUnitX]> { 463 let Latency = 1; let NumMicroOps = 2; 464 } 465 def : InstRW<[KryoWrite_1cyc_X_noRSV_74ln], 466 (instrs BIFv8i8, BITv8i8, BSLv8i8)>; 467 def KryoWrite_1cyc_X_X_75ln : 468 SchedWriteRes<[KryoUnitX, KryoUnitX]> { 469 let Latency = 1; let NumMicroOps = 2; 470 } 471 def : InstRW<[KryoWrite_1cyc_X_X_75ln], 472 (instrs BIFv16i8, BITv16i8, BSLv16i8)>; 473 def KryoWrite_0cyc_noRSV_11ln : 474 SchedWriteRes<[]> { 475 let Latency = 0; let NumMicroOps = 1; 476 } 477 def : InstRW<[KryoWrite_0cyc_noRSV_11ln], 478 (instrs BRK, DCPS1, DCPS2, DCPS3, HLT, HVC, ISB, HINT, SMC, SVC)>; 479 def KryoWrite_0cyc_XY_16ln : 480 SchedWriteRes<[KryoUnitXY]> { 481 let Latency = 0; let NumMicroOps = 1; 482 } 483 def : InstRW<[KryoWrite_0cyc_XY_16ln, ReadI], 484 (instregex "(CCMN|CCMP)(W|X)i")>; 485 def KryoWrite_0cyc_XY_16_1ln : 486 SchedWriteRes<[KryoUnitXY]> { 487 let Latency = 0; let NumMicroOps = 1; 488 } 489 def : InstRW<[KryoWrite_0cyc_XY_16_1ln, ReadI, ReadI], 490 (instregex "(CCMN|CCMP)(W|X)r")>; 491 def KryoWrite_2cyc_XY_3ln : 492 SchedWriteRes<[KryoUnitXY]> { 493 let Latency = 2; let NumMicroOps = 1; 494 } 495 def : InstRW<[KryoWrite_2cyc_XY_3ln, ReadI], 496 (instregex "(CLS|CLZ)(W|X)r")>; 497 def KryoWrite_2cyc_XY_noRSV_7ln : 498 SchedWriteRes<[KryoUnitXY]> { 499 let Latency = 2; let NumMicroOps = 2; 500 } 501 def : InstRW<[KryoWrite_2cyc_XY_noRSV_7ln], 502 (instregex "(CLS|CLZ|CNT)(v4i32|v8i16|v16i8)")>; 503 def KryoWrite_2cyc_XY_XY_8ln : 504 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 505 let Latency = 2; let NumMicroOps = 2; 506 } 507 def : InstRW<[KryoWrite_2cyc_XY_XY_8ln], 508 (instregex "(CLS|CLZ|CNT)(v2i32|v4i16|v8i8)")>; 509 def KryoWrite_2cyc_XY_noRSV_80ln : 510 SchedWriteRes<[KryoUnitXY]> { 511 let Latency = 2; let NumMicroOps = 2; 512 } 513 def : InstRW<[KryoWrite_2cyc_XY_noRSV_80ln], 514 (instregex "CM(EQ|GE|HS|GT|HI|TST)(v8i8|v4i16|v2i32|v1i64)$")>; 515 def KryoWrite_2cyc_XY_XY_83ln : 516 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 517 let Latency = 2; let NumMicroOps = 2; 518 } 519 def : InstRW<[KryoWrite_2cyc_XY_XY_83ln], 520 (instregex "CM(EQ|GE|HS|GT|HI|TST)(v16i8|v8i16|v4i32|v2i64)$")>; 521 def KryoWrite_2cyc_XY_noRSV_81ln : 522 SchedWriteRes<[KryoUnitXY]> { 523 let Latency = 2; let NumMicroOps = 2; 524 } 525 def : InstRW<[KryoWrite_2cyc_XY_noRSV_81ln], 526 (instregex "CM(EQ|LE|GE|GT|LT)(v8i8|v4i16|v2i32|v1i64)rz$")>; 527 def KryoWrite_2cyc_XY_XY_82ln : 528 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 529 let Latency = 2; let NumMicroOps = 2; 530 } 531 def : InstRW<[KryoWrite_2cyc_XY_XY_82ln], 532 (instregex "CM(EQ|LE|GE|GT|LT)(v16i8|v8i16|v4i32|v2i64)rz$")>; 533 def KryoWrite_3cyc_XY_4ln : 534 SchedWriteRes<[KryoUnitXY]> { 535 let Latency = 3; let NumMicroOps = 1; 536 } 537 def : InstRW<[KryoWrite_3cyc_XY_4ln, ReadI, ReadISReg], 538 (instregex "CRC32.*")>; 539 def KryoWrite_1cyc_XY_20ln : 540 SchedWriteRes<[KryoUnitXY]> { 541 let Latency = 1; let NumMicroOps = 1; 542 } 543 def : InstRW<[KryoWrite_1cyc_XY_20ln, ReadI, ReadI], 544 (instregex "CSEL(W|X)r")>; 545 def KryoWrite_1cyc_X_17ln : 546 SchedWriteRes<[KryoUnitX]> { 547 let Latency = 1; let NumMicroOps = 1; 548 } 549 def : InstRW<[KryoWrite_1cyc_X_17ln, ReadI, ReadI], 550 (instregex "(CSINC|CSNEG)(W|X)r")>; 551 def KryoWrite_1cyc_XY_18ln : 552 SchedWriteRes<[KryoUnitXY]> { 553 let Latency = 1; let NumMicroOps = 1; 554 } 555 def : InstRW<[KryoWrite_1cyc_XY_18ln, ReadI, ReadI], 556 (instregex "(CSINV)(W|X)r")>; 557 def KryoWrite_3cyc_LS_X_13ln : 558 SchedWriteRes<[KryoUnitLS, KryoUnitX]> { 559 let Latency = 3; let NumMicroOps = 2; 560 } 561 def : InstRW<[KryoWrite_3cyc_LS_X_13ln], 562 (instrs DRPS)>; 563 def KryoWrite_0cyc_LS_10ln : 564 SchedWriteRes<[KryoUnitLS]> { 565 let Latency = 0; let NumMicroOps = 1; 566 } 567 def : InstRW<[KryoWrite_0cyc_LS_10ln], 568 (instrs DSB, DMB, CLREX)>; 569 def KryoWrite_1cyc_X_noRSV_196ln : 570 SchedWriteRes<[KryoUnitX]> { 571 let Latency = 1; let NumMicroOps = 2; 572 } 573 def : InstRW<[KryoWrite_1cyc_X_noRSV_196ln], 574 (instregex "DUP(v8i8|v4i16|v2i32)(gpr|lane)")>; 575 def KryoWrite_1cyc_X_X_197ln : 576 SchedWriteRes<[KryoUnitX, KryoUnitX]> { 577 let Latency = 1; let NumMicroOps = 2; 578 } 579 def : InstRW<[KryoWrite_1cyc_X_X_197ln], 580 (instregex "DUP(v16i8|v8i16|v4i32|v2i64)(gpr|lane)")>; 581 def KryoWrite_3cyc_LS_LS_X_15ln : 582 SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitX]> { 583 let Latency = 3; let NumMicroOps = 3; 584 } 585 def : InstRW<[KryoWrite_3cyc_LS_LS_X_15ln], 586 (instrs ERET)>; 587 def KryoWrite_1cyc_X_noRSV_207ln : 588 SchedWriteRes<[KryoUnitX]> { 589 let Latency = 1; let NumMicroOps = 2; 590 } 591 def : InstRW<[KryoWrite_1cyc_X_noRSV_207ln], 592 (instrs EXTv8i8)>; 593 def KryoWrite_1cyc_X_X_212ln : 594 SchedWriteRes<[KryoUnitX, KryoUnitX]> { 595 let Latency = 1; let NumMicroOps = 2; 596 } 597 def : InstRW<[KryoWrite_1cyc_X_X_212ln], 598 (instrs EXTv16i8)>; 599 def KryoWrite_2cyc_XY_X_136ln : 600 SchedWriteRes<[KryoUnitXY, KryoUnitX]> { 601 let Latency = 2; let NumMicroOps = 2; 602 } 603 def : InstRW<[KryoWrite_2cyc_XY_X_136ln], 604 (instrs EXTRWrri, EXTRXrri)>; 605 def KryoWrite_2cyc_XY_noRSV_35ln : 606 SchedWriteRes<[KryoUnitXY]> { 607 let Latency = 2; let NumMicroOps = 2; 608 } 609 def : InstRW<[KryoWrite_2cyc_XY_noRSV_35ln], 610 (instregex "F(MAX|MIN)(NM)?P?(D|S)rr")>; 611 def KryoWrite_2cyc_XY_XY_106ln : 612 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 613 let Latency = 2; let NumMicroOps = 2; 614 } 615 def : InstRW<[KryoWrite_2cyc_XY_XY_106ln], 616 (instregex "(F(MAX|MIN)(NM)?P?|FAC(GE|GT)|FCM(EQ|GE|GT))(v2i64p|v2f64|v4f32)")>; 617 def KryoWrite_2cyc_XY_noRSV_104ln : 618 SchedWriteRes<[KryoUnitXY]> { 619 let Latency = 2; let NumMicroOps = 2; 620 } 621 def : InstRW<[KryoWrite_2cyc_XY_noRSV_104ln], 622 (instregex "(F(MAX|MIN)(NM)?P?|FAC(GE|GT)|FCM(EQ|GE|GT))(v2f32|v2i32p)")>; 623 def KryoWrite_3cyc_XY_noRSV_107ln : 624 SchedWriteRes<[KryoUnitXY]> { 625 let Latency = 3; let NumMicroOps = 2; 626 } 627 def : InstRW<[KryoWrite_3cyc_XY_noRSV_107ln], 628 (instregex "F(MAX|MIN)(NM)?Vv4i32v")>; 629 def KryoWrite_3cyc_XY_noRSV_101ln : 630 SchedWriteRes<[KryoUnitXY]> { 631 let Latency = 3; let NumMicroOps = 2; 632 } 633 def : InstRW<[KryoWrite_3cyc_XY_noRSV_101ln], 634 (instregex "FABD(32|64|v2f32)")>; 635 def KryoWrite_3cyc_XY_XY_103ln : 636 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 637 let Latency = 3; let NumMicroOps = 2; 638 } 639 def : InstRW<[KryoWrite_3cyc_XY_XY_103ln], 640 (instregex "(FABD|FADD|FSUB|FADDP)(v4f32|v2f64)")>; 641 def KryoWrite_1cyc_XY_noRSV_48ln : 642 SchedWriteRes<[KryoUnitXY]> { 643 let Latency = 1; let NumMicroOps = 2; 644 } 645 def : InstRW<[KryoWrite_1cyc_XY_noRSV_48ln], 646 (instregex "F(ABS|NEG)(D|S)r")>; 647 def KryoWrite_1cyc_XY_noRSV_124ln : 648 SchedWriteRes<[KryoUnitXY]> { 649 let Latency = 1; let NumMicroOps = 2; 650 } 651 def : InstRW<[KryoWrite_1cyc_XY_noRSV_124ln], 652 (instregex "F(ABS|NEG)v2f32")>; 653 def KryoWrite_1cyc_XY_XY_125ln : 654 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 655 let Latency = 1; let NumMicroOps = 2; 656 } 657 def : InstRW<[KryoWrite_1cyc_XY_XY_125ln], 658 (instregex "F(ABS|NEG)(v2f64|v4f32)")>; 659 def KryoWrite_2cyc_XY_noRSV_33ln : 660 SchedWriteRes<[KryoUnitXY]> { 661 let Latency = 2; let NumMicroOps = 2; 662 } 663 def : InstRW<[KryoWrite_2cyc_XY_noRSV_33ln], 664 (instregex "(FAC(GE|GT)|FCM(EQ|GE|GT))(32|64)")>; 665 def KryoWrite_3cyc_XY_noRSV_30ln : 666 SchedWriteRes<[KryoUnitXY]> { 667 let Latency = 3; let NumMicroOps = 2; 668 } 669 def : InstRW<[KryoWrite_3cyc_XY_noRSV_30ln], 670 (instregex "(FADD|FSUB)(D|S)rr")>; 671 def KryoWrite_3cyc_XY_noRSV_100ln : 672 SchedWriteRes<[KryoUnitXY]> { 673 let Latency = 3; let NumMicroOps = 2; 674 } 675 def : InstRW<[KryoWrite_3cyc_XY_noRSV_100ln], 676 (instregex "(FADD|FSUB|FADDP)v2f32")>; 677 def KryoWrite_3cyc_XY_noRSV_29ln : 678 SchedWriteRes<[KryoUnitXY]> { 679 let Latency = 3; let NumMicroOps = 2; 680 } 681 def : InstRW<[KryoWrite_3cyc_XY_noRSV_29ln], 682 (instregex "FADDP(v2i32p|v2i64p)")>; 683 def KryoWrite_0cyc_XY_31ln : 684 SchedWriteRes<[KryoUnitXY]> { 685 let Latency = 0; let NumMicroOps = 1; 686 } 687 def : InstRW<[KryoWrite_0cyc_XY_31ln], 688 (instregex "FCCMPE?(D|S)rr")>; 689 def KryoWrite_2cyc_XY_noRSV_34ln : 690 SchedWriteRes<[KryoUnitXY]> { 691 let Latency = 2; let NumMicroOps = 2; 692 } 693 def : InstRW<[KryoWrite_2cyc_XY_noRSV_34ln], 694 (instregex "FCM(EQ|LE|GE|GT|LT)(v1i32|v1i64)rz")>; 695 def KryoWrite_2cyc_XY_XY_36ln : 696 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 697 let Latency = 2; let NumMicroOps = 2; 698 } 699 def : InstRW<[KryoWrite_2cyc_XY_XY_36ln], 700 (instregex "FCM(EQ|LE|GE|GT|LT)(v2i64|v4i32)rz")>; 701 def KryoWrite_2cyc_XY_noRSV_105ln : 702 SchedWriteRes<[KryoUnitXY]> { 703 let Latency = 2; let NumMicroOps = 2; 704 } 705 def : InstRW<[KryoWrite_2cyc_XY_noRSV_105ln], 706 (instregex "FCM(EQ|LE|GE|GT|LT)v2i32rz")>; 707 def KryoWrite_0cyc_XY_32ln : 708 SchedWriteRes<[KryoUnitXY]> { 709 let Latency = 0; let NumMicroOps = 1; 710 } 711 def : InstRW<[KryoWrite_0cyc_XY_32ln], 712 (instregex "FCMPE?(D|S)r(r|i)")>; 713 def KryoWrite_1cyc_XY_noRSV_49ln : 714 SchedWriteRes<[KryoUnitXY]> { 715 let Latency = 1; let NumMicroOps = 2; 716 } 717 def : InstRW<[KryoWrite_1cyc_XY_noRSV_49ln], 718 (instrs FCSELDrrr, FCSELSrrr)>; 719 def KryoWrite_4cyc_X_noRSV_41ln : 720 SchedWriteRes<[KryoUnitX]> { 721 let Latency = 4; let NumMicroOps = 2; 722 } 723 def : InstRW<[KryoWrite_4cyc_X_noRSV_41ln], 724 (instrs FCVTDHr, FCVTDSr, FCVTHDr, FCVTHSr, FCVTSDr, FCVTSHr)>; 725 def KryoWrite_4cyc_X_38ln : 726 SchedWriteRes<[KryoUnitX]> { 727 let Latency = 4; let NumMicroOps = 1; 728 } 729 def : InstRW<[KryoWrite_4cyc_X_38ln], 730 (instregex "FCVT(((A|N|M|P)(S|U)(S|U)|Z(S|U)_Int(S|U))(W|X)(D|S)ri?|Z(S|U)(d|s))$")>; 731 def KryoWrite_4cyc_X_noRSV_113ln : 732 SchedWriteRes<[KryoUnitX]> { 733 let Latency = 4; let NumMicroOps = 2; 734 } 735 def : InstRW<[KryoWrite_4cyc_X_noRSV_113ln], 736 (instregex "FCVT((A|N|M|P)(S|U)|Z(S|U)_Int)(v1i32|v1i64|v2f32)$")>; 737 def KryoWrite_4cyc_X_X_117ln : 738 SchedWriteRes<[KryoUnitX, KryoUnitX]> { 739 let Latency = 4; let NumMicroOps = 2; 740 } 741 def : InstRW<[KryoWrite_4cyc_X_X_117ln], 742 (instregex "FCVT((A|N|M|P)(S|U)|Z(S|U)_Int)(v4f32|v2f64)$")>; 743 def KryoWrite_5cyc_X_X_XY_noRSV_119ln : 744 SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitXY]> { 745 let Latency = 5; let NumMicroOps = 4; 746 } 747 def : InstRW<[KryoWrite_5cyc_X_X_XY_noRSV_119ln], 748 (instregex "FCVTX?N(v2f32|v4f32|v2i32|v4i16|v4i32|v8i16)$")>; 749 def KryoWrite_4cyc_X_X_116ln : 750 SchedWriteRes<[KryoUnitX, KryoUnitX]> { 751 let Latency = 4; let NumMicroOps = 2; 752 } 753 def : InstRW<[KryoWrite_4cyc_X_X_116ln], 754 (instregex "FCVTL(v2i32|v4i16|v4i32|v8i16)$")>; 755 def KryoWrite_4cyc_X_noRSV_112ln : 756 SchedWriteRes<[KryoUnitX]> { 757 let Latency = 4; let NumMicroOps = 2; 758 } 759 def : InstRW<[KryoWrite_4cyc_X_noRSV_112ln], 760 (instrs FCVTXNv1i64)>; 761 def KryoWrite_4cyc_X_37ln : 762 SchedWriteRes<[KryoUnitX]> { 763 let Latency = 4; let NumMicroOps = 1; 764 } 765 def : InstRW<[KryoWrite_4cyc_X_37ln], 766 (instregex "FCVTZ(S|U)(S|U)(W|X)(D|S)ri?$")>; 767 def KryoWrite_4cyc_X_noRSV_111ln : 768 SchedWriteRes<[KryoUnitX]> { 769 let Latency = 4; let NumMicroOps = 2; 770 } 771 def : InstRW<[KryoWrite_4cyc_X_noRSV_111ln], 772 (instregex "FCVTZ(S|U)(v2f32|v1i32|v1i64|v2i32(_shift)?)$")>; 773 def KryoWrite_4cyc_X_X_115ln : 774 SchedWriteRes<[KryoUnitX, KryoUnitX]> { 775 let Latency = 4; let NumMicroOps = 2; 776 } 777 def : InstRW<[KryoWrite_4cyc_X_X_115ln], 778 (instregex "FCVTZ(S|U)(v2f64|v4f32|(v2i64|v4i32)(_shift)?)$")>; 779 def KryoWrite_1cyc_XA_Y_noRSV_43ln : 780 SchedWriteRes<[KryoUnitXA, KryoUnitY]> { 781 let Latency = 1; let NumMicroOps = 3; 782 } 783 def : InstRW<[KryoWrite_1cyc_XA_Y_noRSV_43ln], 784 (instrs FDIVDrr, FDIVSrr)>; 785 def KryoWrite_1cyc_XA_Y_noRSV_121ln : 786 SchedWriteRes<[KryoUnitXA, KryoUnitY]> { 787 let Latency = 1; let NumMicroOps = 3; 788 } 789 def : InstRW<[KryoWrite_1cyc_XA_Y_noRSV_121ln], 790 (instrs FDIVv2f32)>; 791 def KryoWrite_1cyc_XA_Y_XA_Y_123ln : 792 SchedWriteRes<[KryoUnitXA, KryoUnitY, KryoUnitXA, KryoUnitY]> { 793 let Latency = 1; let NumMicroOps = 4; 794 } 795 def : InstRW<[KryoWrite_1cyc_XA_Y_XA_Y_123ln], 796 (instrs FDIVv2f64, FDIVv4f32)>; 797 def KryoWrite_5cyc_X_noRSV_55ln : 798 SchedWriteRes<[KryoUnitX]> { 799 let Latency = 5; let NumMicroOps = 2; 800 } 801 def : InstRW<[KryoWrite_5cyc_X_noRSV_55ln], 802 (instregex "FN?M(ADD|SUB)Srrr")>; 803 def KryoWrite_6cyc_X_noRSV_57ln : 804 SchedWriteRes<[KryoUnitX]> { 805 let Latency = 6; let NumMicroOps = 2; 806 } 807 def : InstRW<[KryoWrite_6cyc_X_noRSV_57ln], 808 (instregex "FN?M(ADD|SUB)Drrr")>; 809 def KryoWrite_5cyc_X_noRSV_51ln : 810 SchedWriteRes<[KryoUnitX]> { 811 let Latency = 5; let NumMicroOps = 2; 812 } 813 def : InstRW<[KryoWrite_5cyc_X_noRSV_51ln], 814 (instrs FMLAv2f32, FMLSv2f32, FMLAv1i32_indexed, FMLSv1i32_indexed)>; 815 def KryoWrite_5cyc_X_X_56ln : 816 SchedWriteRes<[KryoUnitX, KryoUnitX]> { 817 let Latency = 5; let NumMicroOps = 2; 818 } 819 def : InstRW<[KryoWrite_5cyc_X_X_56ln], 820 (instrs FMLAv4f32, FMLSv4f32)>; 821 def KryoWrite_6cyc_X_X_61ln : 822 SchedWriteRes<[KryoUnitX, KryoUnitX]> { 823 let Latency = 6; let NumMicroOps = 2; 824 } 825 def : InstRW<[KryoWrite_6cyc_X_X_61ln], 826 (instrs FMLAv2f64, FMLSv2f64)>; 827 def KryoWrite_5cyc_X_noRSV_128ln : 828 SchedWriteRes<[KryoUnitX]> { 829 let Latency = 5; let NumMicroOps = 2; 830 } 831 def : InstRW<[KryoWrite_5cyc_X_noRSV_128ln], 832 (instrs FMLAv2i32_indexed, FMLSv2i32_indexed)>; 833 def KryoWrite_5cyc_X_X_131ln : 834 SchedWriteRes<[KryoUnitX, KryoUnitX]> { 835 let Latency = 5; let NumMicroOps = 2; 836 } 837 def : InstRW<[KryoWrite_5cyc_X_X_131ln], 838 (instrs FMLAv4i32_indexed, FMLSv4i32_indexed)>; 839 def KryoWrite_6cyc_X_X_134ln : 840 SchedWriteRes<[KryoUnitX, KryoUnitX]> { 841 let Latency = 6; let NumMicroOps = 2; 842 } 843 def : InstRW<[KryoWrite_6cyc_X_X_134ln], 844 (instrs FMLAv2i64_indexed, FMLSv2i64_indexed)>; 845 def KryoWrite_6cyc_X_noRSV_60ln : 846 SchedWriteRes<[KryoUnitX]> { 847 let Latency = 6; let NumMicroOps = 2; 848 } 849 def : InstRW<[KryoWrite_6cyc_X_noRSV_60ln], 850 (instrs FMLAv1i64_indexed, FMLSv1i64_indexed, FMULv1i64_indexed, FMULXv1i64_indexed)>; 851 def KryoWrite_1cyc_XY_45ln : 852 SchedWriteRes<[KryoUnitXY]> { 853 let Latency = 1; let NumMicroOps = 1; 854 } 855 def : InstRW<[KryoWrite_1cyc_XY_45ln], 856 (instregex "FMOV(XDHigh|DXHigh|DX)r")>; 857 def KryoWrite_1cyc_XY_noRSV_47ln : 858 SchedWriteRes<[KryoUnitXY]> { 859 let Latency = 1; let NumMicroOps = 2; 860 } 861 def : InstRW<[KryoWrite_1cyc_XY_noRSV_47ln], 862 (instregex "FMOV(Di|Dr|Si|Sr|SWr|WSr|XDr|v.*_ns)")>; 863 def KryoWrite_5cyc_X_noRSV_53ln : 864 SchedWriteRes<[KryoUnitX]> { 865 let Latency = 5; let NumMicroOps = 2; 866 } 867 def : InstRW<[KryoWrite_5cyc_X_noRSV_53ln], 868 (instrs FMULv1i32_indexed, FMULXv1i32_indexed)>; 869 def KryoWrite_5cyc_X_noRSV_127ln : 870 SchedWriteRes<[KryoUnitX]> { 871 let Latency = 5; let NumMicroOps = 2; 872 } 873 def : InstRW<[KryoWrite_5cyc_X_noRSV_127ln], 874 (instrs FMULv2f32, FMULXv2f32, FMULv2i32_indexed, FMULXv2i32_indexed)>; 875 def KryoWrite_5cyc_X_X_130ln : 876 SchedWriteRes<[KryoUnitX, KryoUnitX]> { 877 let Latency = 5; let NumMicroOps = 2; 878 } 879 def : InstRW<[KryoWrite_5cyc_X_X_130ln], 880 (instrs FMULv4f32, FMULXv4f32, FMULv4i32_indexed, FMULXv4i32_indexed)>; 881 def KryoWrite_6cyc_X_X_133ln : 882 SchedWriteRes<[KryoUnitX, KryoUnitX]> { 883 let Latency = 6; let NumMicroOps = 2; 884 } 885 def : InstRW<[KryoWrite_6cyc_X_X_133ln], 886 (instrs FMULv2f64, FMULXv2f64, FMULv2i64_indexed, FMULXv2i64_indexed)>; 887 def KryoWrite_5cyc_X_noRSV_54ln : 888 SchedWriteRes<[KryoUnitX]> { 889 let Latency = 5; let NumMicroOps = 2; 890 } 891 def : InstRW<[KryoWrite_5cyc_X_noRSV_54ln], 892 (instrs FMULSrr, FNMULSrr, FMULX32)>; 893 def KryoWrite_6cyc_X_noRSV_59ln : 894 SchedWriteRes<[KryoUnitX]> { 895 let Latency = 6; let NumMicroOps = 2; 896 } 897 def : InstRW<[KryoWrite_6cyc_X_noRSV_59ln], 898 (instrs FMULDrr, FNMULDrr, FMULX64)>; 899 def KryoWrite_3cyc_XY_noRSV_28ln : 900 SchedWriteRes<[KryoUnitXY]> { 901 let Latency = 3; let NumMicroOps = 2; 902 } 903 def : InstRW<[KryoWrite_3cyc_XY_noRSV_28ln], 904 (instrs FRECPEv1i32, FRECPEv1i64, FRSQRTEv1i32, FRSQRTEv1i64 )>; 905 def KryoWrite_3cyc_XY_noRSV_99ln : 906 SchedWriteRes<[KryoUnitXY]> { 907 let Latency = 3; let NumMicroOps = 2; 908 } 909 def : InstRW<[KryoWrite_3cyc_XY_noRSV_99ln], 910 (instrs FRECPEv2f32, FRSQRTEv2f32)>; 911 def KryoWrite_3cyc_XY_XY_102ln : 912 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 913 let Latency = 3; let NumMicroOps = 2; 914 } 915 def : InstRW<[KryoWrite_3cyc_XY_XY_102ln], 916 (instrs FRECPEv2f64, FRECPEv4f32, FRSQRTEv2f64, FRSQRTEv4f32)>; 917 def KryoWrite_5cyc_X_noRSV_52ln : 918 SchedWriteRes<[KryoUnitX]> { 919 let Latency = 5; let NumMicroOps = 2; 920 } 921 def : InstRW<[KryoWrite_5cyc_X_noRSV_52ln], 922 (instrs FRECPS32, FRSQRTS32)>; 923 def KryoWrite_6cyc_X_noRSV_58ln : 924 SchedWriteRes<[KryoUnitX]> { 925 let Latency = 6; let NumMicroOps = 2; 926 } 927 def : InstRW<[KryoWrite_6cyc_X_noRSV_58ln], 928 (instrs FRECPS64, FRSQRTS64)>; 929 def KryoWrite_5cyc_X_noRSV_126ln : 930 SchedWriteRes<[KryoUnitX]> { 931 let Latency = 5; let NumMicroOps = 2; 932 } 933 def : InstRW<[KryoWrite_5cyc_X_noRSV_126ln], 934 (instrs FRECPSv2f32, FRSQRTSv2f32)>; 935 def KryoWrite_5cyc_X_X_129ln : 936 SchedWriteRes<[KryoUnitX, KryoUnitX]> { 937 let Latency = 5; let NumMicroOps = 2; 938 } 939 def : InstRW<[KryoWrite_5cyc_X_X_129ln], 940 (instrs FRECPSv4f32, FRSQRTSv4f32)>; 941 def KryoWrite_6cyc_X_X_132ln : 942 SchedWriteRes<[KryoUnitX, KryoUnitX]> { 943 let Latency = 6; let NumMicroOps = 2; 944 } 945 def : InstRW<[KryoWrite_6cyc_X_X_132ln], 946 (instrs FRECPSv2f64, FRSQRTSv2f64)>; 947 def KryoWrite_3cyc_XY_noRSV_50ln : 948 SchedWriteRes<[KryoUnitXY]> { 949 let Latency = 3; let NumMicroOps = 2; 950 } 951 def : InstRW<[KryoWrite_3cyc_XY_noRSV_50ln], 952 (instrs FRECPXv1i32, FRECPXv1i64)>; 953 def KryoWrite_2cyc_XY_noRSV_39ln : 954 SchedWriteRes<[KryoUnitXY]> { 955 let Latency = 2; let NumMicroOps = 2; 956 } 957 def : InstRW<[KryoWrite_2cyc_XY_noRSV_39ln], 958 (instregex "FRINT(A|I|M|N|P|X|Z)(S|D)r")>; 959 def KryoWrite_2cyc_XY_noRSV_108ln : 960 SchedWriteRes<[KryoUnitXY]> { 961 let Latency = 2; let NumMicroOps = 2; 962 } 963 def : InstRW<[KryoWrite_2cyc_XY_noRSV_108ln], 964 (instregex "FRINT(A|I|M|N|P|X|Z)v2f32")>; 965 def KryoWrite_2cyc_XY_XY_109ln : 966 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 967 let Latency = 2; let NumMicroOps = 2; 968 } 969 def : InstRW<[KryoWrite_2cyc_XY_XY_109ln], 970 (instregex "FRINT(A|I|M|N|P|X|Z)(v2f64|v4f32)")>; 971 def KryoWrite_1cyc_XA_Y_noRSV_42ln : 972 SchedWriteRes<[KryoUnitXA, KryoUnitY]> { 973 let Latency = 1; let NumMicroOps = 3; 974 } 975 def : InstRW<[KryoWrite_1cyc_XA_Y_noRSV_42ln], 976 (instregex "FSQRT(S|D)r")>; 977 def KryoWrite_1cyc_XA_Y_noRSV_120ln : 978 SchedWriteRes<[KryoUnitXA, KryoUnitY]> { 979 let Latency = 1; let NumMicroOps = 3; 980 } 981 def : InstRW<[KryoWrite_1cyc_XA_Y_noRSV_120ln], 982 (instregex "FSQRTv2f32")>; 983 def KryoWrite_1cyc_XA_Y_XA_Y_122ln : 984 SchedWriteRes<[KryoUnitXA, KryoUnitY, KryoUnitXA, KryoUnitY]> { 985 let Latency = 1; let NumMicroOps = 4; 986 } 987 def : InstRW<[KryoWrite_1cyc_XA_Y_XA_Y_122ln], 988 (instregex "FSQRT(v2f64|v4f32)")>; 989 def KryoWrite_1cyc_X_201ln : 990 SchedWriteRes<[KryoUnitX]> { 991 let Latency = 1; let NumMicroOps = 1; 992 } 993 def : InstRW<[KryoWrite_1cyc_X_201ln], 994 (instregex "INSv.*")>; 995 def KryoWrite_3cyc_LS_255ln : 996 SchedWriteRes<[KryoUnitLS]> { 997 let Latency = 3; let NumMicroOps = 1; 998 } 999 def : InstRW<[KryoWrite_3cyc_LS_255ln], 1000 (instregex "LD1(One(v16b|v8h|v4s|v2d)|i64)$")>; 1001 def KryoWrite_4cyc_LS_X_270ln : 1002 SchedWriteRes<[KryoUnitLS, KryoUnitX]> { 1003 let Latency = 4; let NumMicroOps = 2; 1004 } 1005 def : InstRW<[KryoWrite_4cyc_LS_X_270ln], 1006 (instregex "LD1(i8|i16|i32)$")>; 1007 def KryoWrite_3cyc_LS_noRSV_285ln : 1008 SchedWriteRes<[KryoUnitLS]> { 1009 let Latency = 3; let NumMicroOps = 2; 1010 } 1011 def : InstRW<[KryoWrite_3cyc_LS_noRSV_285ln], 1012 (instregex "LD1One(v8b|v4h|v2s|v1d)$")>; 1013 def KryoWrite_3cyc_LS_XY_289ln : 1014 SchedWriteRes<[KryoUnitLS, KryoUnitXY]> { 1015 let Latency = 3; let NumMicroOps = 2; 1016 } 1017 def : InstRW<[KryoWrite_3cyc_LS_XY_289ln, WriteAdr], 1018 (instregex "LD1(One(v16b|v8h|v4s|v2d)|i64)_POST$")>; 1019 def KryoWrite_4cyc_LS_XY_X_298ln : 1020 SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitX]> { 1021 let Latency = 4; let NumMicroOps = 3; 1022 } 1023 def : InstRW<[KryoWrite_4cyc_LS_XY_X_298ln, WriteAdr], 1024 (instregex "LD1(i8|i16|i32)_POST$")>; 1025 def KryoWrite_3cyc_LS_LS_LS_308ln : 1026 SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitLS]> { 1027 let Latency = 3; let NumMicroOps = 3; 1028 } 1029 def : InstRW<[KryoWrite_3cyc_LS_LS_LS_308ln], 1030 (instregex "LD1Three(v16b|v8h|v4s|v2d)$")>; 1031 def KryoWrite_3cyc_LS_XY_noRSV_317ln : 1032 SchedWriteRes<[KryoUnitLS, KryoUnitXY]> { 1033 let Latency = 3; let NumMicroOps = 3; 1034 } 1035 def : InstRW<[KryoWrite_3cyc_LS_XY_noRSV_317ln, WriteAdr], 1036 (instregex "LD1One(v8b|v4h|v2s|v1d)_POST$")>; 1037 def KryoWrite_3cyc_LS_LS_LS_LS_328ln : 1038 SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitLS, KryoUnitLS]> { 1039 let Latency = 3; let NumMicroOps = 4; 1040 } 1041 def : InstRW<[KryoWrite_3cyc_LS_LS_LS_LS_328ln, WriteAdr], 1042 (instregex "LD1Four(v16b|v8h|v4s|v2d)_POST$")>; 1043 def KryoWrite_3cyc_LS_XY_LS_LS_332ln : 1044 SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitLS]> { 1045 let Latency = 3; let NumMicroOps = 4; 1046 } 1047 def : InstRW<[KryoWrite_3cyc_LS_XY_LS_LS_332ln, WriteAdr], 1048 (instregex "LD1Three(v16b|v8h|v4s|v2d)_POST$")>; 1049 def KryoWrite_3cyc_LS_LS_noRSV_noRSV_noRSV_348ln : 1050 SchedWriteRes<[KryoUnitLS, KryoUnitLS]> { 1051 let Latency = 3; let NumMicroOps = 5; 1052 } 1053 def : InstRW<[KryoWrite_3cyc_LS_LS_noRSV_noRSV_noRSV_348ln], 1054 (instregex "LD1Three(v8b|v4h|v2s|v1d)$")>; 1055 def KryoWrite_3cyc_LS_XY_LS_LS_LS_351ln : 1056 SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitLS, KryoUnitLS]> { 1057 let Latency = 3; let NumMicroOps = 5; 1058 } 1059 def : InstRW<[KryoWrite_3cyc_LS_XY_LS_LS_LS_351ln], 1060 (instregex "LD1Four(v16b|v8h|v4s|v2d)$")>; 1061 def KryoWrite_3cyc_LS_LS_noRSV_noRSV_noRSV_noRSV_358ln : 1062 SchedWriteRes<[KryoUnitLS, KryoUnitLS]> { 1063 let Latency = 3; let NumMicroOps = 6; 1064 } 1065 def : InstRW<[KryoWrite_3cyc_LS_LS_noRSV_noRSV_noRSV_noRSV_358ln], 1066 (instregex "LD1Four(v8b|v4h|v2s|v1d)$")>; 1067 def KryoWrite_3cyc_LS_XY_LS_noRSV_noRSV_noRSV_360ln : 1068 SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS]> { 1069 let Latency = 3; let NumMicroOps = 6; 1070 } 1071 def : InstRW<[KryoWrite_3cyc_LS_XY_LS_noRSV_noRSV_noRSV_360ln, WriteAdr], 1072 (instregex "LD1Three(v8b|v4h|v2s|v1d)_POST$")>; 1073 def KryoWrite_3cyc_LS_XY_LS_noRSV_noRSV_noRSV_noRSV_368ln : 1074 SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS]> { 1075 let Latency = 3; let NumMicroOps = 7; 1076 } 1077 def : InstRW<[KryoWrite_3cyc_LS_XY_LS_noRSV_noRSV_noRSV_noRSV_368ln, WriteAdr], 1078 (instregex "LD1Four(v8b|v4h|v2s|v1d)_POST$")>; 1079 def KryoWrite_3cyc_LS_LS_281ln : 1080 SchedWriteRes<[KryoUnitLS, KryoUnitLS]> { 1081 let Latency = 3; let NumMicroOps = 2; 1082 } 1083 def : InstRW<[KryoWrite_3cyc_LS_LS_281ln], 1084 (instregex "LD(1|2)Two(v16b|v8h|v4s|v2d)$")>; 1085 def KryoWrite_3cyc_LS_noRSV_noRSV_311ln : 1086 SchedWriteRes<[KryoUnitLS]> { 1087 let Latency = 3; let NumMicroOps = 3; 1088 } 1089 def : InstRW<[KryoWrite_3cyc_LS_noRSV_noRSV_311ln], 1090 (instregex "LD(1|2)Two(v8b|v4h|v2s|v1d)$")>; 1091 def KryoWrite_3cyc_LS_XY_LS_313ln : 1092 SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS]> { 1093 let Latency = 3; let NumMicroOps = 3; 1094 } 1095 def : InstRW<[KryoWrite_3cyc_LS_XY_LS_313ln, WriteAdr], 1096 (instregex "LD(1|2)Two(v16b|v8h|v4s|v2d)_POST$")>; 1097 def KryoWrite_3cyc_LS_XY_noRSV_noRSV_334ln : 1098 SchedWriteRes<[KryoUnitLS, KryoUnitXY]> { 1099 let Latency = 3; let NumMicroOps = 4; 1100 } 1101 def : InstRW<[KryoWrite_3cyc_LS_XY_noRSV_noRSV_334ln, WriteAdr], 1102 (instregex "LD(1|2)Two(v8b|v4h|v2s|v1d)_POST$")>; 1103 def KryoWrite_3cyc_LS_256ln : 1104 SchedWriteRes<[KryoUnitLS]> { 1105 let Latency = 3; let NumMicroOps = 1; 1106 } 1107 def : InstRW<[KryoWrite_3cyc_LS_256ln], 1108 (instregex "LD1R(v16b|v8h|v4s|v2d)$")>; 1109 def KryoWrite_3cyc_LS_noRSV_286ln : 1110 SchedWriteRes<[KryoUnitLS]> { 1111 let Latency = 3; let NumMicroOps = 2; 1112 } 1113 def : InstRW<[KryoWrite_3cyc_LS_noRSV_286ln], 1114 (instregex "LD1R(v8b|v4h|v2s|v1d)$")>; 1115 def KryoWrite_3cyc_LS_XY_290ln : 1116 SchedWriteRes<[KryoUnitLS, KryoUnitXY]> { 1117 let Latency = 3; let NumMicroOps = 2; 1118 } 1119 def : InstRW<[KryoWrite_3cyc_LS_XY_290ln, WriteAdr], 1120 (instregex "LD1R(v16b|v8h|v4s|v2d)_POST$")>; 1121 def KryoWrite_3cyc_LS_XY_noRSV_318ln : 1122 SchedWriteRes<[KryoUnitLS, KryoUnitXY]> { 1123 let Latency = 3; let NumMicroOps = 3; 1124 } 1125 def : InstRW<[KryoWrite_3cyc_LS_XY_noRSV_318ln, WriteAdr], 1126 (instregex "LD1R(v8b|v4h|v2s|v1d)_POST$")>; 1127 def KryoWrite_3cyc_LS_257ln : 1128 SchedWriteRes<[KryoUnitLS]> { 1129 let Latency = 3; let NumMicroOps = 1; 1130 } 1131 def : InstRW<[KryoWrite_3cyc_LS_257ln], 1132 (instregex "LD2i64$")>; 1133 def KryoWrite_3cyc_LS_XY_291ln : 1134 SchedWriteRes<[KryoUnitLS, KryoUnitXY]> { 1135 let Latency = 3; let NumMicroOps = 2; 1136 } 1137 def : InstRW<[KryoWrite_3cyc_LS_XY_291ln, WriteAdr], 1138 (instregex "LD2i64_POST$")>; 1139 def KryoWrite_4cyc_LS_X_X_296ln : 1140 SchedWriteRes<[KryoUnitLS, KryoUnitX, KryoUnitX]> { 1141 let Latency = 4; let NumMicroOps = 3; 1142 } 1143 def : InstRW<[KryoWrite_4cyc_LS_X_X_296ln], 1144 (instregex "LD2(i8|i16|i32)$")>; 1145 def KryoWrite_4cyc_LS_XY_X_X_321ln : 1146 SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitX, KryoUnitX]> { 1147 let Latency = 4; let NumMicroOps = 4; 1148 } 1149 def : InstRW<[KryoWrite_4cyc_LS_XY_X_X_321ln, WriteAdr], 1150 (instregex "LD2(i8|i16|i32)_POST$")>; 1151 def KryoWrite_3cyc_LS_LS_282ln : 1152 SchedWriteRes<[KryoUnitLS, KryoUnitLS]> { 1153 let Latency = 3; let NumMicroOps = 2; 1154 } 1155 def : InstRW<[KryoWrite_3cyc_LS_LS_282ln], 1156 (instregex "LD2R(v16b|v8h|v4s|v2d)$")>; 1157 def KryoWrite_3cyc_LS_noRSV_noRSV_312ln : 1158 SchedWriteRes<[KryoUnitLS]> { 1159 let Latency = 3; let NumMicroOps = 3; 1160 } 1161 def : InstRW<[KryoWrite_3cyc_LS_noRSV_noRSV_312ln], 1162 (instregex "LD2R(v8b|v4h|v2s|v1d)$")>; 1163 def KryoWrite_3cyc_LS_XY_LS_314ln : 1164 SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS]> { 1165 let Latency = 3; let NumMicroOps = 3; 1166 } 1167 def : InstRW<[KryoWrite_3cyc_LS_XY_LS_314ln, WriteAdr], 1168 (instregex "LD2R(v16b|v8h|v4s|v2d)_POST$")>; 1169 def KryoWrite_3cyc_LS_XY_noRSV_noRSV_335ln : 1170 SchedWriteRes<[KryoUnitLS, KryoUnitXY]> { 1171 let Latency = 3; let NumMicroOps = 4; 1172 } 1173 def : InstRW<[KryoWrite_3cyc_LS_XY_noRSV_noRSV_335ln, WriteAdr], 1174 (instregex "LD2R(v8b|v4h|v2s|v1d)_POST$")>; 1175 def KryoWrite_3cyc_LS_LS_283ln : 1176 SchedWriteRes<[KryoUnitLS, KryoUnitLS]> { 1177 let Latency = 3; let NumMicroOps = 2; 1178 } 1179 def : InstRW<[KryoWrite_3cyc_LS_LS_283ln], 1180 (instregex "LD3i64$")>; 1181 def KryoWrite_3cyc_LS_LS_LS_309ln : 1182 SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitLS]> { 1183 let Latency = 3; let NumMicroOps = 3; 1184 } 1185 def : InstRW<[KryoWrite_3cyc_LS_LS_LS_309ln], 1186 (instregex "LD3Threev2d$")>; 1187 def KryoWrite_3cyc_LS_XY_LS_315ln : 1188 SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS]> { 1189 let Latency = 3; let NumMicroOps = 3; 1190 } 1191 def : InstRW<[KryoWrite_3cyc_LS_XY_LS_315ln, WriteAdr], 1192 (instregex "LD3i64_POST$")>; 1193 def KryoWrite_4cyc_LS_X_X_X_320ln : 1194 SchedWriteRes<[KryoUnitLS, KryoUnitX, KryoUnitX, KryoUnitX]> { 1195 let Latency = 4; let NumMicroOps = 4; 1196 } 1197 def : InstRW<[KryoWrite_4cyc_LS_X_X_X_320ln], 1198 (instregex "LD3(i8|i16|i32)$")>; 1199 def KryoWrite_3cyc_LS_XY_LS_LS_331ln : 1200 SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitLS]> { 1201 let Latency = 3; let NumMicroOps = 4; 1202 } 1203 def : InstRW<[KryoWrite_3cyc_LS_XY_LS_LS_331ln, WriteAdr], 1204 (instregex "LD3Threev2d_POST$")>; 1205 def KryoWrite_4cyc_LS_XY_X_X_X_338ln : 1206 SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitX, KryoUnitX, KryoUnitX]> { 1207 let Latency = 4; let NumMicroOps = 5; 1208 } 1209 def : InstRW<[KryoWrite_4cyc_LS_XY_X_X_X_338ln, WriteAdr], 1210 (instregex "LD3(i8|i16|i32)_POST$")>; 1211 def KryoWrite_4cyc_LS_LS_X_X_X_noRSV_noRSV_noRSV_373ln : 1212 SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitX, KryoUnitX, KryoUnitX]> { 1213 let Latency = 4; let NumMicroOps = 8; 1214 } 1215 def : InstRW<[KryoWrite_4cyc_LS_LS_X_X_X_noRSV_noRSV_noRSV_373ln], 1216 (instregex "LD3Three(v8b|v4h|v2s)$")>; 1217 def KryoWrite_4cyc_LS_XY_LS_X_X_X_noRSV_noRSV_noRSV_380ln : 1218 SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitX, KryoUnitX, 1219 KryoUnitX]> { 1220 let Latency = 4; let NumMicroOps = 9; 1221 } 1222 def : InstRW<[KryoWrite_4cyc_LS_XY_LS_X_X_X_noRSV_noRSV_noRSV_380ln, WriteAdr], 1223 (instregex "LD3Three(v8b|v4h|v2s)_POST$")>; 1224 def KryoWrite_4cyc_LS_LS_X_X_X_LS_LS_X_X_X_381ln : 1225 SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitX, KryoUnitX, KryoUnitX, 1226 KryoUnitLS, KryoUnitLS, KryoUnitX, KryoUnitX, KryoUnitX]> { 1227 let Latency = 4; let NumMicroOps = 10; 1228 } 1229 def : InstRW<[KryoWrite_4cyc_LS_LS_X_X_X_LS_LS_X_X_X_381ln], 1230 (instregex "LD3Three(v16b|v8h|v4s)$")>; 1231 def KryoWrite_4cyc_LS_LS_X_X_X_LS_XY_LS_X_X_X_383ln : 1232 SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitX, KryoUnitX, KryoUnitX, 1233 KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitX, KryoUnitX, 1234 KryoUnitX]> { 1235 let Latency = 4; let NumMicroOps = 11; 1236 } 1237 def : InstRW<[KryoWrite_4cyc_LS_LS_X_X_X_LS_XY_LS_X_X_X_383ln, WriteAdr], 1238 (instregex "LD3Three(v16b|v8h|v4s)_POST$")>; 1239 def KryoWrite_3cyc_LS_LS_LS_310ln : 1240 SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitLS]> { 1241 let Latency = 3; let NumMicroOps = 3; 1242 } 1243 def : InstRW<[KryoWrite_3cyc_LS_LS_LS_310ln], 1244 (instregex "LD3R(v16b|v8h|v4s|v2d)$")>; 1245 def KryoWrite_3cyc_LS_XY_LS_LS_333ln : 1246 SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitLS]> { 1247 let Latency = 3; let NumMicroOps = 4; 1248 } 1249 def : InstRW<[KryoWrite_3cyc_LS_XY_LS_LS_333ln, WriteAdr], 1250 (instregex "LD3R(v16b|v8h|v4s|v2d)_POST$")>; 1251 def KryoWrite_3cyc_LS_LS_noRSV_noRSV_noRSV_349ln : 1252 SchedWriteRes<[KryoUnitLS, KryoUnitLS]> { 1253 let Latency = 3; let NumMicroOps = 5; 1254 } 1255 def : InstRW<[KryoWrite_3cyc_LS_LS_noRSV_noRSV_noRSV_349ln], 1256 (instregex "LD3R(v8b|v4h|v2s|v1d)$")>; 1257 def KryoWrite_3cyc_LS_XY_LS_noRSV_noRSV_noRSV_361ln : 1258 SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS]> { 1259 let Latency = 3; let NumMicroOps = 6; 1260 } 1261 def : InstRW<[KryoWrite_3cyc_LS_XY_LS_noRSV_noRSV_noRSV_361ln, WriteAdr], 1262 (instregex "LD3R(v8b|v4h|v2s|v1d)_POST$")>; 1263 def KryoWrite_3cyc_LS_LS_284ln : 1264 SchedWriteRes<[KryoUnitLS, KryoUnitLS]> { 1265 let Latency = 3; let NumMicroOps = 2; 1266 } 1267 def : InstRW<[KryoWrite_3cyc_LS_LS_284ln], 1268 (instregex "LD4i64$")>; 1269 def KryoWrite_3cyc_LS_XY_LS_316ln : 1270 SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS]> { 1271 let Latency = 3; let NumMicroOps = 3; 1272 } 1273 def : InstRW<[KryoWrite_3cyc_LS_XY_LS_316ln, WriteAdr], 1274 (instregex "LD4i64_POST$")>; 1275 def KryoWrite_3cyc_LS_LS_LS_LS_329ln : 1276 SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitLS, KryoUnitLS]> { 1277 let Latency = 3; let NumMicroOps = 4; 1278 } 1279 def : InstRW<[KryoWrite_3cyc_LS_LS_LS_LS_329ln], 1280 (instregex "LD4Four(v2d)$")>; 1281 def KryoWrite_4cyc_LS_X_X_X_X_337ln : 1282 SchedWriteRes<[KryoUnitLS, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX]> { 1283 let Latency = 4; let NumMicroOps = 5; 1284 } 1285 def : InstRW<[KryoWrite_4cyc_LS_X_X_X_X_337ln], 1286 (instregex "LD4(i8|i16|i32)$")>; 1287 def KryoWrite_3cyc_LS_XY_LS_LS_LS_350ln : 1288 SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitLS, KryoUnitLS]> { 1289 let Latency = 3; let NumMicroOps = 5; 1290 } 1291 def : InstRW<[KryoWrite_3cyc_LS_XY_LS_LS_LS_350ln, WriteAdr], 1292 (instregex "LD4Four(v2d)_POST$")>; 1293 def KryoWrite_4cyc_LS_XY_X_X_X_X_355ln : 1294 SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitX, KryoUnitX, KryoUnitX, 1295 KryoUnitX]> { 1296 let Latency = 4; let NumMicroOps = 6; 1297 } 1298 def : InstRW<[KryoWrite_4cyc_LS_XY_X_X_X_X_355ln, WriteAdr], 1299 (instregex "LD4(i8|i16|i32)_POST$")>; 1300 def KryoWrite_4cyc_LS_LS_X_X_X_X_noRSV_noRSV_noRSV_noRSV_382ln : 1301 SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitX, KryoUnitX, KryoUnitX, 1302 KryoUnitX]> { 1303 let Latency = 4; let NumMicroOps = 10; 1304 } 1305 def : InstRW<[KryoWrite_4cyc_LS_LS_X_X_X_X_noRSV_noRSV_noRSV_noRSV_382ln], 1306 (instregex "LD4Four(v8b|v4h|v2s)$")>; 1307 def KryoWrite_4cyc_LS_XY_LS_X_X_X_X_noRSV_noRSV_noRSV_noRSV_384ln : 1308 SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitX, KryoUnitX, 1309 KryoUnitX, KryoUnitX]> { 1310 let Latency = 4; let NumMicroOps = 11; 1311 } 1312 def : InstRW<[KryoWrite_4cyc_LS_XY_LS_X_X_X_X_noRSV_noRSV_noRSV_noRSV_384ln, WriteAdr], 1313 (instregex "LD4Four(v8b|v4h|v2s)_POST$")>; 1314 def KryoWrite_4cyc_LS_LS_X_X_X_X_LS_LS_X_X_X_X_386ln : 1315 SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitX, KryoUnitX, KryoUnitX, 1316 KryoUnitX, KryoUnitLS, KryoUnitLS, KryoUnitX, KryoUnitX, 1317 KryoUnitX, KryoUnitX]> { 1318 let Latency = 4; let NumMicroOps = 12; 1319 } 1320 def : InstRW<[KryoWrite_4cyc_LS_LS_X_X_X_X_LS_LS_X_X_X_X_386ln], 1321 (instregex "LD4Four(v16b|v8h|v4s)$")>; 1322 def KryoWrite_4cyc_LS_LS_X_X_X_X_LS_XY_LS_X_X_X_X_389ln : 1323 SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitX, KryoUnitX, KryoUnitX, 1324 KryoUnitX, KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitX, 1325 KryoUnitX, KryoUnitX, KryoUnitX]> { 1326 let Latency = 4; let NumMicroOps = 13; 1327 } 1328 def : InstRW<[KryoWrite_4cyc_LS_LS_X_X_X_X_LS_XY_LS_X_X_X_X_389ln, WriteAdr], 1329 (instregex "LD4Four(v16b|v8h|v4s)_POST$")>; 1330 def KryoWrite_3cyc_LS_LS_LS_LS_330ln : 1331 SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitLS, KryoUnitLS]> { 1332 let Latency = 3; let NumMicroOps = 4; 1333 } 1334 def : InstRW<[KryoWrite_3cyc_LS_LS_LS_LS_330ln], 1335 (instregex "LD4R(v16b|v8h|v4s|v2d)$")>; 1336 def KryoWrite_3cyc_LS_XY_LS_LS_LS_352ln : 1337 SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitLS, KryoUnitLS]> { 1338 let Latency = 3; let NumMicroOps = 5; 1339 } 1340 def : InstRW<[KryoWrite_3cyc_LS_XY_LS_LS_LS_352ln, WriteAdr], 1341 (instregex "LD4R(v16b|v8h|v4s|v2d)_POST$")>; 1342 def KryoWrite_3cyc_LS_LS_noRSV_noRSV_noRSV_noRSV_359ln : 1343 SchedWriteRes<[KryoUnitLS, KryoUnitLS]> { 1344 let Latency = 3; let NumMicroOps = 6; 1345 } 1346 def : InstRW<[KryoWrite_3cyc_LS_LS_noRSV_noRSV_noRSV_noRSV_359ln], 1347 (instregex "LD4R(v8b|v4h|v2s|v1d)$")>; 1348 def KryoWrite_3cyc_LS_XY_LS_noRSV_noRSV_noRSV_noRSV_369ln : 1349 SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS]> { 1350 let Latency = 3; let NumMicroOps = 7; 1351 } 1352 def : InstRW<[KryoWrite_3cyc_LS_XY_LS_noRSV_noRSV_noRSV_noRSV_369ln, WriteAdr], 1353 (instregex "LD4R(v8b|v4h|v2s|v1d)_POST$")>; 1354 def KryoWrite_3cyc_LS_LS_400ln : 1355 SchedWriteRes<[KryoUnitLS, KryoUnitLS]> { 1356 let Latency = 3; let NumMicroOps = 2; 1357 } 1358 def : InstRW<[KryoWrite_3cyc_LS_LS_400ln], 1359 (instregex "(LDAX?R(B|H|W|X)|LDAXP(W|X))")>; 1360 def KryoWrite_3cyc_LS_LS_401ln : 1361 SchedWriteRes<[KryoUnitLS, KryoUnitLS]> { 1362 let Latency = 3; let NumMicroOps = 2; 1363 } 1364 def : InstRW<[KryoWrite_3cyc_LS_LS_401ln, WriteLDHi], 1365 (instrs LDNPQi)>; 1366 def KryoWrite_3cyc_LS_noRSV_noRSV_408ln : 1367 SchedWriteRes<[KryoUnitLS]> { 1368 let Latency = 3; let NumMicroOps = 3; 1369 } 1370 def : InstRW<[KryoWrite_3cyc_LS_noRSV_noRSV_408ln, WriteLDHi], 1371 (instrs LDNPDi, LDNPSi)>; 1372 def KryoWrite_3cyc_LS_394ln : 1373 SchedWriteRes<[KryoUnitLS]> { 1374 let Latency = 3; let NumMicroOps = 1; 1375 } 1376 def : InstRW<[KryoWrite_3cyc_LS_394ln, WriteLDHi], 1377 (instrs LDNPWi, LDNPXi)>; 1378 def KryoWrite_3cyc_LS_LS_402ln : 1379 SchedWriteRes<[KryoUnitLS, KryoUnitLS]> { 1380 let Latency = 3; let NumMicroOps = 2; 1381 } 1382 def : InstRW<[KryoWrite_3cyc_LS_LS_402ln, WriteLDHi], 1383 (instrs LDPQi)>; 1384 def KryoWrite_3cyc_LS_noRSV_noRSV_409ln : 1385 SchedWriteRes<[KryoUnitLS]> { 1386 let Latency = 3; let NumMicroOps = 3; 1387 } 1388 def : InstRW<[KryoWrite_3cyc_LS_noRSV_noRSV_409ln, WriteLDHi], 1389 (instrs LDPDi, LDPSi)>; 1390 def KryoWrite_3cyc_LS_XY_LS_410ln : 1391 SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS]> { 1392 let Latency = 3; let NumMicroOps = 3; 1393 } 1394 def : InstRW<[KryoWrite_3cyc_LS_XY_LS_410ln, WriteLDHi, WriteAdr], 1395 (instregex "LDPQ(post|pre)")>; 1396 def KryoWrite_3cyc_LS_XY_noRSV_noRSV_411ln : 1397 SchedWriteRes<[KryoUnitLS, KryoUnitXY]> { 1398 let Latency = 3; let NumMicroOps = 4; 1399 } 1400 def : InstRW<[KryoWrite_3cyc_LS_XY_noRSV_noRSV_411ln, WriteLDHi, WriteAdr], 1401 (instregex "LDP(D|S)(post|pre)")>; 1402 def KryoWrite_3cyc_LS_393ln : 1403 SchedWriteRes<[KryoUnitLS]> { 1404 let Latency = 3; let NumMicroOps = 1; 1405 } 1406 def : InstRW<[KryoWrite_3cyc_LS_393ln, WriteLDHi], 1407 (instrs LDPWi, LDPXi)>; 1408 def KryoWrite_3cyc_LS_XY_403ln : 1409 SchedWriteRes<[KryoUnitLS, KryoUnitXY]> { 1410 let Latency = 3; let NumMicroOps = 2; 1411 } 1412 def : InstRW<[KryoWrite_3cyc_LS_XY_403ln, WriteLDHi, WriteAdr], 1413 (instregex "LDP(W|X)(post|pre)")>; 1414 def KryoWrite_4cyc_LS_395ln : 1415 SchedWriteRes<[KryoUnitLS]> { 1416 let Latency = 4; let NumMicroOps = 1; 1417 } 1418 def : InstRW<[KryoWrite_4cyc_LS_395ln, WriteLDHi], 1419 (instrs LDPSWi)>; 1420 def KryoWrite_4cyc_LS_XY_405ln : 1421 SchedWriteRes<[KryoUnitLS, KryoUnitXY]> { 1422 let Latency = 4; let NumMicroOps = 2; 1423 } 1424 def : InstRW<[KryoWrite_4cyc_LS_XY_405ln, WriteLDHi, WriteAdr], 1425 (instrs LDPSWpost, LDPSWpre)>; 1426 def KryoWrite_3cyc_LS_264ln : 1427 SchedWriteRes<[KryoUnitLS]> { 1428 let Latency = 3; let NumMicroOps = 1; 1429 } 1430 def : InstRW<[KryoWrite_3cyc_LS_264ln], 1431 (instrs LDRQui, LDRQl)>; 1432 def KryoWrite_4cyc_X_LS_271ln : 1433 SchedWriteRes<[KryoUnitX, KryoUnitLS]> { 1434 let Latency = 4; let NumMicroOps = 2; 1435 } 1436 def : InstRW<[KryoWrite_4cyc_X_LS_271ln], 1437 (instrs LDRQroW, LDRQroX)>; 1438 def KryoWrite_3cyc_LS_noRSV_287ln : 1439 SchedWriteRes<[KryoUnitLS]> { 1440 let Latency = 3; let NumMicroOps = 2; 1441 } 1442 def : InstRW<[KryoWrite_3cyc_LS_noRSV_287ln], 1443 (instregex "LDR((D|S)l|(D|S|H|B)ui)")>; 1444 def KryoWrite_3cyc_LS_XY_293ln : 1445 SchedWriteRes<[KryoUnitLS, KryoUnitXY]> { 1446 let Latency = 3; let NumMicroOps = 2; 1447 } 1448 def : InstRW<[KryoWrite_3cyc_LS_XY_293ln, WriteAdr], 1449 (instrs LDRQpost, LDRQpre)>; 1450 def KryoWrite_4cyc_X_LS_noRSV_297ln : 1451 SchedWriteRes<[KryoUnitX, KryoUnitLS]> { 1452 let Latency = 4; let NumMicroOps = 3; 1453 } 1454 def : InstRW<[KryoWrite_4cyc_X_LS_noRSV_297ln], 1455 (instregex "LDR(D|S|H|B)ro(W|X)")>; 1456 def KryoWrite_3cyc_LS_XY_noRSV_319ln : 1457 SchedWriteRes<[KryoUnitLS, KryoUnitXY]> { 1458 let Latency = 3; let NumMicroOps = 3; 1459 } 1460 def : InstRW<[KryoWrite_3cyc_LS_XY_noRSV_319ln, WriteAdr], 1461 (instregex "LDR(D|S|H|B)(post|pre)")>; 1462 def KryoWrite_3cyc_LS_261ln : 1463 SchedWriteRes<[KryoUnitLS]> { 1464 let Latency = 3; let NumMicroOps = 1; 1465 } 1466 def : InstRW<[KryoWrite_3cyc_LS_261ln], 1467 (instregex "LDR(BB|HH|W|X)ui")>; 1468 def KryoWrite_3cyc_LS_XY_292ln : 1469 SchedWriteRes<[KryoUnitLS, KryoUnitXY]> { 1470 let Latency = 3; let NumMicroOps = 2; 1471 } 1472 def : InstRW<[KryoWrite_3cyc_LS_XY_292ln, WriteAdr], 1473 (instregex "LDR(BB|HH|W|X)(post|pre)")>; 1474 def KryoWrite_4cyc_X_LS_272ln : 1475 SchedWriteRes<[KryoUnitX, KryoUnitLS]> { 1476 let Latency = 4; let NumMicroOps = 2; 1477 } 1478 def : InstRW<[KryoWrite_4cyc_X_LS_272ln], 1479 (instregex "(LDR(BB|HH|W|X)ro(W|X)|PRFMro(W|X))")>; 1480 def KryoWrite_3cyc_LS_262ln : 1481 SchedWriteRes<[KryoUnitLS]> { 1482 let Latency = 3; let NumMicroOps = 1; 1483 } 1484 def : InstRW<[KryoWrite_3cyc_LS_262ln], 1485 (instrs LDRWl, LDRXl)>; 1486 def KryoWrite_4cyc_LS_268ln : 1487 SchedWriteRes<[KryoUnitLS]> { 1488 let Latency = 4; let NumMicroOps = 1; 1489 } 1490 def : InstRW<[KryoWrite_4cyc_LS_268ln], 1491 (instregex "LDRS(BW|BX|HW|HX|W)ui")>; 1492 def KryoWrite_5cyc_X_LS_273ln : 1493 SchedWriteRes<[KryoUnitX, KryoUnitLS]> { 1494 let Latency = 5; let NumMicroOps = 2; 1495 } 1496 def : InstRW<[KryoWrite_5cyc_X_LS_273ln], 1497 (instregex "LDRS(BW|BX|HW|HX|W)ro(W|X)")>; 1498 def KryoWrite_4cyc_LS_XY_294ln : 1499 SchedWriteRes<[KryoUnitLS, KryoUnitXY]> { 1500 let Latency = 4; let NumMicroOps = 2; 1501 } 1502 def : InstRW<[KryoWrite_4cyc_LS_XY_294ln, WriteAdr], 1503 (instregex "LDRS(BW|BX|HW|HX|W)(post|pre)")>; 1504 def KryoWrite_4cyc_LS_269ln : 1505 SchedWriteRes<[KryoUnitLS]> { 1506 let Latency = 4; let NumMicroOps = 1; 1507 } 1508 def : InstRW<[KryoWrite_4cyc_LS_269ln], 1509 (instrs LDRSWl)>; 1510 def KryoWrite_3cyc_LS_260ln : 1511 SchedWriteRes<[KryoUnitLS]> { 1512 let Latency = 3; let NumMicroOps = 1; 1513 } 1514 def : InstRW<[KryoWrite_3cyc_LS_260ln], 1515 (instregex "LDTR(B|H|W|X)i")>; 1516 def KryoWrite_4cyc_LS_267ln : 1517 SchedWriteRes<[KryoUnitLS]> { 1518 let Latency = 4; let NumMicroOps = 1; 1519 } 1520 def : InstRW<[KryoWrite_4cyc_LS_267ln], 1521 (instregex "LDTRS(BW|BX|HW|HX|W)i")>; 1522 def KryoWrite_3cyc_LS_263ln : 1523 SchedWriteRes<[KryoUnitLS]> { 1524 let Latency = 3; let NumMicroOps = 1; 1525 } 1526 def : InstRW<[KryoWrite_3cyc_LS_263ln], 1527 (instrs LDURQi)>; 1528 def KryoWrite_3cyc_LS_noRSV_288ln : 1529 SchedWriteRes<[KryoUnitLS]> { 1530 let Latency = 3; let NumMicroOps = 2; 1531 } 1532 def : InstRW<[KryoWrite_3cyc_LS_noRSV_288ln], 1533 (instregex "LDUR(D|S|H|B)i")>; 1534 def KryoWrite_3cyc_LS_259ln : 1535 SchedWriteRes<[KryoUnitLS]> { 1536 let Latency = 3; let NumMicroOps = 1; 1537 } 1538 def : InstRW<[KryoWrite_3cyc_LS_259ln], 1539 (instregex "LDUR(BB|HH|W|X)i")>; 1540 def KryoWrite_4cyc_LS_266ln : 1541 SchedWriteRes<[KryoUnitLS]> { 1542 let Latency = 4; let NumMicroOps = 1; 1543 } 1544 def : InstRW<[KryoWrite_4cyc_LS_266ln], 1545 (instregex "LDURS(B|H)?(W|X)i")>; 1546 def KryoWrite_3cyc_LS_258ln : 1547 SchedWriteRes<[KryoUnitLS]> { 1548 let Latency = 3; let NumMicroOps = 1; 1549 } 1550 def : InstRW<[KryoWrite_3cyc_LS_258ln], 1551 (instregex "LDXP(W|X)")>; 1552 def KryoWrite_3cyc_LS_258_1ln : 1553 SchedWriteRes<[KryoUnitLS]> { 1554 let Latency = 3; let NumMicroOps = 1; 1555 } 1556 def : InstRW<[KryoWrite_3cyc_LS_258_1ln], 1557 (instregex "LDXR(B|H|W|X)")>; 1558 def KryoWrite_2cyc_XY_XY_137ln : 1559 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 1560 let Latency = 2; let NumMicroOps = 2; 1561 } 1562 def : InstRW<[KryoWrite_2cyc_XY_XY_137ln], 1563 (instrs LSLVWr, LSLVXr)>; 1564 def KryoWrite_1cyc_XY_135ln : 1565 SchedWriteRes<[KryoUnitXY]> { 1566 let Latency = 1; let NumMicroOps = 1; 1567 } 1568 def : InstRW<[KryoWrite_1cyc_XY_135ln], 1569 (instregex "(LS|AS|RO)RV(W|X)r")>; 1570 def KryoWrite_4cyc_X_84ln : 1571 SchedWriteRes<[KryoUnitX]> { 1572 let Latency = 4; let NumMicroOps = 1; 1573 } 1574 def : InstRW<[KryoWrite_4cyc_X_84ln], 1575 (instrs MADDWrrr, MSUBWrrr)>; 1576 def KryoWrite_5cyc_X_85ln : 1577 SchedWriteRes<[KryoUnitX]> { 1578 let Latency = 5; let NumMicroOps = 1; 1579 } 1580 def : InstRW<[KryoWrite_5cyc_X_85ln], 1581 (instrs MADDXrrr, MSUBXrrr)>; 1582 def KryoWrite_4cyc_X_noRSV_188ln : 1583 SchedWriteRes<[KryoUnitX]> { 1584 let Latency = 4; let NumMicroOps = 2; 1585 } 1586 def : InstRW<[KryoWrite_4cyc_X_noRSV_188ln], 1587 (instregex "(MLA|MLS|MUL)(v8i8|v4i16|v2i32)(_indexed)?")>; 1588 def KryoWrite_4cyc_X_X_192ln : 1589 SchedWriteRes<[KryoUnitX, KryoUnitX]> { 1590 let Latency = 4; let NumMicroOps = 2; 1591 } 1592 def : InstRW<[KryoWrite_4cyc_X_X_192ln], 1593 (instregex "(MLA|MLS|MUL|SQR?DMULH)(v16i8|v8i16|v4i32)(_indexed)?")>; 1594 def KryoWrite_1cyc_XY_noRSV_198ln : 1595 SchedWriteRes<[KryoUnitXY]> { 1596 let Latency = 1; let NumMicroOps = 2; 1597 } 1598 def : InstRW<[KryoWrite_1cyc_XY_noRSV_198ln], 1599 (instregex "(MOVI|MVNI)(D|v8b_ns|v2i32|v4i16|v2s_msl)")>; 1600 def KryoWrite_1cyc_XY_XY_199ln : 1601 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 1602 let Latency = 1; let NumMicroOps = 2; 1603 } 1604 def : InstRW<[KryoWrite_1cyc_XY_XY_199ln], 1605 (instregex "(MOVI|MVNI)(v2d_ns|v16b_ns|v4i32|v8i16|v4s_msl)")>; 1606 def KryoWrite_1cyc_X_89ln : 1607 SchedWriteRes<[KryoUnitX]> { 1608 let Latency = 1; let NumMicroOps = 1; 1609 } 1610 def : InstRW<[KryoWrite_1cyc_X_89ln], 1611 (instrs MOVKWi, MOVKXi)>; 1612 def KryoWrite_1cyc_XY_91ln : 1613 SchedWriteRes<[KryoUnitXY]> { 1614 let Latency = 1; let NumMicroOps = 1; 1615 } 1616 def : InstRW<[KryoWrite_1cyc_XY_91ln], 1617 (instrs MOVNWi, MOVNXi)>; 1618 def KryoWrite_1cyc_XY_90ln : 1619 SchedWriteRes<[KryoUnitXY]> { 1620 let Latency = 1; let NumMicroOps = 1; 1621 } 1622 def : InstRW<[KryoWrite_1cyc_XY_90ln], 1623 (instrs MOVZWi, MOVZXi)>; 1624 def KryoWrite_2cyc_XY_93ln : 1625 SchedWriteRes<[KryoUnitXY]> { 1626 let Latency = 2; let NumMicroOps = 1; 1627 } 1628 def : InstRW<[KryoWrite_2cyc_XY_93ln], 1629 (instrs MRS)>; 1630 def KryoWrite_0cyc_X_87ln : 1631 SchedWriteRes<[KryoUnitX]> { 1632 let Latency = 0; let NumMicroOps = 1; 1633 } 1634 def : InstRW<[KryoWrite_0cyc_X_87ln], 1635 (instrs MSRpstateImm4)>; 1636 def : InstRW<[KryoWrite_0cyc_X_87ln], 1637 (instrs MSRpstateImm1)>; 1638 def KryoWrite_0cyc_XY_88ln : 1639 SchedWriteRes<[KryoUnitXY]> { 1640 let Latency = 0; let NumMicroOps = 1; 1641 } 1642 def : InstRW<[KryoWrite_0cyc_XY_88ln], 1643 (instrs MSR)>; 1644 def KryoWrite_1cyc_XY_noRSV_143ln : 1645 SchedWriteRes<[KryoUnitXY]> { 1646 let Latency = 1; let NumMicroOps = 2; 1647 } 1648 def : InstRW<[KryoWrite_1cyc_XY_noRSV_143ln], 1649 (instregex "NEG(v8i8|v4i16|v2i32|v1i64)")>; 1650 def KryoWrite_1cyc_XY_XY_145ln : 1651 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 1652 let Latency = 1; let NumMicroOps = 2; 1653 } 1654 def : InstRW<[KryoWrite_1cyc_XY_XY_145ln], 1655 (instregex "NEG(v16i8|v8i16|v4i32|v2i64)")>; 1656 def KryoWrite_1cyc_XY_noRSV_193ln : 1657 SchedWriteRes<[KryoUnitXY]> { 1658 let Latency = 1; let NumMicroOps = 2; 1659 } 1660 def : InstRW<[KryoWrite_1cyc_XY_noRSV_193ln], 1661 (instrs NOTv8i8)>; 1662 def KryoWrite_1cyc_XY_XY_194ln : 1663 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 1664 let Latency = 1; let NumMicroOps = 2; 1665 } 1666 def : InstRW<[KryoWrite_1cyc_XY_XY_194ln], 1667 (instrs NOTv16i8)>; 1668 def KryoWrite_2cyc_XY_noRSV_234ln : 1669 SchedWriteRes<[KryoUnitXY]> { 1670 let Latency = 2; let NumMicroOps = 2; 1671 } 1672 def : InstRW<[KryoWrite_2cyc_XY_noRSV_234ln], 1673 (instrs PMULv8i8)>; 1674 def KryoWrite_2cyc_XY_XY_236ln : 1675 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 1676 let Latency = 2; let NumMicroOps = 2; 1677 } 1678 def : InstRW<[KryoWrite_2cyc_XY_XY_236ln], 1679 (instrs PMULv16i8)>; 1680 def KryoWrite_2cyc_XY_XY_235ln : 1681 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 1682 let Latency = 2; let NumMicroOps = 2; 1683 } 1684 def : InstRW<[KryoWrite_2cyc_XY_XY_235ln], 1685 (instrs PMULLv8i8, PMULLv16i8)>; 1686 def KryoWrite_3cyc_XY_XY_237ln : 1687 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 1688 let Latency = 3; let NumMicroOps = 2; 1689 } 1690 def : InstRW<[KryoWrite_3cyc_XY_XY_237ln], 1691 (instrs PMULLv1i64, PMULLv2i64)>; 1692 def KryoWrite_0cyc_LS_254ln : 1693 SchedWriteRes<[KryoUnitLS]> { 1694 let Latency = 0; let NumMicroOps = 1; 1695 } 1696 def : InstRW<[KryoWrite_0cyc_LS_254ln], 1697 (instrs PRFMl, PRFMui)>; 1698 def KryoWrite_0cyc_LS_253ln : 1699 SchedWriteRes<[KryoUnitLS]> { 1700 let Latency = 0; let NumMicroOps = 1; 1701 } 1702 def : InstRW<[KryoWrite_0cyc_LS_253ln], 1703 (instrs PRFUMi)>; 1704 def KryoWrite_6cyc_XY_X_noRSV_175ln : 1705 SchedWriteRes<[KryoUnitXY, KryoUnitX]> { 1706 let Latency = 6; let NumMicroOps = 3; 1707 } 1708 def : InstRW<[KryoWrite_6cyc_XY_X_noRSV_175ln], 1709 (instregex "R(ADD|SUB)HNv.*")>; 1710 def KryoWrite_2cyc_XY_204ln : 1711 SchedWriteRes<[KryoUnitXY]> { 1712 let Latency = 2; let NumMicroOps = 1; 1713 } 1714 def : InstRW<[KryoWrite_2cyc_XY_204ln], 1715 (instrs RBITWr, RBITXr)>; 1716 def KryoWrite_2cyc_XY_noRSV_218ln : 1717 SchedWriteRes<[KryoUnitXY]> { 1718 let Latency = 2; let NumMicroOps = 2; 1719 } 1720 def : InstRW<[KryoWrite_2cyc_XY_noRSV_218ln], 1721 (instrs RBITv8i8)>; 1722 def KryoWrite_2cyc_XY_XY_219ln : 1723 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 1724 let Latency = 2; let NumMicroOps = 2; 1725 } 1726 def : InstRW<[KryoWrite_2cyc_XY_XY_219ln], 1727 (instrs RBITv16i8)>; 1728 def KryoWrite_1cyc_X_202ln : 1729 SchedWriteRes<[KryoUnitX]> { 1730 let Latency = 1; let NumMicroOps = 1; 1731 } 1732 def : InstRW<[KryoWrite_1cyc_X_202ln], 1733 (instregex "REV(16|32)?(W|X)r")>; 1734 def KryoWrite_1cyc_XY_noRSV_214ln : 1735 SchedWriteRes<[KryoUnitXY]> { 1736 let Latency = 1; let NumMicroOps = 2; 1737 } 1738 def : InstRW<[KryoWrite_1cyc_XY_noRSV_214ln], 1739 (instregex "REV(16|32|64)(v8i8|v4i16|v2i32)")>; 1740 def KryoWrite_1cyc_XY_XY_216ln : 1741 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 1742 let Latency = 1; let NumMicroOps = 2; 1743 } 1744 def : InstRW<[KryoWrite_1cyc_XY_XY_216ln], 1745 (instregex "REV(16|32|64)(v16i8|v8i16|v4i32)")>; 1746 def KryoWrite_3cyc_X_noRSV_244ln : 1747 SchedWriteRes<[KryoUnitX]> { 1748 let Latency = 3; let NumMicroOps = 2; 1749 } 1750 def : InstRW<[KryoWrite_3cyc_X_noRSV_244ln], 1751 (instregex "S(L|R)I(d|(v8i8|v4i16|v2i32)_shift)")>; 1752 def KryoWrite_3cyc_X_X_245ln : 1753 SchedWriteRes<[KryoUnitX, KryoUnitX]> { 1754 let Latency = 3; let NumMicroOps = 2; 1755 } 1756 def : InstRW<[KryoWrite_3cyc_X_X_245ln], 1757 (instregex "S(L|R)I(v16i8|v8i16|v4i32|v2i64)_shift")>; 1758 def KryoWrite_1cyc_XY_2ln : 1759 SchedWriteRes<[KryoUnitXY]> { 1760 let Latency = 1; let NumMicroOps = 1; 1761 } 1762 def : InstRW<[KryoWrite_1cyc_XY_2ln, ReadI, ReadI], 1763 (instregex "SBCS?(W|X)r")>; 1764 def KryoWrite_2cyc_XA_XA_XA_24ln : 1765 SchedWriteRes<[KryoUnitXA, KryoUnitXA, KryoUnitXA]> { 1766 let Latency = 2; let NumMicroOps = 3; 1767 } 1768 def : InstRW<[KryoWrite_2cyc_XA_XA_XA_24ln], 1769 (instrs SHA1Crrr, SHA1Mrrr, SHA1Prrr)>; 1770 def KryoWrite_1cyc_XY_noRSV_21ln : 1771 SchedWriteRes<[KryoUnitXY]> { 1772 let Latency = 1; let NumMicroOps = 2; 1773 } 1774 def : InstRW<[KryoWrite_1cyc_XY_noRSV_21ln], 1775 (instrs SHA1Hrr)>; 1776 def KryoWrite_2cyc_X_X_23ln : 1777 SchedWriteRes<[KryoUnitX, KryoUnitX]> { 1778 let Latency = 2; let NumMicroOps = 2; 1779 } 1780 def : InstRW<[KryoWrite_2cyc_X_X_23ln], 1781 (instrs SHA1SU0rrr, SHA1SU1rr, SHA256SU0rr)>; 1782 def KryoWrite_4cyc_XA_XA_XA_25ln : 1783 SchedWriteRes<[KryoUnitXA, KryoUnitXA, KryoUnitXA]> { 1784 let Latency = 4; let NumMicroOps = 3; 1785 } 1786 def : InstRW<[KryoWrite_4cyc_XA_XA_XA_25ln], 1787 (instrs SHA256Hrrr, SHA256H2rrr)>; 1788 def KryoWrite_3cyc_XY_XY_X_X_26ln : 1789 SchedWriteRes<[KryoUnitXY, KryoUnitXY, KryoUnitX, KryoUnitX]> { 1790 let Latency = 3; let NumMicroOps = 4; 1791 } 1792 def : InstRW<[KryoWrite_3cyc_XY_XY_X_X_26ln], 1793 (instrs SHA256SU1rrr)>; 1794 def KryoWrite_4cyc_X_noRSV_189ln : 1795 SchedWriteRes<[KryoUnitX]> { 1796 let Latency = 4; let NumMicroOps = 2; 1797 } 1798 def : InstRW<[KryoWrite_4cyc_X_noRSV_189ln], 1799 (instregex "SQR?DMULH(v8i8|v4i16|v1i32|v2i32|v1i16)(_indexed)?")>; 1800 def KryoWrite_3cyc_XY_noRSV_68ln : 1801 SchedWriteRes<[KryoUnitXY]> { 1802 let Latency = 3; let NumMicroOps = 2; 1803 } 1804 def : InstRW<[KryoWrite_3cyc_XY_noRSV_68ln], 1805 (instregex "SQ(ABS|NEG)(v1i8|v1i16|v1i32|v1i64)")>; 1806 def KryoWrite_3cyc_XY_noRSV_157ln : 1807 SchedWriteRes<[KryoUnitXY]> { 1808 let Latency = 3; let NumMicroOps = 2; 1809 } 1810 def : InstRW<[KryoWrite_3cyc_XY_noRSV_157ln], 1811 (instregex "SQ(ABS|NEG)(v8i8|v4i16|v2i32)")>; 1812 def KryoWrite_3cyc_XY_XY_164ln : 1813 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 1814 let Latency = 3; let NumMicroOps = 2; 1815 } 1816 def : InstRW<[KryoWrite_3cyc_XY_XY_164ln], 1817 (instregex "SQ(ABS|NEG)(v16i8|v8i16|v4i32|v2i64)")>; 1818 def KryoWrite_4cyc_X_noRSV_190ln : 1819 SchedWriteRes<[KryoUnitX]> { 1820 let Latency = 4; let NumMicroOps = 2; 1821 } 1822 def : InstRW<[KryoWrite_4cyc_X_noRSV_190ln], 1823 (instregex "SQD(MLAL|MLSL|MULL)(i16|i32)")>; 1824 def KryoWrite_0cyc_LS_Y_274ln : 1825 SchedWriteRes<[KryoUnitLS, KryoUnitY]> { 1826 let Latency = 0; let NumMicroOps = 2; 1827 } 1828 def : InstRW<[KryoWrite_0cyc_LS_Y_274ln], 1829 (instregex "ST1(One(v8b|v4h|v2s|v1d|v16b|v8h|v4s|v2d)|(i8|i16|i32|i64)|Two(v8b|v4h|v2s|v1d))$")>; 1830 def KryoWrite_1cyc_LS_Y_X_301ln : 1831 SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitX]> { 1832 let Latency = 1; let NumMicroOps = 3; 1833 } 1834 def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_X_301ln], 1835 (instregex "ST1(One(v8b|v4h|v2s|v1d|v16b|v8h|v4s|v2d)|(i8|i16|i32|i64)|Two(v8b|v4h|v2s|v1d))_POST$")>; 1836 def KryoWrite_1cyc_LS_Y_XY_305ln : 1837 SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitXY]> { 1838 let Latency = 1; let NumMicroOps = 3; 1839 } 1840 def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_XY_305ln], 1841 (instregex "ST1(One(v16b|v8h|v4s|v2d)|Two(v8b|v4h|v2s|v1d))_POST$")>; 1842 def KryoWrite_0cyc_LS_Y_LS_Y_323ln : 1843 SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY]> { 1844 let Latency = 0; let NumMicroOps = 4; 1845 } 1846 def : InstRW<[WriteAdr, KryoWrite_0cyc_LS_Y_LS_Y_323ln], 1847 (instregex "ST1(Two(v16b|v8h|v4s|v2d)|(Three|Four)(v8b|v4h|v2s|v1d))_POST$")>; 1848 def KryoWrite_1cyc_LS_Y_XY_LS_Y_345ln : 1849 SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitXY, KryoUnitLS, KryoUnitY]> { 1850 let Latency = 1; let NumMicroOps = 5; 1851 } 1852 def : InstRW<[KryoWrite_1cyc_LS_Y_XY_LS_Y_345ln], 1853 (instregex "ST1(Two(v16b|v8h|v4s|v2d)|(Three|Four)(v8b|v4h|v2s|v1d))$")>; 1854 def KryoWrite_0cyc_LS_Y_LS_Y_LS_Y_356ln : 1855 SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY, KryoUnitLS, 1856 KryoUnitY]> { 1857 let Latency = 0; let NumMicroOps = 6; 1858 } 1859 def : InstRW<[KryoWrite_0cyc_LS_Y_LS_Y_LS_Y_356ln], 1860 (instregex "ST1Three(v16b|v8h|v4s|v2d)$")>; 1861 def KryoWrite_1cyc_LS_Y_XY_LS_Y_LS_Y_366ln : 1862 SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitXY, KryoUnitLS, KryoUnitY, 1863 KryoUnitLS, KryoUnitY]> { 1864 let Latency = 1; let NumMicroOps = 7; 1865 } 1866 def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_XY_LS_Y_LS_Y_366ln], 1867 (instregex "ST1Three(v16b|v8h|v4s|v2d)_POST$")>; 1868 def KryoWrite_0cyc_LS_Y_LS_Y_LS_Y_LS_Y_371ln : 1869 SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY, KryoUnitLS, 1870 KryoUnitY, KryoUnitLS, KryoUnitY]> { 1871 let Latency = 0; let NumMicroOps = 8; 1872 } 1873 def : InstRW<[KryoWrite_0cyc_LS_Y_LS_Y_LS_Y_LS_Y_371ln], 1874 (instregex "ST1Four(v16b|v8h|v4s|v2d)$")>; 1875 def KryoWrite_0cyc_LS_Y_LS_Y_XY_LS_Y_LS_Y_377ln : 1876 SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY, KryoUnitXY, 1877 KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY]> { 1878 let Latency = 0; let NumMicroOps = 9; 1879 } 1880 def : InstRW<[WriteAdr, KryoWrite_0cyc_LS_Y_LS_Y_XY_LS_Y_LS_Y_377ln], 1881 (instregex "ST1Four(v16b|v8h|v4s|v2d)_POST$")>; 1882 def KryoWrite_0cyc_LS_Y_275ln : 1883 SchedWriteRes<[KryoUnitLS, KryoUnitY]> { 1884 let Latency = 0; let NumMicroOps = 2; 1885 } 1886 def : InstRW<[KryoWrite_0cyc_LS_Y_275ln], 1887 (instregex "ST2(Two(v8b|v4h|v2s|v1d|v16b|v8h|v4s|v2d)|(i8|i16|i32|i64))$")>; 1888 def KryoWrite_1cyc_LS_Y_XY_306ln : 1889 SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitXY]> { 1890 let Latency = 1; let NumMicroOps = 3; 1891 } 1892 def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_XY_306ln], 1893 (instregex "ST2(Two(v8b|v4h|v2s|v1d)|(i8|i16|i32|i64))_POST$")>; 1894 def KryoWrite_0cyc_LS_Y_LS_Y_322ln : 1895 SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY]> { 1896 let Latency = 0; let NumMicroOps = 4; 1897 } 1898 def : InstRW<[KryoWrite_0cyc_LS_Y_LS_Y_322ln], 1899 (instregex "ST2Two(v16b|v8h|v4s|v2d)$")>; 1900 def KryoWrite_1cyc_LS_Y_XY_LS_Y_344ln : 1901 SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitXY, KryoUnitLS, KryoUnitY]> { 1902 let Latency = 1; let NumMicroOps = 5; 1903 } 1904 def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_XY_LS_Y_344ln], 1905 (instregex "ST2Two(v16b|v8h|v4s|v2d)_POST$")>; 1906 def KryoWrite_0cyc_LS_Y_LS_Y_324ln : 1907 SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY]> { 1908 let Latency = 0; let NumMicroOps = 4; 1909 } 1910 def : InstRW<[KryoWrite_0cyc_LS_Y_LS_Y_324ln], 1911 (instregex "ST3(Threev1d|(i8|i16|i32|i64))$")>; 1912 def KryoWrite_1cyc_LS_Y_XY_LS_Y_346ln : 1913 SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitXY, KryoUnitLS, KryoUnitY]> { 1914 let Latency = 1; let NumMicroOps = 5; 1915 } 1916 def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_XY_LS_Y_346ln], 1917 (instregex "ST3(Threev1d|(i8|i16|i32|i64))_POST$")>; 1918 def KryoWrite_1cyc_X_X_LS_Y_LS_Y_353ln : 1919 SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitLS, 1920 KryoUnitY]> { 1921 let Latency = 1; let NumMicroOps = 6; 1922 } 1923 def : InstRW<[KryoWrite_1cyc_X_X_LS_Y_LS_Y_353ln], 1924 (instregex "ST3Three(v8b|v4h|v2s)$")>; 1925 def KryoWrite_0cyc_LS_Y_LS_Y_LS_Y_357ln : 1926 SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY, KryoUnitLS, 1927 KryoUnitY]> { 1928 let Latency = 0; let NumMicroOps = 6; 1929 } 1930 def : InstRW<[KryoWrite_0cyc_LS_Y_LS_Y_LS_Y_357ln], 1931 (instregex "ST3Threev2d$")>; 1932 def KryoWrite_1cyc_X_X_LS_Y_XY_LS_Y_363ln : 1933 SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitXY, 1934 KryoUnitLS, KryoUnitY]> { 1935 let Latency = 1; let NumMicroOps = 7; 1936 } 1937 def : InstRW<[WriteAdr, KryoWrite_1cyc_X_X_LS_Y_XY_LS_Y_363ln], 1938 (instregex "ST3Three(v8b|v4h|v2s)_POST$")>; 1939 def KryoWrite_1cyc_LS_Y_XY_LS_Y_LS_Y_367ln : 1940 SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitXY, KryoUnitLS, KryoUnitY, 1941 KryoUnitLS, KryoUnitY]> { 1942 let Latency = 1; let NumMicroOps = 7; 1943 } 1944 def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_XY_LS_Y_LS_Y_367ln], 1945 (instregex "ST3Threev2d_POST$")>; 1946 def KryoWrite_1cyc_X_X_LS_Y_LS_Y_X_X_LS_Y_LS_Y_385ln : 1947 SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitLS, 1948 KryoUnitY, KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY, 1949 KryoUnitLS, KryoUnitY]> { 1950 let Latency = 1; let NumMicroOps = 12; 1951 } 1952 def : InstRW<[KryoWrite_1cyc_X_X_LS_Y_LS_Y_X_X_LS_Y_LS_Y_385ln], 1953 (instregex "ST3Three(v16b|v8h|v4s)$")>; 1954 def KryoWrite_1cyc_X_X_LS_Y_LS_Y_X_X_LS_Y_XY_LS_Y_388ln : 1955 SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitLS, 1956 KryoUnitY, KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY, 1957 KryoUnitXY, KryoUnitLS, KryoUnitY]> { 1958 let Latency = 1; let NumMicroOps = 13; 1959 } 1960 def : InstRW<[WriteAdr, KryoWrite_1cyc_X_X_LS_Y_LS_Y_X_X_LS_Y_XY_LS_Y_388ln], 1961 (instregex "ST3Three(v16b|v8h|v4s)_POST$")>; 1962 def KryoWrite_0cyc_LS_Y_LS_Y_325ln : 1963 SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY]> { 1964 let Latency = 0; let NumMicroOps = 4; 1965 } 1966 def : InstRW<[KryoWrite_0cyc_LS_Y_LS_Y_325ln], 1967 (instregex "ST4(Fourv1d|(i8|i16|i32|i64))$")>; 1968 def KryoWrite_1cyc_LS_Y_XY_LS_Y_347ln : 1969 SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitXY, KryoUnitLS, KryoUnitY]> { 1970 let Latency = 1; let NumMicroOps = 5; 1971 } 1972 def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_XY_LS_Y_347ln], 1973 (instregex "ST4(Fourv1d|(i8|i16|i32|i64))_POST$")>; 1974 def KryoWrite_1cyc_X_X_LS_Y_X_X_LS_Y_370ln : 1975 SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitX, 1976 KryoUnitX, KryoUnitLS, KryoUnitY]> { 1977 let Latency = 1; let NumMicroOps = 8; 1978 } 1979 def : InstRW<[KryoWrite_1cyc_X_X_LS_Y_X_X_LS_Y_370ln], 1980 (instregex "ST4Four(v8b|v4h|v2s)$")>; 1981 def KryoWrite_0cyc_LS_Y_LS_Y_LS_Y_LS_Y_372ln : 1982 SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY, KryoUnitLS, 1983 KryoUnitY, KryoUnitLS, KryoUnitY]> { 1984 let Latency = 0; let NumMicroOps = 8; 1985 } 1986 def : InstRW<[KryoWrite_0cyc_LS_Y_LS_Y_LS_Y_LS_Y_372ln], 1987 (instregex "ST4Fourv2d$")>; 1988 def KryoWrite_1cyc_X_X_LS_Y_XY_X_X_LS_Y_375ln : 1989 SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitXY, 1990 KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY]> { 1991 let Latency = 1; let NumMicroOps = 9; 1992 } 1993 def : InstRW<[WriteAdr, KryoWrite_1cyc_X_X_LS_Y_XY_X_X_LS_Y_375ln], 1994 (instregex "ST4Four(v8b|v4h|v2s)_POST$")>; 1995 def KryoWrite_0cyc_LS_Y_LS_Y_XY_LS_Y_LS_Y_379ln : 1996 SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY, KryoUnitXY, 1997 KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY]> { 1998 let Latency = 0; let NumMicroOps = 9; 1999 } 2000 def : InstRW<[WriteAdr, KryoWrite_0cyc_LS_Y_LS_Y_XY_LS_Y_LS_Y_379ln], 2001 (instregex "ST4Fourv2d_POST$")>; 2002 def KryoWrite_1cyc_X_X_LS_Y_X_X_LS_Y_X_X_LS_Y_X_X_LS_Y_390ln : 2003 SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitX, 2004 KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitX, KryoUnitX, 2005 KryoUnitLS, KryoUnitY, KryoUnitX, KryoUnitX, KryoUnitLS, 2006 KryoUnitY]> { 2007 let Latency = 1; let NumMicroOps = 16; 2008 } 2009 def : InstRW<[KryoWrite_1cyc_X_X_LS_Y_X_X_LS_Y_X_X_LS_Y_X_X_LS_Y_390ln], 2010 (instregex "ST4Four(v16b|v8h|v4s)$")>; 2011 def KryoWrite_1cyc_X_X_LS_Y_X_X_LS_Y_X_X_LS_Y_XY_X_X_LS_Y_392ln : 2012 SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitX, 2013 KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitX, KryoUnitX, 2014 KryoUnitLS, KryoUnitY, KryoUnitXY, KryoUnitX, KryoUnitX, 2015 KryoUnitLS, KryoUnitY]> { 2016 let Latency = 1; let NumMicroOps = 17; 2017 } 2018 def : InstRW<[WriteAdr, KryoWrite_1cyc_X_X_LS_Y_X_X_LS_Y_X_X_LS_Y_XY_X_X_LS_Y_392ln], 2019 (instregex "ST4Four(v16b|v8h|v4s)_POST$")>; 2020 def KryoWrite_0cyc_LS_LS_Y_299ln : 2021 SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitY]> { 2022 let Latency = 0; let NumMicroOps = 3; 2023 } 2024 def : InstRW<[KryoWrite_0cyc_LS_LS_Y_299ln], 2025 (instregex "STLR(B|H|W|X)")>; 2026 def KryoWrite_3cyc_LS_LS_Y_307ln : 2027 SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitY]> { 2028 let Latency = 3; let NumMicroOps = 3; 2029 } 2030 def : InstRW<[KryoWrite_3cyc_LS_LS_Y_307ln], 2031 (instregex "STLX(P(W|X)|R(B|H|W|X))")>; 2032 def KryoWrite_0cyc_LS_Y_276ln : 2033 SchedWriteRes<[KryoUnitLS, KryoUnitY]> { 2034 let Latency = 0; let NumMicroOps = 2; 2035 } 2036 def : InstRW<[KryoWrite_0cyc_LS_Y_276ln], 2037 (instrs STNPDi, STNPSi)>; 2038 def KryoWrite_0cyc_LS_Y_LS_Y_326ln : 2039 SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY]> { 2040 let Latency = 0; let NumMicroOps = 4; 2041 } 2042 def : InstRW<[KryoWrite_0cyc_LS_Y_LS_Y_326ln], 2043 (instrs STNPQi)>; 2044 def KryoWrite_0cyc_LS_Y_280ln : 2045 SchedWriteRes<[KryoUnitLS, KryoUnitY]> { 2046 let Latency = 0; let NumMicroOps = 2; 2047 } 2048 def : InstRW<[KryoWrite_0cyc_LS_Y_280ln], 2049 (instrs STNPWi, STNPXi)>; 2050 def KryoWrite_0cyc_LS_Y_277ln : 2051 SchedWriteRes<[KryoUnitLS, KryoUnitY]> { 2052 let Latency = 0; let NumMicroOps = 2; 2053 } 2054 def : InstRW<[KryoWrite_0cyc_LS_Y_277ln], 2055 (instregex "STP(D|S)i")>; 2056 def KryoWrite_1cyc_LS_Y_X_303ln : 2057 SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitX]> { 2058 let Latency = 1; let NumMicroOps = 3; 2059 } 2060 def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_X_303ln], 2061 (instregex "STP(D|S)(post|pre)")>; 2062 def KryoWrite_0cyc_LS_Y_LS_Y_327ln : 2063 SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY]> { 2064 let Latency = 0; let NumMicroOps = 4; 2065 } 2066 def : InstRW<[KryoWrite_0cyc_LS_Y_LS_Y_327ln], 2067 (instrs STPQi)>; 2068 def KryoWrite_1cyc_LS_Y_X_LS_Y_343ln : 2069 SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitX, KryoUnitLS, KryoUnitY]> { 2070 let Latency = 1; let NumMicroOps = 5; 2071 } 2072 def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_X_LS_Y_343ln], 2073 (instrs STPQpost, STPQpre)>; 2074 def KryoWrite_0cyc_LS_Y_279ln : 2075 SchedWriteRes<[KryoUnitLS, KryoUnitY]> { 2076 let Latency = 0; let NumMicroOps = 2; 2077 } 2078 def : InstRW<[KryoWrite_0cyc_LS_Y_279ln], 2079 (instregex "STP(W|X)i")>; 2080 def KryoWrite_1cyc_LS_X_Y_300ln : 2081 SchedWriteRes<[KryoUnitLS, KryoUnitX, KryoUnitY]> { 2082 let Latency = 1; let NumMicroOps = 3; 2083 } 2084 def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_X_Y_300ln], 2085 (instregex "STP(W|X)(post|pre)")>; 2086 def KryoWrite_0cyc_LS_Y_278ln : 2087 SchedWriteRes<[KryoUnitLS, KryoUnitY]> { 2088 let Latency = 0; let NumMicroOps = 2; 2089 } 2090 def : InstRW<[KryoWrite_0cyc_LS_Y_278ln], 2091 (instregex "STR(Q|D|S|H|B)ui")>; 2092 def KryoWrite_1cyc_X_LS_Y_295ln : 2093 SchedWriteRes<[KryoUnitX, KryoUnitLS, KryoUnitY]> { 2094 let Latency = 1; let NumMicroOps = 3; 2095 } 2096 def : InstRW<[KryoWrite_1cyc_X_LS_Y_295ln], 2097 (instregex "STR(D|S|H|B)ro(W|X)")>; 2098 def KryoWrite_1cyc_LS_Y_X_304ln : 2099 SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitX]> { 2100 let Latency = 1; let NumMicroOps = 3; 2101 } 2102 def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_X_304ln], 2103 (instregex "STR(Q|D|S|H|B)(post|pre)")>; 2104 def KryoWrite_2cyc_X_LS_Y_XY_LS_Y_354ln : 2105 SchedWriteRes<[KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitXY, KryoUnitLS, 2106 KryoUnitY]> { 2107 let Latency = 2; let NumMicroOps = 6; 2108 } 2109 def : InstRW<[KryoWrite_2cyc_X_LS_Y_XY_LS_Y_354ln], 2110 (instregex "STRQro(W|X)")>; 2111 def KryoWrite_0cyc_LS_Y_399ln : 2112 SchedWriteRes<[KryoUnitLS, KryoUnitY]> { 2113 let Latency = 0; let NumMicroOps = 2; 2114 } 2115 def : InstRW<[KryoWrite_0cyc_LS_Y_399ln], 2116 (instregex "STR(BB|HH|W|X)ui")>; 2117 def KryoWrite_1cyc_X_LS_Y_406ln : 2118 SchedWriteRes<[KryoUnitX, KryoUnitLS, KryoUnitY]> { 2119 let Latency = 1; let NumMicroOps = 3; 2120 } 2121 def : InstRW<[KryoWrite_1cyc_X_LS_Y_406ln], 2122 (instregex "STR(BB|HH|W|X)ro(W|X)")>; 2123 def KryoWrite_1cyc_LS_X_Y_407ln : 2124 SchedWriteRes<[KryoUnitLS, KryoUnitX, KryoUnitY]> { 2125 let Latency = 1; let NumMicroOps = 3; 2126 } 2127 def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_X_Y_407ln], 2128 (instregex "STR(BB|HH|W|X)(post|pre)")>; 2129 def KryoWrite_0cyc_LS_Y_398ln : 2130 SchedWriteRes<[KryoUnitLS, KryoUnitY]> { 2131 let Latency = 0; let NumMicroOps = 2; 2132 } 2133 def : InstRW<[KryoWrite_0cyc_LS_Y_398ln], 2134 (instregex "STTR(B|H|W|X)i")>; 2135 def KryoWrite_0cyc_LS_Y_396ln : 2136 SchedWriteRes<[KryoUnitLS, KryoUnitY]> { 2137 let Latency = 0; let NumMicroOps = 2; 2138 } 2139 def : InstRW<[KryoWrite_0cyc_LS_Y_396ln], 2140 (instregex "STUR(Q|D|S|H|B)i")>; 2141 def KryoWrite_0cyc_LS_Y_397ln : 2142 SchedWriteRes<[KryoUnitLS, KryoUnitY]> { 2143 let Latency = 0; let NumMicroOps = 2; 2144 } 2145 def : InstRW<[KryoWrite_0cyc_LS_Y_397ln], 2146 (instregex "STUR(BB|HH|W|X)i")>; 2147 def KryoWrite_3cyc_LS_Y_404ln : 2148 SchedWriteRes<[KryoUnitLS, KryoUnitY]> { 2149 let Latency = 3; let NumMicroOps = 2; 2150 } 2151 def : InstRW<[KryoWrite_3cyc_LS_Y_404ln], 2152 (instregex "STX(P(W|X)|R(B|H|W|X))")>; 2153 def KryoWrite_3cyc_XY_noRSV_160ln : 2154 SchedWriteRes<[KryoUnitXY]> { 2155 let Latency = 3; let NumMicroOps = 2; 2156 } 2157 def : InstRW<[KryoWrite_3cyc_XY_noRSV_160ln], 2158 (instregex "^(SU|US)QADD(v8i8|v4i16|v2i32)")>; 2159 def KryoWrite_3cyc_XY_XY_167ln : 2160 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 2161 let Latency = 3; let NumMicroOps = 2; 2162 } 2163 def : InstRW<[KryoWrite_3cyc_XY_XY_167ln], 2164 (instregex "^(SU|US)QADD(v16i8|v8i16|v4i32|v2i64)")>; 2165 def KryoWrite_1cyc_XY_1ln : 2166 SchedWriteRes<[KryoUnitXY]> { 2167 let Latency = 1; let NumMicroOps = 1; 2168 } 2169 def : InstRW<[KryoWrite_1cyc_XY_1ln, ReadI], 2170 (instregex "SUBS?(W|X)ri")>; 2171 def KryoWrite_2cyc_XY_XY_5ln : 2172 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 2173 let Latency = 2; let NumMicroOps = 2; 2174 } 2175 def : InstRW<[KryoWrite_2cyc_XY_XY_5ln, ReadI, ReadIEReg], 2176 (instregex "SUBS?(W|X)rx")>; 2177 def KryoWrite_2cyc_XY_XY_5_1ln : 2178 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 2179 let Latency = 2; let NumMicroOps = 2; 2180 } 2181 def : InstRW<[KryoWrite_2cyc_XY_XY_5_1ln, ReadI, ReadISReg], 2182 (instregex "SUBS?(W|X)rs")>; 2183 def KryoWrite_1cyc_XY_noRSV_6ln : 2184 SchedWriteRes<[KryoUnitXY]> { 2185 let Latency = 1; let NumMicroOps = 2; 2186 } 2187 def : InstRW<[KryoWrite_1cyc_XY_noRSV_6ln, ReadI, ReadI], 2188 (instregex "SUBS?(W|X)rr")>; 2189 def KryoWrite_0cyc_LS_9ln : 2190 SchedWriteRes<[KryoUnitLS]> { 2191 let Latency = 0; let NumMicroOps = 1; 2192 } 2193 def : InstRW<[KryoWrite_0cyc_LS_9ln], 2194 (instregex "SYSL?xt")>; 2195 def KryoWrite_1cyc_X_noRSV_205ln : 2196 SchedWriteRes<[KryoUnitX]> { 2197 let Latency = 1; let NumMicroOps = 2; 2198 } 2199 def : InstRW<[KryoWrite_1cyc_X_noRSV_205ln], 2200 (instrs TBLv8i8One)>; 2201 def KryoWrite_1cyc_X_X_208ln : 2202 SchedWriteRes<[KryoUnitX, KryoUnitX]> { 2203 let Latency = 1; let NumMicroOps = 2; 2204 } 2205 def : InstRW<[KryoWrite_1cyc_X_X_208ln], 2206 (instrs TBLv16i8One)>; 2207 def KryoWrite_2cyc_X_X_X_noRSV_222ln : 2208 SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX]> { 2209 let Latency = 2; let NumMicroOps = 4; 2210 } 2211 def : InstRW<[KryoWrite_2cyc_X_X_X_noRSV_222ln], 2212 (instrs TBLv8i8Two)>; 2213 def KryoWrite_2cyc_X_X_X_X_X_X_224ln : 2214 SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, 2215 KryoUnitX]> { 2216 let Latency = 2; let NumMicroOps = 6; 2217 } 2218 def : InstRW<[KryoWrite_2cyc_X_X_X_X_X_X_224ln], 2219 (instrs TBLv16i8Two)>; 2220 def KryoWrite_3cyc_X_X_X_X_X_noRSV_225ln : 2221 SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX]> { 2222 let Latency = 3; let NumMicroOps = 6; 2223 } 2224 def : InstRW<[KryoWrite_3cyc_X_X_X_X_X_noRSV_225ln], 2225 (instrs TBLv8i8Three)>; 2226 def KryoWrite_3cyc_X_X_X_X_X_X_X_noRSV_228ln : 2227 SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, 2228 KryoUnitX, KryoUnitX]> { 2229 let Latency = 3; let NumMicroOps = 8; 2230 } 2231 def : InstRW<[KryoWrite_3cyc_X_X_X_X_X_X_X_noRSV_228ln], 2232 (instrs TBLv8i8Four)>; 2233 def KryoWrite_4cyc_X_X_X_X_X_X_X_X_XY_X_X_230ln : 2234 SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, 2235 KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitXY, KryoUnitX, 2236 KryoUnitX]> { 2237 let Latency = 4; let NumMicroOps = 11; 2238 } 2239 def : InstRW<[KryoWrite_4cyc_X_X_X_X_X_X_X_X_XY_X_X_230ln], 2240 (instrs TBLv16i8Three)>; 2241 def KryoWrite_4cyc_X_X_X_X_X_X_X_X_X_X_XY_X_X_X_X_232ln : 2242 SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, 2243 KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, 2244 KryoUnitXY, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX]> { 2245 let Latency = 4; let NumMicroOps = 15; 2246 } 2247 def : InstRW<[KryoWrite_4cyc_X_X_X_X_X_X_X_X_X_X_XY_X_X_X_X_232ln], 2248 (instrs TBLv16i8Four)>; 2249 def KryoWrite_2cyc_X_X_noRSV_220ln : 2250 SchedWriteRes<[KryoUnitX, KryoUnitX]> { 2251 let Latency = 2; let NumMicroOps = 3; 2252 } 2253 def : InstRW<[KryoWrite_2cyc_X_X_noRSV_220ln], 2254 (instrs TBXv8i8One)>; 2255 def KryoWrite_2cyc_X_X_X_X_221ln : 2256 SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX]> { 2257 let Latency = 2; let NumMicroOps = 4; 2258 } 2259 def : InstRW<[KryoWrite_2cyc_X_X_X_X_221ln], 2260 (instrs TBXv16i8One)>; 2261 def KryoWrite_3cyc_X_X_X_X_noRSV_223ln : 2262 SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX]> { 2263 let Latency = 3; let NumMicroOps = 5; 2264 } 2265 def : InstRW<[KryoWrite_3cyc_X_X_X_X_noRSV_223ln], 2266 (instrs TBXv8i8Two)>; 2267 def KryoWrite_4cyc_X_X_X_X_X_X_noRSV_226ln : 2268 SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, 2269 KryoUnitX]> { 2270 let Latency = 4; let NumMicroOps = 7; 2271 } 2272 def : InstRW<[KryoWrite_4cyc_X_X_X_X_X_X_noRSV_226ln], 2273 (instrs TBXv8i8Three)>; 2274 def KryoWrite_3cyc_X_X_X_X_X_X_X_X_227ln : 2275 SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, 2276 KryoUnitX, KryoUnitX, KryoUnitX]> { 2277 let Latency = 3; let NumMicroOps = 8; 2278 } 2279 def : InstRW<[KryoWrite_3cyc_X_X_X_X_X_X_X_X_227ln], 2280 (instrs TBXv16i8Two)>; 2281 def KryoWrite_4cyc_X_X_X_X_X_X_X_X_noRSV_229ln : 2282 SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, 2283 KryoUnitX, KryoUnitX, KryoUnitX]> { 2284 let Latency = 4; let NumMicroOps = 9; 2285 } 2286 def : InstRW<[KryoWrite_4cyc_X_X_X_X_X_X_X_X_noRSV_229ln], 2287 (instrs TBXv8i8Four)>; 2288 def KryoWrite_5cyc_X_X_X_X_X_X_X_X_X_XY_X_X_X_231ln : 2289 SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, 2290 KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitXY, 2291 KryoUnitX, KryoUnitX, KryoUnitX]> { 2292 let Latency = 5; let NumMicroOps = 13; 2293 } 2294 def : InstRW<[KryoWrite_5cyc_X_X_X_X_X_X_X_X_X_XY_X_X_X_231ln], 2295 (instrs TBXv16i8Three)>; 2296 def KryoWrite_5cyc_X_X_X_X_X_X_X_X_X_X_X_XY_X_X_X_X_X_233ln : 2297 SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, 2298 KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, 2299 KryoUnitX, KryoUnitXY, KryoUnitX, KryoUnitX, KryoUnitX, 2300 KryoUnitX, KryoUnitX]> { 2301 let Latency = 5; let NumMicroOps = 17; 2302 } 2303 def : InstRW<[KryoWrite_5cyc_X_X_X_X_X_X_X_X_X_X_X_XY_X_X_X_X_X_233ln], 2304 (instrs TBXv16i8Four)>; 2305 def KryoWrite_1cyc_XY_XY_217ln : 2306 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 2307 let Latency = 1; let NumMicroOps = 2; 2308 } 2309 def : InstRW<[KryoWrite_1cyc_XY_XY_217ln], 2310 (instregex "((TRN1|TRN2|ZIP1|UZP1|UZP2)v2i64|ZIP2(v2i64|v4i32|v8i16|v16i8))")>; 2311 def KryoWrite_1cyc_X_X_211ln : 2312 SchedWriteRes<[KryoUnitX, KryoUnitX]> { 2313 let Latency = 1; let NumMicroOps = 2; 2314 } 2315 def : InstRW<[KryoWrite_1cyc_X_X_211ln], 2316 (instregex "(TRN1|TRN2)(v4i32|v8i16|v16i8)")>; 2317 def KryoWrite_1cyc_X_XY_213ln : 2318 SchedWriteRes<[KryoUnitX, KryoUnitXY]> { 2319 let Latency = 1; let NumMicroOps = 2; 2320 } 2321 def : InstRW<[KryoWrite_1cyc_X_XY_213ln], 2322 (instregex "(TRN1|TRN2)(v2i32|v4i16|v8i8)")>; 2323 def KryoWrite_3cyc_XY_noRSV_156ln : 2324 SchedWriteRes<[KryoUnitXY]> { 2325 let Latency = 3; let NumMicroOps = 2; 2326 } 2327 def : InstRW<[KryoWrite_3cyc_XY_noRSV_156ln], 2328 (instrs URECPEv2i32, URSQRTEv2i32)>; 2329 def KryoWrite_3cyc_XY_XY_168ln : 2330 SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 2331 let Latency = 3; let NumMicroOps = 2; 2332 } 2333 def : InstRW<[KryoWrite_3cyc_XY_XY_168ln], 2334 (instrs URECPEv4i32, URSQRTEv4i32)>; 2335 def KryoWrite_1cyc_X_X_210ln : 2336 SchedWriteRes<[KryoUnitX, KryoUnitX]> { 2337 let Latency = 1; let NumMicroOps = 2; 2338 } 2339 def : InstRW<[KryoWrite_1cyc_X_X_210ln], 2340 (instregex "(UZP1|UZP2)(v4i32|v8i16|v16i8)")>; 2341 def KryoWrite_1cyc_X_noRSV_206ln : 2342 SchedWriteRes<[KryoUnitX]> { 2343 let Latency = 1; let NumMicroOps = 2; 2344 } 2345 def : InstRW<[KryoWrite_1cyc_X_noRSV_206ln], 2346 (instregex "(UZP1|UZP2|ZIP1|ZIP2)(v2i32|v4i16|v8i8)")>; 2347 def KryoWrite_1cyc_XY_noRSV_215ln : 2348 SchedWriteRes<[KryoUnitXY]> { 2349 let Latency = 1; let NumMicroOps = 2; 2350 } 2351 def : InstRW<[KryoWrite_1cyc_XY_noRSV_215ln], 2352 (instregex "XTNv.*")>; 2353 def KryoWrite_1cyc_X_X_209ln : 2354 SchedWriteRes<[KryoUnitX, KryoUnitX]> { 2355 let Latency = 1; let NumMicroOps = 2; 2356 } 2357 def : InstRW<[KryoWrite_1cyc_X_X_209ln], 2358 (instregex "ZIP1(v4i32|v8i16|v16i8)")>; 2359