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