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