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