• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_10cyc_XA_Y_noRSV_43ln :
780	SchedWriteRes<[KryoUnitXA, KryoUnitY]> {
781	let Latency = 10; let NumMicroOps = 3;
782}
783def : InstRW<[KryoWrite_10cyc_XA_Y_noRSV_43ln],
784	(instrs FDIVSrr)>;
785def KryoWrite_14cyc_XA_Y_noRSV_43ln :
786	SchedWriteRes<[KryoUnitXA, KryoUnitY]> {
787	let Latency = 14; let NumMicroOps = 3;
788}
789def : InstRW<[KryoWrite_14cyc_XA_Y_noRSV_43ln],
790	(instrs FDIVDrr)>;
791def KryoWrite_10cyc_XA_Y_noRSV_121ln :
792	SchedWriteRes<[KryoUnitXA, KryoUnitY]> {
793	let Latency = 10; let NumMicroOps = 3;
794}
795def : InstRW<[KryoWrite_10cyc_XA_Y_noRSV_121ln],
796	(instrs FDIVv2f32)>;
797def KryoWrite_14cyc_XA_Y_XA_Y_123ln :
798	SchedWriteRes<[KryoUnitXA, KryoUnitY, KryoUnitXA, KryoUnitY]> {
799	let Latency = 14; let NumMicroOps = 4;
800}
801def : InstRW<[KryoWrite_14cyc_XA_Y_XA_Y_123ln],
802	(instrs FDIVv2f64, FDIVv4f32)>;
803def KryoWrite_5cyc_X_noRSV_55ln :
804	SchedWriteRes<[KryoUnitX]> {
805	let Latency = 5; let NumMicroOps = 2;
806}
807def : InstRW<[KryoWrite_5cyc_X_noRSV_55ln],
808	(instregex "FN?M(ADD|SUB)Srrr")>;
809def KryoWrite_6cyc_X_noRSV_57ln :
810	SchedWriteRes<[KryoUnitX]> {
811	let Latency = 6; let NumMicroOps = 2;
812}
813def : InstRW<[KryoWrite_6cyc_X_noRSV_57ln],
814	(instregex "FN?M(ADD|SUB)Drrr")>;
815def KryoWrite_5cyc_X_noRSV_51ln :
816	SchedWriteRes<[KryoUnitX]> {
817	let Latency = 5; let NumMicroOps = 2;
818}
819def : InstRW<[KryoWrite_5cyc_X_noRSV_51ln],
820	(instrs FMLAv2f32, FMLSv2f32, FMLAv1i32_indexed, FMLSv1i32_indexed)>;
821def KryoWrite_5cyc_X_X_56ln :
822	SchedWriteRes<[KryoUnitX, KryoUnitX]> {
823	let Latency = 5; let NumMicroOps = 2;
824}
825def : InstRW<[KryoWrite_5cyc_X_X_56ln],
826	(instrs FMLAv4f32, FMLSv4f32)>;
827def KryoWrite_6cyc_X_X_61ln :
828	SchedWriteRes<[KryoUnitX, KryoUnitX]> {
829	let Latency = 6; let NumMicroOps = 2;
830}
831def : InstRW<[KryoWrite_6cyc_X_X_61ln],
832	(instrs FMLAv2f64, FMLSv2f64)>;
833def KryoWrite_5cyc_X_noRSV_128ln :
834	SchedWriteRes<[KryoUnitX]> {
835	let Latency = 5; let NumMicroOps = 2;
836}
837def : InstRW<[KryoWrite_5cyc_X_noRSV_128ln],
838	(instrs FMLAv2i32_indexed, FMLSv2i32_indexed)>;
839def KryoWrite_5cyc_X_X_131ln :
840	SchedWriteRes<[KryoUnitX, KryoUnitX]> {
841	let Latency = 5; let NumMicroOps = 2;
842}
843def : InstRW<[KryoWrite_5cyc_X_X_131ln],
844	(instrs FMLAv4i32_indexed, FMLSv4i32_indexed)>;
845def KryoWrite_6cyc_X_X_134ln :
846	SchedWriteRes<[KryoUnitX, KryoUnitX]> {
847	let Latency = 6; let NumMicroOps = 2;
848}
849def : InstRW<[KryoWrite_6cyc_X_X_134ln],
850	(instrs FMLAv2i64_indexed, FMLSv2i64_indexed)>;
851def KryoWrite_6cyc_X_noRSV_60ln :
852	SchedWriteRes<[KryoUnitX]> {
853	let Latency = 6; let NumMicroOps = 2;
854}
855def : InstRW<[KryoWrite_6cyc_X_noRSV_60ln],
856	(instrs FMLAv1i64_indexed, FMLSv1i64_indexed, FMULv1i64_indexed, FMULXv1i64_indexed)>;
857def KryoWrite_1cyc_XY_45ln :
858	SchedWriteRes<[KryoUnitXY]> {
859	let Latency = 1; let NumMicroOps = 1;
860}
861def : InstRW<[KryoWrite_1cyc_XY_45ln],
862	(instregex "FMOV(XDHigh|DXHigh|DX)r")>;
863def KryoWrite_1cyc_XY_noRSV_47ln :
864	SchedWriteRes<[KryoUnitXY]> {
865	let Latency = 1; let NumMicroOps = 2;
866}
867def : InstRW<[KryoWrite_1cyc_XY_noRSV_47ln],
868	(instregex "FMOV(Di|Dr|Si|Sr|SWr|WSr|XDr|v.*_ns)")>;
869def KryoWrite_5cyc_X_noRSV_53ln :
870	SchedWriteRes<[KryoUnitX]> {
871	let Latency = 5; let NumMicroOps = 2;
872}
873def : InstRW<[KryoWrite_5cyc_X_noRSV_53ln],
874	(instrs FMULv1i32_indexed, FMULXv1i32_indexed)>;
875def KryoWrite_5cyc_X_noRSV_127ln :
876	SchedWriteRes<[KryoUnitX]> {
877	let Latency = 5; let NumMicroOps = 2;
878}
879def : InstRW<[KryoWrite_5cyc_X_noRSV_127ln],
880	(instrs FMULv2f32, FMULXv2f32, FMULv2i32_indexed, FMULXv2i32_indexed)>;
881def KryoWrite_5cyc_X_X_130ln :
882	SchedWriteRes<[KryoUnitX, KryoUnitX]> {
883	let Latency = 5; let NumMicroOps = 2;
884}
885def : InstRW<[KryoWrite_5cyc_X_X_130ln],
886	(instrs FMULv4f32, FMULXv4f32, FMULv4i32_indexed, FMULXv4i32_indexed)>;
887def KryoWrite_6cyc_X_X_133ln :
888	SchedWriteRes<[KryoUnitX, KryoUnitX]> {
889	let Latency = 6; let NumMicroOps = 2;
890}
891def : InstRW<[KryoWrite_6cyc_X_X_133ln],
892	(instrs FMULv2f64, FMULXv2f64, FMULv2i64_indexed, FMULXv2i64_indexed)>;
893def KryoWrite_5cyc_X_noRSV_54ln :
894	SchedWriteRes<[KryoUnitX]> {
895	let Latency = 5; let NumMicroOps = 2;
896}
897def : InstRW<[KryoWrite_5cyc_X_noRSV_54ln],
898	(instrs FMULSrr, FNMULSrr, FMULX32)>;
899def KryoWrite_6cyc_X_noRSV_59ln :
900	SchedWriteRes<[KryoUnitX]> {
901	let Latency = 6; let NumMicroOps = 2;
902}
903def : InstRW<[KryoWrite_6cyc_X_noRSV_59ln],
904	(instrs FMULDrr, FNMULDrr, FMULX64)>;
905def KryoWrite_3cyc_XY_noRSV_28ln :
906	SchedWriteRes<[KryoUnitXY]> {
907	let Latency = 3; let NumMicroOps = 2;
908}
909def : InstRW<[KryoWrite_3cyc_XY_noRSV_28ln],
910	(instrs FRECPEv1i32, FRECPEv1i64, FRSQRTEv1i32, FRSQRTEv1i64 )>;
911def KryoWrite_3cyc_XY_noRSV_99ln :
912	SchedWriteRes<[KryoUnitXY]> {
913	let Latency = 3; let NumMicroOps = 2;
914}
915def : InstRW<[KryoWrite_3cyc_XY_noRSV_99ln],
916	(instrs FRECPEv2f32, FRSQRTEv2f32)>;
917def KryoWrite_3cyc_XY_XY_102ln :
918	SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
919	let Latency = 3; let NumMicroOps = 2;
920}
921def : InstRW<[KryoWrite_3cyc_XY_XY_102ln],
922	(instrs FRECPEv2f64, FRECPEv4f32, FRSQRTEv2f64, FRSQRTEv4f32)>;
923def KryoWrite_5cyc_X_noRSV_52ln :
924	SchedWriteRes<[KryoUnitX]> {
925	let Latency = 5; let NumMicroOps = 2;
926}
927def : InstRW<[KryoWrite_5cyc_X_noRSV_52ln],
928	(instrs FRECPS32, FRSQRTS32)>;
929def KryoWrite_6cyc_X_noRSV_58ln :
930	SchedWriteRes<[KryoUnitX]> {
931	let Latency = 6; let NumMicroOps = 2;
932}
933def : InstRW<[KryoWrite_6cyc_X_noRSV_58ln],
934	(instrs FRECPS64, FRSQRTS64)>;
935def KryoWrite_5cyc_X_noRSV_126ln :
936	SchedWriteRes<[KryoUnitX]> {
937	let Latency = 5; let NumMicroOps = 2;
938}
939def : InstRW<[KryoWrite_5cyc_X_noRSV_126ln],
940	(instrs FRECPSv2f32, FRSQRTSv2f32)>;
941def KryoWrite_5cyc_X_X_129ln :
942	SchedWriteRes<[KryoUnitX, KryoUnitX]> {
943	let Latency = 5; let NumMicroOps = 2;
944}
945def : InstRW<[KryoWrite_5cyc_X_X_129ln],
946	(instrs FRECPSv4f32, FRSQRTSv4f32)>;
947def KryoWrite_6cyc_X_X_132ln :
948	SchedWriteRes<[KryoUnitX, KryoUnitX]> {
949	let Latency = 6; let NumMicroOps = 2;
950}
951def : InstRW<[KryoWrite_6cyc_X_X_132ln],
952	(instrs FRECPSv2f64, FRSQRTSv2f64)>;
953def KryoWrite_3cyc_XY_noRSV_50ln :
954	SchedWriteRes<[KryoUnitXY]> {
955	let Latency = 3; let NumMicroOps = 2;
956}
957def : InstRW<[KryoWrite_3cyc_XY_noRSV_50ln],
958	(instrs FRECPXv1i32, FRECPXv1i64)>;
959def KryoWrite_2cyc_XY_noRSV_39ln :
960	SchedWriteRes<[KryoUnitXY]> {
961	let Latency = 2; let NumMicroOps = 2;
962}
963def : InstRW<[KryoWrite_2cyc_XY_noRSV_39ln],
964	(instregex "FRINT(A|I|M|N|P|X|Z)(S|D)r")>;
965def KryoWrite_2cyc_XY_noRSV_108ln :
966	SchedWriteRes<[KryoUnitXY]> {
967	let Latency = 2; let NumMicroOps = 2;
968}
969def : InstRW<[KryoWrite_2cyc_XY_noRSV_108ln],
970	(instregex "FRINT(A|I|M|N|P|X|Z)v2f32")>;
971def KryoWrite_2cyc_XY_XY_109ln :
972	SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
973	let Latency = 2; let NumMicroOps = 2;
974}
975def : InstRW<[KryoWrite_2cyc_XY_XY_109ln],
976	(instregex "FRINT(A|I|M|N|P|X|Z)(v2f64|v4f32)")>;
977def KryoWrite_12cyc_XA_Y_noRSV_42ln :
978	SchedWriteRes<[KryoUnitXA, KryoUnitY]> {
979	let Latency = 12; let NumMicroOps = 3;
980}
981def : InstRW<[KryoWrite_12cyc_XA_Y_noRSV_42ln],
982	(instrs FSQRTSr)>;
983def KryoWrite_21cyc_XA_Y_noRSV_42ln :
984	SchedWriteRes<[KryoUnitXA, KryoUnitY]> {
985	let Latency = 21; let NumMicroOps = 3;
986}
987def : InstRW<[KryoWrite_21cyc_XA_Y_noRSV_42ln],
988	(instrs FSQRTDr)>;
989def KryoWrite_12cyc_XA_Y_noRSV_120ln :
990	SchedWriteRes<[KryoUnitXA, KryoUnitY]> {
991	let Latency = 12; let NumMicroOps = 3;
992}
993def : InstRW<[KryoWrite_12cyc_XA_Y_noRSV_120ln],
994	(instrs FSQRTv2f32)>;
995def KryoWrite_21cyc_XA_Y_XA_Y_122ln :
996	SchedWriteRes<[KryoUnitXA, KryoUnitY, KryoUnitXA, KryoUnitY]> {
997	let Latency = 21; let NumMicroOps = 4;
998}
999def : InstRW<[KryoWrite_21cyc_XA_Y_XA_Y_122ln],
1000	(instrs FSQRTv4f32)>;
1001def KryoWrite_36cyc_XA_Y_XA_Y_122ln :
1002	SchedWriteRes<[KryoUnitXA, KryoUnitY, KryoUnitXA, KryoUnitY]> {
1003	let Latency = 36; let NumMicroOps = 4;
1004}
1005def : InstRW<[KryoWrite_36cyc_XA_Y_XA_Y_122ln],
1006	(instrs FSQRTv2f64)>;
1007def KryoWrite_1cyc_X_201ln :
1008	SchedWriteRes<[KryoUnitX]> {
1009	let Latency = 1; let NumMicroOps = 1;
1010}
1011def : InstRW<[KryoWrite_1cyc_X_201ln],
1012	(instregex "INSv.*")>;
1013def KryoWrite_3cyc_LS_255ln :
1014	SchedWriteRes<[KryoUnitLS]> {
1015	let Latency = 3; let NumMicroOps = 1;
1016}
1017def : InstRW<[KryoWrite_3cyc_LS_255ln],
1018	(instregex "LD1(One(v16b|v8h|v4s|v2d)|i64)$")>;
1019def KryoWrite_4cyc_LS_X_270ln :
1020	SchedWriteRes<[KryoUnitLS, KryoUnitX]> {
1021	let Latency = 4; let NumMicroOps = 2;
1022}
1023def : InstRW<[KryoWrite_4cyc_LS_X_270ln],
1024	(instregex "LD1(i8|i16|i32)$")>;
1025def KryoWrite_3cyc_LS_noRSV_285ln :
1026	SchedWriteRes<[KryoUnitLS]> {
1027	let Latency = 3; let NumMicroOps = 2;
1028}
1029def : InstRW<[KryoWrite_3cyc_LS_noRSV_285ln],
1030	(instregex "LD1One(v8b|v4h|v2s|v1d)$")>;
1031def KryoWrite_3cyc_LS_XY_289ln :
1032	SchedWriteRes<[KryoUnitLS, KryoUnitXY]> {
1033	let Latency = 3; let NumMicroOps = 2;
1034}
1035def : InstRW<[KryoWrite_3cyc_LS_XY_289ln, WriteAdr],
1036	(instregex "LD1(One(v16b|v8h|v4s|v2d)|i64)_POST$")>;
1037def KryoWrite_4cyc_LS_XY_X_298ln :
1038	SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitX]> {
1039	let Latency = 4; let NumMicroOps = 3;
1040}
1041def : InstRW<[KryoWrite_4cyc_LS_XY_X_298ln, WriteAdr],
1042	(instregex "LD1(i8|i16|i32)_POST$")>;
1043def KryoWrite_3cyc_LS_LS_LS_308ln :
1044	SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitLS]> {
1045	let Latency = 3; let NumMicroOps = 3;
1046}
1047def : InstRW<[KryoWrite_3cyc_LS_LS_LS_308ln],
1048	(instregex "LD1Three(v16b|v8h|v4s|v2d)$")>;
1049def KryoWrite_3cyc_LS_XY_noRSV_317ln :
1050	SchedWriteRes<[KryoUnitLS, KryoUnitXY]> {
1051	let Latency = 3; let NumMicroOps = 3;
1052}
1053def : InstRW<[KryoWrite_3cyc_LS_XY_noRSV_317ln, WriteAdr],
1054	(instregex "LD1One(v8b|v4h|v2s|v1d)_POST$")>;
1055def KryoWrite_3cyc_LS_LS_LS_LS_328ln :
1056	SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitLS, KryoUnitLS]> {
1057	let Latency = 3; let NumMicroOps = 4;
1058}
1059def : InstRW<[KryoWrite_3cyc_LS_LS_LS_LS_328ln, WriteAdr],
1060	(instregex "LD1Four(v16b|v8h|v4s|v2d)_POST$")>;
1061def KryoWrite_3cyc_LS_XY_LS_LS_332ln :
1062	SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitLS]> {
1063	let Latency = 3; let NumMicroOps = 4;
1064}
1065def : InstRW<[KryoWrite_3cyc_LS_XY_LS_LS_332ln, WriteAdr],
1066	(instregex "LD1Three(v16b|v8h|v4s|v2d)_POST$")>;
1067def KryoWrite_3cyc_LS_LS_noRSV_noRSV_noRSV_348ln :
1068	SchedWriteRes<[KryoUnitLS, KryoUnitLS]> {
1069	let Latency = 3; let NumMicroOps = 5;
1070}
1071def : InstRW<[KryoWrite_3cyc_LS_LS_noRSV_noRSV_noRSV_348ln],
1072	(instregex "LD1Three(v8b|v4h|v2s|v1d)$")>;
1073def KryoWrite_3cyc_LS_XY_LS_LS_LS_351ln :
1074	SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitLS, KryoUnitLS]> {
1075	let Latency = 3; let NumMicroOps = 5;
1076}
1077def : InstRW<[KryoWrite_3cyc_LS_XY_LS_LS_LS_351ln],
1078	(instregex "LD1Four(v16b|v8h|v4s|v2d)$")>;
1079def KryoWrite_3cyc_LS_LS_noRSV_noRSV_noRSV_noRSV_358ln :
1080	SchedWriteRes<[KryoUnitLS, KryoUnitLS]> {
1081	let Latency = 3; let NumMicroOps = 6;
1082}
1083def : InstRW<[KryoWrite_3cyc_LS_LS_noRSV_noRSV_noRSV_noRSV_358ln],
1084	(instregex "LD1Four(v8b|v4h|v2s|v1d)$")>;
1085def KryoWrite_3cyc_LS_XY_LS_noRSV_noRSV_noRSV_360ln :
1086	SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS]> {
1087	let Latency = 3; let NumMicroOps = 6;
1088}
1089def : InstRW<[KryoWrite_3cyc_LS_XY_LS_noRSV_noRSV_noRSV_360ln, WriteAdr],
1090	(instregex "LD1Three(v8b|v4h|v2s|v1d)_POST$")>;
1091def KryoWrite_3cyc_LS_XY_LS_noRSV_noRSV_noRSV_noRSV_368ln :
1092	SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS]> {
1093	let Latency = 3; let NumMicroOps = 7;
1094}
1095def : InstRW<[KryoWrite_3cyc_LS_XY_LS_noRSV_noRSV_noRSV_noRSV_368ln, WriteAdr],
1096	(instregex "LD1Four(v8b|v4h|v2s|v1d)_POST$")>;
1097def KryoWrite_3cyc_LS_LS_281ln :
1098	SchedWriteRes<[KryoUnitLS, KryoUnitLS]> {
1099	let Latency = 3; let NumMicroOps = 2;
1100}
1101def : InstRW<[KryoWrite_3cyc_LS_LS_281ln],
1102	(instregex "LD(1|2)Two(v16b|v8h|v4s|v2d)$")>;
1103def KryoWrite_3cyc_LS_noRSV_noRSV_311ln :
1104	SchedWriteRes<[KryoUnitLS]> {
1105	let Latency = 3; let NumMicroOps = 3;
1106}
1107def : InstRW<[KryoWrite_3cyc_LS_noRSV_noRSV_311ln],
1108	(instregex "LD(1|2)Two(v8b|v4h|v2s|v1d)$")>;
1109def KryoWrite_3cyc_LS_XY_LS_313ln :
1110	SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS]> {
1111	let Latency = 3; let NumMicroOps = 3;
1112}
1113def : InstRW<[KryoWrite_3cyc_LS_XY_LS_313ln, WriteAdr],
1114	(instregex "LD(1|2)Two(v16b|v8h|v4s|v2d)_POST$")>;
1115def KryoWrite_3cyc_LS_XY_noRSV_noRSV_334ln :
1116	SchedWriteRes<[KryoUnitLS, KryoUnitXY]> {
1117	let Latency = 3; let NumMicroOps = 4;
1118}
1119def : InstRW<[KryoWrite_3cyc_LS_XY_noRSV_noRSV_334ln, WriteAdr],
1120	(instregex "LD(1|2)Two(v8b|v4h|v2s|v1d)_POST$")>;
1121def KryoWrite_3cyc_LS_256ln :
1122	SchedWriteRes<[KryoUnitLS]> {
1123	let Latency = 3; let NumMicroOps = 1;
1124}
1125def : InstRW<[KryoWrite_3cyc_LS_256ln],
1126	(instregex "LD1R(v16b|v8h|v4s|v2d)$")>;
1127def KryoWrite_3cyc_LS_noRSV_286ln :
1128	SchedWriteRes<[KryoUnitLS]> {
1129	let Latency = 3; let NumMicroOps = 2;
1130}
1131def : InstRW<[KryoWrite_3cyc_LS_noRSV_286ln],
1132	(instregex "LD1R(v8b|v4h|v2s|v1d)$")>;
1133def KryoWrite_3cyc_LS_XY_290ln :
1134	SchedWriteRes<[KryoUnitLS, KryoUnitXY]> {
1135	let Latency = 3; let NumMicroOps = 2;
1136}
1137def : InstRW<[KryoWrite_3cyc_LS_XY_290ln, WriteAdr],
1138	(instregex "LD1R(v16b|v8h|v4s|v2d)_POST$")>;
1139def KryoWrite_3cyc_LS_XY_noRSV_318ln :
1140	SchedWriteRes<[KryoUnitLS, KryoUnitXY]> {
1141	let Latency = 3; let NumMicroOps = 3;
1142}
1143def : InstRW<[KryoWrite_3cyc_LS_XY_noRSV_318ln, WriteAdr],
1144	(instregex "LD1R(v8b|v4h|v2s|v1d)_POST$")>;
1145def KryoWrite_3cyc_LS_257ln :
1146	SchedWriteRes<[KryoUnitLS]> {
1147	let Latency = 3; let NumMicroOps = 1;
1148}
1149def : InstRW<[KryoWrite_3cyc_LS_257ln],
1150	(instregex "LD2i64$")>;
1151def KryoWrite_3cyc_LS_XY_291ln :
1152	SchedWriteRes<[KryoUnitLS, KryoUnitXY]> {
1153	let Latency = 3; let NumMicroOps = 2;
1154}
1155def : InstRW<[KryoWrite_3cyc_LS_XY_291ln, WriteAdr],
1156	(instregex "LD2i64_POST$")>;
1157def KryoWrite_4cyc_LS_X_X_296ln :
1158	SchedWriteRes<[KryoUnitLS, KryoUnitX, KryoUnitX]> {
1159	let Latency = 4; let NumMicroOps = 3;
1160}
1161def : InstRW<[KryoWrite_4cyc_LS_X_X_296ln],
1162	(instregex "LD2(i8|i16|i32)$")>;
1163def KryoWrite_4cyc_LS_XY_X_X_321ln :
1164	SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitX, KryoUnitX]> {
1165	let Latency = 4; let NumMicroOps = 4;
1166}
1167def : InstRW<[KryoWrite_4cyc_LS_XY_X_X_321ln, WriteAdr],
1168	(instregex "LD2(i8|i16|i32)_POST$")>;
1169def KryoWrite_3cyc_LS_LS_282ln :
1170	SchedWriteRes<[KryoUnitLS, KryoUnitLS]> {
1171	let Latency = 3; let NumMicroOps = 2;
1172}
1173def : InstRW<[KryoWrite_3cyc_LS_LS_282ln],
1174	(instregex "LD2R(v16b|v8h|v4s|v2d)$")>;
1175def KryoWrite_3cyc_LS_noRSV_noRSV_312ln :
1176	SchedWriteRes<[KryoUnitLS]> {
1177	let Latency = 3; let NumMicroOps = 3;
1178}
1179def : InstRW<[KryoWrite_3cyc_LS_noRSV_noRSV_312ln],
1180	(instregex "LD2R(v8b|v4h|v2s|v1d)$")>;
1181def KryoWrite_3cyc_LS_XY_LS_314ln :
1182	SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS]> {
1183	let Latency = 3; let NumMicroOps = 3;
1184}
1185def : InstRW<[KryoWrite_3cyc_LS_XY_LS_314ln, WriteAdr],
1186	(instregex "LD2R(v16b|v8h|v4s|v2d)_POST$")>;
1187def KryoWrite_3cyc_LS_XY_noRSV_noRSV_335ln :
1188	SchedWriteRes<[KryoUnitLS, KryoUnitXY]> {
1189	let Latency = 3; let NumMicroOps = 4;
1190}
1191def : InstRW<[KryoWrite_3cyc_LS_XY_noRSV_noRSV_335ln, WriteAdr],
1192	(instregex "LD2R(v8b|v4h|v2s|v1d)_POST$")>;
1193def KryoWrite_3cyc_LS_LS_283ln :
1194	SchedWriteRes<[KryoUnitLS, KryoUnitLS]> {
1195	let Latency = 3; let NumMicroOps = 2;
1196}
1197def : InstRW<[KryoWrite_3cyc_LS_LS_283ln],
1198	(instregex "LD3i64$")>;
1199def KryoWrite_3cyc_LS_LS_LS_309ln :
1200	SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitLS]> {
1201	let Latency = 3; let NumMicroOps = 3;
1202}
1203def : InstRW<[KryoWrite_3cyc_LS_LS_LS_309ln],
1204	(instregex "LD3Threev2d$")>;
1205def KryoWrite_3cyc_LS_XY_LS_315ln :
1206	SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS]> {
1207	let Latency = 3; let NumMicroOps = 3;
1208}
1209def : InstRW<[KryoWrite_3cyc_LS_XY_LS_315ln, WriteAdr],
1210	(instregex "LD3i64_POST$")>;
1211def KryoWrite_4cyc_LS_X_X_X_320ln :
1212	SchedWriteRes<[KryoUnitLS, KryoUnitX, KryoUnitX, KryoUnitX]> {
1213	let Latency = 4; let NumMicroOps = 4;
1214}
1215def : InstRW<[KryoWrite_4cyc_LS_X_X_X_320ln],
1216	(instregex "LD3(i8|i16|i32)$")>;
1217def KryoWrite_3cyc_LS_XY_LS_LS_331ln :
1218	SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitLS]> {
1219	let Latency = 3; let NumMicroOps = 4;
1220}
1221def : InstRW<[KryoWrite_3cyc_LS_XY_LS_LS_331ln, WriteAdr],
1222	(instregex "LD3Threev2d_POST$")>;
1223def KryoWrite_4cyc_LS_XY_X_X_X_338ln :
1224	SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitX, KryoUnitX, KryoUnitX]> {
1225	let Latency = 4; let NumMicroOps = 5;
1226}
1227def : InstRW<[KryoWrite_4cyc_LS_XY_X_X_X_338ln, WriteAdr],
1228	(instregex "LD3(i8|i16|i32)_POST$")>;
1229def KryoWrite_4cyc_LS_LS_X_X_X_noRSV_noRSV_noRSV_373ln :
1230	SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitX, KryoUnitX, KryoUnitX]> {
1231	let Latency = 4; let NumMicroOps = 8;
1232}
1233def : InstRW<[KryoWrite_4cyc_LS_LS_X_X_X_noRSV_noRSV_noRSV_373ln],
1234	(instregex "LD3Three(v8b|v4h|v2s)$")>;
1235def KryoWrite_4cyc_LS_XY_LS_X_X_X_noRSV_noRSV_noRSV_380ln :
1236	SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitX, KryoUnitX,
1237                   KryoUnitX]> {
1238	let Latency = 4; let NumMicroOps = 9;
1239}
1240def : InstRW<[KryoWrite_4cyc_LS_XY_LS_X_X_X_noRSV_noRSV_noRSV_380ln, WriteAdr],
1241	(instregex "LD3Three(v8b|v4h|v2s)_POST$")>;
1242def KryoWrite_4cyc_LS_LS_X_X_X_LS_LS_X_X_X_381ln :
1243	SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitX, KryoUnitX, KryoUnitX,
1244                   KryoUnitLS, KryoUnitLS, KryoUnitX, KryoUnitX, KryoUnitX]> {
1245	let Latency = 4; let NumMicroOps = 10;
1246}
1247def : InstRW<[KryoWrite_4cyc_LS_LS_X_X_X_LS_LS_X_X_X_381ln],
1248	(instregex "LD3Three(v16b|v8h|v4s)$")>;
1249def KryoWrite_4cyc_LS_LS_X_X_X_LS_XY_LS_X_X_X_383ln :
1250	SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitX, KryoUnitX, KryoUnitX,
1251                   KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitX, KryoUnitX,
1252                   KryoUnitX]> {
1253	let Latency = 4; let NumMicroOps = 11;
1254}
1255def : InstRW<[KryoWrite_4cyc_LS_LS_X_X_X_LS_XY_LS_X_X_X_383ln, WriteAdr],
1256	(instregex "LD3Three(v16b|v8h|v4s)_POST$")>;
1257def KryoWrite_3cyc_LS_LS_LS_310ln :
1258	SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitLS]> {
1259	let Latency = 3; let NumMicroOps = 3;
1260}
1261def : InstRW<[KryoWrite_3cyc_LS_LS_LS_310ln],
1262	(instregex "LD3R(v16b|v8h|v4s|v2d)$")>;
1263def KryoWrite_3cyc_LS_XY_LS_LS_333ln :
1264	SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitLS]> {
1265	let Latency = 3; let NumMicroOps = 4;
1266}
1267def : InstRW<[KryoWrite_3cyc_LS_XY_LS_LS_333ln, WriteAdr],
1268	(instregex "LD3R(v16b|v8h|v4s|v2d)_POST$")>;
1269def KryoWrite_3cyc_LS_LS_noRSV_noRSV_noRSV_349ln :
1270	SchedWriteRes<[KryoUnitLS, KryoUnitLS]> {
1271	let Latency = 3; let NumMicroOps = 5;
1272}
1273def : InstRW<[KryoWrite_3cyc_LS_LS_noRSV_noRSV_noRSV_349ln],
1274	(instregex "LD3R(v8b|v4h|v2s|v1d)$")>;
1275def KryoWrite_3cyc_LS_XY_LS_noRSV_noRSV_noRSV_361ln :
1276	SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS]> {
1277	let Latency = 3; let NumMicroOps = 6;
1278}
1279def : InstRW<[KryoWrite_3cyc_LS_XY_LS_noRSV_noRSV_noRSV_361ln, WriteAdr],
1280	(instregex "LD3R(v8b|v4h|v2s|v1d)_POST$")>;
1281def KryoWrite_3cyc_LS_LS_284ln :
1282	SchedWriteRes<[KryoUnitLS, KryoUnitLS]> {
1283	let Latency = 3; let NumMicroOps = 2;
1284}
1285def : InstRW<[KryoWrite_3cyc_LS_LS_284ln],
1286	(instregex "LD4i64$")>;
1287def KryoWrite_3cyc_LS_XY_LS_316ln :
1288	SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS]> {
1289	let Latency = 3; let NumMicroOps = 3;
1290}
1291def : InstRW<[KryoWrite_3cyc_LS_XY_LS_316ln, WriteAdr],
1292	(instregex "LD4i64_POST$")>;
1293def KryoWrite_3cyc_LS_LS_LS_LS_329ln :
1294	SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitLS, KryoUnitLS]> {
1295	let Latency = 3; let NumMicroOps = 4;
1296}
1297def : InstRW<[KryoWrite_3cyc_LS_LS_LS_LS_329ln],
1298	(instregex "LD4Four(v2d)$")>;
1299def KryoWrite_4cyc_LS_X_X_X_X_337ln :
1300	SchedWriteRes<[KryoUnitLS, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX]> {
1301	let Latency = 4; let NumMicroOps = 5;
1302}
1303def : InstRW<[KryoWrite_4cyc_LS_X_X_X_X_337ln],
1304	(instregex "LD4(i8|i16|i32)$")>;
1305def KryoWrite_3cyc_LS_XY_LS_LS_LS_350ln :
1306	SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitLS, KryoUnitLS]> {
1307	let Latency = 3; let NumMicroOps = 5;
1308}
1309def : InstRW<[KryoWrite_3cyc_LS_XY_LS_LS_LS_350ln, WriteAdr],
1310	(instregex "LD4Four(v2d)_POST$")>;
1311def KryoWrite_4cyc_LS_XY_X_X_X_X_355ln :
1312	SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitX, KryoUnitX, KryoUnitX,
1313                   KryoUnitX]> {
1314	let Latency = 4; let NumMicroOps = 6;
1315}
1316def : InstRW<[KryoWrite_4cyc_LS_XY_X_X_X_X_355ln, WriteAdr],
1317	(instregex "LD4(i8|i16|i32)_POST$")>;
1318def KryoWrite_4cyc_LS_LS_X_X_X_X_noRSV_noRSV_noRSV_noRSV_382ln :
1319	SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitX, KryoUnitX, KryoUnitX,
1320                   KryoUnitX]> {
1321	let Latency = 4; let NumMicroOps = 10;
1322}
1323def : InstRW<[KryoWrite_4cyc_LS_LS_X_X_X_X_noRSV_noRSV_noRSV_noRSV_382ln],
1324	(instregex "LD4Four(v8b|v4h|v2s)$")>;
1325def KryoWrite_4cyc_LS_XY_LS_X_X_X_X_noRSV_noRSV_noRSV_noRSV_384ln :
1326	SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitX, KryoUnitX,
1327                   KryoUnitX, KryoUnitX]> {
1328	let Latency = 4; let NumMicroOps = 11;
1329}
1330def : InstRW<[KryoWrite_4cyc_LS_XY_LS_X_X_X_X_noRSV_noRSV_noRSV_noRSV_384ln, WriteAdr],
1331	(instregex "LD4Four(v8b|v4h|v2s)_POST$")>;
1332def KryoWrite_4cyc_LS_LS_X_X_X_X_LS_LS_X_X_X_X_386ln :
1333	SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitX, KryoUnitX, KryoUnitX,
1334                   KryoUnitX, KryoUnitLS, KryoUnitLS, KryoUnitX, KryoUnitX,
1335                   KryoUnitX, KryoUnitX]> {
1336	let Latency = 4; let NumMicroOps = 12;
1337}
1338def : InstRW<[KryoWrite_4cyc_LS_LS_X_X_X_X_LS_LS_X_X_X_X_386ln],
1339	(instregex "LD4Four(v16b|v8h|v4s)$")>;
1340def KryoWrite_4cyc_LS_LS_X_X_X_X_LS_XY_LS_X_X_X_X_389ln :
1341	SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitX, KryoUnitX, KryoUnitX,
1342                   KryoUnitX, KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitX,
1343                   KryoUnitX, KryoUnitX, KryoUnitX]> {
1344	let Latency = 4; let NumMicroOps = 13;
1345}
1346def : InstRW<[KryoWrite_4cyc_LS_LS_X_X_X_X_LS_XY_LS_X_X_X_X_389ln, WriteAdr],
1347	(instregex "LD4Four(v16b|v8h|v4s)_POST$")>;
1348def KryoWrite_3cyc_LS_LS_LS_LS_330ln :
1349	SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitLS, KryoUnitLS]> {
1350	let Latency = 3; let NumMicroOps = 4;
1351}
1352def : InstRW<[KryoWrite_3cyc_LS_LS_LS_LS_330ln],
1353	(instregex "LD4R(v16b|v8h|v4s|v2d)$")>;
1354def KryoWrite_3cyc_LS_XY_LS_LS_LS_352ln :
1355	SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS, KryoUnitLS, KryoUnitLS]> {
1356	let Latency = 3; let NumMicroOps = 5;
1357}
1358def : InstRW<[KryoWrite_3cyc_LS_XY_LS_LS_LS_352ln, WriteAdr],
1359	(instregex "LD4R(v16b|v8h|v4s|v2d)_POST$")>;
1360def KryoWrite_3cyc_LS_LS_noRSV_noRSV_noRSV_noRSV_359ln :
1361	SchedWriteRes<[KryoUnitLS, KryoUnitLS]> {
1362	let Latency = 3; let NumMicroOps = 6;
1363}
1364def : InstRW<[KryoWrite_3cyc_LS_LS_noRSV_noRSV_noRSV_noRSV_359ln],
1365	(instregex "LD4R(v8b|v4h|v2s|v1d)$")>;
1366def KryoWrite_3cyc_LS_XY_LS_noRSV_noRSV_noRSV_noRSV_369ln :
1367	SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS]> {
1368	let Latency = 3; let NumMicroOps = 7;
1369}
1370def : InstRW<[KryoWrite_3cyc_LS_XY_LS_noRSV_noRSV_noRSV_noRSV_369ln, WriteAdr],
1371	(instregex "LD4R(v8b|v4h|v2s|v1d)_POST$")>;
1372def KryoWrite_3cyc_LS_LS_400ln :
1373	SchedWriteRes<[KryoUnitLS, KryoUnitLS]> {
1374	let Latency = 3; let NumMicroOps = 2;
1375}
1376def : InstRW<[KryoWrite_3cyc_LS_LS_400ln],
1377	(instregex "LDAX?R(B|H|W|X)")>;
1378def : InstRW<[KryoWrite_3cyc_LS_LS_400ln, WriteLDHi],
1379	(instregex "LDAXP(W|X)")>;
1380def KryoWrite_3cyc_LS_LS_401ln :
1381	SchedWriteRes<[KryoUnitLS, KryoUnitLS]> {
1382	let Latency = 3; let NumMicroOps = 2;
1383}
1384def : InstRW<[KryoWrite_3cyc_LS_LS_401ln, WriteLDHi],
1385	(instrs LDNPQi)>;
1386def KryoWrite_3cyc_LS_noRSV_noRSV_408ln :
1387	SchedWriteRes<[KryoUnitLS]> {
1388	let Latency = 3; let NumMicroOps = 3;
1389}
1390def : InstRW<[KryoWrite_3cyc_LS_noRSV_noRSV_408ln, WriteLDHi],
1391	(instrs LDNPDi, LDNPSi)>;
1392def KryoWrite_3cyc_LS_394ln :
1393	SchedWriteRes<[KryoUnitLS]> {
1394	let Latency = 3; let NumMicroOps = 1;
1395}
1396def : InstRW<[KryoWrite_3cyc_LS_394ln, WriteLDHi],
1397	(instrs LDNPWi, LDNPXi)>;
1398def KryoWrite_3cyc_LS_LS_402ln :
1399	SchedWriteRes<[KryoUnitLS, KryoUnitLS]> {
1400	let Latency = 3; let NumMicroOps = 2;
1401}
1402def : InstRW<[KryoWrite_3cyc_LS_LS_402ln, WriteLDHi],
1403	(instrs LDPQi)>;
1404def KryoWrite_3cyc_LS_noRSV_noRSV_409ln :
1405	SchedWriteRes<[KryoUnitLS]> {
1406	let Latency = 3; let NumMicroOps = 3;
1407}
1408def : InstRW<[KryoWrite_3cyc_LS_noRSV_noRSV_409ln, WriteLDHi],
1409	(instrs LDPDi, LDPSi)>;
1410def KryoWrite_3cyc_LS_XY_LS_410ln :
1411	SchedWriteRes<[KryoUnitLS, KryoUnitXY, KryoUnitLS]> {
1412	let Latency = 3; let NumMicroOps = 3;
1413}
1414def : InstRW<[KryoWrite_3cyc_LS_XY_LS_410ln, WriteLDHi, WriteAdr],
1415	(instregex "LDPQ(post|pre)")>;
1416def KryoWrite_3cyc_LS_XY_noRSV_noRSV_411ln :
1417	SchedWriteRes<[KryoUnitLS, KryoUnitXY]> {
1418	let Latency = 3; let NumMicroOps = 4;
1419}
1420def : InstRW<[KryoWrite_3cyc_LS_XY_noRSV_noRSV_411ln, WriteLDHi, WriteAdr],
1421	(instregex "LDP(D|S)(post|pre)")>;
1422def KryoWrite_3cyc_LS_393ln :
1423	SchedWriteRes<[KryoUnitLS]> {
1424	let Latency = 3; let NumMicroOps = 1;
1425}
1426def : InstRW<[KryoWrite_3cyc_LS_393ln, WriteLDHi],
1427	(instrs LDPWi, LDPXi)>;
1428def KryoWrite_3cyc_LS_XY_403ln :
1429	SchedWriteRes<[KryoUnitLS, KryoUnitXY]> {
1430	let Latency = 3; let NumMicroOps = 2;
1431}
1432def : InstRW<[KryoWrite_3cyc_LS_XY_403ln, WriteLDHi, WriteAdr],
1433	(instregex "LDP(W|X)(post|pre)")>;
1434def KryoWrite_4cyc_LS_395ln :
1435	SchedWriteRes<[KryoUnitLS]> {
1436	let Latency = 4; let NumMicroOps = 1;
1437}
1438def : InstRW<[KryoWrite_4cyc_LS_395ln, WriteLDHi],
1439	(instrs LDPSWi)>;
1440def KryoWrite_4cyc_LS_XY_405ln :
1441	SchedWriteRes<[KryoUnitLS, KryoUnitXY]> {
1442	let Latency = 4; let NumMicroOps = 2;
1443}
1444def : InstRW<[KryoWrite_4cyc_LS_XY_405ln, WriteLDHi, WriteAdr],
1445	(instrs LDPSWpost, LDPSWpre)>;
1446def KryoWrite_3cyc_LS_264ln :
1447	SchedWriteRes<[KryoUnitLS]> {
1448	let Latency = 3; let NumMicroOps = 1;
1449}
1450def : InstRW<[KryoWrite_3cyc_LS_264ln],
1451	(instrs LDRQui, LDRQl)>;
1452def KryoWrite_4cyc_X_LS_271ln :
1453	SchedWriteRes<[KryoUnitX, KryoUnitLS]> {
1454	let Latency = 4; let NumMicroOps = 2;
1455}
1456def : InstRW<[KryoWrite_4cyc_X_LS_271ln],
1457	(instrs LDRQroW, LDRQroX)>;
1458def KryoWrite_3cyc_LS_noRSV_287ln :
1459	SchedWriteRes<[KryoUnitLS]> {
1460	let Latency = 3; let NumMicroOps = 2;
1461}
1462def : InstRW<[KryoWrite_3cyc_LS_noRSV_287ln],
1463	(instregex "LDR((D|S)l|(D|S|H|B)ui)")>;
1464def KryoWrite_3cyc_LS_XY_293ln :
1465	SchedWriteRes<[KryoUnitLS, KryoUnitXY]> {
1466	let Latency = 3; let NumMicroOps = 2;
1467}
1468def : InstRW<[KryoWrite_3cyc_LS_XY_293ln, WriteAdr],
1469	(instrs LDRQpost, LDRQpre)>;
1470def KryoWrite_4cyc_X_LS_noRSV_297ln :
1471	SchedWriteRes<[KryoUnitX, KryoUnitLS]> {
1472	let Latency = 4; let NumMicroOps = 3;
1473}
1474def : InstRW<[KryoWrite_4cyc_X_LS_noRSV_297ln],
1475	(instregex "LDR(D|S|H|B)ro(W|X)")>;
1476def KryoWrite_3cyc_LS_XY_noRSV_319ln :
1477	SchedWriteRes<[KryoUnitLS, KryoUnitXY]> {
1478	let Latency = 3; let NumMicroOps = 3;
1479}
1480def : InstRW<[KryoWrite_3cyc_LS_XY_noRSV_319ln, WriteAdr],
1481	(instregex "LDR(D|S|H|B)(post|pre)")>;
1482def KryoWrite_3cyc_LS_261ln :
1483	SchedWriteRes<[KryoUnitLS]> {
1484	let Latency = 3; let NumMicroOps = 1;
1485}
1486def : InstRW<[KryoWrite_3cyc_LS_261ln],
1487	(instregex "LDR(BB|HH|W|X)ui")>;
1488def KryoWrite_3cyc_LS_XY_292ln :
1489	SchedWriteRes<[KryoUnitLS, KryoUnitXY]> {
1490	let Latency = 3; let NumMicroOps = 2;
1491}
1492def : InstRW<[KryoWrite_3cyc_LS_XY_292ln, WriteAdr],
1493	(instregex "LDR(BB|HH|W|X)(post|pre)")>;
1494def KryoWrite_4cyc_X_LS_272ln :
1495	SchedWriteRes<[KryoUnitX, KryoUnitLS]> {
1496	let Latency = 4; let NumMicroOps = 2;
1497}
1498def : InstRW<[KryoWrite_4cyc_X_LS_272ln],
1499	(instregex "(LDR(BB|HH|W|X)ro(W|X)|PRFMro(W|X))")>;
1500def KryoWrite_3cyc_LS_262ln :
1501	SchedWriteRes<[KryoUnitLS]> {
1502	let Latency = 3; let NumMicroOps = 1;
1503}
1504def : InstRW<[KryoWrite_3cyc_LS_262ln],
1505	(instrs LDRWl, LDRXl)>;
1506def KryoWrite_4cyc_LS_268ln :
1507	SchedWriteRes<[KryoUnitLS]> {
1508	let Latency = 4; let NumMicroOps = 1;
1509}
1510def : InstRW<[KryoWrite_4cyc_LS_268ln],
1511	(instregex "LDRS(BW|BX|HW|HX|W)ui")>;
1512def KryoWrite_5cyc_X_LS_273ln :
1513	SchedWriteRes<[KryoUnitX, KryoUnitLS]> {
1514	let Latency = 5; let NumMicroOps = 2;
1515}
1516def : InstRW<[KryoWrite_5cyc_X_LS_273ln],
1517	(instregex "LDRS(BW|BX|HW|HX|W)ro(W|X)")>;
1518def KryoWrite_4cyc_LS_XY_294ln :
1519	SchedWriteRes<[KryoUnitLS, KryoUnitXY]> {
1520	let Latency = 4; let NumMicroOps = 2;
1521}
1522def : InstRW<[KryoWrite_4cyc_LS_XY_294ln, WriteAdr],
1523	(instregex "LDRS(BW|BX|HW|HX|W)(post|pre)")>;
1524def KryoWrite_4cyc_LS_269ln :
1525	SchedWriteRes<[KryoUnitLS]> {
1526	let Latency = 4; let NumMicroOps = 1;
1527}
1528def : InstRW<[KryoWrite_4cyc_LS_269ln],
1529	(instrs LDRSWl)>;
1530def KryoWrite_3cyc_LS_260ln :
1531	SchedWriteRes<[KryoUnitLS]> {
1532	let Latency = 3; let NumMicroOps = 1;
1533}
1534def : InstRW<[KryoWrite_3cyc_LS_260ln],
1535	(instregex "LDTR(B|H|W|X)i")>;
1536def KryoWrite_4cyc_LS_267ln :
1537	SchedWriteRes<[KryoUnitLS]> {
1538	let Latency = 4; let NumMicroOps = 1;
1539}
1540def : InstRW<[KryoWrite_4cyc_LS_267ln],
1541	(instregex "LDTRS(BW|BX|HW|HX|W)i")>;
1542def KryoWrite_3cyc_LS_263ln :
1543	SchedWriteRes<[KryoUnitLS]> {
1544	let Latency = 3; let NumMicroOps = 1;
1545}
1546def : InstRW<[KryoWrite_3cyc_LS_263ln],
1547	(instrs LDURQi)>;
1548def KryoWrite_3cyc_LS_noRSV_288ln :
1549	SchedWriteRes<[KryoUnitLS]> {
1550	let Latency = 3; let NumMicroOps = 2;
1551}
1552def : InstRW<[KryoWrite_3cyc_LS_noRSV_288ln],
1553	(instregex "LDUR(D|S|H|B)i")>;
1554def KryoWrite_3cyc_LS_259ln :
1555	SchedWriteRes<[KryoUnitLS]> {
1556	let Latency = 3; let NumMicroOps = 1;
1557}
1558def : InstRW<[KryoWrite_3cyc_LS_259ln],
1559	(instregex "LDUR(BB|HH|W|X)i")>;
1560def KryoWrite_4cyc_LS_266ln :
1561	SchedWriteRes<[KryoUnitLS]> {
1562	let Latency = 4; let NumMicroOps = 1;
1563}
1564def : InstRW<[KryoWrite_4cyc_LS_266ln],
1565	(instregex "LDURS(B|H)?(W|X)i")>;
1566def KryoWrite_3cyc_LS_258ln :
1567	SchedWriteRes<[KryoUnitLS]> {
1568	let Latency = 3; let NumMicroOps = 1;
1569}
1570def : InstRW<[KryoWrite_3cyc_LS_258ln, WriteLDHi],
1571	(instregex "LDXP(W|X)")>;
1572def KryoWrite_3cyc_LS_258_1ln :
1573	SchedWriteRes<[KryoUnitLS]> {
1574	let Latency = 3; let NumMicroOps = 1;
1575}
1576def : InstRW<[KryoWrite_3cyc_LS_258_1ln],
1577	(instregex "LDXR(B|H|W|X)")>;
1578def KryoWrite_2cyc_XY_XY_137ln :
1579	SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
1580	let Latency = 2; let NumMicroOps = 2;
1581}
1582def : InstRW<[KryoWrite_2cyc_XY_XY_137ln],
1583	(instrs LSLVWr, LSLVXr)>;
1584def KryoWrite_1cyc_XY_135ln :
1585	SchedWriteRes<[KryoUnitXY]> {
1586	let Latency = 1; let NumMicroOps = 1;
1587}
1588def : InstRW<[KryoWrite_1cyc_XY_135ln],
1589	(instregex "(LS|AS|RO)RV(W|X)r")>;
1590def KryoWrite_4cyc_X_84ln :
1591	SchedWriteRes<[KryoUnitX]> {
1592	let Latency = 4; let NumMicroOps = 1;
1593}
1594def : InstRW<[KryoWrite_4cyc_X_84ln],
1595	(instrs MADDWrrr, MSUBWrrr)>;
1596def KryoWrite_5cyc_X_85ln :
1597	SchedWriteRes<[KryoUnitX]> {
1598	let Latency = 5; let NumMicroOps = 1;
1599}
1600def : InstRW<[KryoWrite_5cyc_X_85ln],
1601	(instrs MADDXrrr, MSUBXrrr)>;
1602def KryoWrite_4cyc_X_noRSV_188ln :
1603	SchedWriteRes<[KryoUnitX]> {
1604	let Latency = 4; let NumMicroOps = 2;
1605}
1606def : InstRW<[KryoWrite_4cyc_X_noRSV_188ln],
1607	(instregex "(MLA|MLS|MUL)(v8i8|v4i16|v2i32)(_indexed)?")>;
1608def KryoWrite_4cyc_X_X_192ln :
1609	SchedWriteRes<[KryoUnitX, KryoUnitX]> {
1610	let Latency = 4; let NumMicroOps = 2;
1611}
1612def : InstRW<[KryoWrite_4cyc_X_X_192ln],
1613	(instregex "(MLA|MLS|MUL|SQR?DMULH)(v16i8|v8i16|v4i32)(_indexed)?")>;
1614def KryoWrite_1cyc_XY_noRSV_198ln :
1615	SchedWriteRes<[KryoUnitXY]> {
1616	let Latency = 1; let NumMicroOps = 2;
1617}
1618def : InstRW<[KryoWrite_1cyc_XY_noRSV_198ln],
1619	(instregex "(MOVI|MVNI)(D|v8b_ns|v2i32|v4i16|v2s_msl)")>;
1620def KryoWrite_1cyc_XY_XY_199ln :
1621	SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
1622	let Latency = 1; let NumMicroOps = 2;
1623}
1624def : InstRW<[KryoWrite_1cyc_XY_XY_199ln],
1625	(instregex "(MOVI|MVNI)(v2d_ns|v16b_ns|v4i32|v8i16|v4s_msl)")>;
1626def KryoWrite_1cyc_X_89ln :
1627	SchedWriteRes<[KryoUnitX]> {
1628	let Latency = 1; let NumMicroOps = 1;
1629}
1630def : InstRW<[KryoWrite_1cyc_X_89ln],
1631	(instrs MOVKWi, MOVKXi)>;
1632def KryoWrite_1cyc_XY_91ln :
1633	SchedWriteRes<[KryoUnitXY]> {
1634	let Latency = 1; let NumMicroOps = 1;
1635}
1636def : InstRW<[KryoWrite_1cyc_XY_91ln],
1637	(instrs MOVNWi, MOVNXi)>;
1638def KryoWrite_1cyc_XY_90ln :
1639	SchedWriteRes<[KryoUnitXY]> {
1640	let Latency = 1; let NumMicroOps = 1;
1641}
1642def : InstRW<[KryoWrite_1cyc_XY_90ln],
1643	(instrs MOVZWi, MOVZXi)>;
1644def KryoWrite_2cyc_XY_93ln :
1645	SchedWriteRes<[KryoUnitXY]> {
1646	let Latency = 2; let NumMicroOps = 1;
1647}
1648def : InstRW<[KryoWrite_2cyc_XY_93ln],
1649	(instrs MRS)>;
1650def KryoWrite_0cyc_X_87ln :
1651	SchedWriteRes<[KryoUnitX]> {
1652	let Latency = 0; let NumMicroOps = 1;
1653}
1654def : InstRW<[KryoWrite_0cyc_X_87ln],
1655	(instrs MSRpstateImm4)>;
1656def : InstRW<[KryoWrite_0cyc_X_87ln],
1657	(instrs MSRpstateImm1)>;
1658def KryoWrite_0cyc_XY_88ln :
1659	SchedWriteRes<[KryoUnitXY]> {
1660	let Latency = 0; let NumMicroOps = 1;
1661}
1662def : InstRW<[KryoWrite_0cyc_XY_88ln],
1663	(instrs MSR)>;
1664def KryoWrite_1cyc_XY_noRSV_143ln :
1665	SchedWriteRes<[KryoUnitXY]> {
1666	let Latency = 1; let NumMicroOps = 2;
1667}
1668def : InstRW<[KryoWrite_1cyc_XY_noRSV_143ln],
1669	(instregex "NEG(v8i8|v4i16|v2i32|v1i64)")>;
1670def KryoWrite_1cyc_XY_XY_145ln :
1671	SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
1672	let Latency = 1; let NumMicroOps = 2;
1673}
1674def : InstRW<[KryoWrite_1cyc_XY_XY_145ln],
1675	(instregex "NEG(v16i8|v8i16|v4i32|v2i64)")>;
1676def KryoWrite_1cyc_XY_noRSV_193ln :
1677	SchedWriteRes<[KryoUnitXY]> {
1678	let Latency = 1; let NumMicroOps = 2;
1679}
1680def : InstRW<[KryoWrite_1cyc_XY_noRSV_193ln],
1681	(instrs NOTv8i8)>;
1682def KryoWrite_1cyc_XY_XY_194ln :
1683	SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
1684	let Latency = 1; let NumMicroOps = 2;
1685}
1686def : InstRW<[KryoWrite_1cyc_XY_XY_194ln],
1687	(instrs NOTv16i8)>;
1688def KryoWrite_2cyc_XY_noRSV_234ln :
1689	SchedWriteRes<[KryoUnitXY]> {
1690	let Latency = 2; let NumMicroOps = 2;
1691}
1692def : InstRW<[KryoWrite_2cyc_XY_noRSV_234ln],
1693	(instrs PMULv8i8)>;
1694def KryoWrite_2cyc_XY_XY_236ln :
1695	SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
1696	let Latency = 2; let NumMicroOps = 2;
1697}
1698def : InstRW<[KryoWrite_2cyc_XY_XY_236ln],
1699	(instrs PMULv16i8)>;
1700def KryoWrite_2cyc_XY_XY_235ln :
1701	SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
1702	let Latency = 2; let NumMicroOps = 2;
1703}
1704def : InstRW<[KryoWrite_2cyc_XY_XY_235ln],
1705	(instrs PMULLv8i8, PMULLv16i8)>;
1706def KryoWrite_3cyc_XY_XY_237ln :
1707	SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
1708	let Latency = 3; let NumMicroOps = 2;
1709}
1710def : InstRW<[KryoWrite_3cyc_XY_XY_237ln],
1711	(instrs PMULLv1i64, PMULLv2i64)>;
1712def KryoWrite_0cyc_LS_254ln :
1713	SchedWriteRes<[KryoUnitLS]> {
1714	let Latency = 0; let NumMicroOps = 1;
1715}
1716def : InstRW<[KryoWrite_0cyc_LS_254ln],
1717	(instrs PRFMl, PRFMui)>;
1718def KryoWrite_0cyc_LS_253ln :
1719	SchedWriteRes<[KryoUnitLS]> {
1720	let Latency = 0; let NumMicroOps = 1;
1721}
1722def : InstRW<[KryoWrite_0cyc_LS_253ln],
1723	(instrs PRFUMi)>;
1724def KryoWrite_6cyc_XY_X_noRSV_175ln :
1725	SchedWriteRes<[KryoUnitXY, KryoUnitX]> {
1726	let Latency = 6; let NumMicroOps = 3;
1727}
1728def : InstRW<[KryoWrite_6cyc_XY_X_noRSV_175ln],
1729	(instregex "R(ADD|SUB)HNv.*")>;
1730def KryoWrite_2cyc_XY_204ln :
1731	SchedWriteRes<[KryoUnitXY]> {
1732	let Latency = 2; let NumMicroOps = 1;
1733}
1734def : InstRW<[KryoWrite_2cyc_XY_204ln],
1735	(instrs RBITWr, RBITXr)>;
1736def KryoWrite_2cyc_XY_noRSV_218ln :
1737	SchedWriteRes<[KryoUnitXY]> {
1738	let Latency = 2; let NumMicroOps = 2;
1739}
1740def : InstRW<[KryoWrite_2cyc_XY_noRSV_218ln],
1741	(instrs RBITv8i8)>;
1742def KryoWrite_2cyc_XY_XY_219ln :
1743	SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
1744	let Latency = 2; let NumMicroOps = 2;
1745}
1746def : InstRW<[KryoWrite_2cyc_XY_XY_219ln],
1747	(instrs RBITv16i8)>;
1748def KryoWrite_1cyc_X_202ln :
1749	SchedWriteRes<[KryoUnitX]> {
1750	let Latency = 1; let NumMicroOps = 1;
1751}
1752def : InstRW<[KryoWrite_1cyc_X_202ln],
1753	(instregex "REV(16|32)?(W|X)r")>;
1754def KryoWrite_1cyc_XY_noRSV_214ln :
1755	SchedWriteRes<[KryoUnitXY]> {
1756	let Latency = 1; let NumMicroOps = 2;
1757}
1758def : InstRW<[KryoWrite_1cyc_XY_noRSV_214ln],
1759	(instregex "REV(16|32|64)(v8i8|v4i16|v2i32)")>;
1760def KryoWrite_1cyc_XY_XY_216ln :
1761	SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
1762	let Latency = 1; let NumMicroOps = 2;
1763}
1764def : InstRW<[KryoWrite_1cyc_XY_XY_216ln],
1765	(instregex "REV(16|32|64)(v16i8|v8i16|v4i32)")>;
1766def KryoWrite_3cyc_X_noRSV_244ln :
1767	SchedWriteRes<[KryoUnitX]> {
1768	let Latency = 3; let NumMicroOps = 2;
1769}
1770def : InstRW<[KryoWrite_3cyc_X_noRSV_244ln],
1771	(instregex "S(L|R)I(d|(v8i8|v4i16|v2i32)_shift)")>;
1772def KryoWrite_3cyc_X_X_245ln :
1773	SchedWriteRes<[KryoUnitX, KryoUnitX]> {
1774	let Latency = 3; let NumMicroOps = 2;
1775}
1776def : InstRW<[KryoWrite_3cyc_X_X_245ln],
1777	(instregex "S(L|R)I(v16i8|v8i16|v4i32|v2i64)_shift")>;
1778def KryoWrite_1cyc_XY_2ln :
1779	SchedWriteRes<[KryoUnitXY]> {
1780	let Latency = 1; let NumMicroOps = 1;
1781}
1782def : InstRW<[KryoWrite_1cyc_XY_2ln, ReadI, ReadI],
1783	(instregex "SBCS?(W|X)r")>;
1784def KryoWrite_2cyc_XA_XA_XA_24ln :
1785	SchedWriteRes<[KryoUnitXA, KryoUnitXA, KryoUnitXA]> {
1786	let Latency = 2; let NumMicroOps = 3;
1787}
1788def : InstRW<[KryoWrite_2cyc_XA_XA_XA_24ln],
1789	(instrs SHA1Crrr, SHA1Mrrr, SHA1Prrr)>;
1790def KryoWrite_1cyc_XY_noRSV_21ln :
1791	SchedWriteRes<[KryoUnitXY]> {
1792	let Latency = 1; let NumMicroOps = 2;
1793}
1794def : InstRW<[KryoWrite_1cyc_XY_noRSV_21ln],
1795	(instrs SHA1Hrr)>;
1796def KryoWrite_2cyc_X_X_23ln :
1797	SchedWriteRes<[KryoUnitX, KryoUnitX]> {
1798	let Latency = 2; let NumMicroOps = 2;
1799}
1800def : InstRW<[KryoWrite_2cyc_X_X_23ln],
1801	(instrs SHA1SU0rrr, SHA1SU1rr, SHA256SU0rr)>;
1802def KryoWrite_4cyc_XA_XA_XA_25ln :
1803	SchedWriteRes<[KryoUnitXA, KryoUnitXA, KryoUnitXA]> {
1804	let Latency = 4; let NumMicroOps = 3;
1805}
1806def : InstRW<[KryoWrite_4cyc_XA_XA_XA_25ln],
1807	(instrs SHA256Hrrr, SHA256H2rrr)>;
1808def KryoWrite_3cyc_XY_XY_X_X_26ln :
1809	SchedWriteRes<[KryoUnitXY, KryoUnitXY, KryoUnitX, KryoUnitX]> {
1810	let Latency = 3; let NumMicroOps = 4;
1811}
1812def : InstRW<[KryoWrite_3cyc_XY_XY_X_X_26ln],
1813	(instrs SHA256SU1rrr)>;
1814def KryoWrite_4cyc_X_noRSV_189ln :
1815	SchedWriteRes<[KryoUnitX]> {
1816	let Latency = 4; let NumMicroOps = 2;
1817}
1818def : InstRW<[KryoWrite_4cyc_X_noRSV_189ln],
1819	(instregex "SQR?DMULH(v8i8|v4i16|v1i32|v2i32|v1i16)(_indexed)?")>;
1820def KryoWrite_3cyc_XY_noRSV_68ln :
1821	SchedWriteRes<[KryoUnitXY]> {
1822	let Latency = 3; let NumMicroOps = 2;
1823}
1824def : InstRW<[KryoWrite_3cyc_XY_noRSV_68ln],
1825	(instregex "SQ(ABS|NEG)(v1i8|v1i16|v1i32|v1i64)")>;
1826def KryoWrite_3cyc_XY_noRSV_157ln :
1827	SchedWriteRes<[KryoUnitXY]> {
1828	let Latency = 3; let NumMicroOps = 2;
1829}
1830def : InstRW<[KryoWrite_3cyc_XY_noRSV_157ln],
1831	(instregex "SQ(ABS|NEG)(v8i8|v4i16|v2i32)")>;
1832def KryoWrite_3cyc_XY_XY_164ln :
1833	SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
1834	let Latency = 3; let NumMicroOps = 2;
1835}
1836def : InstRW<[KryoWrite_3cyc_XY_XY_164ln],
1837	(instregex "SQ(ABS|NEG)(v16i8|v8i16|v4i32|v2i64)")>;
1838def KryoWrite_4cyc_X_noRSV_190ln :
1839	SchedWriteRes<[KryoUnitX]> {
1840	let Latency = 4; let NumMicroOps = 2;
1841}
1842def : InstRW<[KryoWrite_4cyc_X_noRSV_190ln],
1843	(instregex "SQD(MLAL|MLSL|MULL)(i16|i32)")>;
1844def KryoWrite_0cyc_LS_Y_274ln :
1845	SchedWriteRes<[KryoUnitLS, KryoUnitY]> {
1846	let Latency = 0; let NumMicroOps = 2;
1847}
1848def : InstRW<[KryoWrite_0cyc_LS_Y_274ln],
1849	(instregex "ST1(One(v8b|v4h|v2s|v1d|v16b|v8h|v4s|v2d)|(i8|i16|i32|i64)|Two(v8b|v4h|v2s|v1d))$")>;
1850def KryoWrite_1cyc_LS_Y_X_301ln :
1851	SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitX]> {
1852	let Latency = 1; let NumMicroOps = 3;
1853}
1854def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_X_301ln],
1855	(instregex "ST1(One(v8b|v4h|v2s|v1d|v16b|v8h|v4s|v2d)|(i8|i16|i32|i64)|Two(v8b|v4h|v2s|v1d))_POST$")>;
1856def KryoWrite_1cyc_LS_Y_XY_305ln :
1857	SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitXY]> {
1858	let Latency = 1; let NumMicroOps = 3;
1859}
1860def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_XY_305ln],
1861	(instregex "ST1(One(v16b|v8h|v4s|v2d)|Two(v8b|v4h|v2s|v1d))_POST$")>;
1862def KryoWrite_0cyc_LS_Y_LS_Y_323ln :
1863	SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY]> {
1864	let Latency = 0; let NumMicroOps = 4;
1865}
1866def : InstRW<[WriteAdr, KryoWrite_0cyc_LS_Y_LS_Y_323ln],
1867	(instregex "ST1(Two(v16b|v8h|v4s|v2d)|(Three|Four)(v8b|v4h|v2s|v1d))_POST$")>;
1868def KryoWrite_1cyc_LS_Y_XY_LS_Y_345ln :
1869	SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitXY, KryoUnitLS, KryoUnitY]> {
1870	let Latency = 1; let NumMicroOps = 5;
1871}
1872def : InstRW<[KryoWrite_1cyc_LS_Y_XY_LS_Y_345ln],
1873	(instregex "ST1(Two(v16b|v8h|v4s|v2d)|(Three|Four)(v8b|v4h|v2s|v1d))$")>;
1874def KryoWrite_0cyc_LS_Y_LS_Y_LS_Y_356ln :
1875	SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY, KryoUnitLS,
1876                   KryoUnitY]> {
1877	let Latency = 0; let NumMicroOps = 6;
1878}
1879def : InstRW<[KryoWrite_0cyc_LS_Y_LS_Y_LS_Y_356ln],
1880	(instregex "ST1Three(v16b|v8h|v4s|v2d)$")>;
1881def KryoWrite_1cyc_LS_Y_XY_LS_Y_LS_Y_366ln :
1882	SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitXY, KryoUnitLS, KryoUnitY,
1883                   KryoUnitLS, KryoUnitY]> {
1884	let Latency = 1; let NumMicroOps = 7;
1885}
1886def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_XY_LS_Y_LS_Y_366ln],
1887	(instregex "ST1Three(v16b|v8h|v4s|v2d)_POST$")>;
1888def KryoWrite_0cyc_LS_Y_LS_Y_LS_Y_LS_Y_371ln :
1889	SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY, KryoUnitLS,
1890                   KryoUnitY, KryoUnitLS, KryoUnitY]> {
1891	let Latency = 0; let NumMicroOps = 8;
1892}
1893def : InstRW<[KryoWrite_0cyc_LS_Y_LS_Y_LS_Y_LS_Y_371ln],
1894	(instregex "ST1Four(v16b|v8h|v4s|v2d)$")>;
1895def KryoWrite_0cyc_LS_Y_LS_Y_XY_LS_Y_LS_Y_377ln :
1896	SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY, KryoUnitXY,
1897                   KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY]> {
1898	let Latency = 0; let NumMicroOps = 9;
1899}
1900def : InstRW<[WriteAdr, KryoWrite_0cyc_LS_Y_LS_Y_XY_LS_Y_LS_Y_377ln],
1901	(instregex "ST1Four(v16b|v8h|v4s|v2d)_POST$")>;
1902def KryoWrite_0cyc_LS_Y_275ln :
1903	SchedWriteRes<[KryoUnitLS, KryoUnitY]> {
1904	let Latency = 0; let NumMicroOps = 2;
1905}
1906def : InstRW<[KryoWrite_0cyc_LS_Y_275ln],
1907	(instregex "ST2(Two(v8b|v4h|v2s|v1d|v16b|v8h|v4s|v2d)|(i8|i16|i32|i64))$")>;
1908def KryoWrite_1cyc_LS_Y_XY_306ln :
1909	SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitXY]> {
1910	let Latency = 1; let NumMicroOps = 3;
1911}
1912def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_XY_306ln],
1913	(instregex "ST2(Two(v8b|v4h|v2s|v1d)|(i8|i16|i32|i64))_POST$")>;
1914def KryoWrite_0cyc_LS_Y_LS_Y_322ln :
1915	SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY]> {
1916	let Latency = 0; let NumMicroOps = 4;
1917}
1918def : InstRW<[KryoWrite_0cyc_LS_Y_LS_Y_322ln],
1919	(instregex "ST2Two(v16b|v8h|v4s|v2d)$")>;
1920def KryoWrite_1cyc_LS_Y_XY_LS_Y_344ln :
1921	SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitXY, KryoUnitLS, KryoUnitY]> {
1922	let Latency = 1; let NumMicroOps = 5;
1923}
1924def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_XY_LS_Y_344ln],
1925	(instregex "ST2Two(v16b|v8h|v4s|v2d)_POST$")>;
1926def KryoWrite_0cyc_LS_Y_LS_Y_324ln :
1927	SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY]> {
1928	let Latency = 0; let NumMicroOps = 4;
1929}
1930def : InstRW<[KryoWrite_0cyc_LS_Y_LS_Y_324ln],
1931	(instregex "ST3(Threev1d|(i8|i16|i32|i64))$")>;
1932def KryoWrite_1cyc_LS_Y_XY_LS_Y_346ln :
1933	SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitXY, KryoUnitLS, KryoUnitY]> {
1934	let Latency = 1; let NumMicroOps = 5;
1935}
1936def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_XY_LS_Y_346ln],
1937	(instregex "ST3(Threev1d|(i8|i16|i32|i64))_POST$")>;
1938def KryoWrite_1cyc_X_X_LS_Y_LS_Y_353ln :
1939	SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitLS,
1940                   KryoUnitY]> {
1941	let Latency = 1; let NumMicroOps = 6;
1942}
1943def : InstRW<[KryoWrite_1cyc_X_X_LS_Y_LS_Y_353ln],
1944	(instregex "ST3Three(v8b|v4h|v2s)$")>;
1945def KryoWrite_0cyc_LS_Y_LS_Y_LS_Y_357ln :
1946	SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY, KryoUnitLS,
1947                   KryoUnitY]> {
1948	let Latency = 0; let NumMicroOps = 6;
1949}
1950def : InstRW<[KryoWrite_0cyc_LS_Y_LS_Y_LS_Y_357ln],
1951	(instregex "ST3Threev2d$")>;
1952def KryoWrite_1cyc_X_X_LS_Y_XY_LS_Y_363ln :
1953	SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitXY,
1954                   KryoUnitLS, KryoUnitY]> {
1955	let Latency = 1; let NumMicroOps = 7;
1956}
1957def : InstRW<[WriteAdr, KryoWrite_1cyc_X_X_LS_Y_XY_LS_Y_363ln],
1958	(instregex "ST3Three(v8b|v4h|v2s)_POST$")>;
1959def KryoWrite_1cyc_LS_Y_XY_LS_Y_LS_Y_367ln :
1960	SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitXY, KryoUnitLS, KryoUnitY,
1961                   KryoUnitLS, KryoUnitY]> {
1962	let Latency = 1; let NumMicroOps = 7;
1963}
1964def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_XY_LS_Y_LS_Y_367ln],
1965	(instregex "ST3Threev2d_POST$")>;
1966def KryoWrite_1cyc_X_X_LS_Y_LS_Y_X_X_LS_Y_LS_Y_385ln :
1967	SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitLS,
1968                   KryoUnitY, KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY,
1969                   KryoUnitLS, KryoUnitY]> {
1970	let Latency = 1; let NumMicroOps = 12;
1971}
1972def : InstRW<[KryoWrite_1cyc_X_X_LS_Y_LS_Y_X_X_LS_Y_LS_Y_385ln],
1973	(instregex "ST3Three(v16b|v8h|v4s)$")>;
1974def KryoWrite_1cyc_X_X_LS_Y_LS_Y_X_X_LS_Y_XY_LS_Y_388ln :
1975	SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitLS,
1976                   KryoUnitY, KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY,
1977                   KryoUnitXY, KryoUnitLS, KryoUnitY]> {
1978	let Latency = 1; let NumMicroOps = 13;
1979}
1980def : InstRW<[WriteAdr, KryoWrite_1cyc_X_X_LS_Y_LS_Y_X_X_LS_Y_XY_LS_Y_388ln],
1981	(instregex "ST3Three(v16b|v8h|v4s)_POST$")>;
1982def KryoWrite_0cyc_LS_Y_LS_Y_325ln :
1983	SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY]> {
1984	let Latency = 0; let NumMicroOps = 4;
1985}
1986def : InstRW<[KryoWrite_0cyc_LS_Y_LS_Y_325ln],
1987	(instregex "ST4(Fourv1d|(i8|i16|i32|i64))$")>;
1988def KryoWrite_1cyc_LS_Y_XY_LS_Y_347ln :
1989	SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitXY, KryoUnitLS, KryoUnitY]> {
1990	let Latency = 1; let NumMicroOps = 5;
1991}
1992def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_XY_LS_Y_347ln],
1993	(instregex "ST4(Fourv1d|(i8|i16|i32|i64))_POST$")>;
1994def KryoWrite_1cyc_X_X_LS_Y_X_X_LS_Y_370ln :
1995	SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitX,
1996                   KryoUnitX, KryoUnitLS, KryoUnitY]> {
1997	let Latency = 1; let NumMicroOps = 8;
1998}
1999def : InstRW<[KryoWrite_1cyc_X_X_LS_Y_X_X_LS_Y_370ln],
2000	(instregex "ST4Four(v8b|v4h|v2s)$")>;
2001def KryoWrite_0cyc_LS_Y_LS_Y_LS_Y_LS_Y_372ln :
2002	SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY, KryoUnitLS,
2003                   KryoUnitY, KryoUnitLS, KryoUnitY]> {
2004	let Latency = 0; let NumMicroOps = 8;
2005}
2006def : InstRW<[KryoWrite_0cyc_LS_Y_LS_Y_LS_Y_LS_Y_372ln],
2007	(instregex "ST4Fourv2d$")>;
2008def KryoWrite_1cyc_X_X_LS_Y_XY_X_X_LS_Y_375ln :
2009	SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitXY,
2010                   KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY]> {
2011	let Latency = 1; let NumMicroOps = 9;
2012}
2013def : InstRW<[WriteAdr, KryoWrite_1cyc_X_X_LS_Y_XY_X_X_LS_Y_375ln],
2014	(instregex "ST4Four(v8b|v4h|v2s)_POST$")>;
2015def KryoWrite_0cyc_LS_Y_LS_Y_XY_LS_Y_LS_Y_379ln :
2016	SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY, KryoUnitXY,
2017                   KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY]> {
2018	let Latency = 0; let NumMicroOps = 9;
2019}
2020def : InstRW<[WriteAdr, KryoWrite_0cyc_LS_Y_LS_Y_XY_LS_Y_LS_Y_379ln],
2021	(instregex "ST4Fourv2d_POST$")>;
2022def KryoWrite_1cyc_X_X_LS_Y_X_X_LS_Y_X_X_LS_Y_X_X_LS_Y_390ln :
2023	SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitX,
2024                   KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitX, KryoUnitX,
2025                   KryoUnitLS, KryoUnitY, KryoUnitX, KryoUnitX, KryoUnitLS,
2026                   KryoUnitY]> {
2027	let Latency = 1; let NumMicroOps = 16;
2028}
2029def : InstRW<[KryoWrite_1cyc_X_X_LS_Y_X_X_LS_Y_X_X_LS_Y_X_X_LS_Y_390ln],
2030	(instregex "ST4Four(v16b|v8h|v4s)$")>;
2031def KryoWrite_1cyc_X_X_LS_Y_X_X_LS_Y_X_X_LS_Y_XY_X_X_LS_Y_392ln :
2032	SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitX,
2033                   KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitX, KryoUnitX,
2034                   KryoUnitLS, KryoUnitY, KryoUnitXY, KryoUnitX, KryoUnitX,
2035                   KryoUnitLS, KryoUnitY]> {
2036	let Latency = 1; let NumMicroOps = 17;
2037}
2038def : InstRW<[WriteAdr, KryoWrite_1cyc_X_X_LS_Y_X_X_LS_Y_X_X_LS_Y_XY_X_X_LS_Y_392ln],
2039	(instregex "ST4Four(v16b|v8h|v4s)_POST$")>;
2040def KryoWrite_0cyc_LS_LS_Y_299ln :
2041	SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitY]> {
2042	let Latency = 0; let NumMicroOps = 3;
2043}
2044def : InstRW<[KryoWrite_0cyc_LS_LS_Y_299ln],
2045	(instregex "STLR(B|H|W|X)")>;
2046def KryoWrite_3cyc_LS_LS_Y_307ln :
2047	SchedWriteRes<[KryoUnitLS, KryoUnitLS, KryoUnitY]> {
2048	let Latency = 3; let NumMicroOps = 3;
2049}
2050def : InstRW<[KryoWrite_3cyc_LS_LS_Y_307ln],
2051	(instregex "STLX(P(W|X)|R(B|H|W|X))")>;
2052def KryoWrite_0cyc_LS_Y_276ln :
2053	SchedWriteRes<[KryoUnitLS, KryoUnitY]> {
2054	let Latency = 0; let NumMicroOps = 2;
2055}
2056def : InstRW<[KryoWrite_0cyc_LS_Y_276ln],
2057	(instrs STNPDi, STNPSi)>;
2058def KryoWrite_0cyc_LS_Y_LS_Y_326ln :
2059	SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY]> {
2060	let Latency = 0; let NumMicroOps = 4;
2061}
2062def : InstRW<[KryoWrite_0cyc_LS_Y_LS_Y_326ln],
2063	(instrs STNPQi)>;
2064def KryoWrite_0cyc_LS_Y_280ln :
2065	SchedWriteRes<[KryoUnitLS, KryoUnitY]> {
2066	let Latency = 0; let NumMicroOps = 2;
2067}
2068def : InstRW<[KryoWrite_0cyc_LS_Y_280ln],
2069	(instrs STNPWi, STNPXi)>;
2070def KryoWrite_0cyc_LS_Y_277ln :
2071	SchedWriteRes<[KryoUnitLS, KryoUnitY]> {
2072	let Latency = 0; let NumMicroOps = 2;
2073}
2074def : InstRW<[KryoWrite_0cyc_LS_Y_277ln],
2075	(instregex "STP(D|S)i")>;
2076def KryoWrite_1cyc_LS_Y_X_303ln :
2077	SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitX]> {
2078	let Latency = 1; let NumMicroOps = 3;
2079}
2080def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_X_303ln],
2081	(instregex "STP(D|S)(post|pre)")>;
2082def KryoWrite_0cyc_LS_Y_LS_Y_327ln :
2083	SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitLS, KryoUnitY]> {
2084	let Latency = 0; let NumMicroOps = 4;
2085}
2086def : InstRW<[KryoWrite_0cyc_LS_Y_LS_Y_327ln],
2087	(instrs STPQi)>;
2088def KryoWrite_1cyc_LS_Y_X_LS_Y_343ln :
2089	SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitX, KryoUnitLS, KryoUnitY]> {
2090	let Latency = 1; let NumMicroOps = 5;
2091}
2092def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_X_LS_Y_343ln],
2093	(instrs STPQpost, STPQpre)>;
2094def KryoWrite_0cyc_LS_Y_279ln :
2095	SchedWriteRes<[KryoUnitLS, KryoUnitY]> {
2096	let Latency = 0; let NumMicroOps = 2;
2097}
2098def : InstRW<[KryoWrite_0cyc_LS_Y_279ln],
2099	(instregex "STP(W|X)i")>;
2100def KryoWrite_1cyc_LS_X_Y_300ln :
2101	SchedWriteRes<[KryoUnitLS, KryoUnitX, KryoUnitY]> {
2102	let Latency = 1; let NumMicroOps = 3;
2103}
2104def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_X_Y_300ln],
2105	(instregex "STP(W|X)(post|pre)")>;
2106def KryoWrite_0cyc_LS_Y_278ln :
2107	SchedWriteRes<[KryoUnitLS, KryoUnitY]> {
2108	let Latency = 0; let NumMicroOps = 2;
2109}
2110def : InstRW<[KryoWrite_0cyc_LS_Y_278ln],
2111	(instregex "STR(Q|D|S|H|B)ui")>;
2112def KryoWrite_1cyc_X_LS_Y_295ln :
2113	SchedWriteRes<[KryoUnitX, KryoUnitLS, KryoUnitY]> {
2114	let Latency = 1; let NumMicroOps = 3;
2115}
2116def : InstRW<[KryoWrite_1cyc_X_LS_Y_295ln],
2117	(instregex "STR(D|S|H|B)ro(W|X)")>;
2118def KryoWrite_1cyc_LS_Y_X_304ln :
2119	SchedWriteRes<[KryoUnitLS, KryoUnitY, KryoUnitX]> {
2120	let Latency = 1; let NumMicroOps = 3;
2121}
2122def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_Y_X_304ln],
2123	(instregex "STR(Q|D|S|H|B)(post|pre)")>;
2124def KryoWrite_2cyc_X_LS_Y_XY_LS_Y_354ln :
2125	SchedWriteRes<[KryoUnitX, KryoUnitLS, KryoUnitY, KryoUnitXY, KryoUnitLS,
2126                   KryoUnitY]> {
2127	let Latency = 2; let NumMicroOps = 6;
2128}
2129def : InstRW<[KryoWrite_2cyc_X_LS_Y_XY_LS_Y_354ln],
2130	(instregex "STRQro(W|X)")>;
2131def KryoWrite_0cyc_LS_Y_399ln :
2132	SchedWriteRes<[KryoUnitLS, KryoUnitY]> {
2133	let Latency = 0; let NumMicroOps = 2;
2134}
2135def : InstRW<[KryoWrite_0cyc_LS_Y_399ln],
2136	(instregex "STR(BB|HH|W|X)ui")>;
2137def KryoWrite_1cyc_X_LS_Y_406ln :
2138	SchedWriteRes<[KryoUnitX, KryoUnitLS, KryoUnitY]> {
2139	let Latency = 1; let NumMicroOps = 3;
2140}
2141def : InstRW<[KryoWrite_1cyc_X_LS_Y_406ln],
2142	(instregex "STR(BB|HH|W|X)ro(W|X)")>;
2143def KryoWrite_1cyc_LS_X_Y_407ln :
2144	SchedWriteRes<[KryoUnitLS, KryoUnitX, KryoUnitY]> {
2145	let Latency = 1; let NumMicroOps = 3;
2146}
2147def : InstRW<[WriteAdr, KryoWrite_1cyc_LS_X_Y_407ln],
2148	(instregex "STR(BB|HH|W|X)(post|pre)")>;
2149def KryoWrite_0cyc_LS_Y_398ln :
2150	SchedWriteRes<[KryoUnitLS, KryoUnitY]> {
2151	let Latency = 0; let NumMicroOps = 2;
2152}
2153def : InstRW<[KryoWrite_0cyc_LS_Y_398ln],
2154	(instregex "STTR(B|H|W|X)i")>;
2155def KryoWrite_0cyc_LS_Y_396ln :
2156	SchedWriteRes<[KryoUnitLS, KryoUnitY]> {
2157	let Latency = 0; let NumMicroOps = 2;
2158}
2159def : InstRW<[KryoWrite_0cyc_LS_Y_396ln],
2160	(instregex "STUR(Q|D|S|H|B)i")>;
2161def KryoWrite_0cyc_LS_Y_397ln :
2162	SchedWriteRes<[KryoUnitLS, KryoUnitY]> {
2163	let Latency = 0; let NumMicroOps = 2;
2164}
2165def : InstRW<[KryoWrite_0cyc_LS_Y_397ln],
2166	(instregex "STUR(BB|HH|W|X)i")>;
2167def KryoWrite_3cyc_LS_Y_404ln :
2168	SchedWriteRes<[KryoUnitLS, KryoUnitY]> {
2169	let Latency = 3; let NumMicroOps = 2;
2170}
2171def : InstRW<[KryoWrite_3cyc_LS_Y_404ln],
2172	(instregex "STX(P(W|X)|R(B|H|W|X))")>;
2173def KryoWrite_3cyc_XY_noRSV_160ln :
2174	SchedWriteRes<[KryoUnitXY]> {
2175	let Latency = 3; let NumMicroOps = 2;
2176}
2177def : InstRW<[KryoWrite_3cyc_XY_noRSV_160ln],
2178	(instregex "^(SU|US)QADD(v8i8|v4i16|v2i32)")>;
2179def KryoWrite_3cyc_XY_XY_167ln :
2180	SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
2181	let Latency = 3; let NumMicroOps = 2;
2182}
2183def : InstRW<[KryoWrite_3cyc_XY_XY_167ln],
2184	(instregex "^(SU|US)QADD(v16i8|v8i16|v4i32|v2i64)")>;
2185def KryoWrite_1cyc_XY_1ln :
2186	SchedWriteRes<[KryoUnitXY]> {
2187	let Latency = 1; let NumMicroOps = 1;
2188}
2189def : InstRW<[KryoWrite_1cyc_XY_1ln, ReadI],
2190	(instregex "SUBS?(W|X)ri")>;
2191def KryoWrite_2cyc_XY_XY_5ln :
2192	SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
2193	let Latency = 2; let NumMicroOps = 2;
2194}
2195def : InstRW<[KryoWrite_2cyc_XY_XY_5ln, ReadI, ReadIEReg],
2196	(instregex "SUBS?(W|X)rx")>;
2197def KryoWrite_2cyc_XY_XY_5_1ln :
2198	SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
2199	let Latency = 2; let NumMicroOps = 2;
2200}
2201def : InstRW<[KryoWrite_2cyc_XY_XY_5_1ln, ReadI, ReadISReg],
2202	(instregex "SUBS?(W|X)rs")>;
2203def KryoWrite_1cyc_XY_noRSV_6ln :
2204	SchedWriteRes<[KryoUnitXY]> {
2205	let Latency = 1; let NumMicroOps = 2;
2206}
2207def : InstRW<[KryoWrite_1cyc_XY_noRSV_6ln, ReadI, ReadI],
2208	(instregex "SUBS?(W|X)rr")>;
2209def KryoWrite_0cyc_LS_9ln :
2210	SchedWriteRes<[KryoUnitLS]> {
2211	let Latency = 0; let NumMicroOps = 1;
2212}
2213def : InstRW<[KryoWrite_0cyc_LS_9ln],
2214	(instregex "SYSL?xt")>;
2215def KryoWrite_1cyc_X_noRSV_205ln :
2216	SchedWriteRes<[KryoUnitX]> {
2217	let Latency = 1; let NumMicroOps = 2;
2218}
2219def : InstRW<[KryoWrite_1cyc_X_noRSV_205ln],
2220	(instrs TBLv8i8One)>;
2221def KryoWrite_1cyc_X_X_208ln :
2222	SchedWriteRes<[KryoUnitX, KryoUnitX]> {
2223	let Latency = 1; let NumMicroOps = 2;
2224}
2225def : InstRW<[KryoWrite_1cyc_X_X_208ln],
2226	(instrs TBLv16i8One)>;
2227def KryoWrite_2cyc_X_X_X_noRSV_222ln :
2228	SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX]> {
2229	let Latency = 2; let NumMicroOps = 4;
2230}
2231def : InstRW<[KryoWrite_2cyc_X_X_X_noRSV_222ln],
2232	(instrs TBLv8i8Two)>;
2233def KryoWrite_2cyc_X_X_X_X_X_X_224ln :
2234	SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX,
2235                   KryoUnitX]> {
2236	let Latency = 2; let NumMicroOps = 6;
2237}
2238def : InstRW<[KryoWrite_2cyc_X_X_X_X_X_X_224ln],
2239	(instrs TBLv16i8Two)>;
2240def KryoWrite_3cyc_X_X_X_X_X_noRSV_225ln :
2241	SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX]> {
2242	let Latency = 3; let NumMicroOps = 6;
2243}
2244def : InstRW<[KryoWrite_3cyc_X_X_X_X_X_noRSV_225ln],
2245	(instrs TBLv8i8Three)>;
2246def KryoWrite_3cyc_X_X_X_X_X_X_X_noRSV_228ln :
2247	SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX,
2248                   KryoUnitX, KryoUnitX]> {
2249	let Latency = 3; let NumMicroOps = 8;
2250}
2251def : InstRW<[KryoWrite_3cyc_X_X_X_X_X_X_X_noRSV_228ln],
2252	(instrs TBLv8i8Four)>;
2253def KryoWrite_4cyc_X_X_X_X_X_X_X_X_XY_X_X_230ln :
2254	SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX,
2255                   KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitXY, KryoUnitX,
2256                   KryoUnitX]> {
2257	let Latency = 4; let NumMicroOps = 11;
2258}
2259def : InstRW<[KryoWrite_4cyc_X_X_X_X_X_X_X_X_XY_X_X_230ln],
2260	(instrs TBLv16i8Three)>;
2261def KryoWrite_4cyc_X_X_X_X_X_X_X_X_X_X_XY_X_X_X_X_232ln :
2262	SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX,
2263                   KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX,
2264                   KryoUnitXY, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX]> {
2265	let Latency = 4; let NumMicroOps = 15;
2266}
2267def : InstRW<[KryoWrite_4cyc_X_X_X_X_X_X_X_X_X_X_XY_X_X_X_X_232ln],
2268	(instrs TBLv16i8Four)>;
2269def KryoWrite_2cyc_X_X_noRSV_220ln :
2270	SchedWriteRes<[KryoUnitX, KryoUnitX]> {
2271	let Latency = 2; let NumMicroOps = 3;
2272}
2273def : InstRW<[KryoWrite_2cyc_X_X_noRSV_220ln],
2274	(instrs TBXv8i8One)>;
2275def KryoWrite_2cyc_X_X_X_X_221ln :
2276	SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX]> {
2277	let Latency = 2; let NumMicroOps = 4;
2278}
2279def : InstRW<[KryoWrite_2cyc_X_X_X_X_221ln],
2280	(instrs TBXv16i8One)>;
2281def KryoWrite_3cyc_X_X_X_X_noRSV_223ln :
2282	SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX]> {
2283	let Latency = 3; let NumMicroOps = 5;
2284}
2285def : InstRW<[KryoWrite_3cyc_X_X_X_X_noRSV_223ln],
2286	(instrs TBXv8i8Two)>;
2287def KryoWrite_4cyc_X_X_X_X_X_X_noRSV_226ln :
2288	SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX,
2289                   KryoUnitX]> {
2290	let Latency = 4; let NumMicroOps = 7;
2291}
2292def : InstRW<[KryoWrite_4cyc_X_X_X_X_X_X_noRSV_226ln],
2293	(instrs TBXv8i8Three)>;
2294def KryoWrite_3cyc_X_X_X_X_X_X_X_X_227ln :
2295	SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX,
2296                   KryoUnitX, KryoUnitX, KryoUnitX]> {
2297	let Latency = 3; let NumMicroOps = 8;
2298}
2299def : InstRW<[KryoWrite_3cyc_X_X_X_X_X_X_X_X_227ln],
2300	(instrs TBXv16i8Two)>;
2301def KryoWrite_4cyc_X_X_X_X_X_X_X_X_noRSV_229ln :
2302	SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX,
2303                   KryoUnitX, KryoUnitX, KryoUnitX]> {
2304	let Latency = 4; let NumMicroOps = 9;
2305}
2306def : InstRW<[KryoWrite_4cyc_X_X_X_X_X_X_X_X_noRSV_229ln],
2307	(instrs TBXv8i8Four)>;
2308def KryoWrite_5cyc_X_X_X_X_X_X_X_X_X_XY_X_X_X_231ln :
2309	SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX,
2310                   KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitXY,
2311                   KryoUnitX, KryoUnitX, KryoUnitX]> {
2312	let Latency = 5; let NumMicroOps = 13;
2313}
2314def : InstRW<[KryoWrite_5cyc_X_X_X_X_X_X_X_X_X_XY_X_X_X_231ln],
2315	(instrs TBXv16i8Three)>;
2316def KryoWrite_5cyc_X_X_X_X_X_X_X_X_X_X_X_XY_X_X_X_X_X_233ln :
2317    SchedWriteRes<[KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX,
2318                   KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX, KryoUnitX,
2319                   KryoUnitX, KryoUnitXY, KryoUnitX, KryoUnitX, KryoUnitX,
2320                   KryoUnitX, KryoUnitX]> {
2321	let Latency = 5; let NumMicroOps = 17;
2322}
2323def : InstRW<[KryoWrite_5cyc_X_X_X_X_X_X_X_X_X_X_X_XY_X_X_X_X_X_233ln],
2324	(instrs TBXv16i8Four)>;
2325def KryoWrite_1cyc_XY_XY_217ln :
2326	SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
2327	let Latency = 1; let NumMicroOps = 2;
2328}
2329def : InstRW<[KryoWrite_1cyc_XY_XY_217ln],
2330	(instregex "((TRN1|TRN2|ZIP1|UZP1|UZP2)v2i64|ZIP2(v2i64|v4i32|v8i16|v16i8))")>;
2331def KryoWrite_1cyc_X_X_211ln :
2332	SchedWriteRes<[KryoUnitX, KryoUnitX]> {
2333	let Latency = 1; let NumMicroOps = 2;
2334}
2335def : InstRW<[KryoWrite_1cyc_X_X_211ln],
2336	(instregex "(TRN1|TRN2)(v4i32|v8i16|v16i8)")>;
2337def KryoWrite_1cyc_X_XY_213ln :
2338	SchedWriteRes<[KryoUnitX, KryoUnitXY]> {
2339	let Latency = 1; let NumMicroOps = 2;
2340}
2341def : InstRW<[KryoWrite_1cyc_X_XY_213ln],
2342	(instregex "(TRN1|TRN2)(v2i32|v4i16|v8i8)")>;
2343def KryoWrite_3cyc_XY_noRSV_156ln :
2344	SchedWriteRes<[KryoUnitXY]> {
2345	let Latency = 3; let NumMicroOps = 2;
2346}
2347def : InstRW<[KryoWrite_3cyc_XY_noRSV_156ln],
2348	(instrs URECPEv2i32, URSQRTEv2i32)>;
2349def KryoWrite_3cyc_XY_XY_168ln :
2350	SchedWriteRes<[KryoUnitXY, KryoUnitXY]> {
2351	let Latency = 3; let NumMicroOps = 2;
2352}
2353def : InstRW<[KryoWrite_3cyc_XY_XY_168ln],
2354	(instrs URECPEv4i32, URSQRTEv4i32)>;
2355def KryoWrite_1cyc_X_X_210ln :
2356	SchedWriteRes<[KryoUnitX, KryoUnitX]> {
2357	let Latency = 1; let NumMicroOps = 2;
2358}
2359def : InstRW<[KryoWrite_1cyc_X_X_210ln],
2360	(instregex "(UZP1|UZP2)(v4i32|v8i16|v16i8)")>;
2361def KryoWrite_1cyc_X_noRSV_206ln :
2362	SchedWriteRes<[KryoUnitX]> {
2363	let Latency = 1; let NumMicroOps = 2;
2364}
2365def : InstRW<[KryoWrite_1cyc_X_noRSV_206ln],
2366	(instregex "(UZP1|UZP2|ZIP1|ZIP2)(v2i32|v4i16|v8i8)")>;
2367def KryoWrite_1cyc_XY_noRSV_215ln :
2368	SchedWriteRes<[KryoUnitXY]> {
2369	let Latency = 1; let NumMicroOps = 2;
2370}
2371def : InstRW<[KryoWrite_1cyc_XY_noRSV_215ln],
2372	(instregex "XTNv.*")>;
2373def KryoWrite_1cyc_X_X_209ln :
2374	SchedWriteRes<[KryoUnitX, KryoUnitX]> {
2375	let Latency = 1; let NumMicroOps = 2;
2376}
2377def : InstRW<[KryoWrite_1cyc_X_X_209ln],
2378	(instregex "ZIP1(v4i32|v8i16|v16i8)")>;
2379