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