xref: /src/contrib/llvm-project/llvm/lib/Target/AArch64/AArch64SchedKryoDetails.td (revision 5ffd83dbcc34f10e07f6d3e968ae6365869615f4)
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