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