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