101095a5dSDimitry Andric//=- AArch64SchedKryoDetails.td - QC Kryo Scheduling Defs ----*- tablegen -*-=// 201095a5dSDimitry Andric// 3e6d15924SDimitry Andric// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4e6d15924SDimitry Andric// See https://llvm.org/LICENSE.txt for license information. 5e6d15924SDimitry Andric// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 601095a5dSDimitry Andric// 701095a5dSDimitry Andric//===----------------------------------------------------------------------===// 801095a5dSDimitry Andric// 901095a5dSDimitry Andric// This file defines the uop and latency details for the machine model for the 1001095a5dSDimitry Andric// Qualcomm Kryo subtarget. 1101095a5dSDimitry Andric// 1201095a5dSDimitry Andric//===----------------------------------------------------------------------===// 1301095a5dSDimitry Andric 1401095a5dSDimitry Andricdef KryoWrite_3cyc_X_noRSV_138ln : 1501095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 1601095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 1701095a5dSDimitry Andric} 1801095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_X_noRSV_138ln], 1901095a5dSDimitry Andric (instregex "(S|U)R?SRA(d|(v2i32|v4i16|v8i8)_shift)")>; 2001095a5dSDimitry Andric 2101095a5dSDimitry Andricdef KryoWrite_3cyc_X_X_139ln : 2201095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX]> { 2301095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 2401095a5dSDimitry Andric} 2501095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_X_X_139ln], 2601095a5dSDimitry Andric (instregex "(S|U)R?SRA(v2i64|v4i32|v8i16|v16i8)_shift")>; 2701095a5dSDimitry Andric 2801095a5dSDimitry Andricdef KryoWrite_4cyc_XY_XY_noRSV_172ln : 2901095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 3001095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 3; 3101095a5dSDimitry Andric} 3201095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_XY_XY_noRSV_172ln], 3301095a5dSDimitry Andric (instregex "(S|U)ABA(v8i8|v4i16|v2i32)")>; 3401095a5dSDimitry Andricdef KryoWrite_4cyc_XY_XY_XY_XY_178ln : 3501095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY, KryoUnitXY, KryoUnitXY]> { 3601095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 4; 3701095a5dSDimitry Andric} 3801095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_XY_XY_XY_XY_178ln], 3901095a5dSDimitry Andric (instregex "(S|U)ABA(v16i8|v8i16|v4i32)")>; 4001095a5dSDimitry Andricdef KryoWrite_3cyc_XY_XY_XY_XY_177ln : 4101095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY, KryoUnitXY, KryoUnitXY]> { 4201095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 4; 4301095a5dSDimitry Andric} 4401095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_XY_XY_XY_177ln], 4501095a5dSDimitry Andric (instregex "(S|U)ABALv.*")>; 4601095a5dSDimitry Andricdef KryoWrite_3cyc_XY_XY_166ln : 4701095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 4801095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 4901095a5dSDimitry Andric} 5001095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_XY_166ln], 5101095a5dSDimitry Andric (instregex "(S|U)(ABD|QSUB|RHADD)(v16i8|v8i16|v4i32|v2i64)")>; 5201095a5dSDimitry Andricdef KryoWrite_3cyc_XY_noRSV_159ln : 5301095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 5401095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 5501095a5dSDimitry Andric} 5601095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_noRSV_159ln], 5701095a5dSDimitry Andric (instregex "(S|U)(ABD|RHADD)(v8i8|v4i16|v2i32)")>; 5801095a5dSDimitry Andricdef KryoWrite_3cyc_XY_XY_165ln : 5901095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 6001095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 6101095a5dSDimitry Andric} 6201095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_XY_165ln], 6301095a5dSDimitry Andric (instregex "(S|U)ABDLv.*")>; 6401095a5dSDimitry Andricdef KryoWrite_3cyc_X_noRSV_154ln : 6501095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 6601095a5dSDimitry Andriclet Latency = 3; let NumMicroOps = 2; 6701095a5dSDimitry Andric} 6801095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_X_noRSV_154ln], 6901095a5dSDimitry Andric (instregex "(S|U)ADALP(v8i8|v4i16|v2i32)_v.*")>; 7001095a5dSDimitry Andricdef KryoWrite_3cyc_X_X_155ln : 7101095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX]> { 7201095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 7301095a5dSDimitry Andric} 7401095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_X_X_155ln], 7501095a5dSDimitry Andric (instregex "(S|U)ADALP(v16i8|v8i16|v4i32)_v.*")>; 7601095a5dSDimitry Andricdef KryoWrite_2cyc_XY_XY_151ln : 7701095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 7801095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 7901095a5dSDimitry Andric} 8001095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_XY_151ln], 8101095a5dSDimitry Andric (instregex "(S|U)(ADD|SUB)Lv.*")>; 8201095a5dSDimitry Andricdef KryoWrite_2cyc_XY_noRSV_148ln : 8301095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 8401095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 8501095a5dSDimitry Andric} 8601095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_noRSV_148ln], 8701095a5dSDimitry Andric (instregex "((S|U)ADDLP|ABS)(v2i32|v4i16|v8i8)(_v.*)?")>; 8801095a5dSDimitry Andricdef KryoWrite_2cyc_XY_XY_150ln : 8901095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 9001095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 9101095a5dSDimitry Andric} 9201095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_XY_150ln], 9301095a5dSDimitry Andric (instregex "((S|U)ADDLP|ABS)(v2i64|v4i32|v8i16|v16i8)(_v.*)?")>; 9401095a5dSDimitry Andricdef KryoWrite_3cyc_XY_XY_XY_noRSV_179ln : 9501095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY, KryoUnitXY]> { 9601095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 4; 9701095a5dSDimitry Andric} 9801095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_XY_XY_noRSV_179ln], 9901095a5dSDimitry Andric (instrs SADDLVv4i32v, UADDLVv4i32v)>; 10001095a5dSDimitry Andricdef KryoWrite_5cyc_XY_XY_XY_noRSV_180ln : 10101095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY, KryoUnitXY]> { 10201095a5dSDimitry Andric let Latency = 5; let NumMicroOps = 4; 10301095a5dSDimitry Andric} 10401095a5dSDimitry Andricdef : InstRW<[KryoWrite_5cyc_XY_XY_XY_noRSV_180ln], 10501095a5dSDimitry Andric (instrs SADDLVv8i16v, UADDLVv8i16v)>; 10601095a5dSDimitry Andricdef KryoWrite_6cyc_XY_XY_X_noRSV_181ln : 10701095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY, KryoUnitX]> { 10801095a5dSDimitry Andric let Latency = 6; let NumMicroOps = 4; 10901095a5dSDimitry Andric} 11001095a5dSDimitry Andricdef : InstRW<[KryoWrite_6cyc_XY_XY_X_noRSV_181ln], 11101095a5dSDimitry Andric (instrs SADDLVv16i8v, UADDLVv16i8v)>; 11201095a5dSDimitry Andricdef KryoWrite_3cyc_XY_noRSV_158ln : 11301095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 11401095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 11501095a5dSDimitry Andric} 11601095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_noRSV_158ln], 11701095a5dSDimitry Andric (instrs SADDLVv4i16v, UADDLVv4i16v, ADDVv4i16v)>; 11801095a5dSDimitry Andricdef KryoWrite_4cyc_X_noRSV_169ln : 11901095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 12001095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 2; 12101095a5dSDimitry Andric} 12201095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_X_noRSV_169ln], 12301095a5dSDimitry Andric (instrs SADDLVv8i8v, UADDLVv8i8v, ADDVv8i8v)>; 12401095a5dSDimitry Andricdef KryoWrite_2cyc_XY_XY_XY_XY_176ln : 12501095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY, KryoUnitXY, KryoUnitXY]> { 12601095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 4; 12701095a5dSDimitry Andric} 12801095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_XY_XY_XY_176ln], 12901095a5dSDimitry Andric (instregex "(S|U)(ADDW|SUBW)v.*")>; 13001095a5dSDimitry Andricdef KryoWrite_4cyc_X_noRSV_40ln : 13101095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 13201095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 2; 13301095a5dSDimitry Andric} 13401095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_X_noRSV_40ln], 13501095a5dSDimitry Andric (instregex "(S|U)CVTFS(W|X)(D|S)ri")>; 13601095a5dSDimitry Andricdef KryoWrite_4cyc_X_noRSV_97ln : 13701095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 13801095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 2; 13901095a5dSDimitry Andric} 14001095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_X_noRSV_97ln], 14101095a5dSDimitry Andric (instregex "(S|U)CVTFU(W|X)(D|S)ri")>; 14201095a5dSDimitry Andricdef KryoWrite_4cyc_X_noRSV_110ln : 14301095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 14401095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 2; 14501095a5dSDimitry Andric} 14601095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_X_noRSV_110ln], 14701095a5dSDimitry Andric (instregex "(S|U)CVTF(v1i32|v2i32|v1i64|v2f32|d|s)(_shift)?")>; 14801095a5dSDimitry Andricdef KryoWrite_4cyc_X_X_114ln : 14901095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX]> { 15001095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 2; 15101095a5dSDimitry Andric} 15201095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_X_X_114ln], 15301095a5dSDimitry Andric (instregex "(S|U)CVTF(v2i64|v4i32|v2f64|v4f32)(_shift)?")>; 15401095a5dSDimitry Andricdef KryoWrite_1cyc_XA_Y_98ln : 15501095a5dSDimitry Andric SchedWriteRes<[KryoUnitXA, KryoUnitY]> { 15601095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 15701095a5dSDimitry Andric} 15801095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XA_Y_98ln], 15901095a5dSDimitry Andric (instregex "(S|U)DIV(_Int)?(W|X)r")>; 16001095a5dSDimitry Andricdef KryoWrite_2cyc_XY_XY_152ln : 16101095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 16201095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 16301095a5dSDimitry Andric} 16401095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_XY_152ln], 16501095a5dSDimitry Andric (instregex "(S|U)H(ADD|SUB)(v16i8|v8i16|v4i32)")>; 16601095a5dSDimitry Andricdef KryoWrite_2cyc_XY_noRSV_149ln : 16701095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 16801095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 16901095a5dSDimitry Andric} 17001095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_noRSV_149ln], 17101095a5dSDimitry Andric (instregex "((S|U)H(ADD|SUB)|ADDP)(v8i8|v4i16|v2i32)")>; 17201095a5dSDimitry Andricdef KryoWrite_4cyc_X_70ln : 17301095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 17401095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 1; 17501095a5dSDimitry Andric} 17601095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_X_70ln], 17701095a5dSDimitry Andric (instregex "(S|U)(MADDL|MSUBL)rrr")>; 17801095a5dSDimitry Andricdef KryoWrite_4cyc_X_X_191ln : 17901095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX]> { 18001095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 2; 18101095a5dSDimitry Andric} 18201095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_X_X_191ln], 18301095a5dSDimitry Andric (instregex "(S|U|SQD)(MLAL|MLSL|MULL)v.*")>; 18401095a5dSDimitry Andricdef KryoWrite_1cyc_XY_195ln : 18501095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 18601095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 1; 18701095a5dSDimitry Andric} 18801095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_195ln], 18901095a5dSDimitry Andric (instregex "(S|U)MOVv.*")>; 19001095a5dSDimitry Andricdef KryoWrite_5cyc_X_71ln : 19101095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 19201095a5dSDimitry Andric let Latency = 5; let NumMicroOps = 1; 19301095a5dSDimitry Andric} 19401095a5dSDimitry Andricdef : InstRW<[KryoWrite_5cyc_X_71ln], 19501095a5dSDimitry Andric (instrs SMULHrr, UMULHrr)>; 19601095a5dSDimitry Andricdef KryoWrite_3cyc_XY_noRSV_186ln : 19701095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 19801095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 19901095a5dSDimitry Andric} 20001095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_noRSV_186ln], 20101095a5dSDimitry Andric (instregex "^(S|U)QADD(v8i8|v4i16|v2i32)")>; 20201095a5dSDimitry Andricdef KryoWrite_3cyc_XY_XY_187ln : 20301095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 20401095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 20501095a5dSDimitry Andric} 20601095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_XY_187ln], 20701095a5dSDimitry Andric (instregex "^(S|U)QADD(v16i8|v8i16|v4i32|v2i64)")>; 20801095a5dSDimitry Andricdef KryoWrite_3cyc_XY_noRSV_69ln : 20901095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 21001095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 21101095a5dSDimitry Andric} 21201095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_noRSV_69ln], 21301095a5dSDimitry Andric (instregex "(S|U|SU|US)QADD(v1i8|v1i16|v2i16|v1i32|v1i64)")>; 21401095a5dSDimitry Andricdef KryoWrite_3cyc_XY_noRSV_248ln : 21501095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 21601095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 21701095a5dSDimitry Andric} 21801095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_noRSV_248ln], 21901095a5dSDimitry Andric (instregex "(S|U)QSHLU?(d|s|h|b|(v8i8|v4i16|v2i32)_shift)$")>; 22001095a5dSDimitry Andricdef KryoWrite_3cyc_XY_XY_250ln : 22101095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 22201095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 22301095a5dSDimitry Andric} 22401095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_XY_250ln], 22501095a5dSDimitry Andric (instregex "(S|U)(QSHLU?|RSHR)(v16i8|v8i16|v4i32|v2i64)_shift$")>; 22601095a5dSDimitry Andricdef KryoWrite_3cyc_XY_noRSV_246ln : 22701095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 22801095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 22901095a5dSDimitry Andric} 23001095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_noRSV_246ln], 23101095a5dSDimitry Andric (instregex "(S|U)(QSHL|RSHL|QRSHL)(v1i8|v1i16|v1i32|v1i64|v8i8|v4i16|v2i32)$")>; 23201095a5dSDimitry Andricdef KryoWrite_3cyc_XY_XY_251ln : 23301095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 23401095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 23501095a5dSDimitry Andric} 23601095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_XY_251ln], 23701095a5dSDimitry Andric (instregex "(S|U)(QSHL|RSHL|QRSHL)(v16i8|v8i16|v4i32|v2i64)$")>; 23801095a5dSDimitry Andricdef KryoWrite_6cyc_XY_X_238ln : 23901095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitX]> { 24001095a5dSDimitry Andric let Latency = 6; let NumMicroOps = 2; 24101095a5dSDimitry Andric} 24201095a5dSDimitry Andricdef : InstRW<[KryoWrite_6cyc_XY_X_238ln], 24301095a5dSDimitry Andric (instregex "((S|U)QR?SHRN|SQR?SHRUN)(v16i8|v8i16|v4i32)_shift$")>; 24401095a5dSDimitry Andricdef KryoWrite_3cyc_XY_noRSV_249ln : 24501095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 24601095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 24701095a5dSDimitry Andric} 24801095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_noRSV_249ln], 24901095a5dSDimitry Andric (instregex "((S|U)QR?SHRN|SQR?SHRUN)(s|h|b)?")>; 25001095a5dSDimitry Andricdef KryoWrite_6cyc_XY_X_noRSV_252ln : 25101095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitX]> { 25201095a5dSDimitry Andric let Latency = 6; let NumMicroOps = 3; 25301095a5dSDimitry Andric} 25401095a5dSDimitry Andricdef : InstRW<[KryoWrite_6cyc_XY_X_noRSV_252ln], 25501095a5dSDimitry Andric (instregex "((S|U)QR?SHRN|SQR?SHRUN)(v8i8|v4i16|v2i32)_shift?")>; 25601095a5dSDimitry Andricdef KryoWrite_3cyc_XY_noRSV_161ln : 25701095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 25801095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 25901095a5dSDimitry Andric} 26001095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_noRSV_161ln], 26101095a5dSDimitry Andric (instregex "(S|U)QSUB(v8i8|v4i16|v2i32|v1i64|v1i32|v1i16|v1i8)")>; 26201095a5dSDimitry Andricdef KryoWrite_3cyc_XY_noRSV_163ln : 26301095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 26401095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 26501095a5dSDimitry Andric} 26601095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_noRSV_163ln], 26701095a5dSDimitry Andric (instregex "(S|U)QXTU?N(v16i8|v8i16|v4i32|v8i8|v4i16|v2i32)")>; 26801095a5dSDimitry Andricdef KryoWrite_3cyc_XY_noRSV_162ln : 26901095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 27001095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 27101095a5dSDimitry Andric} 27201095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_noRSV_162ln], 27301095a5dSDimitry Andric (instregex "(S|U)QXTU?N(v1i8|v1i16|v1i32)")>; 27401095a5dSDimitry Andricdef KryoWrite_3cyc_XY_noRSV_247ln : 27501095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 27601095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 27701095a5dSDimitry Andric} 27801095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_noRSV_247ln], 27901095a5dSDimitry Andric (instregex "(S|U)RSHR(d|(v8i8|v4i16|v2i32)_shift)$")>; 28001095a5dSDimitry Andricdef KryoWrite_2cyc_XY_noRSV_239ln : 28101095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 28201095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 28301095a5dSDimitry Andric} 28401095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_noRSV_239ln], 28501095a5dSDimitry Andric (instregex "(S|U)SHL(d|v8i8|v4i16|v2i32|v1i64)$")>; 28601095a5dSDimitry Andricdef KryoWrite_2cyc_XY_XY_243ln : 28701095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 28801095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 28901095a5dSDimitry Andric} 29001095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_XY_243ln], 29101095a5dSDimitry Andric (instregex "(S|U)SHL(v16i8|v8i16|v4i32|v2i64)$")>; 29201095a5dSDimitry Andricdef KryoWrite_2cyc_XY_XY_241ln : 29301095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 29401095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 29501095a5dSDimitry Andric} 29601095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_XY_241ln], 29701095a5dSDimitry Andric (instregex "(S|U)?SHLL(v16i8|v8i16|v4i32|v8i8|v4i16|v2i32)(_shift)?$")>; 29801095a5dSDimitry Andricdef KryoWrite_2cyc_XY_noRSV_240ln : 29901095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 30001095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 30101095a5dSDimitry Andric} 30201095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_noRSV_240ln], 30301095a5dSDimitry Andric (instregex "((S|U)SHR|SHL)(d|(v8i8|v4i16|v2i32)_shift)$")>; 30401095a5dSDimitry Andricdef KryoWrite_2cyc_XY_XY_242ln : 30501095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 30601095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 30701095a5dSDimitry Andric} 30801095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_XY_242ln], 30901095a5dSDimitry Andric (instregex "((S|U)SHR|SHL)(v16i8|v8i16|v4i32|v2i64)_shift$")>; 31001095a5dSDimitry Andricdef KryoWrite_2cyc_XY_XY_183ln : 31101095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 31201095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 31301095a5dSDimitry Andric} 31401095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_XY_183ln], 31501095a5dSDimitry Andric (instregex "(S|U)(MAX|MIN)P?(v16i8|v8i16|v4i32)")>; 31601095a5dSDimitry Andricdef KryoWrite_2cyc_XY_noRSV_182ln : 31701095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 31801095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 31901095a5dSDimitry Andric} 32001095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_noRSV_182ln], 32101095a5dSDimitry Andric (instregex "(S|U)(MAX|MIN)P?(v8i8|v4i16|v2i32)")>; 32201095a5dSDimitry Andricdef KryoWrite_3cyc_XY_noRSV_184ln : 32301095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 32401095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 32501095a5dSDimitry Andric} 32601095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_noRSV_184ln], 32701095a5dSDimitry Andric (instregex "(S|U)(MAX|MIN)V(v4i16v|v8i8v|v4i32)")>; 32801095a5dSDimitry Andricdef KryoWrite_4cyc_X_noRSV_185ln : 32901095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 33001095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 2; 33101095a5dSDimitry Andric} 33201095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_X_noRSV_185ln], 33301095a5dSDimitry Andric (instregex "(S|U)(MAX|MIN)V(v16i8v|v8i16v)")>; 33401095a5dSDimitry Andricdef KryoWrite_2cyc_XY_noRSV_67ln : 33501095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 33601095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 33701095a5dSDimitry Andric} 33801095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_noRSV_67ln], 33901095a5dSDimitry Andric (instrs ABSv1i64)>; 34001095a5dSDimitry Andricdef KryoWrite_1cyc_XY_63ln : 34101095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 34201095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 1; 34301095a5dSDimitry Andric} 34401095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_63ln, ReadI, ReadI], 34501095a5dSDimitry Andric (instregex "ADC.*")>; 34601095a5dSDimitry Andricdef KryoWrite_1cyc_XY_63_1ln : 34701095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 34801095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 1; 34901095a5dSDimitry Andric} 35001095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_63_1ln], 35101095a5dSDimitry Andric (instregex "ADR.*")>; 35201095a5dSDimitry Andricdef KryoWrite_1cyc_XY_62ln : 35301095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 35401095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 1; 35501095a5dSDimitry Andric} 35601095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_62ln, ReadI], 35701095a5dSDimitry Andric (instregex "ADDS?(W|X)ri")>; 35801095a5dSDimitry Andricdef KryoWrite_2cyc_XY_XY_64ln : 35901095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 36001095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 36101095a5dSDimitry Andric} 36201095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_XY_64ln, ReadI, ReadI], 36301095a5dSDimitry Andric (instregex "ADDS?(W|X)r(r|s|x)(64)?")>; 36401095a5dSDimitry Andricdef KryoWrite_1cyc_XY_noRSV_65ln : 36501095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 36601095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 36701095a5dSDimitry Andric} 36801095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_noRSV_65ln], 36901095a5dSDimitry Andric (instrs ADDv1i64)>; 37001095a5dSDimitry Andricdef KryoWrite_1cyc_XY_noRSV_144ln : 37101095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 37201095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 37301095a5dSDimitry Andric} 37401095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_noRSV_144ln], 37501095a5dSDimitry Andric (instregex "(ADD|SUB)(v8i8|v4i16|v2i32|v1i64)")>; 37601095a5dSDimitry Andricdef KryoWrite_1cyc_XY_XY_146ln : 37701095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 37801095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 37901095a5dSDimitry Andric} 38001095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_XY_146ln], 38101095a5dSDimitry Andric (instregex "(ADD|SUB)(v16i8|v8i16|v4i32|v2i64)")>; 38201095a5dSDimitry Andricdef KryoWrite_4cyc_XY_X_noRSV_171ln : 38301095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitX]> { 38401095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 3; 38501095a5dSDimitry Andric} 38601095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_XY_X_noRSV_171ln], 38701095a5dSDimitry Andric (instregex "(ADD|SUB)HNv.*")>; 38801095a5dSDimitry Andricdef KryoWrite_1cyc_XY_noRSV_66ln : 38901095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 39001095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 39101095a5dSDimitry Andric} 39201095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_noRSV_66ln], 39301095a5dSDimitry Andric (instrs ADDPv2i64p)>; 39401095a5dSDimitry Andricdef KryoWrite_2cyc_XY_XY_153ln : 39501095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 39601095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 39701095a5dSDimitry Andric} 39801095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_XY_153ln], 39901095a5dSDimitry Andric (instregex "ADDP(v16i8|v8i16|v4i32|v2i64)")>; 40001095a5dSDimitry Andricdef KryoWrite_3cyc_XY_XY_noRSV_170ln : 40101095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 40201095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 3; 40301095a5dSDimitry Andric} 40401095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_XY_noRSV_170ln], 40501095a5dSDimitry Andric (instrs ADDVv4i32v)>; 40601095a5dSDimitry Andricdef KryoWrite_4cyc_XY_XY_noRSV_173ln : 40701095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 40801095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 3; 40901095a5dSDimitry Andric} 41001095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_XY_XY_noRSV_173ln], 41101095a5dSDimitry Andric (instrs ADDVv8i16v)>; 41201095a5dSDimitry Andricdef KryoWrite_5cyc_XY_X_noRSV_174ln : 41301095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitX]> { 41401095a5dSDimitry Andric let Latency = 5; let NumMicroOps = 3; 41501095a5dSDimitry Andric} 41601095a5dSDimitry Andricdef : InstRW<[KryoWrite_5cyc_XY_X_noRSV_174ln], 41701095a5dSDimitry Andric (instrs ADDVv16i8v)>; 41801095a5dSDimitry Andricdef KryoWrite_3cyc_XY_XY_X_X_27ln : 41901095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY, KryoUnitX, KryoUnitX]> { 42001095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 4; 42101095a5dSDimitry Andric} 42201095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_XY_X_X_27ln], 42301095a5dSDimitry Andric (instrs AESDrr, AESErr)>; 42401095a5dSDimitry Andricdef KryoWrite_2cyc_X_X_22ln : 42501095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX]> { 42601095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 42701095a5dSDimitry Andric} 42801095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_X_X_22ln], 42901095a5dSDimitry Andric (instrs AESIMCrr, AESMCrr)>; 43001095a5dSDimitry Andricdef KryoWrite_1cyc_XY_noRSV_76ln : 43101095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 43201095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 43301095a5dSDimitry Andric} 43401095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_noRSV_76ln], 43501095a5dSDimitry Andric (instregex "((AND|ORN|EOR|EON)S?(Wr[rsi]|v8i8|v4i16|v2i32)|(ORR|BIC)S?(Wr[rs]|v8i8|v4i16|v2i32))")>; 43601095a5dSDimitry Andricdef KryoWrite_1cyc_XY_XY_79ln : 43701095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 43801095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 43901095a5dSDimitry Andric} 44001095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_XY_79ln], 44101095a5dSDimitry Andric (instregex "((AND|ORN|EOR|EON)S?(Xr[rsi]|v16i8|v8i16|v4i32)|(ORR|BIC)S?(Xr[rs]|v16i8|v8i16|v4i32))")>; 44201095a5dSDimitry Andricdef KryoWrite_1cyc_X_72ln : 44301095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 44401095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 1; 44501095a5dSDimitry Andric} 44601095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_X_72ln], 44701095a5dSDimitry Andric (instregex "(S|U)?BFM.*")>; 44801095a5dSDimitry Andricdef KryoWrite_1cyc_XY_noRSV_77ln : 44901095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 45001095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 45101095a5dSDimitry Andric} 45201095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_noRSV_77ln], 45301095a5dSDimitry Andric (instregex "(BIC|ORR)S?Wri")>; 45401095a5dSDimitry Andricdef KryoWrite_1cyc_XY_XY_78ln : 45501095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 45601095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 45701095a5dSDimitry Andric} 45801095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_XY_78ln], 45901095a5dSDimitry Andric (instregex "(BIC|ORR)S?Xri")>; 46001095a5dSDimitry Andricdef KryoWrite_1cyc_X_noRSV_74ln : 46101095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 46201095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 46301095a5dSDimitry Andric} 46401095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_X_noRSV_74ln], 465cfca06d7SDimitry Andric (instrs BIFv8i8, BITv8i8, BSLv8i8, BSPv8i8)>; 46601095a5dSDimitry Andricdef KryoWrite_1cyc_X_X_75ln : 46701095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX]> { 46801095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 46901095a5dSDimitry Andric} 47001095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_X_X_75ln], 471cfca06d7SDimitry Andric (instrs BIFv16i8, BITv16i8, BSLv16i8, BSPv16i8)>; 47201095a5dSDimitry Andricdef KryoWrite_0cyc_noRSV_11ln : 47301095a5dSDimitry Andric SchedWriteRes<[]> { 47401095a5dSDimitry Andric let Latency = 0; let NumMicroOps = 1; 47501095a5dSDimitry Andric} 47601095a5dSDimitry Andricdef : InstRW<[KryoWrite_0cyc_noRSV_11ln], 47701095a5dSDimitry Andric (instrs BRK, DCPS1, DCPS2, DCPS3, HLT, HVC, ISB, HINT, SMC, SVC)>; 47801095a5dSDimitry Andricdef KryoWrite_0cyc_XY_16ln : 47901095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 48001095a5dSDimitry Andric let Latency = 0; let NumMicroOps = 1; 48101095a5dSDimitry Andric} 48201095a5dSDimitry Andricdef : InstRW<[KryoWrite_0cyc_XY_16ln, ReadI], 48301095a5dSDimitry Andric (instregex "(CCMN|CCMP)(W|X)i")>; 48401095a5dSDimitry Andricdef KryoWrite_0cyc_XY_16_1ln : 48501095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 48601095a5dSDimitry Andric let Latency = 0; let NumMicroOps = 1; 48701095a5dSDimitry Andric} 48801095a5dSDimitry Andricdef : InstRW<[KryoWrite_0cyc_XY_16_1ln, ReadI, ReadI], 48901095a5dSDimitry Andric (instregex "(CCMN|CCMP)(W|X)r")>; 49001095a5dSDimitry Andricdef KryoWrite_2cyc_XY_3ln : 49101095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 49201095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 1; 49301095a5dSDimitry Andric} 49401095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_3ln, ReadI], 49501095a5dSDimitry Andric (instregex "(CLS|CLZ)(W|X)r")>; 49601095a5dSDimitry Andricdef KryoWrite_2cyc_XY_noRSV_7ln : 49701095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 49801095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 49901095a5dSDimitry Andric} 50001095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_noRSV_7ln], 50101095a5dSDimitry Andric (instregex "(CLS|CLZ|CNT)(v4i32|v8i16|v16i8)")>; 50201095a5dSDimitry Andricdef KryoWrite_2cyc_XY_XY_8ln : 50301095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 50401095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 50501095a5dSDimitry Andric} 50601095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_XY_8ln], 50701095a5dSDimitry Andric (instregex "(CLS|CLZ|CNT)(v2i32|v4i16|v8i8)")>; 50801095a5dSDimitry Andricdef KryoWrite_2cyc_XY_noRSV_80ln : 50901095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 51001095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 51101095a5dSDimitry Andric} 51201095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_noRSV_80ln], 51301095a5dSDimitry Andric (instregex "CM(EQ|GE|HS|GT|HI|TST)(v8i8|v4i16|v2i32|v1i64)$")>; 51401095a5dSDimitry Andricdef KryoWrite_2cyc_XY_XY_83ln : 51501095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 51601095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 51701095a5dSDimitry Andric} 51801095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_XY_83ln], 51901095a5dSDimitry Andric (instregex "CM(EQ|GE|HS|GT|HI|TST)(v16i8|v8i16|v4i32|v2i64)$")>; 52001095a5dSDimitry Andricdef KryoWrite_2cyc_XY_noRSV_81ln : 52101095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 52201095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 52301095a5dSDimitry Andric} 52401095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_noRSV_81ln], 52501095a5dSDimitry Andric (instregex "CM(EQ|LE|GE|GT|LT)(v8i8|v4i16|v2i32|v1i64)rz$")>; 52601095a5dSDimitry Andricdef KryoWrite_2cyc_XY_XY_82ln : 52701095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 52801095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 52901095a5dSDimitry Andric} 53001095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_XY_82ln], 53101095a5dSDimitry Andric (instregex "CM(EQ|LE|GE|GT|LT)(v16i8|v8i16|v4i32|v2i64)rz$")>; 53201095a5dSDimitry Andricdef KryoWrite_3cyc_XY_4ln : 53301095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 53401095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 1; 53501095a5dSDimitry Andric} 53601095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_4ln, ReadI, ReadISReg], 53701095a5dSDimitry Andric (instregex "CRC32.*")>; 53801095a5dSDimitry Andricdef KryoWrite_1cyc_XY_20ln : 53901095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 54001095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 1; 54101095a5dSDimitry Andric} 54201095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_20ln, ReadI, ReadI], 54301095a5dSDimitry Andric (instregex "CSEL(W|X)r")>; 54401095a5dSDimitry Andricdef KryoWrite_1cyc_X_17ln : 54501095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 54601095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 1; 54701095a5dSDimitry Andric} 54801095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_X_17ln, ReadI, ReadI], 54901095a5dSDimitry Andric (instregex "(CSINC|CSNEG)(W|X)r")>; 55001095a5dSDimitry Andricdef KryoWrite_1cyc_XY_18ln : 55101095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 55201095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 1; 55301095a5dSDimitry Andric} 55401095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_18ln, ReadI, ReadI], 55501095a5dSDimitry Andric (instregex "(CSINV)(W|X)r")>; 55601095a5dSDimitry Andricdef KryoWrite_3cyc_LS_X_13ln : 55701095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitX]> { 55801095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 55901095a5dSDimitry Andric} 56001095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_X_13ln], 56101095a5dSDimitry Andric (instrs DRPS)>; 56201095a5dSDimitry Andricdef KryoWrite_0cyc_LS_10ln : 56301095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS]> { 56401095a5dSDimitry Andric let Latency = 0; let NumMicroOps = 1; 56501095a5dSDimitry Andric} 56601095a5dSDimitry Andricdef : InstRW<[KryoWrite_0cyc_LS_10ln], 56701095a5dSDimitry Andric (instrs DSB, DMB, CLREX)>; 56801095a5dSDimitry Andricdef KryoWrite_1cyc_X_noRSV_196ln : 56901095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 57001095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 57101095a5dSDimitry Andric} 57201095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_X_noRSV_196ln], 57301095a5dSDimitry Andric (instregex "DUP(v8i8|v4i16|v2i32)(gpr|lane)")>; 57401095a5dSDimitry Andricdef KryoWrite_1cyc_X_X_197ln : 57501095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX]> { 57601095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 57701095a5dSDimitry Andric} 57801095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_X_X_197ln], 57901095a5dSDimitry Andric (instregex "DUP(v16i8|v8i16|v4i32|v2i64)(gpr|lane)")>; 58001095a5dSDimitry Andricdef KryoWrite_3cyc_LS_LS_X_15ln : 58101095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitX]> { 58201095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 3; 58301095a5dSDimitry Andric} 58401095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_LS_X_15ln], 58501095a5dSDimitry Andric (instrs ERET)>; 58601095a5dSDimitry Andricdef KryoWrite_1cyc_X_noRSV_207ln : 58701095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 58801095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 58901095a5dSDimitry Andric} 59001095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_X_noRSV_207ln], 59101095a5dSDimitry Andric (instrs EXTv8i8)>; 59201095a5dSDimitry Andricdef KryoWrite_1cyc_X_X_212ln : 59301095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX]> { 59401095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 59501095a5dSDimitry Andric} 59601095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_X_X_212ln], 59701095a5dSDimitry Andric (instrs EXTv16i8)>; 59801095a5dSDimitry Andricdef KryoWrite_2cyc_XY_X_136ln : 59901095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitX]> { 60001095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 60101095a5dSDimitry Andric} 60201095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_X_136ln], 60301095a5dSDimitry Andric (instrs EXTRWrri, EXTRXrri)>; 60401095a5dSDimitry Andricdef KryoWrite_2cyc_XY_noRSV_35ln : 60501095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 60601095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 60701095a5dSDimitry Andric} 60801095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_noRSV_35ln], 60901095a5dSDimitry Andric (instregex "F(MAX|MIN)(NM)?P?(D|S)rr")>; 61001095a5dSDimitry Andricdef KryoWrite_2cyc_XY_XY_106ln : 61101095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 61201095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 61301095a5dSDimitry Andric} 61401095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_XY_106ln], 61501095a5dSDimitry Andric (instregex "(F(MAX|MIN)(NM)?P?|FAC(GE|GT)|FCM(EQ|GE|GT))(v2i64p|v2f64|v4f32)")>; 61601095a5dSDimitry Andricdef KryoWrite_2cyc_XY_noRSV_104ln : 61701095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 61801095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 61901095a5dSDimitry Andric} 62001095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_noRSV_104ln], 62101095a5dSDimitry Andric (instregex "(F(MAX|MIN)(NM)?P?|FAC(GE|GT)|FCM(EQ|GE|GT))(v2f32|v2i32p)")>; 62201095a5dSDimitry Andricdef KryoWrite_3cyc_XY_noRSV_107ln : 62301095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 62401095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 62501095a5dSDimitry Andric} 62601095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_noRSV_107ln], 62701095a5dSDimitry Andric (instregex "F(MAX|MIN)(NM)?Vv4i32v")>; 62801095a5dSDimitry Andricdef KryoWrite_3cyc_XY_noRSV_101ln : 62901095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 63001095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 63101095a5dSDimitry Andric} 63201095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_noRSV_101ln], 63301095a5dSDimitry Andric (instregex "FABD(32|64|v2f32)")>; 63401095a5dSDimitry Andricdef KryoWrite_3cyc_XY_XY_103ln : 63501095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 63601095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 63701095a5dSDimitry Andric} 63801095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_XY_103ln], 63901095a5dSDimitry Andric (instregex "(FABD|FADD|FSUB|FADDP)(v4f32|v2f64)")>; 64001095a5dSDimitry Andricdef KryoWrite_1cyc_XY_noRSV_48ln : 64101095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 64201095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 64301095a5dSDimitry Andric} 64401095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_noRSV_48ln], 64501095a5dSDimitry Andric (instregex "F(ABS|NEG)(D|S)r")>; 64601095a5dSDimitry Andricdef KryoWrite_1cyc_XY_noRSV_124ln : 64701095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 64801095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 64901095a5dSDimitry Andric} 65001095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_noRSV_124ln], 65101095a5dSDimitry Andric (instregex "F(ABS|NEG)v2f32")>; 65201095a5dSDimitry Andricdef KryoWrite_1cyc_XY_XY_125ln : 65301095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 65401095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 65501095a5dSDimitry Andric} 65601095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_XY_125ln], 65701095a5dSDimitry Andric (instregex "F(ABS|NEG)(v2f64|v4f32)")>; 65801095a5dSDimitry Andricdef KryoWrite_2cyc_XY_noRSV_33ln : 65901095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 66001095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 66101095a5dSDimitry Andric} 66201095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_noRSV_33ln], 66301095a5dSDimitry Andric (instregex "(FAC(GE|GT)|FCM(EQ|GE|GT))(32|64)")>; 66401095a5dSDimitry Andricdef KryoWrite_3cyc_XY_noRSV_30ln : 66501095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 66601095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 66701095a5dSDimitry Andric} 66801095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_noRSV_30ln], 66901095a5dSDimitry Andric (instregex "(FADD|FSUB)(D|S)rr")>; 67001095a5dSDimitry Andricdef KryoWrite_3cyc_XY_noRSV_100ln : 67101095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 67201095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 67301095a5dSDimitry Andric} 67401095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_noRSV_100ln], 67501095a5dSDimitry Andric (instregex "(FADD|FSUB|FADDP)v2f32")>; 67601095a5dSDimitry Andricdef KryoWrite_3cyc_XY_noRSV_29ln : 67701095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 67801095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 67901095a5dSDimitry Andric} 68001095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_noRSV_29ln], 68101095a5dSDimitry Andric (instregex "FADDP(v2i32p|v2i64p)")>; 68201095a5dSDimitry Andricdef KryoWrite_0cyc_XY_31ln : 68301095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 68401095a5dSDimitry Andric let Latency = 0; let NumMicroOps = 1; 68501095a5dSDimitry Andric} 68601095a5dSDimitry Andricdef : InstRW<[KryoWrite_0cyc_XY_31ln], 68701095a5dSDimitry Andric (instregex "FCCMPE?(D|S)rr")>; 68801095a5dSDimitry Andricdef KryoWrite_2cyc_XY_noRSV_34ln : 68901095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 69001095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 69101095a5dSDimitry Andric} 69201095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_noRSV_34ln], 69301095a5dSDimitry Andric (instregex "FCM(EQ|LE|GE|GT|LT)(v1i32|v1i64)rz")>; 69401095a5dSDimitry Andricdef KryoWrite_2cyc_XY_XY_36ln : 69501095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 69601095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 69701095a5dSDimitry Andric} 69801095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_XY_36ln], 69901095a5dSDimitry Andric (instregex "FCM(EQ|LE|GE|GT|LT)(v2i64|v4i32)rz")>; 70001095a5dSDimitry Andricdef KryoWrite_2cyc_XY_noRSV_105ln : 70101095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 70201095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 70301095a5dSDimitry Andric} 70401095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_noRSV_105ln], 70501095a5dSDimitry Andric (instregex "FCM(EQ|LE|GE|GT|LT)v2i32rz")>; 70601095a5dSDimitry Andricdef KryoWrite_0cyc_XY_32ln : 70701095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 70801095a5dSDimitry Andric let Latency = 0; let NumMicroOps = 1; 70901095a5dSDimitry Andric} 71001095a5dSDimitry Andricdef : InstRW<[KryoWrite_0cyc_XY_32ln], 71101095a5dSDimitry Andric (instregex "FCMPE?(D|S)r(r|i)")>; 71201095a5dSDimitry Andricdef KryoWrite_1cyc_XY_noRSV_49ln : 71301095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 71401095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 71501095a5dSDimitry Andric} 71601095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_noRSV_49ln], 71701095a5dSDimitry Andric (instrs FCSELDrrr, FCSELSrrr)>; 71801095a5dSDimitry Andricdef KryoWrite_4cyc_X_noRSV_41ln : 71901095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 72001095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 2; 72101095a5dSDimitry Andric} 72201095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_X_noRSV_41ln], 72301095a5dSDimitry Andric (instrs FCVTDHr, FCVTDSr, FCVTHDr, FCVTHSr, FCVTSDr, FCVTSHr)>; 72401095a5dSDimitry Andricdef KryoWrite_4cyc_X_38ln : 72501095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 72601095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 1; 72701095a5dSDimitry Andric} 72801095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_X_38ln], 72901095a5dSDimitry Andric (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))$")>; 73001095a5dSDimitry Andricdef KryoWrite_4cyc_X_noRSV_113ln : 73101095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 73201095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 2; 73301095a5dSDimitry Andric} 73401095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_X_noRSV_113ln], 73501095a5dSDimitry Andric (instregex "FCVT((A|N|M|P)(S|U)|Z(S|U)_Int)(v1i32|v1i64|v2f32)$")>; 73601095a5dSDimitry Andricdef KryoWrite_4cyc_X_X_117ln : 73701095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX]> { 73801095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 2; 73901095a5dSDimitry Andric} 74001095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_X_X_117ln], 74101095a5dSDimitry Andric (instregex "FCVT((A|N|M|P)(S|U)|Z(S|U)_Int)(v4f32|v2f64)$")>; 74201095a5dSDimitry Andricdef KryoWrite_5cyc_X_X_XY_noRSV_119ln : 74301095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitXY]> { 74401095a5dSDimitry Andric let Latency = 5; let NumMicroOps = 4; 74501095a5dSDimitry Andric} 74601095a5dSDimitry Andricdef : InstRW<[KryoWrite_5cyc_X_X_XY_noRSV_119ln], 74701095a5dSDimitry Andric (instregex "FCVTX?N(v2f32|v4f32|v2i32|v4i16|v4i32|v8i16)$")>; 74801095a5dSDimitry Andricdef KryoWrite_4cyc_X_X_116ln : 74901095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX]> { 75001095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 2; 75101095a5dSDimitry Andric} 75201095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_X_X_116ln], 75301095a5dSDimitry Andric (instregex "FCVTL(v2i32|v4i16|v4i32|v8i16)$")>; 75401095a5dSDimitry Andricdef KryoWrite_4cyc_X_noRSV_112ln : 75501095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 75601095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 2; 75701095a5dSDimitry Andric} 75801095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_X_noRSV_112ln], 75901095a5dSDimitry Andric (instrs FCVTXNv1i64)>; 76001095a5dSDimitry Andricdef KryoWrite_4cyc_X_37ln : 76101095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 76201095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 1; 76301095a5dSDimitry Andric} 76401095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_X_37ln], 76501095a5dSDimitry Andric (instregex "FCVTZ(S|U)(S|U)(W|X)(D|S)ri?$")>; 76601095a5dSDimitry Andricdef KryoWrite_4cyc_X_noRSV_111ln : 76701095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 76801095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 2; 76901095a5dSDimitry Andric} 77001095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_X_noRSV_111ln], 77101095a5dSDimitry Andric (instregex "FCVTZ(S|U)(v2f32|v1i32|v1i64|v2i32(_shift)?)$")>; 77201095a5dSDimitry Andricdef KryoWrite_4cyc_X_X_115ln : 77301095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX]> { 77401095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 2; 77501095a5dSDimitry Andric} 77601095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_X_X_115ln], 77701095a5dSDimitry Andric (instregex "FCVTZ(S|U)(v2f64|v4f32|(v2i64|v4i32)(_shift)?)$")>; 77871d5a254SDimitry Andricdef KryoWrite_10cyc_XA_Y_noRSV_43ln : 77901095a5dSDimitry Andric SchedWriteRes<[KryoUnitXA, KryoUnitY]> { 78071d5a254SDimitry Andric let Latency = 10; let NumMicroOps = 3; 78101095a5dSDimitry Andric} 78271d5a254SDimitry Andricdef : InstRW<[KryoWrite_10cyc_XA_Y_noRSV_43ln], 78371d5a254SDimitry Andric (instrs FDIVSrr)>; 78471d5a254SDimitry Andricdef KryoWrite_14cyc_XA_Y_noRSV_43ln : 78501095a5dSDimitry Andric SchedWriteRes<[KryoUnitXA, KryoUnitY]> { 78671d5a254SDimitry Andric let Latency = 14; let NumMicroOps = 3; 78701095a5dSDimitry Andric} 78871d5a254SDimitry Andricdef : InstRW<[KryoWrite_14cyc_XA_Y_noRSV_43ln], 78971d5a254SDimitry Andric (instrs FDIVDrr)>; 79071d5a254SDimitry Andricdef KryoWrite_10cyc_XA_Y_noRSV_121ln : 79171d5a254SDimitry Andric SchedWriteRes<[KryoUnitXA, KryoUnitY]> { 79271d5a254SDimitry Andric let Latency = 10; let NumMicroOps = 3; 79371d5a254SDimitry Andric} 79471d5a254SDimitry Andricdef : InstRW<[KryoWrite_10cyc_XA_Y_noRSV_121ln], 79501095a5dSDimitry Andric (instrs FDIVv2f32)>; 79671d5a254SDimitry Andricdef KryoWrite_14cyc_XA_Y_XA_Y_123ln : 79701095a5dSDimitry Andric SchedWriteRes<[KryoUnitXA, KryoUnitY, KryoUnitXA, KryoUnitY]> { 79871d5a254SDimitry Andric let Latency = 14; let NumMicroOps = 4; 79901095a5dSDimitry Andric} 80071d5a254SDimitry Andricdef : InstRW<[KryoWrite_14cyc_XA_Y_XA_Y_123ln], 80101095a5dSDimitry Andric (instrs FDIVv2f64, FDIVv4f32)>; 80201095a5dSDimitry Andricdef KryoWrite_5cyc_X_noRSV_55ln : 80301095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 80401095a5dSDimitry Andric let Latency = 5; let NumMicroOps = 2; 80501095a5dSDimitry Andric} 80601095a5dSDimitry Andricdef : InstRW<[KryoWrite_5cyc_X_noRSV_55ln], 80701095a5dSDimitry Andric (instregex "FN?M(ADD|SUB)Srrr")>; 80801095a5dSDimitry Andricdef KryoWrite_6cyc_X_noRSV_57ln : 80901095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 81001095a5dSDimitry Andric let Latency = 6; let NumMicroOps = 2; 81101095a5dSDimitry Andric} 81201095a5dSDimitry Andricdef : InstRW<[KryoWrite_6cyc_X_noRSV_57ln], 81301095a5dSDimitry Andric (instregex "FN?M(ADD|SUB)Drrr")>; 81401095a5dSDimitry Andricdef KryoWrite_5cyc_X_noRSV_51ln : 81501095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 81601095a5dSDimitry Andric let Latency = 5; let NumMicroOps = 2; 81701095a5dSDimitry Andric} 81801095a5dSDimitry Andricdef : InstRW<[KryoWrite_5cyc_X_noRSV_51ln], 81901095a5dSDimitry Andric (instrs FMLAv2f32, FMLSv2f32, FMLAv1i32_indexed, FMLSv1i32_indexed)>; 82001095a5dSDimitry Andricdef KryoWrite_5cyc_X_X_56ln : 82101095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX]> { 82201095a5dSDimitry Andric let Latency = 5; let NumMicroOps = 2; 82301095a5dSDimitry Andric} 82401095a5dSDimitry Andricdef : InstRW<[KryoWrite_5cyc_X_X_56ln], 82501095a5dSDimitry Andric (instrs FMLAv4f32, FMLSv4f32)>; 82601095a5dSDimitry Andricdef KryoWrite_6cyc_X_X_61ln : 82701095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX]> { 82801095a5dSDimitry Andric let Latency = 6; let NumMicroOps = 2; 82901095a5dSDimitry Andric} 83001095a5dSDimitry Andricdef : InstRW<[KryoWrite_6cyc_X_X_61ln], 83101095a5dSDimitry Andric (instrs FMLAv2f64, FMLSv2f64)>; 83201095a5dSDimitry Andricdef KryoWrite_5cyc_X_noRSV_128ln : 83301095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 83401095a5dSDimitry Andric let Latency = 5; let NumMicroOps = 2; 83501095a5dSDimitry Andric} 83601095a5dSDimitry Andricdef : InstRW<[KryoWrite_5cyc_X_noRSV_128ln], 83701095a5dSDimitry Andric (instrs FMLAv2i32_indexed, FMLSv2i32_indexed)>; 83801095a5dSDimitry Andricdef KryoWrite_5cyc_X_X_131ln : 83901095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX]> { 84001095a5dSDimitry Andric let Latency = 5; let NumMicroOps = 2; 84101095a5dSDimitry Andric} 84201095a5dSDimitry Andricdef : InstRW<[KryoWrite_5cyc_X_X_131ln], 84301095a5dSDimitry Andric (instrs FMLAv4i32_indexed, FMLSv4i32_indexed)>; 84401095a5dSDimitry Andricdef KryoWrite_6cyc_X_X_134ln : 84501095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX]> { 84601095a5dSDimitry Andric let Latency = 6; let NumMicroOps = 2; 84701095a5dSDimitry Andric} 84801095a5dSDimitry Andricdef : InstRW<[KryoWrite_6cyc_X_X_134ln], 84901095a5dSDimitry Andric (instrs FMLAv2i64_indexed, FMLSv2i64_indexed)>; 85001095a5dSDimitry Andricdef KryoWrite_6cyc_X_noRSV_60ln : 85101095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 85201095a5dSDimitry Andric let Latency = 6; let NumMicroOps = 2; 85301095a5dSDimitry Andric} 85401095a5dSDimitry Andricdef : InstRW<[KryoWrite_6cyc_X_noRSV_60ln], 85501095a5dSDimitry Andric (instrs FMLAv1i64_indexed, FMLSv1i64_indexed, FMULv1i64_indexed, FMULXv1i64_indexed)>; 85601095a5dSDimitry Andricdef KryoWrite_1cyc_XY_45ln : 85701095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 85801095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 1; 85901095a5dSDimitry Andric} 86001095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_45ln], 86101095a5dSDimitry Andric (instregex "FMOV(XDHigh|DXHigh|DX)r")>; 86201095a5dSDimitry Andricdef KryoWrite_1cyc_XY_noRSV_47ln : 86301095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 86401095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 86501095a5dSDimitry Andric} 86601095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_noRSV_47ln], 86701095a5dSDimitry Andric (instregex "FMOV(Di|Dr|Si|Sr|SWr|WSr|XDr|v.*_ns)")>; 86801095a5dSDimitry Andricdef KryoWrite_5cyc_X_noRSV_53ln : 86901095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 87001095a5dSDimitry Andric let Latency = 5; let NumMicroOps = 2; 87101095a5dSDimitry Andric} 87201095a5dSDimitry Andricdef : InstRW<[KryoWrite_5cyc_X_noRSV_53ln], 87301095a5dSDimitry Andric (instrs FMULv1i32_indexed, FMULXv1i32_indexed)>; 87401095a5dSDimitry Andricdef KryoWrite_5cyc_X_noRSV_127ln : 87501095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 87601095a5dSDimitry Andric let Latency = 5; let NumMicroOps = 2; 87701095a5dSDimitry Andric} 87801095a5dSDimitry Andricdef : InstRW<[KryoWrite_5cyc_X_noRSV_127ln], 87901095a5dSDimitry Andric (instrs FMULv2f32, FMULXv2f32, FMULv2i32_indexed, FMULXv2i32_indexed)>; 88001095a5dSDimitry Andricdef KryoWrite_5cyc_X_X_130ln : 88101095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX]> { 88201095a5dSDimitry Andric let Latency = 5; let NumMicroOps = 2; 88301095a5dSDimitry Andric} 88401095a5dSDimitry Andricdef : InstRW<[KryoWrite_5cyc_X_X_130ln], 88501095a5dSDimitry Andric (instrs FMULv4f32, FMULXv4f32, FMULv4i32_indexed, FMULXv4i32_indexed)>; 88601095a5dSDimitry Andricdef KryoWrite_6cyc_X_X_133ln : 88701095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX]> { 88801095a5dSDimitry Andric let Latency = 6; let NumMicroOps = 2; 88901095a5dSDimitry Andric} 89001095a5dSDimitry Andricdef : InstRW<[KryoWrite_6cyc_X_X_133ln], 89101095a5dSDimitry Andric (instrs FMULv2f64, FMULXv2f64, FMULv2i64_indexed, FMULXv2i64_indexed)>; 89201095a5dSDimitry Andricdef KryoWrite_5cyc_X_noRSV_54ln : 89301095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 89401095a5dSDimitry Andric let Latency = 5; let NumMicroOps = 2; 89501095a5dSDimitry Andric} 89601095a5dSDimitry Andricdef : InstRW<[KryoWrite_5cyc_X_noRSV_54ln], 89701095a5dSDimitry Andric (instrs FMULSrr, FNMULSrr, FMULX32)>; 89801095a5dSDimitry Andricdef KryoWrite_6cyc_X_noRSV_59ln : 89901095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 90001095a5dSDimitry Andric let Latency = 6; let NumMicroOps = 2; 90101095a5dSDimitry Andric} 90201095a5dSDimitry Andricdef : InstRW<[KryoWrite_6cyc_X_noRSV_59ln], 90301095a5dSDimitry Andric (instrs FMULDrr, FNMULDrr, FMULX64)>; 90401095a5dSDimitry Andricdef KryoWrite_3cyc_XY_noRSV_28ln : 90501095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 90601095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 90701095a5dSDimitry Andric} 90801095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_noRSV_28ln], 90901095a5dSDimitry Andric (instrs FRECPEv1i32, FRECPEv1i64, FRSQRTEv1i32, FRSQRTEv1i64 )>; 91001095a5dSDimitry Andricdef KryoWrite_3cyc_XY_noRSV_99ln : 91101095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 91201095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 91301095a5dSDimitry Andric} 91401095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_noRSV_99ln], 91501095a5dSDimitry Andric (instrs FRECPEv2f32, FRSQRTEv2f32)>; 91601095a5dSDimitry Andricdef KryoWrite_3cyc_XY_XY_102ln : 91701095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 91801095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 91901095a5dSDimitry Andric} 92001095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_XY_102ln], 92101095a5dSDimitry Andric (instrs FRECPEv2f64, FRECPEv4f32, FRSQRTEv2f64, FRSQRTEv4f32)>; 92201095a5dSDimitry Andricdef KryoWrite_5cyc_X_noRSV_52ln : 92301095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 92401095a5dSDimitry Andric let Latency = 5; let NumMicroOps = 2; 92501095a5dSDimitry Andric} 92601095a5dSDimitry Andricdef : InstRW<[KryoWrite_5cyc_X_noRSV_52ln], 92701095a5dSDimitry Andric (instrs FRECPS32, FRSQRTS32)>; 92801095a5dSDimitry Andricdef KryoWrite_6cyc_X_noRSV_58ln : 92901095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 93001095a5dSDimitry Andric let Latency = 6; let NumMicroOps = 2; 93101095a5dSDimitry Andric} 93201095a5dSDimitry Andricdef : InstRW<[KryoWrite_6cyc_X_noRSV_58ln], 93301095a5dSDimitry Andric (instrs FRECPS64, FRSQRTS64)>; 93401095a5dSDimitry Andricdef KryoWrite_5cyc_X_noRSV_126ln : 93501095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 93601095a5dSDimitry Andric let Latency = 5; let NumMicroOps = 2; 93701095a5dSDimitry Andric} 93801095a5dSDimitry Andricdef : InstRW<[KryoWrite_5cyc_X_noRSV_126ln], 93901095a5dSDimitry Andric (instrs FRECPSv2f32, FRSQRTSv2f32)>; 94001095a5dSDimitry Andricdef KryoWrite_5cyc_X_X_129ln : 94101095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX]> { 94201095a5dSDimitry Andric let Latency = 5; let NumMicroOps = 2; 94301095a5dSDimitry Andric} 94401095a5dSDimitry Andricdef : InstRW<[KryoWrite_5cyc_X_X_129ln], 94501095a5dSDimitry Andric (instrs FRECPSv4f32, FRSQRTSv4f32)>; 94601095a5dSDimitry Andricdef KryoWrite_6cyc_X_X_132ln : 94701095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX]> { 94801095a5dSDimitry Andric let Latency = 6; let NumMicroOps = 2; 94901095a5dSDimitry Andric} 95001095a5dSDimitry Andricdef : InstRW<[KryoWrite_6cyc_X_X_132ln], 95101095a5dSDimitry Andric (instrs FRECPSv2f64, FRSQRTSv2f64)>; 95201095a5dSDimitry Andricdef KryoWrite_3cyc_XY_noRSV_50ln : 95301095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 95401095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 95501095a5dSDimitry Andric} 95601095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_noRSV_50ln], 95701095a5dSDimitry Andric (instrs FRECPXv1i32, FRECPXv1i64)>; 95801095a5dSDimitry Andricdef KryoWrite_2cyc_XY_noRSV_39ln : 95901095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 96001095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 96101095a5dSDimitry Andric} 96201095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_noRSV_39ln], 96301095a5dSDimitry Andric (instregex "FRINT(A|I|M|N|P|X|Z)(S|D)r")>; 96401095a5dSDimitry Andricdef KryoWrite_2cyc_XY_noRSV_108ln : 96501095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 96601095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 96701095a5dSDimitry Andric} 96801095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_noRSV_108ln], 96901095a5dSDimitry Andric (instregex "FRINT(A|I|M|N|P|X|Z)v2f32")>; 97001095a5dSDimitry Andricdef KryoWrite_2cyc_XY_XY_109ln : 97101095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 97201095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 97301095a5dSDimitry Andric} 97401095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_XY_109ln], 97501095a5dSDimitry Andric (instregex "FRINT(A|I|M|N|P|X|Z)(v2f64|v4f32)")>; 97671d5a254SDimitry Andricdef KryoWrite_12cyc_XA_Y_noRSV_42ln : 97701095a5dSDimitry Andric SchedWriteRes<[KryoUnitXA, KryoUnitY]> { 97871d5a254SDimitry Andric let Latency = 12; let NumMicroOps = 3; 97901095a5dSDimitry Andric} 98071d5a254SDimitry Andricdef : InstRW<[KryoWrite_12cyc_XA_Y_noRSV_42ln], 98171d5a254SDimitry Andric (instrs FSQRTSr)>; 98271d5a254SDimitry Andricdef KryoWrite_21cyc_XA_Y_noRSV_42ln : 98301095a5dSDimitry Andric SchedWriteRes<[KryoUnitXA, KryoUnitY]> { 98471d5a254SDimitry Andric let Latency = 21; let NumMicroOps = 3; 98501095a5dSDimitry Andric} 98671d5a254SDimitry Andricdef : InstRW<[KryoWrite_21cyc_XA_Y_noRSV_42ln], 98771d5a254SDimitry Andric (instrs FSQRTDr)>; 98871d5a254SDimitry Andricdef KryoWrite_12cyc_XA_Y_noRSV_120ln : 98971d5a254SDimitry Andric SchedWriteRes<[KryoUnitXA, KryoUnitY]> { 99071d5a254SDimitry Andric let Latency = 12; let NumMicroOps = 3; 99171d5a254SDimitry Andric} 99271d5a254SDimitry Andricdef : InstRW<[KryoWrite_12cyc_XA_Y_noRSV_120ln], 99371d5a254SDimitry Andric (instrs FSQRTv2f32)>; 99471d5a254SDimitry Andricdef KryoWrite_21cyc_XA_Y_XA_Y_122ln : 99501095a5dSDimitry Andric SchedWriteRes<[KryoUnitXA, KryoUnitY, KryoUnitXA, KryoUnitY]> { 99671d5a254SDimitry Andric let Latency = 21; let NumMicroOps = 4; 99701095a5dSDimitry Andric} 99871d5a254SDimitry Andricdef : InstRW<[KryoWrite_21cyc_XA_Y_XA_Y_122ln], 99971d5a254SDimitry Andric (instrs FSQRTv4f32)>; 100071d5a254SDimitry Andricdef KryoWrite_36cyc_XA_Y_XA_Y_122ln : 100171d5a254SDimitry Andric SchedWriteRes<[KryoUnitXA, KryoUnitY, KryoUnitXA, KryoUnitY]> { 100271d5a254SDimitry Andric let Latency = 36; let NumMicroOps = 4; 100371d5a254SDimitry Andric} 100471d5a254SDimitry Andricdef : InstRW<[KryoWrite_36cyc_XA_Y_XA_Y_122ln], 100571d5a254SDimitry Andric (instrs FSQRTv2f64)>; 100601095a5dSDimitry Andricdef KryoWrite_1cyc_X_201ln : 100701095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 100801095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 1; 100901095a5dSDimitry Andric} 101001095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_X_201ln], 101101095a5dSDimitry Andric (instregex "INSv.*")>; 101201095a5dSDimitry Andricdef KryoWrite_3cyc_LS_255ln : 101301095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS]> { 101401095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 1; 101501095a5dSDimitry Andric} 101601095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_255ln], 101701095a5dSDimitry Andric (instregex "LD1(One(v16b|v8h|v4s|v2d)|i64)$")>; 101801095a5dSDimitry Andricdef KryoWrite_4cyc_LS_X_270ln : 101901095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitX]> { 102001095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 2; 102101095a5dSDimitry Andric} 102201095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_LS_X_270ln], 102301095a5dSDimitry Andric (instregex "LD1(i8|i16|i32)$")>; 102401095a5dSDimitry Andricdef KryoWrite_3cyc_LS_noRSV_285ln : 102501095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS]> { 102601095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 102701095a5dSDimitry Andric} 102801095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_noRSV_285ln], 102901095a5dSDimitry Andric (instregex "LD1One(v8b|v4h|v2s|v1d)$")>; 103001095a5dSDimitry Andricdef KryoWrite_3cyc_LS_XY_289ln : 103101095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitXY]> { 103201095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 103301095a5dSDimitry Andric} 103401095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_XY_289ln, WriteAdr], 103501095a5dSDimitry Andric (instregex "LD1(One(v16b|v8h|v4s|v2d)|i64)_POST$")>; 103601095a5dSDimitry Andricdef KryoWrite_4cyc_LS_XY_X_298ln : 103701095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitX]> { 103801095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 3; 103901095a5dSDimitry Andric} 104001095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_LS_XY_X_298ln, WriteAdr], 104101095a5dSDimitry Andric (instregex "LD1(i8|i16|i32)_POST$")>; 104201095a5dSDimitry Andricdef KryoWrite_3cyc_LS_LS_LS_308ln : 104301095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitLS]> { 104401095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 3; 104501095a5dSDimitry Andric} 104601095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_LS_LS_308ln], 104701095a5dSDimitry Andric (instregex "LD1Three(v16b|v8h|v4s|v2d)$")>; 104801095a5dSDimitry Andricdef KryoWrite_3cyc_LS_XY_noRSV_317ln : 104901095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitXY]> { 105001095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 3; 105101095a5dSDimitry Andric} 105201095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_XY_noRSV_317ln, WriteAdr], 105301095a5dSDimitry Andric (instregex "LD1One(v8b|v4h|v2s|v1d)_POST$")>; 105401095a5dSDimitry Andricdef KryoWrite_3cyc_LS_LS_LS_LS_328ln : 105501095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitLS, KryoUnitLS]> { 105601095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 4; 105701095a5dSDimitry Andric} 105801095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_LS_LS_LS_328ln, WriteAdr], 105901095a5dSDimitry Andric (instregex "LD1Four(v16b|v8h|v4s|v2d)_POST$")>; 106001095a5dSDimitry Andricdef KryoWrite_3cyc_LS_XY_LS_LS_332ln : 106101095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitLS]> { 106201095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 4; 106301095a5dSDimitry Andric} 106401095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_XY_LS_LS_332ln, WriteAdr], 106501095a5dSDimitry Andric (instregex "LD1Three(v16b|v8h|v4s|v2d)_POST$")>; 106601095a5dSDimitry Andricdef KryoWrite_3cyc_LS_LS_noRSV_noRSV_noRSV_348ln : 106701095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitLS]> { 106801095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 5; 106901095a5dSDimitry Andric} 107001095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_LS_noRSV_noRSV_noRSV_348ln], 107101095a5dSDimitry Andric (instregex "LD1Three(v8b|v4h|v2s|v1d)$")>; 107201095a5dSDimitry Andricdef KryoWrite_3cyc_LS_XY_LS_LS_LS_351ln : 107301095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitLS, KryoUnitLS]> { 107401095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 5; 107501095a5dSDimitry Andric} 107601095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_XY_LS_LS_LS_351ln], 107701095a5dSDimitry Andric (instregex "LD1Four(v16b|v8h|v4s|v2d)$")>; 107801095a5dSDimitry Andricdef KryoWrite_3cyc_LS_LS_noRSV_noRSV_noRSV_noRSV_358ln : 107901095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitLS]> { 108001095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 6; 108101095a5dSDimitry Andric} 108201095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_LS_noRSV_noRSV_noRSV_noRSV_358ln], 108301095a5dSDimitry Andric (instregex "LD1Four(v8b|v4h|v2s|v1d)$")>; 108401095a5dSDimitry Andricdef KryoWrite_3cyc_LS_XY_LS_noRSV_noRSV_noRSV_360ln : 108501095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS]> { 108601095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 6; 108701095a5dSDimitry Andric} 108801095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_XY_LS_noRSV_noRSV_noRSV_360ln, WriteAdr], 108901095a5dSDimitry Andric (instregex "LD1Three(v8b|v4h|v2s|v1d)_POST$")>; 109001095a5dSDimitry Andricdef KryoWrite_3cyc_LS_XY_LS_noRSV_noRSV_noRSV_noRSV_368ln : 109101095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS]> { 109201095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 7; 109301095a5dSDimitry Andric} 109401095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_XY_LS_noRSV_noRSV_noRSV_noRSV_368ln, WriteAdr], 109501095a5dSDimitry Andric (instregex "LD1Four(v8b|v4h|v2s|v1d)_POST$")>; 109601095a5dSDimitry Andricdef KryoWrite_3cyc_LS_LS_281ln : 109701095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitLS]> { 109801095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 109901095a5dSDimitry Andric} 110001095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_LS_281ln], 110101095a5dSDimitry Andric (instregex "LD(1|2)Two(v16b|v8h|v4s|v2d)$")>; 110201095a5dSDimitry Andricdef KryoWrite_3cyc_LS_noRSV_noRSV_311ln : 110301095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS]> { 110401095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 3; 110501095a5dSDimitry Andric} 110601095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_noRSV_noRSV_311ln], 110701095a5dSDimitry Andric (instregex "LD(1|2)Two(v8b|v4h|v2s|v1d)$")>; 110801095a5dSDimitry Andricdef KryoWrite_3cyc_LS_XY_LS_313ln : 110901095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS]> { 111001095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 3; 111101095a5dSDimitry Andric} 111201095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_XY_LS_313ln, WriteAdr], 111301095a5dSDimitry Andric (instregex "LD(1|2)Two(v16b|v8h|v4s|v2d)_POST$")>; 111401095a5dSDimitry Andricdef KryoWrite_3cyc_LS_XY_noRSV_noRSV_334ln : 111501095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitXY]> { 111601095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 4; 111701095a5dSDimitry Andric} 111801095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_XY_noRSV_noRSV_334ln, WriteAdr], 111901095a5dSDimitry Andric (instregex "LD(1|2)Two(v8b|v4h|v2s|v1d)_POST$")>; 112001095a5dSDimitry Andricdef KryoWrite_3cyc_LS_256ln : 112101095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS]> { 112201095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 1; 112301095a5dSDimitry Andric} 112401095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_256ln], 112501095a5dSDimitry Andric (instregex "LD1R(v16b|v8h|v4s|v2d)$")>; 112601095a5dSDimitry Andricdef KryoWrite_3cyc_LS_noRSV_286ln : 112701095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS]> { 112801095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 112901095a5dSDimitry Andric} 113001095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_noRSV_286ln], 113101095a5dSDimitry Andric (instregex "LD1R(v8b|v4h|v2s|v1d)$")>; 113201095a5dSDimitry Andricdef KryoWrite_3cyc_LS_XY_290ln : 113301095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitXY]> { 113401095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 113501095a5dSDimitry Andric} 113601095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_XY_290ln, WriteAdr], 113701095a5dSDimitry Andric (instregex "LD1R(v16b|v8h|v4s|v2d)_POST$")>; 113801095a5dSDimitry Andricdef KryoWrite_3cyc_LS_XY_noRSV_318ln : 113901095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitXY]> { 114001095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 3; 114101095a5dSDimitry Andric} 114201095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_XY_noRSV_318ln, WriteAdr], 114301095a5dSDimitry Andric (instregex "LD1R(v8b|v4h|v2s|v1d)_POST$")>; 114401095a5dSDimitry Andricdef KryoWrite_3cyc_LS_257ln : 114501095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS]> { 114601095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 1; 114701095a5dSDimitry Andric} 114801095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_257ln], 114901095a5dSDimitry Andric (instregex "LD2i64$")>; 115001095a5dSDimitry Andricdef KryoWrite_3cyc_LS_XY_291ln : 115101095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitXY]> { 115201095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 115301095a5dSDimitry Andric} 115401095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_XY_291ln, WriteAdr], 115501095a5dSDimitry Andric (instregex "LD2i64_POST$")>; 115601095a5dSDimitry Andricdef KryoWrite_4cyc_LS_X_X_296ln : 115701095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitX, KryoUnitX]> { 115801095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 3; 115901095a5dSDimitry Andric} 116001095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_LS_X_X_296ln], 116101095a5dSDimitry Andric (instregex "LD2(i8|i16|i32)$")>; 116201095a5dSDimitry Andricdef KryoWrite_4cyc_LS_XY_X_X_321ln : 116301095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitX, KryoUnitX]> { 116401095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 4; 116501095a5dSDimitry Andric} 116601095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_LS_XY_X_X_321ln, WriteAdr], 116701095a5dSDimitry Andric (instregex "LD2(i8|i16|i32)_POST$")>; 116801095a5dSDimitry Andricdef KryoWrite_3cyc_LS_LS_282ln : 116901095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitLS]> { 117001095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 117101095a5dSDimitry Andric} 117201095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_LS_282ln], 117301095a5dSDimitry Andric (instregex "LD2R(v16b|v8h|v4s|v2d)$")>; 117401095a5dSDimitry Andricdef KryoWrite_3cyc_LS_noRSV_noRSV_312ln : 117501095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS]> { 117601095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 3; 117701095a5dSDimitry Andric} 117801095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_noRSV_noRSV_312ln], 117901095a5dSDimitry Andric (instregex "LD2R(v8b|v4h|v2s|v1d)$")>; 118001095a5dSDimitry Andricdef KryoWrite_3cyc_LS_XY_LS_314ln : 118101095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS]> { 118201095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 3; 118301095a5dSDimitry Andric} 118401095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_XY_LS_314ln, WriteAdr], 118501095a5dSDimitry Andric (instregex "LD2R(v16b|v8h|v4s|v2d)_POST$")>; 118601095a5dSDimitry Andricdef KryoWrite_3cyc_LS_XY_noRSV_noRSV_335ln : 118701095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitXY]> { 118801095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 4; 118901095a5dSDimitry Andric} 119001095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_XY_noRSV_noRSV_335ln, WriteAdr], 119101095a5dSDimitry Andric (instregex "LD2R(v8b|v4h|v2s|v1d)_POST$")>; 119201095a5dSDimitry Andricdef KryoWrite_3cyc_LS_LS_283ln : 119301095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitLS]> { 119401095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 119501095a5dSDimitry Andric} 119601095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_LS_283ln], 119701095a5dSDimitry Andric (instregex "LD3i64$")>; 119801095a5dSDimitry Andricdef KryoWrite_3cyc_LS_LS_LS_309ln : 119901095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitLS]> { 120001095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 3; 120101095a5dSDimitry Andric} 120201095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_LS_LS_309ln], 120301095a5dSDimitry Andric (instregex "LD3Threev2d$")>; 120401095a5dSDimitry Andricdef KryoWrite_3cyc_LS_XY_LS_315ln : 120501095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS]> { 120601095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 3; 120701095a5dSDimitry Andric} 120801095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_XY_LS_315ln, WriteAdr], 120901095a5dSDimitry Andric (instregex "LD3i64_POST$")>; 121001095a5dSDimitry Andricdef KryoWrite_4cyc_LS_X_X_X_320ln : 121101095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitX, KryoUnitX, KryoUnitX]> { 121201095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 4; 121301095a5dSDimitry Andric} 121401095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_LS_X_X_X_320ln], 121501095a5dSDimitry Andric (instregex "LD3(i8|i16|i32)$")>; 121601095a5dSDimitry Andricdef KryoWrite_3cyc_LS_XY_LS_LS_331ln : 121701095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitLS]> { 121801095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 4; 121901095a5dSDimitry Andric} 122001095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_XY_LS_LS_331ln, WriteAdr], 122101095a5dSDimitry Andric (instregex "LD3Threev2d_POST$")>; 122201095a5dSDimitry Andricdef KryoWrite_4cyc_LS_XY_X_X_X_338ln : 122301095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitX, KryoUnitX, KryoUnitX]> { 122401095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 5; 122501095a5dSDimitry Andric} 122601095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_LS_XY_X_X_X_338ln, WriteAdr], 122701095a5dSDimitry Andric (instregex "LD3(i8|i16|i32)_POST$")>; 122801095a5dSDimitry Andricdef KryoWrite_4cyc_LS_LS_X_X_X_noRSV_noRSV_noRSV_373ln : 122901095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitX, KryoUnitX, KryoUnitX]> { 123001095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 8; 123101095a5dSDimitry Andric} 123201095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_LS_LS_X_X_X_noRSV_noRSV_noRSV_373ln], 123301095a5dSDimitry Andric (instregex "LD3Three(v8b|v4h|v2s)$")>; 123401095a5dSDimitry Andricdef KryoWrite_4cyc_LS_XY_LS_X_X_X_noRSV_noRSV_noRSV_380ln : 123501095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitX, KryoUnitX, 123601095a5dSDimitry Andric KryoUnitX]> { 123701095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 9; 123801095a5dSDimitry Andric} 123901095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_LS_XY_LS_X_X_X_noRSV_noRSV_noRSV_380ln, WriteAdr], 124001095a5dSDimitry Andric (instregex "LD3Three(v8b|v4h|v2s)_POST$")>; 124101095a5dSDimitry Andricdef KryoWrite_4cyc_LS_LS_X_X_X_LS_LS_X_X_X_381ln : 124201095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitX, KryoUnitX, KryoUnitX, 124301095a5dSDimitry Andric KryoUnitLS, KryoUnitLS, KryoUnitX, KryoUnitX, KryoUnitX]> { 124401095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 10; 124501095a5dSDimitry Andric} 124601095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_LS_LS_X_X_X_LS_LS_X_X_X_381ln], 124701095a5dSDimitry Andric (instregex "LD3Three(v16b|v8h|v4s)$")>; 124801095a5dSDimitry Andricdef KryoWrite_4cyc_LS_LS_X_X_X_LS_XY_LS_X_X_X_383ln : 124901095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitX, KryoUnitX, KryoUnitX, 125001095a5dSDimitry Andric KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitX, KryoUnitX, 125101095a5dSDimitry Andric KryoUnitX]> { 125201095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 11; 125301095a5dSDimitry Andric} 125401095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_LS_LS_X_X_X_LS_XY_LS_X_X_X_383ln, WriteAdr], 125501095a5dSDimitry Andric (instregex "LD3Three(v16b|v8h|v4s)_POST$")>; 125601095a5dSDimitry Andricdef KryoWrite_3cyc_LS_LS_LS_310ln : 125701095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitLS]> { 125801095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 3; 125901095a5dSDimitry Andric} 126001095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_LS_LS_310ln], 126101095a5dSDimitry Andric (instregex "LD3R(v16b|v8h|v4s|v2d)$")>; 126201095a5dSDimitry Andricdef KryoWrite_3cyc_LS_XY_LS_LS_333ln : 126301095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitLS]> { 126401095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 4; 126501095a5dSDimitry Andric} 126601095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_XY_LS_LS_333ln, WriteAdr], 126701095a5dSDimitry Andric (instregex "LD3R(v16b|v8h|v4s|v2d)_POST$")>; 126801095a5dSDimitry Andricdef KryoWrite_3cyc_LS_LS_noRSV_noRSV_noRSV_349ln : 126901095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitLS]> { 127001095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 5; 127101095a5dSDimitry Andric} 127201095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_LS_noRSV_noRSV_noRSV_349ln], 127301095a5dSDimitry Andric (instregex "LD3R(v8b|v4h|v2s|v1d)$")>; 127401095a5dSDimitry Andricdef KryoWrite_3cyc_LS_XY_LS_noRSV_noRSV_noRSV_361ln : 127501095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS]> { 127601095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 6; 127701095a5dSDimitry Andric} 127801095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_XY_LS_noRSV_noRSV_noRSV_361ln, WriteAdr], 127901095a5dSDimitry Andric (instregex "LD3R(v8b|v4h|v2s|v1d)_POST$")>; 128001095a5dSDimitry Andricdef KryoWrite_3cyc_LS_LS_284ln : 128101095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitLS]> { 128201095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 128301095a5dSDimitry Andric} 128401095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_LS_284ln], 128501095a5dSDimitry Andric (instregex "LD4i64$")>; 128601095a5dSDimitry Andricdef KryoWrite_3cyc_LS_XY_LS_316ln : 128701095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS]> { 128801095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 3; 128901095a5dSDimitry Andric} 129001095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_XY_LS_316ln, WriteAdr], 129101095a5dSDimitry Andric (instregex "LD4i64_POST$")>; 129201095a5dSDimitry Andricdef KryoWrite_3cyc_LS_LS_LS_LS_329ln : 129301095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitLS, KryoUnitLS]> { 129401095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 4; 129501095a5dSDimitry Andric} 129601095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_LS_LS_LS_329ln], 129701095a5dSDimitry Andric (instregex "LD4Four(v2d)$")>; 129801095a5dSDimitry Andricdef KryoWrite_4cyc_LS_X_X_X_X_337ln : 129901095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX]> { 130001095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 5; 130101095a5dSDimitry Andric} 130201095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_LS_X_X_X_X_337ln], 130301095a5dSDimitry Andric (instregex "LD4(i8|i16|i32)$")>; 130401095a5dSDimitry Andricdef KryoWrite_3cyc_LS_XY_LS_LS_LS_350ln : 130501095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitLS, KryoUnitLS]> { 130601095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 5; 130701095a5dSDimitry Andric} 130801095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_XY_LS_LS_LS_350ln, WriteAdr], 130901095a5dSDimitry Andric (instregex "LD4Four(v2d)_POST$")>; 131001095a5dSDimitry Andricdef KryoWrite_4cyc_LS_XY_X_X_X_X_355ln : 131101095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitX, KryoUnitX, KryoUnitX, 131201095a5dSDimitry Andric KryoUnitX]> { 131301095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 6; 131401095a5dSDimitry Andric} 131501095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_LS_XY_X_X_X_X_355ln, WriteAdr], 131601095a5dSDimitry Andric (instregex "LD4(i8|i16|i32)_POST$")>; 131701095a5dSDimitry Andricdef KryoWrite_4cyc_LS_LS_X_X_X_X_noRSV_noRSV_noRSV_noRSV_382ln : 131801095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitX, KryoUnitX, KryoUnitX, 131901095a5dSDimitry Andric KryoUnitX]> { 132001095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 10; 132101095a5dSDimitry Andric} 132201095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_LS_LS_X_X_X_X_noRSV_noRSV_noRSV_noRSV_382ln], 132301095a5dSDimitry Andric (instregex "LD4Four(v8b|v4h|v2s)$")>; 132401095a5dSDimitry Andricdef KryoWrite_4cyc_LS_XY_LS_X_X_X_X_noRSV_noRSV_noRSV_noRSV_384ln : 132501095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitX, KryoUnitX, 132601095a5dSDimitry Andric KryoUnitX, KryoUnitX]> { 132701095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 11; 132801095a5dSDimitry Andric} 132901095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_LS_XY_LS_X_X_X_X_noRSV_noRSV_noRSV_noRSV_384ln, WriteAdr], 133001095a5dSDimitry Andric (instregex "LD4Four(v8b|v4h|v2s)_POST$")>; 133101095a5dSDimitry Andricdef KryoWrite_4cyc_LS_LS_X_X_X_X_LS_LS_X_X_X_X_386ln : 133201095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitX, KryoUnitX, KryoUnitX, 133301095a5dSDimitry Andric KryoUnitX, KryoUnitLS, KryoUnitLS, KryoUnitX, KryoUnitX, 133401095a5dSDimitry Andric KryoUnitX, KryoUnitX]> { 133501095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 12; 133601095a5dSDimitry Andric} 133701095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_LS_LS_X_X_X_X_LS_LS_X_X_X_X_386ln], 133801095a5dSDimitry Andric (instregex "LD4Four(v16b|v8h|v4s)$")>; 133901095a5dSDimitry Andricdef KryoWrite_4cyc_LS_LS_X_X_X_X_LS_XY_LS_X_X_X_X_389ln : 134001095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitX, KryoUnitX, KryoUnitX, 134101095a5dSDimitry Andric KryoUnitX, KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitX, 134201095a5dSDimitry Andric KryoUnitX, KryoUnitX, KryoUnitX]> { 134301095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 13; 134401095a5dSDimitry Andric} 134501095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_LS_LS_X_X_X_X_LS_XY_LS_X_X_X_X_389ln, WriteAdr], 134601095a5dSDimitry Andric (instregex "LD4Four(v16b|v8h|v4s)_POST$")>; 134701095a5dSDimitry Andricdef KryoWrite_3cyc_LS_LS_LS_LS_330ln : 134801095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitLS, KryoUnitLS]> { 134901095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 4; 135001095a5dSDimitry Andric} 135101095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_LS_LS_LS_330ln], 135201095a5dSDimitry Andric (instregex "LD4R(v16b|v8h|v4s|v2d)$")>; 135301095a5dSDimitry Andricdef KryoWrite_3cyc_LS_XY_LS_LS_LS_352ln : 135401095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitLS, KryoUnitLS]> { 135501095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 5; 135601095a5dSDimitry Andric} 135701095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_XY_LS_LS_LS_352ln, WriteAdr], 135801095a5dSDimitry Andric (instregex "LD4R(v16b|v8h|v4s|v2d)_POST$")>; 135901095a5dSDimitry Andricdef KryoWrite_3cyc_LS_LS_noRSV_noRSV_noRSV_noRSV_359ln : 136001095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitLS]> { 136101095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 6; 136201095a5dSDimitry Andric} 136301095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_LS_noRSV_noRSV_noRSV_noRSV_359ln], 136401095a5dSDimitry Andric (instregex "LD4R(v8b|v4h|v2s|v1d)$")>; 136501095a5dSDimitry Andricdef KryoWrite_3cyc_LS_XY_LS_noRSV_noRSV_noRSV_noRSV_369ln : 136601095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS]> { 136701095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 7; 136801095a5dSDimitry Andric} 136901095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_XY_LS_noRSV_noRSV_noRSV_noRSV_369ln, WriteAdr], 137001095a5dSDimitry Andric (instregex "LD4R(v8b|v4h|v2s|v1d)_POST$")>; 137101095a5dSDimitry Andricdef KryoWrite_3cyc_LS_LS_400ln : 137201095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitLS]> { 137301095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 137401095a5dSDimitry Andric} 137501095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_LS_400ln], 137608bbd35aSDimitry Andric (instregex "LDAX?R(B|H|W|X)")>; 137708bbd35aSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_LS_400ln, WriteLDHi], 137808bbd35aSDimitry Andric (instregex "LDAXP(W|X)")>; 137901095a5dSDimitry Andricdef KryoWrite_3cyc_LS_LS_401ln : 138001095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitLS]> { 138101095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 138201095a5dSDimitry Andric} 138301095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_LS_401ln, WriteLDHi], 138401095a5dSDimitry Andric (instrs LDNPQi)>; 138501095a5dSDimitry Andricdef KryoWrite_3cyc_LS_noRSV_noRSV_408ln : 138601095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS]> { 138701095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 3; 138801095a5dSDimitry Andric} 138901095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_noRSV_noRSV_408ln, WriteLDHi], 139001095a5dSDimitry Andric (instrs LDNPDi, LDNPSi)>; 139101095a5dSDimitry Andricdef KryoWrite_3cyc_LS_394ln : 139201095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS]> { 139301095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 1; 139401095a5dSDimitry Andric} 139501095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_394ln, WriteLDHi], 139601095a5dSDimitry Andric (instrs LDNPWi, LDNPXi)>; 139701095a5dSDimitry Andricdef KryoWrite_3cyc_LS_LS_402ln : 139801095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitLS]> { 139901095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 140001095a5dSDimitry Andric} 140101095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_LS_402ln, WriteLDHi], 140201095a5dSDimitry Andric (instrs LDPQi)>; 140301095a5dSDimitry Andricdef KryoWrite_3cyc_LS_noRSV_noRSV_409ln : 140401095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS]> { 140501095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 3; 140601095a5dSDimitry Andric} 140701095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_noRSV_noRSV_409ln, WriteLDHi], 140801095a5dSDimitry Andric (instrs LDPDi, LDPSi)>; 140901095a5dSDimitry Andricdef KryoWrite_3cyc_LS_XY_LS_410ln : 141001095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS]> { 141101095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 3; 141201095a5dSDimitry Andric} 141301095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_XY_LS_410ln, WriteLDHi, WriteAdr], 141401095a5dSDimitry Andric (instregex "LDPQ(post|pre)")>; 141501095a5dSDimitry Andricdef KryoWrite_3cyc_LS_XY_noRSV_noRSV_411ln : 141601095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitXY]> { 141701095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 4; 141801095a5dSDimitry Andric} 141901095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_XY_noRSV_noRSV_411ln, WriteLDHi, WriteAdr], 142001095a5dSDimitry Andric (instregex "LDP(D|S)(post|pre)")>; 142101095a5dSDimitry Andricdef KryoWrite_3cyc_LS_393ln : 142201095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS]> { 142301095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 1; 142401095a5dSDimitry Andric} 142501095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_393ln, WriteLDHi], 142601095a5dSDimitry Andric (instrs LDPWi, LDPXi)>; 142701095a5dSDimitry Andricdef KryoWrite_3cyc_LS_XY_403ln : 142801095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitXY]> { 142901095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 143001095a5dSDimitry Andric} 143101095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_XY_403ln, WriteLDHi, WriteAdr], 143201095a5dSDimitry Andric (instregex "LDP(W|X)(post|pre)")>; 143301095a5dSDimitry Andricdef KryoWrite_4cyc_LS_395ln : 143401095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS]> { 143501095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 1; 143601095a5dSDimitry Andric} 143701095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_LS_395ln, WriteLDHi], 143801095a5dSDimitry Andric (instrs LDPSWi)>; 143901095a5dSDimitry Andricdef KryoWrite_4cyc_LS_XY_405ln : 144001095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitXY]> { 144101095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 2; 144201095a5dSDimitry Andric} 144301095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_LS_XY_405ln, WriteLDHi, WriteAdr], 144401095a5dSDimitry Andric (instrs LDPSWpost, LDPSWpre)>; 144501095a5dSDimitry Andricdef KryoWrite_3cyc_LS_264ln : 144601095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS]> { 144701095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 1; 144801095a5dSDimitry Andric} 144901095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_264ln], 145001095a5dSDimitry Andric (instrs LDRQui, LDRQl)>; 145101095a5dSDimitry Andricdef KryoWrite_4cyc_X_LS_271ln : 145201095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitLS]> { 145301095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 2; 145401095a5dSDimitry Andric} 145501095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_X_LS_271ln], 145601095a5dSDimitry Andric (instrs LDRQroW, LDRQroX)>; 145701095a5dSDimitry Andricdef KryoWrite_3cyc_LS_noRSV_287ln : 145801095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS]> { 145901095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 146001095a5dSDimitry Andric} 146101095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_noRSV_287ln], 146201095a5dSDimitry Andric (instregex "LDR((D|S)l|(D|S|H|B)ui)")>; 146301095a5dSDimitry Andricdef KryoWrite_3cyc_LS_XY_293ln : 146401095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitXY]> { 146501095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 146601095a5dSDimitry Andric} 146701095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_XY_293ln, WriteAdr], 146801095a5dSDimitry Andric (instrs LDRQpost, LDRQpre)>; 146901095a5dSDimitry Andricdef KryoWrite_4cyc_X_LS_noRSV_297ln : 147001095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitLS]> { 147101095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 3; 147201095a5dSDimitry Andric} 147301095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_X_LS_noRSV_297ln], 147401095a5dSDimitry Andric (instregex "LDR(D|S|H|B)ro(W|X)")>; 147501095a5dSDimitry Andricdef KryoWrite_3cyc_LS_XY_noRSV_319ln : 147601095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitXY]> { 147701095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 3; 147801095a5dSDimitry Andric} 147901095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_XY_noRSV_319ln, WriteAdr], 148001095a5dSDimitry Andric (instregex "LDR(D|S|H|B)(post|pre)")>; 148101095a5dSDimitry Andricdef KryoWrite_3cyc_LS_261ln : 148201095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS]> { 148301095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 1; 148401095a5dSDimitry Andric} 148501095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_261ln], 148601095a5dSDimitry Andric (instregex "LDR(BB|HH|W|X)ui")>; 148701095a5dSDimitry Andricdef KryoWrite_3cyc_LS_XY_292ln : 148801095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitXY]> { 148901095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 149001095a5dSDimitry Andric} 149101095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_XY_292ln, WriteAdr], 149201095a5dSDimitry Andric (instregex "LDR(BB|HH|W|X)(post|pre)")>; 149301095a5dSDimitry Andricdef KryoWrite_4cyc_X_LS_272ln : 149401095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitLS]> { 149501095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 2; 149601095a5dSDimitry Andric} 149701095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_X_LS_272ln], 149801095a5dSDimitry Andric (instregex "(LDR(BB|HH|W|X)ro(W|X)|PRFMro(W|X))")>; 149901095a5dSDimitry Andricdef KryoWrite_3cyc_LS_262ln : 150001095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS]> { 150101095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 1; 150201095a5dSDimitry Andric} 150301095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_262ln], 150401095a5dSDimitry Andric (instrs LDRWl, LDRXl)>; 150501095a5dSDimitry Andricdef KryoWrite_4cyc_LS_268ln : 150601095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS]> { 150701095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 1; 150801095a5dSDimitry Andric} 150901095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_LS_268ln], 151001095a5dSDimitry Andric (instregex "LDRS(BW|BX|HW|HX|W)ui")>; 151101095a5dSDimitry Andricdef KryoWrite_5cyc_X_LS_273ln : 151201095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitLS]> { 151301095a5dSDimitry Andric let Latency = 5; let NumMicroOps = 2; 151401095a5dSDimitry Andric} 151501095a5dSDimitry Andricdef : InstRW<[KryoWrite_5cyc_X_LS_273ln], 151601095a5dSDimitry Andric (instregex "LDRS(BW|BX|HW|HX|W)ro(W|X)")>; 151701095a5dSDimitry Andricdef KryoWrite_4cyc_LS_XY_294ln : 151801095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitXY]> { 151901095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 2; 152001095a5dSDimitry Andric} 152101095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_LS_XY_294ln, WriteAdr], 152201095a5dSDimitry Andric (instregex "LDRS(BW|BX|HW|HX|W)(post|pre)")>; 152301095a5dSDimitry Andricdef KryoWrite_4cyc_LS_269ln : 152401095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS]> { 152501095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 1; 152601095a5dSDimitry Andric} 152701095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_LS_269ln], 152801095a5dSDimitry Andric (instrs LDRSWl)>; 152901095a5dSDimitry Andricdef KryoWrite_3cyc_LS_260ln : 153001095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS]> { 153101095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 1; 153201095a5dSDimitry Andric} 153301095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_260ln], 153401095a5dSDimitry Andric (instregex "LDTR(B|H|W|X)i")>; 153501095a5dSDimitry Andricdef KryoWrite_4cyc_LS_267ln : 153601095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS]> { 153701095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 1; 153801095a5dSDimitry Andric} 153901095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_LS_267ln], 154001095a5dSDimitry Andric (instregex "LDTRS(BW|BX|HW|HX|W)i")>; 154101095a5dSDimitry Andricdef KryoWrite_3cyc_LS_263ln : 154201095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS]> { 154301095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 1; 154401095a5dSDimitry Andric} 154501095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_263ln], 154601095a5dSDimitry Andric (instrs LDURQi)>; 154701095a5dSDimitry Andricdef KryoWrite_3cyc_LS_noRSV_288ln : 154801095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS]> { 154901095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 155001095a5dSDimitry Andric} 155101095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_noRSV_288ln], 155201095a5dSDimitry Andric (instregex "LDUR(D|S|H|B)i")>; 155301095a5dSDimitry Andricdef KryoWrite_3cyc_LS_259ln : 155401095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS]> { 155501095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 1; 155601095a5dSDimitry Andric} 155701095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_259ln], 155801095a5dSDimitry Andric (instregex "LDUR(BB|HH|W|X)i")>; 155901095a5dSDimitry Andricdef KryoWrite_4cyc_LS_266ln : 156001095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS]> { 156101095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 1; 156201095a5dSDimitry Andric} 156301095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_LS_266ln], 156401095a5dSDimitry Andric (instregex "LDURS(B|H)?(W|X)i")>; 156501095a5dSDimitry Andricdef KryoWrite_3cyc_LS_258ln : 156601095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS]> { 156701095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 1; 156801095a5dSDimitry Andric} 156908bbd35aSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_258ln, WriteLDHi], 157001095a5dSDimitry Andric (instregex "LDXP(W|X)")>; 157101095a5dSDimitry Andricdef KryoWrite_3cyc_LS_258_1ln : 157201095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS]> { 157301095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 1; 157401095a5dSDimitry Andric} 157501095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_258_1ln], 157601095a5dSDimitry Andric (instregex "LDXR(B|H|W|X)")>; 157701095a5dSDimitry Andricdef KryoWrite_2cyc_XY_XY_137ln : 157801095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 157901095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 158001095a5dSDimitry Andric} 158101095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_XY_137ln], 158201095a5dSDimitry Andric (instrs LSLVWr, LSLVXr)>; 158301095a5dSDimitry Andricdef KryoWrite_1cyc_XY_135ln : 158401095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 158501095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 1; 158601095a5dSDimitry Andric} 158701095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_135ln], 158801095a5dSDimitry Andric (instregex "(LS|AS|RO)RV(W|X)r")>; 158901095a5dSDimitry Andricdef KryoWrite_4cyc_X_84ln : 159001095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 159101095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 1; 159201095a5dSDimitry Andric} 159301095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_X_84ln], 159401095a5dSDimitry Andric (instrs MADDWrrr, MSUBWrrr)>; 159501095a5dSDimitry Andricdef KryoWrite_5cyc_X_85ln : 159601095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 159701095a5dSDimitry Andric let Latency = 5; let NumMicroOps = 1; 159801095a5dSDimitry Andric} 159901095a5dSDimitry Andricdef : InstRW<[KryoWrite_5cyc_X_85ln], 160001095a5dSDimitry Andric (instrs MADDXrrr, MSUBXrrr)>; 160101095a5dSDimitry Andricdef KryoWrite_4cyc_X_noRSV_188ln : 160201095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 160301095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 2; 160401095a5dSDimitry Andric} 160501095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_X_noRSV_188ln], 160601095a5dSDimitry Andric (instregex "(MLA|MLS|MUL)(v8i8|v4i16|v2i32)(_indexed)?")>; 160701095a5dSDimitry Andricdef KryoWrite_4cyc_X_X_192ln : 160801095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX]> { 160901095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 2; 161001095a5dSDimitry Andric} 161101095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_X_X_192ln], 161201095a5dSDimitry Andric (instregex "(MLA|MLS|MUL|SQR?DMULH)(v16i8|v8i16|v4i32)(_indexed)?")>; 161301095a5dSDimitry Andricdef KryoWrite_1cyc_XY_noRSV_198ln : 161401095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 161501095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 161601095a5dSDimitry Andric} 161701095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_noRSV_198ln], 161801095a5dSDimitry Andric (instregex "(MOVI|MVNI)(D|v8b_ns|v2i32|v4i16|v2s_msl)")>; 161901095a5dSDimitry Andricdef KryoWrite_1cyc_XY_XY_199ln : 162001095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 162101095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 162201095a5dSDimitry Andric} 162301095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_XY_199ln], 162401095a5dSDimitry Andric (instregex "(MOVI|MVNI)(v2d_ns|v16b_ns|v4i32|v8i16|v4s_msl)")>; 162501095a5dSDimitry Andricdef KryoWrite_1cyc_X_89ln : 162601095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 162701095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 1; 162801095a5dSDimitry Andric} 162901095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_X_89ln], 163001095a5dSDimitry Andric (instrs MOVKWi, MOVKXi)>; 163101095a5dSDimitry Andricdef KryoWrite_1cyc_XY_91ln : 163201095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 163301095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 1; 163401095a5dSDimitry Andric} 163501095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_91ln], 163601095a5dSDimitry Andric (instrs MOVNWi, MOVNXi)>; 163701095a5dSDimitry Andricdef KryoWrite_1cyc_XY_90ln : 163801095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 163901095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 1; 164001095a5dSDimitry Andric} 164101095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_90ln], 164201095a5dSDimitry Andric (instrs MOVZWi, MOVZXi)>; 164301095a5dSDimitry Andricdef KryoWrite_2cyc_XY_93ln : 164401095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 164501095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 1; 164601095a5dSDimitry Andric} 164701095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_93ln], 164801095a5dSDimitry Andric (instrs MRS)>; 164901095a5dSDimitry Andricdef KryoWrite_0cyc_X_87ln : 165001095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 165101095a5dSDimitry Andric let Latency = 0; let NumMicroOps = 1; 165201095a5dSDimitry Andric} 165301095a5dSDimitry Andricdef : InstRW<[KryoWrite_0cyc_X_87ln], 165401095a5dSDimitry Andric (instrs MSRpstateImm4)>; 165501095a5dSDimitry Andricdef : InstRW<[KryoWrite_0cyc_X_87ln], 165601095a5dSDimitry Andric (instrs MSRpstateImm1)>; 165701095a5dSDimitry Andricdef KryoWrite_0cyc_XY_88ln : 165801095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 165901095a5dSDimitry Andric let Latency = 0; let NumMicroOps = 1; 166001095a5dSDimitry Andric} 166101095a5dSDimitry Andricdef : InstRW<[KryoWrite_0cyc_XY_88ln], 166201095a5dSDimitry Andric (instrs MSR)>; 166301095a5dSDimitry Andricdef KryoWrite_1cyc_XY_noRSV_143ln : 166401095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 166501095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 166601095a5dSDimitry Andric} 166701095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_noRSV_143ln], 166801095a5dSDimitry Andric (instregex "NEG(v8i8|v4i16|v2i32|v1i64)")>; 166901095a5dSDimitry Andricdef KryoWrite_1cyc_XY_XY_145ln : 167001095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 167101095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 167201095a5dSDimitry Andric} 167301095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_XY_145ln], 167401095a5dSDimitry Andric (instregex "NEG(v16i8|v8i16|v4i32|v2i64)")>; 167501095a5dSDimitry Andricdef KryoWrite_1cyc_XY_noRSV_193ln : 167601095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 167701095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 167801095a5dSDimitry Andric} 167901095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_noRSV_193ln], 168001095a5dSDimitry Andric (instrs NOTv8i8)>; 168101095a5dSDimitry Andricdef KryoWrite_1cyc_XY_XY_194ln : 168201095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 168301095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 168401095a5dSDimitry Andric} 168501095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_XY_194ln], 168601095a5dSDimitry Andric (instrs NOTv16i8)>; 168701095a5dSDimitry Andricdef KryoWrite_2cyc_XY_noRSV_234ln : 168801095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 168901095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 169001095a5dSDimitry Andric} 169101095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_noRSV_234ln], 169201095a5dSDimitry Andric (instrs PMULv8i8)>; 169301095a5dSDimitry Andricdef KryoWrite_2cyc_XY_XY_236ln : 169401095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 169501095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 169601095a5dSDimitry Andric} 169701095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_XY_236ln], 169801095a5dSDimitry Andric (instrs PMULv16i8)>; 169901095a5dSDimitry Andricdef KryoWrite_2cyc_XY_XY_235ln : 170001095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 170101095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 170201095a5dSDimitry Andric} 170301095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_XY_235ln], 170401095a5dSDimitry Andric (instrs PMULLv8i8, PMULLv16i8)>; 170501095a5dSDimitry Andricdef KryoWrite_3cyc_XY_XY_237ln : 170601095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 170701095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 170801095a5dSDimitry Andric} 170901095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_XY_237ln], 171001095a5dSDimitry Andric (instrs PMULLv1i64, PMULLv2i64)>; 171101095a5dSDimitry Andricdef KryoWrite_0cyc_LS_254ln : 171201095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS]> { 171301095a5dSDimitry Andric let Latency = 0; let NumMicroOps = 1; 171401095a5dSDimitry Andric} 171501095a5dSDimitry Andricdef : InstRW<[KryoWrite_0cyc_LS_254ln], 171601095a5dSDimitry Andric (instrs PRFMl, PRFMui)>; 171701095a5dSDimitry Andricdef KryoWrite_0cyc_LS_253ln : 171801095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS]> { 171901095a5dSDimitry Andric let Latency = 0; let NumMicroOps = 1; 172001095a5dSDimitry Andric} 172101095a5dSDimitry Andricdef : InstRW<[KryoWrite_0cyc_LS_253ln], 172201095a5dSDimitry Andric (instrs PRFUMi)>; 172301095a5dSDimitry Andricdef KryoWrite_6cyc_XY_X_noRSV_175ln : 172401095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitX]> { 172501095a5dSDimitry Andric let Latency = 6; let NumMicroOps = 3; 172601095a5dSDimitry Andric} 172701095a5dSDimitry Andricdef : InstRW<[KryoWrite_6cyc_XY_X_noRSV_175ln], 172801095a5dSDimitry Andric (instregex "R(ADD|SUB)HNv.*")>; 172901095a5dSDimitry Andricdef KryoWrite_2cyc_XY_204ln : 173001095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 173101095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 1; 173201095a5dSDimitry Andric} 173301095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_204ln], 173401095a5dSDimitry Andric (instrs RBITWr, RBITXr)>; 173501095a5dSDimitry Andricdef KryoWrite_2cyc_XY_noRSV_218ln : 173601095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 173701095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 173801095a5dSDimitry Andric} 173901095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_noRSV_218ln], 174001095a5dSDimitry Andric (instrs RBITv8i8)>; 174101095a5dSDimitry Andricdef KryoWrite_2cyc_XY_XY_219ln : 174201095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 174301095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 174401095a5dSDimitry Andric} 174501095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_XY_219ln], 174601095a5dSDimitry Andric (instrs RBITv16i8)>; 174701095a5dSDimitry Andricdef KryoWrite_1cyc_X_202ln : 174801095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 174901095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 1; 175001095a5dSDimitry Andric} 175101095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_X_202ln], 175201095a5dSDimitry Andric (instregex "REV(16|32)?(W|X)r")>; 175301095a5dSDimitry Andricdef KryoWrite_1cyc_XY_noRSV_214ln : 175401095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 175501095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 175601095a5dSDimitry Andric} 175701095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_noRSV_214ln], 175801095a5dSDimitry Andric (instregex "REV(16|32|64)(v8i8|v4i16|v2i32)")>; 175901095a5dSDimitry Andricdef KryoWrite_1cyc_XY_XY_216ln : 176001095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 176101095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 176201095a5dSDimitry Andric} 176301095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_XY_216ln], 176401095a5dSDimitry Andric (instregex "REV(16|32|64)(v16i8|v8i16|v4i32)")>; 176501095a5dSDimitry Andricdef KryoWrite_3cyc_X_noRSV_244ln : 176601095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 176701095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 176801095a5dSDimitry Andric} 176901095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_X_noRSV_244ln], 177001095a5dSDimitry Andric (instregex "S(L|R)I(d|(v8i8|v4i16|v2i32)_shift)")>; 177101095a5dSDimitry Andricdef KryoWrite_3cyc_X_X_245ln : 177201095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX]> { 177301095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 177401095a5dSDimitry Andric} 177501095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_X_X_245ln], 177601095a5dSDimitry Andric (instregex "S(L|R)I(v16i8|v8i16|v4i32|v2i64)_shift")>; 177701095a5dSDimitry Andricdef KryoWrite_1cyc_XY_2ln : 177801095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 177901095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 1; 178001095a5dSDimitry Andric} 178101095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_2ln, ReadI, ReadI], 178201095a5dSDimitry Andric (instregex "SBCS?(W|X)r")>; 178301095a5dSDimitry Andricdef KryoWrite_2cyc_XA_XA_XA_24ln : 178401095a5dSDimitry Andric SchedWriteRes<[KryoUnitXA, KryoUnitXA, KryoUnitXA]> { 178501095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 3; 178601095a5dSDimitry Andric} 178701095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XA_XA_XA_24ln], 178801095a5dSDimitry Andric (instrs SHA1Crrr, SHA1Mrrr, SHA1Prrr)>; 178901095a5dSDimitry Andricdef KryoWrite_1cyc_XY_noRSV_21ln : 179001095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 179101095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 179201095a5dSDimitry Andric} 179301095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_noRSV_21ln], 179401095a5dSDimitry Andric (instrs SHA1Hrr)>; 179501095a5dSDimitry Andricdef KryoWrite_2cyc_X_X_23ln : 179601095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX]> { 179701095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 179801095a5dSDimitry Andric} 179901095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_X_X_23ln], 180001095a5dSDimitry Andric (instrs SHA1SU0rrr, SHA1SU1rr, SHA256SU0rr)>; 180101095a5dSDimitry Andricdef KryoWrite_4cyc_XA_XA_XA_25ln : 180201095a5dSDimitry Andric SchedWriteRes<[KryoUnitXA, KryoUnitXA, KryoUnitXA]> { 180301095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 3; 180401095a5dSDimitry Andric} 180501095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_XA_XA_XA_25ln], 180601095a5dSDimitry Andric (instrs SHA256Hrrr, SHA256H2rrr)>; 180701095a5dSDimitry Andricdef KryoWrite_3cyc_XY_XY_X_X_26ln : 180801095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY, KryoUnitX, KryoUnitX]> { 180901095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 4; 181001095a5dSDimitry Andric} 181101095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_XY_X_X_26ln], 181201095a5dSDimitry Andric (instrs SHA256SU1rrr)>; 181301095a5dSDimitry Andricdef KryoWrite_4cyc_X_noRSV_189ln : 181401095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 181501095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 2; 181601095a5dSDimitry Andric} 181701095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_X_noRSV_189ln], 181801095a5dSDimitry Andric (instregex "SQR?DMULH(v8i8|v4i16|v1i32|v2i32|v1i16)(_indexed)?")>; 181901095a5dSDimitry Andricdef KryoWrite_3cyc_XY_noRSV_68ln : 182001095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 182101095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 182201095a5dSDimitry Andric} 182301095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_noRSV_68ln], 182401095a5dSDimitry Andric (instregex "SQ(ABS|NEG)(v1i8|v1i16|v1i32|v1i64)")>; 182501095a5dSDimitry Andricdef KryoWrite_3cyc_XY_noRSV_157ln : 182601095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 182701095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 182801095a5dSDimitry Andric} 182901095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_noRSV_157ln], 183001095a5dSDimitry Andric (instregex "SQ(ABS|NEG)(v8i8|v4i16|v2i32)")>; 183101095a5dSDimitry Andricdef KryoWrite_3cyc_XY_XY_164ln : 183201095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 183301095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 183401095a5dSDimitry Andric} 183501095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_XY_164ln], 183601095a5dSDimitry Andric (instregex "SQ(ABS|NEG)(v16i8|v8i16|v4i32|v2i64)")>; 183701095a5dSDimitry Andricdef KryoWrite_4cyc_X_noRSV_190ln : 183801095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 183901095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 2; 184001095a5dSDimitry Andric} 184101095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_X_noRSV_190ln], 184201095a5dSDimitry Andric (instregex "SQD(MLAL|MLSL|MULL)(i16|i32)")>; 184301095a5dSDimitry Andricdef KryoWrite_0cyc_LS_Y_274ln : 184401095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitY]> { 184501095a5dSDimitry Andric let Latency = 0; let NumMicroOps = 2; 184601095a5dSDimitry Andric} 184701095a5dSDimitry Andricdef : InstRW<[KryoWrite_0cyc_LS_Y_274ln], 184801095a5dSDimitry Andric (instregex "ST1(One(v8b|v4h|v2s|v1d|v16b|v8h|v4s|v2d)|(i8|i16|i32|i64)|Two(v8b|v4h|v2s|v1d))$")>; 184901095a5dSDimitry Andricdef KryoWrite_1cyc_LS_Y_X_301ln : 185001095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitX]> { 185101095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 3; 185201095a5dSDimitry Andric} 185301095a5dSDimitry Andricdef : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_X_301ln], 185401095a5dSDimitry Andric (instregex "ST1(One(v8b|v4h|v2s|v1d|v16b|v8h|v4s|v2d)|(i8|i16|i32|i64)|Two(v8b|v4h|v2s|v1d))_POST$")>; 185501095a5dSDimitry Andricdef KryoWrite_1cyc_LS_Y_XY_305ln : 185601095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitXY]> { 185701095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 3; 185801095a5dSDimitry Andric} 185901095a5dSDimitry Andricdef : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_XY_305ln], 186001095a5dSDimitry Andric (instregex "ST1(One(v16b|v8h|v4s|v2d)|Two(v8b|v4h|v2s|v1d))_POST$")>; 186101095a5dSDimitry Andricdef KryoWrite_0cyc_LS_Y_LS_Y_323ln : 186201095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY]> { 186301095a5dSDimitry Andric let Latency = 0; let NumMicroOps = 4; 186401095a5dSDimitry Andric} 186501095a5dSDimitry Andricdef : InstRW<[WriteAdr, KryoWrite_0cyc_LS_Y_LS_Y_323ln], 186601095a5dSDimitry Andric (instregex "ST1(Two(v16b|v8h|v4s|v2d)|(Three|Four)(v8b|v4h|v2s|v1d))_POST$")>; 186701095a5dSDimitry Andricdef KryoWrite_1cyc_LS_Y_XY_LS_Y_345ln : 186801095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitXY, KryoUnitLS, KryoUnitY]> { 186901095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 5; 187001095a5dSDimitry Andric} 187101095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_LS_Y_XY_LS_Y_345ln], 187201095a5dSDimitry Andric (instregex "ST1(Two(v16b|v8h|v4s|v2d)|(Three|Four)(v8b|v4h|v2s|v1d))$")>; 187301095a5dSDimitry Andricdef KryoWrite_0cyc_LS_Y_LS_Y_LS_Y_356ln : 187401095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY, KryoUnitLS, 187501095a5dSDimitry Andric KryoUnitY]> { 187601095a5dSDimitry Andric let Latency = 0; let NumMicroOps = 6; 187701095a5dSDimitry Andric} 187801095a5dSDimitry Andricdef : InstRW<[KryoWrite_0cyc_LS_Y_LS_Y_LS_Y_356ln], 187901095a5dSDimitry Andric (instregex "ST1Three(v16b|v8h|v4s|v2d)$")>; 188001095a5dSDimitry Andricdef KryoWrite_1cyc_LS_Y_XY_LS_Y_LS_Y_366ln : 188101095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitXY, KryoUnitLS, KryoUnitY, 188201095a5dSDimitry Andric KryoUnitLS, KryoUnitY]> { 188301095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 7; 188401095a5dSDimitry Andric} 188501095a5dSDimitry Andricdef : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_XY_LS_Y_LS_Y_366ln], 188601095a5dSDimitry Andric (instregex "ST1Three(v16b|v8h|v4s|v2d)_POST$")>; 188701095a5dSDimitry Andricdef KryoWrite_0cyc_LS_Y_LS_Y_LS_Y_LS_Y_371ln : 188801095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY, KryoUnitLS, 188901095a5dSDimitry Andric KryoUnitY, KryoUnitLS, KryoUnitY]> { 189001095a5dSDimitry Andric let Latency = 0; let NumMicroOps = 8; 189101095a5dSDimitry Andric} 189201095a5dSDimitry Andricdef : InstRW<[KryoWrite_0cyc_LS_Y_LS_Y_LS_Y_LS_Y_371ln], 189301095a5dSDimitry Andric (instregex "ST1Four(v16b|v8h|v4s|v2d)$")>; 189401095a5dSDimitry Andricdef KryoWrite_0cyc_LS_Y_LS_Y_XY_LS_Y_LS_Y_377ln : 189501095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY, KryoUnitXY, 189601095a5dSDimitry Andric KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY]> { 189701095a5dSDimitry Andric let Latency = 0; let NumMicroOps = 9; 189801095a5dSDimitry Andric} 189901095a5dSDimitry Andricdef : InstRW<[WriteAdr, KryoWrite_0cyc_LS_Y_LS_Y_XY_LS_Y_LS_Y_377ln], 190001095a5dSDimitry Andric (instregex "ST1Four(v16b|v8h|v4s|v2d)_POST$")>; 190101095a5dSDimitry Andricdef KryoWrite_0cyc_LS_Y_275ln : 190201095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitY]> { 190301095a5dSDimitry Andric let Latency = 0; let NumMicroOps = 2; 190401095a5dSDimitry Andric} 190501095a5dSDimitry Andricdef : InstRW<[KryoWrite_0cyc_LS_Y_275ln], 190601095a5dSDimitry Andric (instregex "ST2(Two(v8b|v4h|v2s|v1d|v16b|v8h|v4s|v2d)|(i8|i16|i32|i64))$")>; 190701095a5dSDimitry Andricdef KryoWrite_1cyc_LS_Y_XY_306ln : 190801095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitXY]> { 190901095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 3; 191001095a5dSDimitry Andric} 191101095a5dSDimitry Andricdef : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_XY_306ln], 191201095a5dSDimitry Andric (instregex "ST2(Two(v8b|v4h|v2s|v1d)|(i8|i16|i32|i64))_POST$")>; 191301095a5dSDimitry Andricdef KryoWrite_0cyc_LS_Y_LS_Y_322ln : 191401095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY]> { 191501095a5dSDimitry Andric let Latency = 0; let NumMicroOps = 4; 191601095a5dSDimitry Andric} 191701095a5dSDimitry Andricdef : InstRW<[KryoWrite_0cyc_LS_Y_LS_Y_322ln], 191801095a5dSDimitry Andric (instregex "ST2Two(v16b|v8h|v4s|v2d)$")>; 191901095a5dSDimitry Andricdef KryoWrite_1cyc_LS_Y_XY_LS_Y_344ln : 192001095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitXY, KryoUnitLS, KryoUnitY]> { 192101095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 5; 192201095a5dSDimitry Andric} 192301095a5dSDimitry Andricdef : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_XY_LS_Y_344ln], 192401095a5dSDimitry Andric (instregex "ST2Two(v16b|v8h|v4s|v2d)_POST$")>; 192501095a5dSDimitry Andricdef KryoWrite_0cyc_LS_Y_LS_Y_324ln : 192601095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY]> { 192701095a5dSDimitry Andric let Latency = 0; let NumMicroOps = 4; 192801095a5dSDimitry Andric} 192901095a5dSDimitry Andricdef : InstRW<[KryoWrite_0cyc_LS_Y_LS_Y_324ln], 193001095a5dSDimitry Andric (instregex "ST3(Threev1d|(i8|i16|i32|i64))$")>; 193101095a5dSDimitry Andricdef KryoWrite_1cyc_LS_Y_XY_LS_Y_346ln : 193201095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitXY, KryoUnitLS, KryoUnitY]> { 193301095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 5; 193401095a5dSDimitry Andric} 193501095a5dSDimitry Andricdef : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_XY_LS_Y_346ln], 193601095a5dSDimitry Andric (instregex "ST3(Threev1d|(i8|i16|i32|i64))_POST$")>; 193701095a5dSDimitry Andricdef KryoWrite_1cyc_X_X_LS_Y_LS_Y_353ln : 193801095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitLS, 193901095a5dSDimitry Andric KryoUnitY]> { 194001095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 6; 194101095a5dSDimitry Andric} 194201095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_X_X_LS_Y_LS_Y_353ln], 194301095a5dSDimitry Andric (instregex "ST3Three(v8b|v4h|v2s)$")>; 194401095a5dSDimitry Andricdef KryoWrite_0cyc_LS_Y_LS_Y_LS_Y_357ln : 194501095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY, KryoUnitLS, 194601095a5dSDimitry Andric KryoUnitY]> { 194701095a5dSDimitry Andric let Latency = 0; let NumMicroOps = 6; 194801095a5dSDimitry Andric} 194901095a5dSDimitry Andricdef : InstRW<[KryoWrite_0cyc_LS_Y_LS_Y_LS_Y_357ln], 195001095a5dSDimitry Andric (instregex "ST3Threev2d$")>; 195101095a5dSDimitry Andricdef KryoWrite_1cyc_X_X_LS_Y_XY_LS_Y_363ln : 195201095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitXY, 195301095a5dSDimitry Andric KryoUnitLS, KryoUnitY]> { 195401095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 7; 195501095a5dSDimitry Andric} 195601095a5dSDimitry Andricdef : InstRW<[WriteAdr, KryoWrite_1cyc_X_X_LS_Y_XY_LS_Y_363ln], 195701095a5dSDimitry Andric (instregex "ST3Three(v8b|v4h|v2s)_POST$")>; 195801095a5dSDimitry Andricdef KryoWrite_1cyc_LS_Y_XY_LS_Y_LS_Y_367ln : 195901095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitXY, KryoUnitLS, KryoUnitY, 196001095a5dSDimitry Andric KryoUnitLS, KryoUnitY]> { 196101095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 7; 196201095a5dSDimitry Andric} 196301095a5dSDimitry Andricdef : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_XY_LS_Y_LS_Y_367ln], 196401095a5dSDimitry Andric (instregex "ST3Threev2d_POST$")>; 196501095a5dSDimitry Andricdef KryoWrite_1cyc_X_X_LS_Y_LS_Y_X_X_LS_Y_LS_Y_385ln : 196601095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitLS, 196701095a5dSDimitry Andric KryoUnitY, KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY, 196801095a5dSDimitry Andric KryoUnitLS, KryoUnitY]> { 196901095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 12; 197001095a5dSDimitry Andric} 197101095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_X_X_LS_Y_LS_Y_X_X_LS_Y_LS_Y_385ln], 197201095a5dSDimitry Andric (instregex "ST3Three(v16b|v8h|v4s)$")>; 197301095a5dSDimitry Andricdef KryoWrite_1cyc_X_X_LS_Y_LS_Y_X_X_LS_Y_XY_LS_Y_388ln : 197401095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitLS, 197501095a5dSDimitry Andric KryoUnitY, KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY, 197601095a5dSDimitry Andric KryoUnitXY, KryoUnitLS, KryoUnitY]> { 197701095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 13; 197801095a5dSDimitry Andric} 197901095a5dSDimitry Andricdef : InstRW<[WriteAdr, KryoWrite_1cyc_X_X_LS_Y_LS_Y_X_X_LS_Y_XY_LS_Y_388ln], 198001095a5dSDimitry Andric (instregex "ST3Three(v16b|v8h|v4s)_POST$")>; 198101095a5dSDimitry Andricdef KryoWrite_0cyc_LS_Y_LS_Y_325ln : 198201095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY]> { 198301095a5dSDimitry Andric let Latency = 0; let NumMicroOps = 4; 198401095a5dSDimitry Andric} 198501095a5dSDimitry Andricdef : InstRW<[KryoWrite_0cyc_LS_Y_LS_Y_325ln], 198601095a5dSDimitry Andric (instregex "ST4(Fourv1d|(i8|i16|i32|i64))$")>; 198701095a5dSDimitry Andricdef KryoWrite_1cyc_LS_Y_XY_LS_Y_347ln : 198801095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitXY, KryoUnitLS, KryoUnitY]> { 198901095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 5; 199001095a5dSDimitry Andric} 199101095a5dSDimitry Andricdef : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_XY_LS_Y_347ln], 199201095a5dSDimitry Andric (instregex "ST4(Fourv1d|(i8|i16|i32|i64))_POST$")>; 199301095a5dSDimitry Andricdef KryoWrite_1cyc_X_X_LS_Y_X_X_LS_Y_370ln : 199401095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitX, 199501095a5dSDimitry Andric KryoUnitX, KryoUnitLS, KryoUnitY]> { 199601095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 8; 199701095a5dSDimitry Andric} 199801095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_X_X_LS_Y_X_X_LS_Y_370ln], 199901095a5dSDimitry Andric (instregex "ST4Four(v8b|v4h|v2s)$")>; 200001095a5dSDimitry Andricdef KryoWrite_0cyc_LS_Y_LS_Y_LS_Y_LS_Y_372ln : 200101095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY, KryoUnitLS, 200201095a5dSDimitry Andric KryoUnitY, KryoUnitLS, KryoUnitY]> { 200301095a5dSDimitry Andric let Latency = 0; let NumMicroOps = 8; 200401095a5dSDimitry Andric} 200501095a5dSDimitry Andricdef : InstRW<[KryoWrite_0cyc_LS_Y_LS_Y_LS_Y_LS_Y_372ln], 200601095a5dSDimitry Andric (instregex "ST4Fourv2d$")>; 200701095a5dSDimitry Andricdef KryoWrite_1cyc_X_X_LS_Y_XY_X_X_LS_Y_375ln : 200801095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitXY, 200901095a5dSDimitry Andric KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY]> { 201001095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 9; 201101095a5dSDimitry Andric} 201201095a5dSDimitry Andricdef : InstRW<[WriteAdr, KryoWrite_1cyc_X_X_LS_Y_XY_X_X_LS_Y_375ln], 201301095a5dSDimitry Andric (instregex "ST4Four(v8b|v4h|v2s)_POST$")>; 201401095a5dSDimitry Andricdef KryoWrite_0cyc_LS_Y_LS_Y_XY_LS_Y_LS_Y_379ln : 201501095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY, KryoUnitXY, 201601095a5dSDimitry Andric KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY]> { 201701095a5dSDimitry Andric let Latency = 0; let NumMicroOps = 9; 201801095a5dSDimitry Andric} 201901095a5dSDimitry Andricdef : InstRW<[WriteAdr, KryoWrite_0cyc_LS_Y_LS_Y_XY_LS_Y_LS_Y_379ln], 202001095a5dSDimitry Andric (instregex "ST4Fourv2d_POST$")>; 202101095a5dSDimitry Andricdef KryoWrite_1cyc_X_X_LS_Y_X_X_LS_Y_X_X_LS_Y_X_X_LS_Y_390ln : 202201095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitX, 202301095a5dSDimitry Andric KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitX, KryoUnitX, 202401095a5dSDimitry Andric KryoUnitLS, KryoUnitY, KryoUnitX, KryoUnitX, KryoUnitLS, 202501095a5dSDimitry Andric KryoUnitY]> { 202601095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 16; 202701095a5dSDimitry Andric} 202801095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_X_X_LS_Y_X_X_LS_Y_X_X_LS_Y_X_X_LS_Y_390ln], 202901095a5dSDimitry Andric (instregex "ST4Four(v16b|v8h|v4s)$")>; 203001095a5dSDimitry Andricdef KryoWrite_1cyc_X_X_LS_Y_X_X_LS_Y_X_X_LS_Y_XY_X_X_LS_Y_392ln : 203101095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitX, 203201095a5dSDimitry Andric KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitX, KryoUnitX, 203301095a5dSDimitry Andric KryoUnitLS, KryoUnitY, KryoUnitXY, KryoUnitX, KryoUnitX, 203401095a5dSDimitry Andric KryoUnitLS, KryoUnitY]> { 203501095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 17; 203601095a5dSDimitry Andric} 203701095a5dSDimitry Andricdef : InstRW<[WriteAdr, KryoWrite_1cyc_X_X_LS_Y_X_X_LS_Y_X_X_LS_Y_XY_X_X_LS_Y_392ln], 203801095a5dSDimitry Andric (instregex "ST4Four(v16b|v8h|v4s)_POST$")>; 203901095a5dSDimitry Andricdef KryoWrite_0cyc_LS_LS_Y_299ln : 204001095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitY]> { 204101095a5dSDimitry Andric let Latency = 0; let NumMicroOps = 3; 204201095a5dSDimitry Andric} 204301095a5dSDimitry Andricdef : InstRW<[KryoWrite_0cyc_LS_LS_Y_299ln], 204401095a5dSDimitry Andric (instregex "STLR(B|H|W|X)")>; 204501095a5dSDimitry Andricdef KryoWrite_3cyc_LS_LS_Y_307ln : 204601095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitY]> { 204701095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 3; 204801095a5dSDimitry Andric} 204901095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_LS_Y_307ln], 205001095a5dSDimitry Andric (instregex "STLX(P(W|X)|R(B|H|W|X))")>; 205101095a5dSDimitry Andricdef KryoWrite_0cyc_LS_Y_276ln : 205201095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitY]> { 205301095a5dSDimitry Andric let Latency = 0; let NumMicroOps = 2; 205401095a5dSDimitry Andric} 205501095a5dSDimitry Andricdef : InstRW<[KryoWrite_0cyc_LS_Y_276ln], 205601095a5dSDimitry Andric (instrs STNPDi, STNPSi)>; 205701095a5dSDimitry Andricdef KryoWrite_0cyc_LS_Y_LS_Y_326ln : 205801095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY]> { 205901095a5dSDimitry Andric let Latency = 0; let NumMicroOps = 4; 206001095a5dSDimitry Andric} 206101095a5dSDimitry Andricdef : InstRW<[KryoWrite_0cyc_LS_Y_LS_Y_326ln], 206201095a5dSDimitry Andric (instrs STNPQi)>; 206301095a5dSDimitry Andricdef KryoWrite_0cyc_LS_Y_280ln : 206401095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitY]> { 206501095a5dSDimitry Andric let Latency = 0; let NumMicroOps = 2; 206601095a5dSDimitry Andric} 206701095a5dSDimitry Andricdef : InstRW<[KryoWrite_0cyc_LS_Y_280ln], 206801095a5dSDimitry Andric (instrs STNPWi, STNPXi)>; 206901095a5dSDimitry Andricdef KryoWrite_0cyc_LS_Y_277ln : 207001095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitY]> { 207101095a5dSDimitry Andric let Latency = 0; let NumMicroOps = 2; 207201095a5dSDimitry Andric} 207301095a5dSDimitry Andricdef : InstRW<[KryoWrite_0cyc_LS_Y_277ln], 207401095a5dSDimitry Andric (instregex "STP(D|S)i")>; 207501095a5dSDimitry Andricdef KryoWrite_1cyc_LS_Y_X_303ln : 207601095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitX]> { 207701095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 3; 207801095a5dSDimitry Andric} 207901095a5dSDimitry Andricdef : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_X_303ln], 208001095a5dSDimitry Andric (instregex "STP(D|S)(post|pre)")>; 208101095a5dSDimitry Andricdef KryoWrite_0cyc_LS_Y_LS_Y_327ln : 208201095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY]> { 208301095a5dSDimitry Andric let Latency = 0; let NumMicroOps = 4; 208401095a5dSDimitry Andric} 208501095a5dSDimitry Andricdef : InstRW<[KryoWrite_0cyc_LS_Y_LS_Y_327ln], 208601095a5dSDimitry Andric (instrs STPQi)>; 208701095a5dSDimitry Andricdef KryoWrite_1cyc_LS_Y_X_LS_Y_343ln : 208801095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitX, KryoUnitLS, KryoUnitY]> { 208901095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 5; 209001095a5dSDimitry Andric} 209101095a5dSDimitry Andricdef : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_X_LS_Y_343ln], 209201095a5dSDimitry Andric (instrs STPQpost, STPQpre)>; 209301095a5dSDimitry Andricdef KryoWrite_0cyc_LS_Y_279ln : 209401095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitY]> { 209501095a5dSDimitry Andric let Latency = 0; let NumMicroOps = 2; 209601095a5dSDimitry Andric} 209701095a5dSDimitry Andricdef : InstRW<[KryoWrite_0cyc_LS_Y_279ln], 209801095a5dSDimitry Andric (instregex "STP(W|X)i")>; 209901095a5dSDimitry Andricdef KryoWrite_1cyc_LS_X_Y_300ln : 210001095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitX, KryoUnitY]> { 210101095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 3; 210201095a5dSDimitry Andric} 210301095a5dSDimitry Andricdef : InstRW<[WriteAdr, KryoWrite_1cyc_LS_X_Y_300ln], 210401095a5dSDimitry Andric (instregex "STP(W|X)(post|pre)")>; 210501095a5dSDimitry Andricdef KryoWrite_0cyc_LS_Y_278ln : 210601095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitY]> { 210701095a5dSDimitry Andric let Latency = 0; let NumMicroOps = 2; 210801095a5dSDimitry Andric} 210901095a5dSDimitry Andricdef : InstRW<[KryoWrite_0cyc_LS_Y_278ln], 211001095a5dSDimitry Andric (instregex "STR(Q|D|S|H|B)ui")>; 211101095a5dSDimitry Andricdef KryoWrite_1cyc_X_LS_Y_295ln : 211201095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitLS, KryoUnitY]> { 211301095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 3; 211401095a5dSDimitry Andric} 211501095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_X_LS_Y_295ln], 211601095a5dSDimitry Andric (instregex "STR(D|S|H|B)ro(W|X)")>; 211701095a5dSDimitry Andricdef KryoWrite_1cyc_LS_Y_X_304ln : 211801095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitX]> { 211901095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 3; 212001095a5dSDimitry Andric} 212101095a5dSDimitry Andricdef : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_X_304ln], 212201095a5dSDimitry Andric (instregex "STR(Q|D|S|H|B)(post|pre)")>; 212301095a5dSDimitry Andricdef KryoWrite_2cyc_X_LS_Y_XY_LS_Y_354ln : 212401095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitXY, KryoUnitLS, 212501095a5dSDimitry Andric KryoUnitY]> { 212601095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 6; 212701095a5dSDimitry Andric} 212801095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_X_LS_Y_XY_LS_Y_354ln], 212901095a5dSDimitry Andric (instregex "STRQro(W|X)")>; 213001095a5dSDimitry Andricdef KryoWrite_0cyc_LS_Y_399ln : 213101095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitY]> { 213201095a5dSDimitry Andric let Latency = 0; let NumMicroOps = 2; 213301095a5dSDimitry Andric} 213401095a5dSDimitry Andricdef : InstRW<[KryoWrite_0cyc_LS_Y_399ln], 213501095a5dSDimitry Andric (instregex "STR(BB|HH|W|X)ui")>; 213601095a5dSDimitry Andricdef KryoWrite_1cyc_X_LS_Y_406ln : 213701095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitLS, KryoUnitY]> { 213801095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 3; 213901095a5dSDimitry Andric} 214001095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_X_LS_Y_406ln], 214101095a5dSDimitry Andric (instregex "STR(BB|HH|W|X)ro(W|X)")>; 214201095a5dSDimitry Andricdef KryoWrite_1cyc_LS_X_Y_407ln : 214301095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitX, KryoUnitY]> { 214401095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 3; 214501095a5dSDimitry Andric} 214601095a5dSDimitry Andricdef : InstRW<[WriteAdr, KryoWrite_1cyc_LS_X_Y_407ln], 214701095a5dSDimitry Andric (instregex "STR(BB|HH|W|X)(post|pre)")>; 214801095a5dSDimitry Andricdef KryoWrite_0cyc_LS_Y_398ln : 214901095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitY]> { 215001095a5dSDimitry Andric let Latency = 0; let NumMicroOps = 2; 215101095a5dSDimitry Andric} 215201095a5dSDimitry Andricdef : InstRW<[KryoWrite_0cyc_LS_Y_398ln], 215301095a5dSDimitry Andric (instregex "STTR(B|H|W|X)i")>; 215401095a5dSDimitry Andricdef KryoWrite_0cyc_LS_Y_396ln : 215501095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitY]> { 215601095a5dSDimitry Andric let Latency = 0; let NumMicroOps = 2; 215701095a5dSDimitry Andric} 215801095a5dSDimitry Andricdef : InstRW<[KryoWrite_0cyc_LS_Y_396ln], 215901095a5dSDimitry Andric (instregex "STUR(Q|D|S|H|B)i")>; 216001095a5dSDimitry Andricdef KryoWrite_0cyc_LS_Y_397ln : 216101095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitY]> { 216201095a5dSDimitry Andric let Latency = 0; let NumMicroOps = 2; 216301095a5dSDimitry Andric} 216401095a5dSDimitry Andricdef : InstRW<[KryoWrite_0cyc_LS_Y_397ln], 216501095a5dSDimitry Andric (instregex "STUR(BB|HH|W|X)i")>; 216601095a5dSDimitry Andricdef KryoWrite_3cyc_LS_Y_404ln : 216701095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS, KryoUnitY]> { 216801095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 216901095a5dSDimitry Andric} 217001095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_LS_Y_404ln], 217101095a5dSDimitry Andric (instregex "STX(P(W|X)|R(B|H|W|X))")>; 217201095a5dSDimitry Andricdef KryoWrite_3cyc_XY_noRSV_160ln : 217301095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 217401095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 217501095a5dSDimitry Andric} 217601095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_noRSV_160ln], 217701095a5dSDimitry Andric (instregex "^(SU|US)QADD(v8i8|v4i16|v2i32)")>; 217801095a5dSDimitry Andricdef KryoWrite_3cyc_XY_XY_167ln : 217901095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 218001095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 218101095a5dSDimitry Andric} 218201095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_XY_167ln], 218301095a5dSDimitry Andric (instregex "^(SU|US)QADD(v16i8|v8i16|v4i32|v2i64)")>; 218401095a5dSDimitry Andricdef KryoWrite_1cyc_XY_1ln : 218501095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 218601095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 1; 218701095a5dSDimitry Andric} 218801095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_1ln, ReadI], 218901095a5dSDimitry Andric (instregex "SUBS?(W|X)ri")>; 219001095a5dSDimitry Andricdef KryoWrite_2cyc_XY_XY_5ln : 219101095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 219201095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 219301095a5dSDimitry Andric} 219401095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_XY_5ln, ReadI, ReadIEReg], 219501095a5dSDimitry Andric (instregex "SUBS?(W|X)rx")>; 219601095a5dSDimitry Andricdef KryoWrite_2cyc_XY_XY_5_1ln : 219701095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 219801095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 2; 219901095a5dSDimitry Andric} 220001095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_XY_XY_5_1ln, ReadI, ReadISReg], 220101095a5dSDimitry Andric (instregex "SUBS?(W|X)rs")>; 220201095a5dSDimitry Andricdef KryoWrite_1cyc_XY_noRSV_6ln : 220301095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 220401095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 220501095a5dSDimitry Andric} 220601095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_noRSV_6ln, ReadI, ReadI], 220701095a5dSDimitry Andric (instregex "SUBS?(W|X)rr")>; 220801095a5dSDimitry Andricdef KryoWrite_0cyc_LS_9ln : 220901095a5dSDimitry Andric SchedWriteRes<[KryoUnitLS]> { 221001095a5dSDimitry Andric let Latency = 0; let NumMicroOps = 1; 221101095a5dSDimitry Andric} 221201095a5dSDimitry Andricdef : InstRW<[KryoWrite_0cyc_LS_9ln], 221301095a5dSDimitry Andric (instregex "SYSL?xt")>; 221401095a5dSDimitry Andricdef KryoWrite_1cyc_X_noRSV_205ln : 221501095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 221601095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 221701095a5dSDimitry Andric} 221801095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_X_noRSV_205ln], 221901095a5dSDimitry Andric (instrs TBLv8i8One)>; 222001095a5dSDimitry Andricdef KryoWrite_1cyc_X_X_208ln : 222101095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX]> { 222201095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 222301095a5dSDimitry Andric} 222401095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_X_X_208ln], 222501095a5dSDimitry Andric (instrs TBLv16i8One)>; 222601095a5dSDimitry Andricdef KryoWrite_2cyc_X_X_X_noRSV_222ln : 222701095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX]> { 222801095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 4; 222901095a5dSDimitry Andric} 223001095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_X_X_X_noRSV_222ln], 223101095a5dSDimitry Andric (instrs TBLv8i8Two)>; 223201095a5dSDimitry Andricdef KryoWrite_2cyc_X_X_X_X_X_X_224ln : 223301095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, 223401095a5dSDimitry Andric KryoUnitX]> { 223501095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 6; 223601095a5dSDimitry Andric} 223701095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_X_X_X_X_X_X_224ln], 223801095a5dSDimitry Andric (instrs TBLv16i8Two)>; 223901095a5dSDimitry Andricdef KryoWrite_3cyc_X_X_X_X_X_noRSV_225ln : 224001095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX]> { 224101095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 6; 224201095a5dSDimitry Andric} 224301095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_X_X_X_X_X_noRSV_225ln], 224401095a5dSDimitry Andric (instrs TBLv8i8Three)>; 224501095a5dSDimitry Andricdef KryoWrite_3cyc_X_X_X_X_X_X_X_noRSV_228ln : 224601095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, 224701095a5dSDimitry Andric KryoUnitX, KryoUnitX]> { 224801095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 8; 224901095a5dSDimitry Andric} 225001095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_X_X_X_X_X_X_X_noRSV_228ln], 225101095a5dSDimitry Andric (instrs TBLv8i8Four)>; 225201095a5dSDimitry Andricdef KryoWrite_4cyc_X_X_X_X_X_X_X_X_XY_X_X_230ln : 225301095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, 225401095a5dSDimitry Andric KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitXY, KryoUnitX, 225501095a5dSDimitry Andric KryoUnitX]> { 225601095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 11; 225701095a5dSDimitry Andric} 225801095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_X_X_X_X_X_X_X_X_XY_X_X_230ln], 225901095a5dSDimitry Andric (instrs TBLv16i8Three)>; 226001095a5dSDimitry Andricdef KryoWrite_4cyc_X_X_X_X_X_X_X_X_X_X_XY_X_X_X_X_232ln : 226101095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, 226201095a5dSDimitry Andric KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, 226301095a5dSDimitry Andric KryoUnitXY, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX]> { 226401095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 15; 226501095a5dSDimitry Andric} 226601095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_X_X_X_X_X_X_X_X_X_X_XY_X_X_X_X_232ln], 226701095a5dSDimitry Andric (instrs TBLv16i8Four)>; 226801095a5dSDimitry Andricdef KryoWrite_2cyc_X_X_noRSV_220ln : 226901095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX]> { 227001095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 3; 227101095a5dSDimitry Andric} 227201095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_X_X_noRSV_220ln], 227301095a5dSDimitry Andric (instrs TBXv8i8One)>; 227401095a5dSDimitry Andricdef KryoWrite_2cyc_X_X_X_X_221ln : 227501095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX]> { 227601095a5dSDimitry Andric let Latency = 2; let NumMicroOps = 4; 227701095a5dSDimitry Andric} 227801095a5dSDimitry Andricdef : InstRW<[KryoWrite_2cyc_X_X_X_X_221ln], 227901095a5dSDimitry Andric (instrs TBXv16i8One)>; 228001095a5dSDimitry Andricdef KryoWrite_3cyc_X_X_X_X_noRSV_223ln : 228101095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX]> { 228201095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 5; 228301095a5dSDimitry Andric} 228401095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_X_X_X_X_noRSV_223ln], 228501095a5dSDimitry Andric (instrs TBXv8i8Two)>; 228601095a5dSDimitry Andricdef KryoWrite_4cyc_X_X_X_X_X_X_noRSV_226ln : 228701095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, 228801095a5dSDimitry Andric KryoUnitX]> { 228901095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 7; 229001095a5dSDimitry Andric} 229101095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_X_X_X_X_X_X_noRSV_226ln], 229201095a5dSDimitry Andric (instrs TBXv8i8Three)>; 229301095a5dSDimitry Andricdef KryoWrite_3cyc_X_X_X_X_X_X_X_X_227ln : 229401095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, 229501095a5dSDimitry Andric KryoUnitX, KryoUnitX, KryoUnitX]> { 229601095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 8; 229701095a5dSDimitry Andric} 229801095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_X_X_X_X_X_X_X_X_227ln], 229901095a5dSDimitry Andric (instrs TBXv16i8Two)>; 230001095a5dSDimitry Andricdef KryoWrite_4cyc_X_X_X_X_X_X_X_X_noRSV_229ln : 230101095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, 230201095a5dSDimitry Andric KryoUnitX, KryoUnitX, KryoUnitX]> { 230301095a5dSDimitry Andric let Latency = 4; let NumMicroOps = 9; 230401095a5dSDimitry Andric} 230501095a5dSDimitry Andricdef : InstRW<[KryoWrite_4cyc_X_X_X_X_X_X_X_X_noRSV_229ln], 230601095a5dSDimitry Andric (instrs TBXv8i8Four)>; 230701095a5dSDimitry Andricdef KryoWrite_5cyc_X_X_X_X_X_X_X_X_X_XY_X_X_X_231ln : 230801095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, 230901095a5dSDimitry Andric KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitXY, 231001095a5dSDimitry Andric KryoUnitX, KryoUnitX, KryoUnitX]> { 231101095a5dSDimitry Andric let Latency = 5; let NumMicroOps = 13; 231201095a5dSDimitry Andric} 231301095a5dSDimitry Andricdef : InstRW<[KryoWrite_5cyc_X_X_X_X_X_X_X_X_X_XY_X_X_X_231ln], 231401095a5dSDimitry Andric (instrs TBXv16i8Three)>; 231501095a5dSDimitry Andricdef KryoWrite_5cyc_X_X_X_X_X_X_X_X_X_X_X_XY_X_X_X_X_X_233ln : 231601095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, 231701095a5dSDimitry Andric KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, 231801095a5dSDimitry Andric KryoUnitX, KryoUnitXY, KryoUnitX, KryoUnitX, KryoUnitX, 231901095a5dSDimitry Andric KryoUnitX, KryoUnitX]> { 232001095a5dSDimitry Andric let Latency = 5; let NumMicroOps = 17; 232101095a5dSDimitry Andric} 232201095a5dSDimitry Andricdef : InstRW<[KryoWrite_5cyc_X_X_X_X_X_X_X_X_X_X_X_XY_X_X_X_X_X_233ln], 232301095a5dSDimitry Andric (instrs TBXv16i8Four)>; 232401095a5dSDimitry Andricdef KryoWrite_1cyc_XY_XY_217ln : 232501095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 232601095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 232701095a5dSDimitry Andric} 232801095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_XY_217ln], 232901095a5dSDimitry Andric (instregex "((TRN1|TRN2|ZIP1|UZP1|UZP2)v2i64|ZIP2(v2i64|v4i32|v8i16|v16i8))")>; 233001095a5dSDimitry Andricdef KryoWrite_1cyc_X_X_211ln : 233101095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX]> { 233201095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 233301095a5dSDimitry Andric} 233401095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_X_X_211ln], 233501095a5dSDimitry Andric (instregex "(TRN1|TRN2)(v4i32|v8i16|v16i8)")>; 233601095a5dSDimitry Andricdef KryoWrite_1cyc_X_XY_213ln : 233701095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitXY]> { 233801095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 233901095a5dSDimitry Andric} 234001095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_X_XY_213ln], 234101095a5dSDimitry Andric (instregex "(TRN1|TRN2)(v2i32|v4i16|v8i8)")>; 234201095a5dSDimitry Andricdef KryoWrite_3cyc_XY_noRSV_156ln : 234301095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 234401095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 234501095a5dSDimitry Andric} 234601095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_noRSV_156ln], 234701095a5dSDimitry Andric (instrs URECPEv2i32, URSQRTEv2i32)>; 234801095a5dSDimitry Andricdef KryoWrite_3cyc_XY_XY_168ln : 234901095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY, KryoUnitXY]> { 235001095a5dSDimitry Andric let Latency = 3; let NumMicroOps = 2; 235101095a5dSDimitry Andric} 235201095a5dSDimitry Andricdef : InstRW<[KryoWrite_3cyc_XY_XY_168ln], 235301095a5dSDimitry Andric (instrs URECPEv4i32, URSQRTEv4i32)>; 235401095a5dSDimitry Andricdef KryoWrite_1cyc_X_X_210ln : 235501095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX]> { 235601095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 235701095a5dSDimitry Andric} 235801095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_X_X_210ln], 235901095a5dSDimitry Andric (instregex "(UZP1|UZP2)(v4i32|v8i16|v16i8)")>; 236001095a5dSDimitry Andricdef KryoWrite_1cyc_X_noRSV_206ln : 236101095a5dSDimitry Andric SchedWriteRes<[KryoUnitX]> { 236201095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 236301095a5dSDimitry Andric} 236401095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_X_noRSV_206ln], 236501095a5dSDimitry Andric (instregex "(UZP1|UZP2|ZIP1|ZIP2)(v2i32|v4i16|v8i8)")>; 236601095a5dSDimitry Andricdef KryoWrite_1cyc_XY_noRSV_215ln : 236701095a5dSDimitry Andric SchedWriteRes<[KryoUnitXY]> { 236801095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 236901095a5dSDimitry Andric} 237001095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_XY_noRSV_215ln], 237101095a5dSDimitry Andric (instregex "XTNv.*")>; 237201095a5dSDimitry Andricdef KryoWrite_1cyc_X_X_209ln : 237301095a5dSDimitry Andric SchedWriteRes<[KryoUnitX, KryoUnitX]> { 237401095a5dSDimitry Andric let Latency = 1; let NumMicroOps = 2; 237501095a5dSDimitry Andric} 237601095a5dSDimitry Andricdef : InstRW<[KryoWrite_1cyc_X_X_209ln], 237701095a5dSDimitry Andric (instregex "ZIP1(v4i32|v8i16|v16i8)")>; 2378