]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm-project/llvm/lib/Target/Hexagon/HexagonDepInstrInfo.td
zfs: merge openzfs/zfs@9a865b7fb (zfs-2.1-release) into stable/13
[FreeBSD/FreeBSD.git] / contrib / llvm-project / llvm / lib / Target / Hexagon / HexagonDepInstrInfo.td
1 //===----------------------------------------------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 // Automatically generated file, do not edit!
9 //===----------------------------------------------------------------------===//
10
11 def A2_abs : HInst<
12 (outs IntRegs:$Rd32),
13 (ins IntRegs:$Rs32),
14 "$Rd32 = abs($Rs32)",
15 tc_d61dfdc3, TypeS_2op>, Enc_5e2823 {
16 let Inst{13-5} = 0b000000100;
17 let Inst{31-21} = 0b10001100100;
18 let hasNewValue = 1;
19 let opNewValue = 0;
20 let prefersSlot3 = 1;
21 }
22 def A2_absp : HInst<
23 (outs DoubleRegs:$Rdd32),
24 (ins DoubleRegs:$Rss32),
25 "$Rdd32 = abs($Rss32)",
26 tc_d61dfdc3, TypeS_2op>, Enc_b9c5fb {
27 let Inst{13-5} = 0b000000110;
28 let Inst{31-21} = 0b10000000100;
29 let prefersSlot3 = 1;
30 }
31 def A2_abssat : HInst<
32 (outs IntRegs:$Rd32),
33 (ins IntRegs:$Rs32),
34 "$Rd32 = abs($Rs32):sat",
35 tc_d61dfdc3, TypeS_2op>, Enc_5e2823 {
36 let Inst{13-5} = 0b000000101;
37 let Inst{31-21} = 0b10001100100;
38 let hasNewValue = 1;
39 let opNewValue = 0;
40 let prefersSlot3 = 1;
41 let Defs = [USR_OVF];
42 }
43 def A2_add : HInst<
44 (outs IntRegs:$Rd32),
45 (ins IntRegs:$Rs32, IntRegs:$Rt32),
46 "$Rd32 = add($Rs32,$Rt32)",
47 tc_713b66bf, TypeALU32_3op>, Enc_5ab2be, PredNewRel, ImmRegRel {
48 let Inst{7-5} = 0b000;
49 let Inst{13-13} = 0b0;
50 let Inst{31-21} = 0b11110011000;
51 let hasNewValue = 1;
52 let opNewValue = 0;
53 let BaseOpcode = "A2_add";
54 let CextOpcode = "A2_add";
55 let InputType = "reg";
56 let isCommutable = 1;
57 let isPredicable = 1;
58 }
59 def A2_addh_h16_hh : HInst<
60 (outs IntRegs:$Rd32),
61 (ins IntRegs:$Rt32, IntRegs:$Rs32),
62 "$Rd32 = add($Rt32.h,$Rs32.h):<<16",
63 tc_01d44cb2, TypeALU64>, Enc_bd6011 {
64 let Inst{7-5} = 0b011;
65 let Inst{13-13} = 0b0;
66 let Inst{31-21} = 0b11010101010;
67 let hasNewValue = 1;
68 let opNewValue = 0;
69 let prefersSlot3 = 1;
70 }
71 def A2_addh_h16_hl : HInst<
72 (outs IntRegs:$Rd32),
73 (ins IntRegs:$Rt32, IntRegs:$Rs32),
74 "$Rd32 = add($Rt32.h,$Rs32.l):<<16",
75 tc_01d44cb2, TypeALU64>, Enc_bd6011 {
76 let Inst{7-5} = 0b010;
77 let Inst{13-13} = 0b0;
78 let Inst{31-21} = 0b11010101010;
79 let hasNewValue = 1;
80 let opNewValue = 0;
81 let prefersSlot3 = 1;
82 }
83 def A2_addh_h16_lh : HInst<
84 (outs IntRegs:$Rd32),
85 (ins IntRegs:$Rt32, IntRegs:$Rs32),
86 "$Rd32 = add($Rt32.l,$Rs32.h):<<16",
87 tc_01d44cb2, TypeALU64>, Enc_bd6011 {
88 let Inst{7-5} = 0b001;
89 let Inst{13-13} = 0b0;
90 let Inst{31-21} = 0b11010101010;
91 let hasNewValue = 1;
92 let opNewValue = 0;
93 let prefersSlot3 = 1;
94 }
95 def A2_addh_h16_ll : HInst<
96 (outs IntRegs:$Rd32),
97 (ins IntRegs:$Rt32, IntRegs:$Rs32),
98 "$Rd32 = add($Rt32.l,$Rs32.l):<<16",
99 tc_01d44cb2, TypeALU64>, Enc_bd6011 {
100 let Inst{7-5} = 0b000;
101 let Inst{13-13} = 0b0;
102 let Inst{31-21} = 0b11010101010;
103 let hasNewValue = 1;
104 let opNewValue = 0;
105 let prefersSlot3 = 1;
106 }
107 def A2_addh_h16_sat_hh : HInst<
108 (outs IntRegs:$Rd32),
109 (ins IntRegs:$Rt32, IntRegs:$Rs32),
110 "$Rd32 = add($Rt32.h,$Rs32.h):sat:<<16",
111 tc_8a825db2, TypeALU64>, Enc_bd6011 {
112 let Inst{7-5} = 0b111;
113 let Inst{13-13} = 0b0;
114 let Inst{31-21} = 0b11010101010;
115 let hasNewValue = 1;
116 let opNewValue = 0;
117 let prefersSlot3 = 1;
118 let Defs = [USR_OVF];
119 }
120 def A2_addh_h16_sat_hl : HInst<
121 (outs IntRegs:$Rd32),
122 (ins IntRegs:$Rt32, IntRegs:$Rs32),
123 "$Rd32 = add($Rt32.h,$Rs32.l):sat:<<16",
124 tc_8a825db2, TypeALU64>, Enc_bd6011 {
125 let Inst{7-5} = 0b110;
126 let Inst{13-13} = 0b0;
127 let Inst{31-21} = 0b11010101010;
128 let hasNewValue = 1;
129 let opNewValue = 0;
130 let prefersSlot3 = 1;
131 let Defs = [USR_OVF];
132 }
133 def A2_addh_h16_sat_lh : HInst<
134 (outs IntRegs:$Rd32),
135 (ins IntRegs:$Rt32, IntRegs:$Rs32),
136 "$Rd32 = add($Rt32.l,$Rs32.h):sat:<<16",
137 tc_8a825db2, TypeALU64>, Enc_bd6011 {
138 let Inst{7-5} = 0b101;
139 let Inst{13-13} = 0b0;
140 let Inst{31-21} = 0b11010101010;
141 let hasNewValue = 1;
142 let opNewValue = 0;
143 let prefersSlot3 = 1;
144 let Defs = [USR_OVF];
145 }
146 def A2_addh_h16_sat_ll : HInst<
147 (outs IntRegs:$Rd32),
148 (ins IntRegs:$Rt32, IntRegs:$Rs32),
149 "$Rd32 = add($Rt32.l,$Rs32.l):sat:<<16",
150 tc_8a825db2, TypeALU64>, Enc_bd6011 {
151 let Inst{7-5} = 0b100;
152 let Inst{13-13} = 0b0;
153 let Inst{31-21} = 0b11010101010;
154 let hasNewValue = 1;
155 let opNewValue = 0;
156 let prefersSlot3 = 1;
157 let Defs = [USR_OVF];
158 }
159 def A2_addh_l16_hl : HInst<
160 (outs IntRegs:$Rd32),
161 (ins IntRegs:$Rt32, IntRegs:$Rs32),
162 "$Rd32 = add($Rt32.l,$Rs32.h)",
163 tc_f34c1c21, TypeALU64>, Enc_bd6011 {
164 let Inst{7-5} = 0b010;
165 let Inst{13-13} = 0b0;
166 let Inst{31-21} = 0b11010101000;
167 let hasNewValue = 1;
168 let opNewValue = 0;
169 let prefersSlot3 = 1;
170 }
171 def A2_addh_l16_ll : HInst<
172 (outs IntRegs:$Rd32),
173 (ins IntRegs:$Rt32, IntRegs:$Rs32),
174 "$Rd32 = add($Rt32.l,$Rs32.l)",
175 tc_f34c1c21, TypeALU64>, Enc_bd6011 {
176 let Inst{7-5} = 0b000;
177 let Inst{13-13} = 0b0;
178 let Inst{31-21} = 0b11010101000;
179 let hasNewValue = 1;
180 let opNewValue = 0;
181 let prefersSlot3 = 1;
182 }
183 def A2_addh_l16_sat_hl : HInst<
184 (outs IntRegs:$Rd32),
185 (ins IntRegs:$Rt32, IntRegs:$Rs32),
186 "$Rd32 = add($Rt32.l,$Rs32.h):sat",
187 tc_8a825db2, TypeALU64>, Enc_bd6011 {
188 let Inst{7-5} = 0b110;
189 let Inst{13-13} = 0b0;
190 let Inst{31-21} = 0b11010101000;
191 let hasNewValue = 1;
192 let opNewValue = 0;
193 let prefersSlot3 = 1;
194 let Defs = [USR_OVF];
195 }
196 def A2_addh_l16_sat_ll : HInst<
197 (outs IntRegs:$Rd32),
198 (ins IntRegs:$Rt32, IntRegs:$Rs32),
199 "$Rd32 = add($Rt32.l,$Rs32.l):sat",
200 tc_8a825db2, TypeALU64>, Enc_bd6011 {
201 let Inst{7-5} = 0b100;
202 let Inst{13-13} = 0b0;
203 let Inst{31-21} = 0b11010101000;
204 let hasNewValue = 1;
205 let opNewValue = 0;
206 let prefersSlot3 = 1;
207 let Defs = [USR_OVF];
208 }
209 def A2_addi : HInst<
210 (outs IntRegs:$Rd32),
211 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
212 "$Rd32 = add($Rs32,#$Ii)",
213 tc_713b66bf, TypeALU32_ADDI>, Enc_cb9321, PredNewRel, ImmRegRel {
214 let Inst{31-28} = 0b1011;
215 let hasNewValue = 1;
216 let opNewValue = 0;
217 let BaseOpcode = "A2_addi";
218 let CextOpcode = "A2_add";
219 let InputType = "imm";
220 let isPredicable = 1;
221 let isAdd = 1;
222 let isExtendable = 1;
223 let opExtendable = 2;
224 let isExtentSigned = 1;
225 let opExtentBits = 16;
226 let opExtentAlign = 0;
227 }
228 def A2_addp : HInst<
229 (outs DoubleRegs:$Rdd32),
230 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
231 "$Rdd32 = add($Rss32,$Rtt32)",
232 tc_5da50c4b, TypeALU64>, Enc_a56825 {
233 let Inst{7-5} = 0b111;
234 let Inst{13-13} = 0b0;
235 let Inst{31-21} = 0b11010011000;
236 let isCommutable = 1;
237 let isAdd = 1;
238 }
239 def A2_addpsat : HInst<
240 (outs DoubleRegs:$Rdd32),
241 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
242 "$Rdd32 = add($Rss32,$Rtt32):sat",
243 tc_8a825db2, TypeALU64>, Enc_a56825 {
244 let Inst{7-5} = 0b101;
245 let Inst{13-13} = 0b0;
246 let Inst{31-21} = 0b11010011011;
247 let prefersSlot3 = 1;
248 let Defs = [USR_OVF];
249 let isCommutable = 1;
250 }
251 def A2_addsat : HInst<
252 (outs IntRegs:$Rd32),
253 (ins IntRegs:$Rs32, IntRegs:$Rt32),
254 "$Rd32 = add($Rs32,$Rt32):sat",
255 tc_95a33176, TypeALU32_3op>, Enc_5ab2be {
256 let Inst{7-5} = 0b000;
257 let Inst{13-13} = 0b0;
258 let Inst{31-21} = 0b11110110010;
259 let hasNewValue = 1;
260 let opNewValue = 0;
261 let prefersSlot3 = 1;
262 let Defs = [USR_OVF];
263 let InputType = "reg";
264 let isCommutable = 1;
265 }
266 def A2_addsp : HInst<
267 (outs DoubleRegs:$Rdd32),
268 (ins IntRegs:$Rs32, DoubleRegs:$Rtt32),
269 "$Rdd32 = add($Rs32,$Rtt32)",
270 tc_01d44cb2, TypeALU64> {
271 let isPseudo = 1;
272 }
273 def A2_addsph : HInst<
274 (outs DoubleRegs:$Rdd32),
275 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
276 "$Rdd32 = add($Rss32,$Rtt32):raw:hi",
277 tc_01d44cb2, TypeALU64>, Enc_a56825 {
278 let Inst{7-5} = 0b111;
279 let Inst{13-13} = 0b0;
280 let Inst{31-21} = 0b11010011011;
281 let prefersSlot3 = 1;
282 }
283 def A2_addspl : HInst<
284 (outs DoubleRegs:$Rdd32),
285 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
286 "$Rdd32 = add($Rss32,$Rtt32):raw:lo",
287 tc_01d44cb2, TypeALU64>, Enc_a56825 {
288 let Inst{7-5} = 0b110;
289 let Inst{13-13} = 0b0;
290 let Inst{31-21} = 0b11010011011;
291 let prefersSlot3 = 1;
292 }
293 def A2_and : HInst<
294 (outs IntRegs:$Rd32),
295 (ins IntRegs:$Rs32, IntRegs:$Rt32),
296 "$Rd32 = and($Rs32,$Rt32)",
297 tc_713b66bf, TypeALU32_3op>, Enc_5ab2be, PredNewRel, ImmRegRel {
298 let Inst{7-5} = 0b000;
299 let Inst{13-13} = 0b0;
300 let Inst{31-21} = 0b11110001000;
301 let hasNewValue = 1;
302 let opNewValue = 0;
303 let BaseOpcode = "A2_and";
304 let CextOpcode = "A2_and";
305 let InputType = "reg";
306 let isCommutable = 1;
307 let isPredicable = 1;
308 }
309 def A2_andir : HInst<
310 (outs IntRegs:$Rd32),
311 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
312 "$Rd32 = and($Rs32,#$Ii)",
313 tc_713b66bf, TypeALU32_2op>, Enc_140c83, ImmRegRel {
314 let Inst{31-22} = 0b0111011000;
315 let hasNewValue = 1;
316 let opNewValue = 0;
317 let CextOpcode = "A2_and";
318 let InputType = "imm";
319 let isExtendable = 1;
320 let opExtendable = 2;
321 let isExtentSigned = 1;
322 let opExtentBits = 10;
323 let opExtentAlign = 0;
324 }
325 def A2_andp : HInst<
326 (outs DoubleRegs:$Rdd32),
327 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
328 "$Rdd32 = and($Rss32,$Rtt32)",
329 tc_5da50c4b, TypeALU64>, Enc_a56825 {
330 let Inst{7-5} = 0b000;
331 let Inst{13-13} = 0b0;
332 let Inst{31-21} = 0b11010011111;
333 let isCommutable = 1;
334 }
335 def A2_aslh : HInst<
336 (outs IntRegs:$Rd32),
337 (ins IntRegs:$Rs32),
338 "$Rd32 = aslh($Rs32)",
339 tc_c57d9f39, TypeALU32_2op>, Enc_5e2823, PredNewRel {
340 let Inst{13-5} = 0b000000000;
341 let Inst{31-21} = 0b01110000000;
342 let hasNewValue = 1;
343 let opNewValue = 0;
344 let BaseOpcode = "A2_aslh";
345 let isPredicable = 1;
346 }
347 def A2_asrh : HInst<
348 (outs IntRegs:$Rd32),
349 (ins IntRegs:$Rs32),
350 "$Rd32 = asrh($Rs32)",
351 tc_c57d9f39, TypeALU32_2op>, Enc_5e2823, PredNewRel {
352 let Inst{13-5} = 0b000000000;
353 let Inst{31-21} = 0b01110000001;
354 let hasNewValue = 1;
355 let opNewValue = 0;
356 let BaseOpcode = "A2_asrh";
357 let isPredicable = 1;
358 }
359 def A2_combine_hh : HInst<
360 (outs IntRegs:$Rd32),
361 (ins IntRegs:$Rt32, IntRegs:$Rs32),
362 "$Rd32 = combine($Rt32.h,$Rs32.h)",
363 tc_713b66bf, TypeALU32_3op>, Enc_bd6011 {
364 let Inst{7-5} = 0b000;
365 let Inst{13-13} = 0b0;
366 let Inst{31-21} = 0b11110011100;
367 let hasNewValue = 1;
368 let opNewValue = 0;
369 let InputType = "reg";
370 }
371 def A2_combine_hl : HInst<
372 (outs IntRegs:$Rd32),
373 (ins IntRegs:$Rt32, IntRegs:$Rs32),
374 "$Rd32 = combine($Rt32.h,$Rs32.l)",
375 tc_713b66bf, TypeALU32_3op>, Enc_bd6011 {
376 let Inst{7-5} = 0b000;
377 let Inst{13-13} = 0b0;
378 let Inst{31-21} = 0b11110011101;
379 let hasNewValue = 1;
380 let opNewValue = 0;
381 let InputType = "reg";
382 }
383 def A2_combine_lh : HInst<
384 (outs IntRegs:$Rd32),
385 (ins IntRegs:$Rt32, IntRegs:$Rs32),
386 "$Rd32 = combine($Rt32.l,$Rs32.h)",
387 tc_713b66bf, TypeALU32_3op>, Enc_bd6011 {
388 let Inst{7-5} = 0b000;
389 let Inst{13-13} = 0b0;
390 let Inst{31-21} = 0b11110011110;
391 let hasNewValue = 1;
392 let opNewValue = 0;
393 let InputType = "reg";
394 }
395 def A2_combine_ll : HInst<
396 (outs IntRegs:$Rd32),
397 (ins IntRegs:$Rt32, IntRegs:$Rs32),
398 "$Rd32 = combine($Rt32.l,$Rs32.l)",
399 tc_713b66bf, TypeALU32_3op>, Enc_bd6011 {
400 let Inst{7-5} = 0b000;
401 let Inst{13-13} = 0b0;
402 let Inst{31-21} = 0b11110011111;
403 let hasNewValue = 1;
404 let opNewValue = 0;
405 let InputType = "reg";
406 }
407 def A2_combineii : HInst<
408 (outs DoubleRegs:$Rdd32),
409 (ins s32_0Imm:$Ii, s8_0Imm:$II),
410 "$Rdd32 = combine(#$Ii,#$II)",
411 tc_713b66bf, TypeALU32_2op>, Enc_18c338 {
412 let Inst{31-23} = 0b011111000;
413 let isReMaterializable = 1;
414 let isAsCheapAsAMove = 1;
415 let isMoveImm = 1;
416 let isExtendable = 1;
417 let opExtendable = 1;
418 let isExtentSigned = 1;
419 let opExtentBits = 8;
420 let opExtentAlign = 0;
421 }
422 def A2_combinew : HInst<
423 (outs DoubleRegs:$Rdd32),
424 (ins IntRegs:$Rs32, IntRegs:$Rt32),
425 "$Rdd32 = combine($Rs32,$Rt32)",
426 tc_713b66bf, TypeALU32_3op>, Enc_be32a5, PredNewRel {
427 let Inst{7-5} = 0b000;
428 let Inst{13-13} = 0b0;
429 let Inst{31-21} = 0b11110101000;
430 let BaseOpcode = "A2_combinew";
431 let InputType = "reg";
432 let isPredicable = 1;
433 }
434 def A2_max : HInst<
435 (outs IntRegs:$Rd32),
436 (ins IntRegs:$Rs32, IntRegs:$Rt32),
437 "$Rd32 = max($Rs32,$Rt32)",
438 tc_8a825db2, TypeALU64>, Enc_5ab2be {
439 let Inst{7-5} = 0b000;
440 let Inst{13-13} = 0b0;
441 let Inst{31-21} = 0b11010101110;
442 let hasNewValue = 1;
443 let opNewValue = 0;
444 let prefersSlot3 = 1;
445 }
446 def A2_maxp : HInst<
447 (outs DoubleRegs:$Rdd32),
448 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
449 "$Rdd32 = max($Rss32,$Rtt32)",
450 tc_8a825db2, TypeALU64>, Enc_a56825 {
451 let Inst{7-5} = 0b100;
452 let Inst{13-13} = 0b0;
453 let Inst{31-21} = 0b11010011110;
454 let prefersSlot3 = 1;
455 }
456 def A2_maxu : HInst<
457 (outs IntRegs:$Rd32),
458 (ins IntRegs:$Rs32, IntRegs:$Rt32),
459 "$Rd32 = maxu($Rs32,$Rt32)",
460 tc_8a825db2, TypeALU64>, Enc_5ab2be {
461 let Inst{7-5} = 0b100;
462 let Inst{13-13} = 0b0;
463 let Inst{31-21} = 0b11010101110;
464 let hasNewValue = 1;
465 let opNewValue = 0;
466 let prefersSlot3 = 1;
467 }
468 def A2_maxup : HInst<
469 (outs DoubleRegs:$Rdd32),
470 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
471 "$Rdd32 = maxu($Rss32,$Rtt32)",
472 tc_8a825db2, TypeALU64>, Enc_a56825 {
473 let Inst{7-5} = 0b101;
474 let Inst{13-13} = 0b0;
475 let Inst{31-21} = 0b11010011110;
476 let prefersSlot3 = 1;
477 }
478 def A2_min : HInst<
479 (outs IntRegs:$Rd32),
480 (ins IntRegs:$Rt32, IntRegs:$Rs32),
481 "$Rd32 = min($Rt32,$Rs32)",
482 tc_8a825db2, TypeALU64>, Enc_bd6011 {
483 let Inst{7-5} = 0b000;
484 let Inst{13-13} = 0b0;
485 let Inst{31-21} = 0b11010101101;
486 let hasNewValue = 1;
487 let opNewValue = 0;
488 let prefersSlot3 = 1;
489 }
490 def A2_minp : HInst<
491 (outs DoubleRegs:$Rdd32),
492 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
493 "$Rdd32 = min($Rtt32,$Rss32)",
494 tc_8a825db2, TypeALU64>, Enc_ea23e4 {
495 let Inst{7-5} = 0b110;
496 let Inst{13-13} = 0b0;
497 let Inst{31-21} = 0b11010011101;
498 let prefersSlot3 = 1;
499 }
500 def A2_minu : HInst<
501 (outs IntRegs:$Rd32),
502 (ins IntRegs:$Rt32, IntRegs:$Rs32),
503 "$Rd32 = minu($Rt32,$Rs32)",
504 tc_8a825db2, TypeALU64>, Enc_bd6011 {
505 let Inst{7-5} = 0b100;
506 let Inst{13-13} = 0b0;
507 let Inst{31-21} = 0b11010101101;
508 let hasNewValue = 1;
509 let opNewValue = 0;
510 let prefersSlot3 = 1;
511 }
512 def A2_minup : HInst<
513 (outs DoubleRegs:$Rdd32),
514 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
515 "$Rdd32 = minu($Rtt32,$Rss32)",
516 tc_8a825db2, TypeALU64>, Enc_ea23e4 {
517 let Inst{7-5} = 0b111;
518 let Inst{13-13} = 0b0;
519 let Inst{31-21} = 0b11010011101;
520 let prefersSlot3 = 1;
521 }
522 def A2_neg : HInst<
523 (outs IntRegs:$Rd32),
524 (ins IntRegs:$Rs32),
525 "$Rd32 = neg($Rs32)",
526 tc_c57d9f39, TypeALU32_2op> {
527 let hasNewValue = 1;
528 let opNewValue = 0;
529 let isPseudo = 1;
530 let isCodeGenOnly = 1;
531 }
532 def A2_negp : HInst<
533 (outs DoubleRegs:$Rdd32),
534 (ins DoubleRegs:$Rss32),
535 "$Rdd32 = neg($Rss32)",
536 tc_9f6cd987, TypeS_2op>, Enc_b9c5fb {
537 let Inst{13-5} = 0b000000101;
538 let Inst{31-21} = 0b10000000100;
539 }
540 def A2_negsat : HInst<
541 (outs IntRegs:$Rd32),
542 (ins IntRegs:$Rs32),
543 "$Rd32 = neg($Rs32):sat",
544 tc_d61dfdc3, TypeS_2op>, Enc_5e2823 {
545 let Inst{13-5} = 0b000000110;
546 let Inst{31-21} = 0b10001100100;
547 let hasNewValue = 1;
548 let opNewValue = 0;
549 let prefersSlot3 = 1;
550 let Defs = [USR_OVF];
551 }
552 def A2_nop : HInst<
553 (outs),
554 (ins),
555 "nop",
556 tc_b837298f, TypeALU32_2op>, Enc_e3b0c4 {
557 let Inst{13-0} = 0b00000000000000;
558 let Inst{31-16} = 0b0111111100000000;
559 }
560 def A2_not : HInst<
561 (outs IntRegs:$Rd32),
562 (ins IntRegs:$Rs32),
563 "$Rd32 = not($Rs32)",
564 tc_c57d9f39, TypeALU32_2op> {
565 let hasNewValue = 1;
566 let opNewValue = 0;
567 let isPseudo = 1;
568 let isCodeGenOnly = 1;
569 }
570 def A2_notp : HInst<
571 (outs DoubleRegs:$Rdd32),
572 (ins DoubleRegs:$Rss32),
573 "$Rdd32 = not($Rss32)",
574 tc_9f6cd987, TypeS_2op>, Enc_b9c5fb {
575 let Inst{13-5} = 0b000000100;
576 let Inst{31-21} = 0b10000000100;
577 }
578 def A2_or : HInst<
579 (outs IntRegs:$Rd32),
580 (ins IntRegs:$Rs32, IntRegs:$Rt32),
581 "$Rd32 = or($Rs32,$Rt32)",
582 tc_713b66bf, TypeALU32_3op>, Enc_5ab2be, PredNewRel, ImmRegRel {
583 let Inst{7-5} = 0b000;
584 let Inst{13-13} = 0b0;
585 let Inst{31-21} = 0b11110001001;
586 let hasNewValue = 1;
587 let opNewValue = 0;
588 let BaseOpcode = "A2_or";
589 let CextOpcode = "A2_or";
590 let InputType = "reg";
591 let isCommutable = 1;
592 let isPredicable = 1;
593 }
594 def A2_orir : HInst<
595 (outs IntRegs:$Rd32),
596 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
597 "$Rd32 = or($Rs32,#$Ii)",
598 tc_713b66bf, TypeALU32_2op>, Enc_140c83, ImmRegRel {
599 let Inst{31-22} = 0b0111011010;
600 let hasNewValue = 1;
601 let opNewValue = 0;
602 let CextOpcode = "A2_or";
603 let InputType = "imm";
604 let isExtendable = 1;
605 let opExtendable = 2;
606 let isExtentSigned = 1;
607 let opExtentBits = 10;
608 let opExtentAlign = 0;
609 }
610 def A2_orp : HInst<
611 (outs DoubleRegs:$Rdd32),
612 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
613 "$Rdd32 = or($Rss32,$Rtt32)",
614 tc_5da50c4b, TypeALU64>, Enc_a56825 {
615 let Inst{7-5} = 0b010;
616 let Inst{13-13} = 0b0;
617 let Inst{31-21} = 0b11010011111;
618 let isCommutable = 1;
619 }
620 def A2_paddf : HInst<
621 (outs IntRegs:$Rd32),
622 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
623 "if (!$Pu4) $Rd32 = add($Rs32,$Rt32)",
624 tc_1c2c7a4a, TypeALU32_3op>, Enc_ea4c54, PredNewRel, ImmRegRel {
625 let Inst{7-7} = 0b1;
626 let Inst{13-13} = 0b0;
627 let Inst{31-21} = 0b11111011000;
628 let isPredicated = 1;
629 let isPredicatedFalse = 1;
630 let hasNewValue = 1;
631 let opNewValue = 0;
632 let BaseOpcode = "A2_add";
633 let CextOpcode = "A2_add";
634 let InputType = "reg";
635 }
636 def A2_paddfnew : HInst<
637 (outs IntRegs:$Rd32),
638 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
639 "if (!$Pu4.new) $Rd32 = add($Rs32,$Rt32)",
640 tc_442395f3, TypeALU32_3op>, Enc_ea4c54, PredNewRel, ImmRegRel {
641 let Inst{7-7} = 0b1;
642 let Inst{13-13} = 0b1;
643 let Inst{31-21} = 0b11111011000;
644 let isPredicated = 1;
645 let isPredicatedFalse = 1;
646 let hasNewValue = 1;
647 let opNewValue = 0;
648 let isPredicatedNew = 1;
649 let BaseOpcode = "A2_add";
650 let CextOpcode = "A2_add";
651 let InputType = "reg";
652 }
653 def A2_paddif : HInst<
654 (outs IntRegs:$Rd32),
655 (ins PredRegs:$Pu4, IntRegs:$Rs32, s32_0Imm:$Ii),
656 "if (!$Pu4) $Rd32 = add($Rs32,#$Ii)",
657 tc_1c2c7a4a, TypeALU32_2op>, Enc_e38e1f, PredNewRel, ImmRegRel {
658 let Inst{13-13} = 0b0;
659 let Inst{31-23} = 0b011101001;
660 let isPredicated = 1;
661 let isPredicatedFalse = 1;
662 let hasNewValue = 1;
663 let opNewValue = 0;
664 let BaseOpcode = "A2_addi";
665 let CextOpcode = "A2_add";
666 let InputType = "imm";
667 let isExtendable = 1;
668 let opExtendable = 3;
669 let isExtentSigned = 1;
670 let opExtentBits = 8;
671 let opExtentAlign = 0;
672 }
673 def A2_paddifnew : HInst<
674 (outs IntRegs:$Rd32),
675 (ins PredRegs:$Pu4, IntRegs:$Rs32, s32_0Imm:$Ii),
676 "if (!$Pu4.new) $Rd32 = add($Rs32,#$Ii)",
677 tc_442395f3, TypeALU32_2op>, Enc_e38e1f, PredNewRel, ImmRegRel {
678 let Inst{13-13} = 0b1;
679 let Inst{31-23} = 0b011101001;
680 let isPredicated = 1;
681 let isPredicatedFalse = 1;
682 let hasNewValue = 1;
683 let opNewValue = 0;
684 let isPredicatedNew = 1;
685 let BaseOpcode = "A2_addi";
686 let CextOpcode = "A2_add";
687 let InputType = "imm";
688 let isExtendable = 1;
689 let opExtendable = 3;
690 let isExtentSigned = 1;
691 let opExtentBits = 8;
692 let opExtentAlign = 0;
693 }
694 def A2_paddit : HInst<
695 (outs IntRegs:$Rd32),
696 (ins PredRegs:$Pu4, IntRegs:$Rs32, s32_0Imm:$Ii),
697 "if ($Pu4) $Rd32 = add($Rs32,#$Ii)",
698 tc_1c2c7a4a, TypeALU32_2op>, Enc_e38e1f, PredNewRel, ImmRegRel {
699 let Inst{13-13} = 0b0;
700 let Inst{31-23} = 0b011101000;
701 let isPredicated = 1;
702 let hasNewValue = 1;
703 let opNewValue = 0;
704 let BaseOpcode = "A2_addi";
705 let CextOpcode = "A2_add";
706 let InputType = "imm";
707 let isExtendable = 1;
708 let opExtendable = 3;
709 let isExtentSigned = 1;
710 let opExtentBits = 8;
711 let opExtentAlign = 0;
712 }
713 def A2_padditnew : HInst<
714 (outs IntRegs:$Rd32),
715 (ins PredRegs:$Pu4, IntRegs:$Rs32, s32_0Imm:$Ii),
716 "if ($Pu4.new) $Rd32 = add($Rs32,#$Ii)",
717 tc_442395f3, TypeALU32_2op>, Enc_e38e1f, PredNewRel, ImmRegRel {
718 let Inst{13-13} = 0b1;
719 let Inst{31-23} = 0b011101000;
720 let isPredicated = 1;
721 let hasNewValue = 1;
722 let opNewValue = 0;
723 let isPredicatedNew = 1;
724 let BaseOpcode = "A2_addi";
725 let CextOpcode = "A2_add";
726 let InputType = "imm";
727 let isExtendable = 1;
728 let opExtendable = 3;
729 let isExtentSigned = 1;
730 let opExtentBits = 8;
731 let opExtentAlign = 0;
732 }
733 def A2_paddt : HInst<
734 (outs IntRegs:$Rd32),
735 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
736 "if ($Pu4) $Rd32 = add($Rs32,$Rt32)",
737 tc_1c2c7a4a, TypeALU32_3op>, Enc_ea4c54, PredNewRel, ImmRegRel {
738 let Inst{7-7} = 0b0;
739 let Inst{13-13} = 0b0;
740 let Inst{31-21} = 0b11111011000;
741 let isPredicated = 1;
742 let hasNewValue = 1;
743 let opNewValue = 0;
744 let BaseOpcode = "A2_add";
745 let CextOpcode = "A2_add";
746 let InputType = "reg";
747 }
748 def A2_paddtnew : HInst<
749 (outs IntRegs:$Rd32),
750 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
751 "if ($Pu4.new) $Rd32 = add($Rs32,$Rt32)",
752 tc_442395f3, TypeALU32_3op>, Enc_ea4c54, PredNewRel, ImmRegRel {
753 let Inst{7-7} = 0b0;
754 let Inst{13-13} = 0b1;
755 let Inst{31-21} = 0b11111011000;
756 let isPredicated = 1;
757 let hasNewValue = 1;
758 let opNewValue = 0;
759 let isPredicatedNew = 1;
760 let BaseOpcode = "A2_add";
761 let CextOpcode = "A2_add";
762 let InputType = "reg";
763 }
764 def A2_pandf : HInst<
765 (outs IntRegs:$Rd32),
766 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
767 "if (!$Pu4) $Rd32 = and($Rs32,$Rt32)",
768 tc_1c2c7a4a, TypeALU32_3op>, Enc_ea4c54, PredNewRel {
769 let Inst{7-7} = 0b1;
770 let Inst{13-13} = 0b0;
771 let Inst{31-21} = 0b11111001000;
772 let isPredicated = 1;
773 let isPredicatedFalse = 1;
774 let hasNewValue = 1;
775 let opNewValue = 0;
776 let BaseOpcode = "A2_and";
777 }
778 def A2_pandfnew : HInst<
779 (outs IntRegs:$Rd32),
780 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
781 "if (!$Pu4.new) $Rd32 = and($Rs32,$Rt32)",
782 tc_442395f3, TypeALU32_3op>, Enc_ea4c54, PredNewRel {
783 let Inst{7-7} = 0b1;
784 let Inst{13-13} = 0b1;
785 let Inst{31-21} = 0b11111001000;
786 let isPredicated = 1;
787 let isPredicatedFalse = 1;
788 let hasNewValue = 1;
789 let opNewValue = 0;
790 let isPredicatedNew = 1;
791 let BaseOpcode = "A2_and";
792 }
793 def A2_pandt : HInst<
794 (outs IntRegs:$Rd32),
795 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
796 "if ($Pu4) $Rd32 = and($Rs32,$Rt32)",
797 tc_1c2c7a4a, TypeALU32_3op>, Enc_ea4c54, PredNewRel {
798 let Inst{7-7} = 0b0;
799 let Inst{13-13} = 0b0;
800 let Inst{31-21} = 0b11111001000;
801 let isPredicated = 1;
802 let hasNewValue = 1;
803 let opNewValue = 0;
804 let BaseOpcode = "A2_and";
805 }
806 def A2_pandtnew : HInst<
807 (outs IntRegs:$Rd32),
808 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
809 "if ($Pu4.new) $Rd32 = and($Rs32,$Rt32)",
810 tc_442395f3, TypeALU32_3op>, Enc_ea4c54, PredNewRel {
811 let Inst{7-7} = 0b0;
812 let Inst{13-13} = 0b1;
813 let Inst{31-21} = 0b11111001000;
814 let isPredicated = 1;
815 let hasNewValue = 1;
816 let opNewValue = 0;
817 let isPredicatedNew = 1;
818 let BaseOpcode = "A2_and";
819 }
820 def A2_porf : HInst<
821 (outs IntRegs:$Rd32),
822 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
823 "if (!$Pu4) $Rd32 = or($Rs32,$Rt32)",
824 tc_1c2c7a4a, TypeALU32_3op>, Enc_ea4c54, PredNewRel {
825 let Inst{7-7} = 0b1;
826 let Inst{13-13} = 0b0;
827 let Inst{31-21} = 0b11111001001;
828 let isPredicated = 1;
829 let isPredicatedFalse = 1;
830 let hasNewValue = 1;
831 let opNewValue = 0;
832 let BaseOpcode = "A2_or";
833 }
834 def A2_porfnew : HInst<
835 (outs IntRegs:$Rd32),
836 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
837 "if (!$Pu4.new) $Rd32 = or($Rs32,$Rt32)",
838 tc_442395f3, TypeALU32_3op>, Enc_ea4c54, PredNewRel {
839 let Inst{7-7} = 0b1;
840 let Inst{13-13} = 0b1;
841 let Inst{31-21} = 0b11111001001;
842 let isPredicated = 1;
843 let isPredicatedFalse = 1;
844 let hasNewValue = 1;
845 let opNewValue = 0;
846 let isPredicatedNew = 1;
847 let BaseOpcode = "A2_or";
848 }
849 def A2_port : HInst<
850 (outs IntRegs:$Rd32),
851 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
852 "if ($Pu4) $Rd32 = or($Rs32,$Rt32)",
853 tc_1c2c7a4a, TypeALU32_3op>, Enc_ea4c54, PredNewRel {
854 let Inst{7-7} = 0b0;
855 let Inst{13-13} = 0b0;
856 let Inst{31-21} = 0b11111001001;
857 let isPredicated = 1;
858 let hasNewValue = 1;
859 let opNewValue = 0;
860 let BaseOpcode = "A2_or";
861 }
862 def A2_portnew : HInst<
863 (outs IntRegs:$Rd32),
864 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
865 "if ($Pu4.new) $Rd32 = or($Rs32,$Rt32)",
866 tc_442395f3, TypeALU32_3op>, Enc_ea4c54, PredNewRel {
867 let Inst{7-7} = 0b0;
868 let Inst{13-13} = 0b1;
869 let Inst{31-21} = 0b11111001001;
870 let isPredicated = 1;
871 let hasNewValue = 1;
872 let opNewValue = 0;
873 let isPredicatedNew = 1;
874 let BaseOpcode = "A2_or";
875 }
876 def A2_psubf : HInst<
877 (outs IntRegs:$Rd32),
878 (ins PredRegs:$Pu4, IntRegs:$Rt32, IntRegs:$Rs32),
879 "if (!$Pu4) $Rd32 = sub($Rt32,$Rs32)",
880 tc_1c2c7a4a, TypeALU32_3op>, Enc_9b0bc1, PredNewRel {
881 let Inst{7-7} = 0b1;
882 let Inst{13-13} = 0b0;
883 let Inst{31-21} = 0b11111011001;
884 let isPredicated = 1;
885 let isPredicatedFalse = 1;
886 let hasNewValue = 1;
887 let opNewValue = 0;
888 let BaseOpcode = "A2_sub";
889 }
890 def A2_psubfnew : HInst<
891 (outs IntRegs:$Rd32),
892 (ins PredRegs:$Pu4, IntRegs:$Rt32, IntRegs:$Rs32),
893 "if (!$Pu4.new) $Rd32 = sub($Rt32,$Rs32)",
894 tc_442395f3, TypeALU32_3op>, Enc_9b0bc1, PredNewRel {
895 let Inst{7-7} = 0b1;
896 let Inst{13-13} = 0b1;
897 let Inst{31-21} = 0b11111011001;
898 let isPredicated = 1;
899 let isPredicatedFalse = 1;
900 let hasNewValue = 1;
901 let opNewValue = 0;
902 let isPredicatedNew = 1;
903 let BaseOpcode = "A2_sub";
904 }
905 def A2_psubt : HInst<
906 (outs IntRegs:$Rd32),
907 (ins PredRegs:$Pu4, IntRegs:$Rt32, IntRegs:$Rs32),
908 "if ($Pu4) $Rd32 = sub($Rt32,$Rs32)",
909 tc_1c2c7a4a, TypeALU32_3op>, Enc_9b0bc1, PredNewRel {
910 let Inst{7-7} = 0b0;
911 let Inst{13-13} = 0b0;
912 let Inst{31-21} = 0b11111011001;
913 let isPredicated = 1;
914 let hasNewValue = 1;
915 let opNewValue = 0;
916 let BaseOpcode = "A2_sub";
917 }
918 def A2_psubtnew : HInst<
919 (outs IntRegs:$Rd32),
920 (ins PredRegs:$Pu4, IntRegs:$Rt32, IntRegs:$Rs32),
921 "if ($Pu4.new) $Rd32 = sub($Rt32,$Rs32)",
922 tc_442395f3, TypeALU32_3op>, Enc_9b0bc1, PredNewRel {
923 let Inst{7-7} = 0b0;
924 let Inst{13-13} = 0b1;
925 let Inst{31-21} = 0b11111011001;
926 let isPredicated = 1;
927 let hasNewValue = 1;
928 let opNewValue = 0;
929 let isPredicatedNew = 1;
930 let BaseOpcode = "A2_sub";
931 }
932 def A2_pxorf : HInst<
933 (outs IntRegs:$Rd32),
934 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
935 "if (!$Pu4) $Rd32 = xor($Rs32,$Rt32)",
936 tc_1c2c7a4a, TypeALU32_3op>, Enc_ea4c54, PredNewRel {
937 let Inst{7-7} = 0b1;
938 let Inst{13-13} = 0b0;
939 let Inst{31-21} = 0b11111001011;
940 let isPredicated = 1;
941 let isPredicatedFalse = 1;
942 let hasNewValue = 1;
943 let opNewValue = 0;
944 let BaseOpcode = "A2_xor";
945 }
946 def A2_pxorfnew : HInst<
947 (outs IntRegs:$Rd32),
948 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
949 "if (!$Pu4.new) $Rd32 = xor($Rs32,$Rt32)",
950 tc_442395f3, TypeALU32_3op>, Enc_ea4c54, PredNewRel {
951 let Inst{7-7} = 0b1;
952 let Inst{13-13} = 0b1;
953 let Inst{31-21} = 0b11111001011;
954 let isPredicated = 1;
955 let isPredicatedFalse = 1;
956 let hasNewValue = 1;
957 let opNewValue = 0;
958 let isPredicatedNew = 1;
959 let BaseOpcode = "A2_xor";
960 }
961 def A2_pxort : HInst<
962 (outs IntRegs:$Rd32),
963 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
964 "if ($Pu4) $Rd32 = xor($Rs32,$Rt32)",
965 tc_1c2c7a4a, TypeALU32_3op>, Enc_ea4c54, PredNewRel {
966 let Inst{7-7} = 0b0;
967 let Inst{13-13} = 0b0;
968 let Inst{31-21} = 0b11111001011;
969 let isPredicated = 1;
970 let hasNewValue = 1;
971 let opNewValue = 0;
972 let BaseOpcode = "A2_xor";
973 }
974 def A2_pxortnew : HInst<
975 (outs IntRegs:$Rd32),
976 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
977 "if ($Pu4.new) $Rd32 = xor($Rs32,$Rt32)",
978 tc_442395f3, TypeALU32_3op>, Enc_ea4c54, PredNewRel {
979 let Inst{7-7} = 0b0;
980 let Inst{13-13} = 0b1;
981 let Inst{31-21} = 0b11111001011;
982 let isPredicated = 1;
983 let hasNewValue = 1;
984 let opNewValue = 0;
985 let isPredicatedNew = 1;
986 let BaseOpcode = "A2_xor";
987 }
988 def A2_roundsat : HInst<
989 (outs IntRegs:$Rd32),
990 (ins DoubleRegs:$Rss32),
991 "$Rd32 = round($Rss32):sat",
992 tc_d61dfdc3, TypeS_2op>, Enc_90cd8b {
993 let Inst{13-5} = 0b000000001;
994 let Inst{31-21} = 0b10001000110;
995 let hasNewValue = 1;
996 let opNewValue = 0;
997 let prefersSlot3 = 1;
998 let Defs = [USR_OVF];
999 }
1000 def A2_sat : HInst<
1001 (outs IntRegs:$Rd32),
1002 (ins DoubleRegs:$Rss32),
1003 "$Rd32 = sat($Rss32)",
1004 tc_9f6cd987, TypeS_2op>, Enc_90cd8b {
1005 let Inst{13-5} = 0b000000000;
1006 let Inst{31-21} = 0b10001000110;
1007 let hasNewValue = 1;
1008 let opNewValue = 0;
1009 let Defs = [USR_OVF];
1010 }
1011 def A2_satb : HInst<
1012 (outs IntRegs:$Rd32),
1013 (ins IntRegs:$Rs32),
1014 "$Rd32 = satb($Rs32)",
1015 tc_9f6cd987, TypeS_2op>, Enc_5e2823 {
1016 let Inst{13-5} = 0b000000111;
1017 let Inst{31-21} = 0b10001100110;
1018 let hasNewValue = 1;
1019 let opNewValue = 0;
1020 let Defs = [USR_OVF];
1021 }
1022 def A2_sath : HInst<
1023 (outs IntRegs:$Rd32),
1024 (ins IntRegs:$Rs32),
1025 "$Rd32 = sath($Rs32)",
1026 tc_9f6cd987, TypeS_2op>, Enc_5e2823 {
1027 let Inst{13-5} = 0b000000100;
1028 let Inst{31-21} = 0b10001100110;
1029 let hasNewValue = 1;
1030 let opNewValue = 0;
1031 let Defs = [USR_OVF];
1032 }
1033 def A2_satub : HInst<
1034 (outs IntRegs:$Rd32),
1035 (ins IntRegs:$Rs32),
1036 "$Rd32 = satub($Rs32)",
1037 tc_9f6cd987, TypeS_2op>, Enc_5e2823 {
1038 let Inst{13-5} = 0b000000110;
1039 let Inst{31-21} = 0b10001100110;
1040 let hasNewValue = 1;
1041 let opNewValue = 0;
1042 let Defs = [USR_OVF];
1043 }
1044 def A2_satuh : HInst<
1045 (outs IntRegs:$Rd32),
1046 (ins IntRegs:$Rs32),
1047 "$Rd32 = satuh($Rs32)",
1048 tc_9f6cd987, TypeS_2op>, Enc_5e2823 {
1049 let Inst{13-5} = 0b000000101;
1050 let Inst{31-21} = 0b10001100110;
1051 let hasNewValue = 1;
1052 let opNewValue = 0;
1053 let Defs = [USR_OVF];
1054 }
1055 def A2_sub : HInst<
1056 (outs IntRegs:$Rd32),
1057 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1058 "$Rd32 = sub($Rt32,$Rs32)",
1059 tc_713b66bf, TypeALU32_3op>, Enc_bd6011, PredNewRel, ImmRegRel {
1060 let Inst{7-5} = 0b000;
1061 let Inst{13-13} = 0b0;
1062 let Inst{31-21} = 0b11110011001;
1063 let hasNewValue = 1;
1064 let opNewValue = 0;
1065 let BaseOpcode = "A2_sub";
1066 let CextOpcode = "A2_sub";
1067 let InputType = "reg";
1068 let isPredicable = 1;
1069 }
1070 def A2_subh_h16_hh : HInst<
1071 (outs IntRegs:$Rd32),
1072 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1073 "$Rd32 = sub($Rt32.h,$Rs32.h):<<16",
1074 tc_01d44cb2, TypeALU64>, Enc_bd6011 {
1075 let Inst{7-5} = 0b011;
1076 let Inst{13-13} = 0b0;
1077 let Inst{31-21} = 0b11010101011;
1078 let hasNewValue = 1;
1079 let opNewValue = 0;
1080 let prefersSlot3 = 1;
1081 }
1082 def A2_subh_h16_hl : HInst<
1083 (outs IntRegs:$Rd32),
1084 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1085 "$Rd32 = sub($Rt32.h,$Rs32.l):<<16",
1086 tc_01d44cb2, TypeALU64>, Enc_bd6011 {
1087 let Inst{7-5} = 0b010;
1088 let Inst{13-13} = 0b0;
1089 let Inst{31-21} = 0b11010101011;
1090 let hasNewValue = 1;
1091 let opNewValue = 0;
1092 let prefersSlot3 = 1;
1093 }
1094 def A2_subh_h16_lh : HInst<
1095 (outs IntRegs:$Rd32),
1096 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1097 "$Rd32 = sub($Rt32.l,$Rs32.h):<<16",
1098 tc_01d44cb2, TypeALU64>, Enc_bd6011 {
1099 let Inst{7-5} = 0b001;
1100 let Inst{13-13} = 0b0;
1101 let Inst{31-21} = 0b11010101011;
1102 let hasNewValue = 1;
1103 let opNewValue = 0;
1104 let prefersSlot3 = 1;
1105 }
1106 def A2_subh_h16_ll : HInst<
1107 (outs IntRegs:$Rd32),
1108 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1109 "$Rd32 = sub($Rt32.l,$Rs32.l):<<16",
1110 tc_01d44cb2, TypeALU64>, Enc_bd6011 {
1111 let Inst{7-5} = 0b000;
1112 let Inst{13-13} = 0b0;
1113 let Inst{31-21} = 0b11010101011;
1114 let hasNewValue = 1;
1115 let opNewValue = 0;
1116 let prefersSlot3 = 1;
1117 }
1118 def A2_subh_h16_sat_hh : HInst<
1119 (outs IntRegs:$Rd32),
1120 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1121 "$Rd32 = sub($Rt32.h,$Rs32.h):sat:<<16",
1122 tc_8a825db2, TypeALU64>, Enc_bd6011 {
1123 let Inst{7-5} = 0b111;
1124 let Inst{13-13} = 0b0;
1125 let Inst{31-21} = 0b11010101011;
1126 let hasNewValue = 1;
1127 let opNewValue = 0;
1128 let prefersSlot3 = 1;
1129 let Defs = [USR_OVF];
1130 }
1131 def A2_subh_h16_sat_hl : HInst<
1132 (outs IntRegs:$Rd32),
1133 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1134 "$Rd32 = sub($Rt32.h,$Rs32.l):sat:<<16",
1135 tc_8a825db2, TypeALU64>, Enc_bd6011 {
1136 let Inst{7-5} = 0b110;
1137 let Inst{13-13} = 0b0;
1138 let Inst{31-21} = 0b11010101011;
1139 let hasNewValue = 1;
1140 let opNewValue = 0;
1141 let prefersSlot3 = 1;
1142 let Defs = [USR_OVF];
1143 }
1144 def A2_subh_h16_sat_lh : HInst<
1145 (outs IntRegs:$Rd32),
1146 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1147 "$Rd32 = sub($Rt32.l,$Rs32.h):sat:<<16",
1148 tc_8a825db2, TypeALU64>, Enc_bd6011 {
1149 let Inst{7-5} = 0b101;
1150 let Inst{13-13} = 0b0;
1151 let Inst{31-21} = 0b11010101011;
1152 let hasNewValue = 1;
1153 let opNewValue = 0;
1154 let prefersSlot3 = 1;
1155 let Defs = [USR_OVF];
1156 }
1157 def A2_subh_h16_sat_ll : HInst<
1158 (outs IntRegs:$Rd32),
1159 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1160 "$Rd32 = sub($Rt32.l,$Rs32.l):sat:<<16",
1161 tc_8a825db2, TypeALU64>, Enc_bd6011 {
1162 let Inst{7-5} = 0b100;
1163 let Inst{13-13} = 0b0;
1164 let Inst{31-21} = 0b11010101011;
1165 let hasNewValue = 1;
1166 let opNewValue = 0;
1167 let prefersSlot3 = 1;
1168 let Defs = [USR_OVF];
1169 }
1170 def A2_subh_l16_hl : HInst<
1171 (outs IntRegs:$Rd32),
1172 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1173 "$Rd32 = sub($Rt32.l,$Rs32.h)",
1174 tc_f34c1c21, TypeALU64>, Enc_bd6011 {
1175 let Inst{7-5} = 0b010;
1176 let Inst{13-13} = 0b0;
1177 let Inst{31-21} = 0b11010101001;
1178 let hasNewValue = 1;
1179 let opNewValue = 0;
1180 let prefersSlot3 = 1;
1181 }
1182 def A2_subh_l16_ll : HInst<
1183 (outs IntRegs:$Rd32),
1184 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1185 "$Rd32 = sub($Rt32.l,$Rs32.l)",
1186 tc_f34c1c21, TypeALU64>, Enc_bd6011 {
1187 let Inst{7-5} = 0b000;
1188 let Inst{13-13} = 0b0;
1189 let Inst{31-21} = 0b11010101001;
1190 let hasNewValue = 1;
1191 let opNewValue = 0;
1192 let prefersSlot3 = 1;
1193 }
1194 def A2_subh_l16_sat_hl : HInst<
1195 (outs IntRegs:$Rd32),
1196 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1197 "$Rd32 = sub($Rt32.l,$Rs32.h):sat",
1198 tc_8a825db2, TypeALU64>, Enc_bd6011 {
1199 let Inst{7-5} = 0b110;
1200 let Inst{13-13} = 0b0;
1201 let Inst{31-21} = 0b11010101001;
1202 let hasNewValue = 1;
1203 let opNewValue = 0;
1204 let prefersSlot3 = 1;
1205 let Defs = [USR_OVF];
1206 }
1207 def A2_subh_l16_sat_ll : HInst<
1208 (outs IntRegs:$Rd32),
1209 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1210 "$Rd32 = sub($Rt32.l,$Rs32.l):sat",
1211 tc_8a825db2, TypeALU64>, Enc_bd6011 {
1212 let Inst{7-5} = 0b100;
1213 let Inst{13-13} = 0b0;
1214 let Inst{31-21} = 0b11010101001;
1215 let hasNewValue = 1;
1216 let opNewValue = 0;
1217 let prefersSlot3 = 1;
1218 let Defs = [USR_OVF];
1219 }
1220 def A2_subp : HInst<
1221 (outs DoubleRegs:$Rdd32),
1222 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
1223 "$Rdd32 = sub($Rtt32,$Rss32)",
1224 tc_5da50c4b, TypeALU64>, Enc_ea23e4 {
1225 let Inst{7-5} = 0b111;
1226 let Inst{13-13} = 0b0;
1227 let Inst{31-21} = 0b11010011001;
1228 }
1229 def A2_subri : HInst<
1230 (outs IntRegs:$Rd32),
1231 (ins s32_0Imm:$Ii, IntRegs:$Rs32),
1232 "$Rd32 = sub(#$Ii,$Rs32)",
1233 tc_713b66bf, TypeALU32_2op>, Enc_140c83, PredNewRel, ImmRegRel {
1234 let Inst{31-22} = 0b0111011001;
1235 let hasNewValue = 1;
1236 let opNewValue = 0;
1237 let CextOpcode = "A2_sub";
1238 let InputType = "imm";
1239 let isExtendable = 1;
1240 let opExtendable = 1;
1241 let isExtentSigned = 1;
1242 let opExtentBits = 10;
1243 let opExtentAlign = 0;
1244 }
1245 def A2_subsat : HInst<
1246 (outs IntRegs:$Rd32),
1247 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1248 "$Rd32 = sub($Rt32,$Rs32):sat",
1249 tc_95a33176, TypeALU32_3op>, Enc_bd6011 {
1250 let Inst{7-5} = 0b000;
1251 let Inst{13-13} = 0b0;
1252 let Inst{31-21} = 0b11110110110;
1253 let hasNewValue = 1;
1254 let opNewValue = 0;
1255 let prefersSlot3 = 1;
1256 let Defs = [USR_OVF];
1257 let InputType = "reg";
1258 }
1259 def A2_svaddh : HInst<
1260 (outs IntRegs:$Rd32),
1261 (ins IntRegs:$Rs32, IntRegs:$Rt32),
1262 "$Rd32 = vaddh($Rs32,$Rt32)",
1263 tc_713b66bf, TypeALU32_3op>, Enc_5ab2be {
1264 let Inst{7-5} = 0b000;
1265 let Inst{13-13} = 0b0;
1266 let Inst{31-21} = 0b11110110000;
1267 let hasNewValue = 1;
1268 let opNewValue = 0;
1269 let InputType = "reg";
1270 let isCommutable = 1;
1271 }
1272 def A2_svaddhs : HInst<
1273 (outs IntRegs:$Rd32),
1274 (ins IntRegs:$Rs32, IntRegs:$Rt32),
1275 "$Rd32 = vaddh($Rs32,$Rt32):sat",
1276 tc_95a33176, TypeALU32_3op>, Enc_5ab2be {
1277 let Inst{7-5} = 0b000;
1278 let Inst{13-13} = 0b0;
1279 let Inst{31-21} = 0b11110110001;
1280 let hasNewValue = 1;
1281 let opNewValue = 0;
1282 let prefersSlot3 = 1;
1283 let Defs = [USR_OVF];
1284 let InputType = "reg";
1285 let isCommutable = 1;
1286 }
1287 def A2_svadduhs : HInst<
1288 (outs IntRegs:$Rd32),
1289 (ins IntRegs:$Rs32, IntRegs:$Rt32),
1290 "$Rd32 = vadduh($Rs32,$Rt32):sat",
1291 tc_95a33176, TypeALU32_3op>, Enc_5ab2be {
1292 let Inst{7-5} = 0b000;
1293 let Inst{13-13} = 0b0;
1294 let Inst{31-21} = 0b11110110011;
1295 let hasNewValue = 1;
1296 let opNewValue = 0;
1297 let prefersSlot3 = 1;
1298 let Defs = [USR_OVF];
1299 let InputType = "reg";
1300 let isCommutable = 1;
1301 }
1302 def A2_svavgh : HInst<
1303 (outs IntRegs:$Rd32),
1304 (ins IntRegs:$Rs32, IntRegs:$Rt32),
1305 "$Rd32 = vavgh($Rs32,$Rt32)",
1306 tc_8b5bd4f5, TypeALU32_3op>, Enc_5ab2be {
1307 let Inst{7-5} = 0b000;
1308 let Inst{13-13} = 0b0;
1309 let Inst{31-21} = 0b11110111000;
1310 let hasNewValue = 1;
1311 let opNewValue = 0;
1312 let prefersSlot3 = 1;
1313 let InputType = "reg";
1314 let isCommutable = 1;
1315 }
1316 def A2_svavghs : HInst<
1317 (outs IntRegs:$Rd32),
1318 (ins IntRegs:$Rs32, IntRegs:$Rt32),
1319 "$Rd32 = vavgh($Rs32,$Rt32):rnd",
1320 tc_84a7500d, TypeALU32_3op>, Enc_5ab2be {
1321 let Inst{7-5} = 0b000;
1322 let Inst{13-13} = 0b0;
1323 let Inst{31-21} = 0b11110111001;
1324 let hasNewValue = 1;
1325 let opNewValue = 0;
1326 let prefersSlot3 = 1;
1327 let InputType = "reg";
1328 let isCommutable = 1;
1329 }
1330 def A2_svnavgh : HInst<
1331 (outs IntRegs:$Rd32),
1332 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1333 "$Rd32 = vnavgh($Rt32,$Rs32)",
1334 tc_8b5bd4f5, TypeALU32_3op>, Enc_bd6011 {
1335 let Inst{7-5} = 0b000;
1336 let Inst{13-13} = 0b0;
1337 let Inst{31-21} = 0b11110111011;
1338 let hasNewValue = 1;
1339 let opNewValue = 0;
1340 let prefersSlot3 = 1;
1341 let InputType = "reg";
1342 }
1343 def A2_svsubh : HInst<
1344 (outs IntRegs:$Rd32),
1345 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1346 "$Rd32 = vsubh($Rt32,$Rs32)",
1347 tc_713b66bf, TypeALU32_3op>, Enc_bd6011 {
1348 let Inst{7-5} = 0b000;
1349 let Inst{13-13} = 0b0;
1350 let Inst{31-21} = 0b11110110100;
1351 let hasNewValue = 1;
1352 let opNewValue = 0;
1353 let InputType = "reg";
1354 }
1355 def A2_svsubhs : HInst<
1356 (outs IntRegs:$Rd32),
1357 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1358 "$Rd32 = vsubh($Rt32,$Rs32):sat",
1359 tc_95a33176, TypeALU32_3op>, Enc_bd6011 {
1360 let Inst{7-5} = 0b000;
1361 let Inst{13-13} = 0b0;
1362 let Inst{31-21} = 0b11110110101;
1363 let hasNewValue = 1;
1364 let opNewValue = 0;
1365 let prefersSlot3 = 1;
1366 let Defs = [USR_OVF];
1367 let InputType = "reg";
1368 }
1369 def A2_svsubuhs : HInst<
1370 (outs IntRegs:$Rd32),
1371 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1372 "$Rd32 = vsubuh($Rt32,$Rs32):sat",
1373 tc_95a33176, TypeALU32_3op>, Enc_bd6011 {
1374 let Inst{7-5} = 0b000;
1375 let Inst{13-13} = 0b0;
1376 let Inst{31-21} = 0b11110110111;
1377 let hasNewValue = 1;
1378 let opNewValue = 0;
1379 let prefersSlot3 = 1;
1380 let Defs = [USR_OVF];
1381 let InputType = "reg";
1382 }
1383 def A2_swiz : HInst<
1384 (outs IntRegs:$Rd32),
1385 (ins IntRegs:$Rs32),
1386 "$Rd32 = swiz($Rs32)",
1387 tc_9f6cd987, TypeS_2op>, Enc_5e2823 {
1388 let Inst{13-5} = 0b000000111;
1389 let Inst{31-21} = 0b10001100100;
1390 let hasNewValue = 1;
1391 let opNewValue = 0;
1392 }
1393 def A2_sxtb : HInst<
1394 (outs IntRegs:$Rd32),
1395 (ins IntRegs:$Rs32),
1396 "$Rd32 = sxtb($Rs32)",
1397 tc_c57d9f39, TypeALU32_2op>, Enc_5e2823, PredNewRel {
1398 let Inst{13-5} = 0b000000000;
1399 let Inst{31-21} = 0b01110000101;
1400 let hasNewValue = 1;
1401 let opNewValue = 0;
1402 let BaseOpcode = "A2_sxtb";
1403 let isPredicable = 1;
1404 }
1405 def A2_sxth : HInst<
1406 (outs IntRegs:$Rd32),
1407 (ins IntRegs:$Rs32),
1408 "$Rd32 = sxth($Rs32)",
1409 tc_c57d9f39, TypeALU32_2op>, Enc_5e2823, PredNewRel {
1410 let Inst{13-5} = 0b000000000;
1411 let Inst{31-21} = 0b01110000111;
1412 let hasNewValue = 1;
1413 let opNewValue = 0;
1414 let BaseOpcode = "A2_sxth";
1415 let isPredicable = 1;
1416 }
1417 def A2_sxtw : HInst<
1418 (outs DoubleRegs:$Rdd32),
1419 (ins IntRegs:$Rs32),
1420 "$Rdd32 = sxtw($Rs32)",
1421 tc_9f6cd987, TypeS_2op>, Enc_3a3d62 {
1422 let Inst{13-5} = 0b000000000;
1423 let Inst{31-21} = 0b10000100010;
1424 }
1425 def A2_tfr : HInst<
1426 (outs IntRegs:$Rd32),
1427 (ins IntRegs:$Rs32),
1428 "$Rd32 = $Rs32",
1429 tc_c57d9f39, TypeALU32_2op>, Enc_5e2823, PredNewRel {
1430 let Inst{13-5} = 0b000000000;
1431 let Inst{31-21} = 0b01110000011;
1432 let hasNewValue = 1;
1433 let opNewValue = 0;
1434 let BaseOpcode = "A2_tfr";
1435 let InputType = "reg";
1436 let isPredicable = 1;
1437 }
1438 def A2_tfrcrr : HInst<
1439 (outs IntRegs:$Rd32),
1440 (ins CtrRegs:$Cs32),
1441 "$Rd32 = $Cs32",
1442 tc_7476d766, TypeCR>, Enc_0cb018 {
1443 let Inst{13-5} = 0b000000000;
1444 let Inst{31-21} = 0b01101010000;
1445 let hasNewValue = 1;
1446 let opNewValue = 0;
1447 }
1448 def A2_tfrf : HInst<
1449 (outs IntRegs:$Rd32),
1450 (ins PredRegs:$Pu4, IntRegs:$Rs32),
1451 "if (!$Pu4) $Rd32 = $Rs32",
1452 tc_1c2c7a4a, TypeALU32_2op>, PredNewRel, ImmRegRel {
1453 let isPredicated = 1;
1454 let isPredicatedFalse = 1;
1455 let hasNewValue = 1;
1456 let opNewValue = 0;
1457 let BaseOpcode = "A2_tfr";
1458 let CextOpcode = "A2_tfr";
1459 let InputType = "reg";
1460 let isPseudo = 1;
1461 let isCodeGenOnly = 1;
1462 }
1463 def A2_tfrfnew : HInst<
1464 (outs IntRegs:$Rd32),
1465 (ins PredRegs:$Pu4, IntRegs:$Rs32),
1466 "if (!$Pu4.new) $Rd32 = $Rs32",
1467 tc_442395f3, TypeALU32_2op>, PredNewRel, ImmRegRel {
1468 let isPredicated = 1;
1469 let isPredicatedFalse = 1;
1470 let hasNewValue = 1;
1471 let opNewValue = 0;
1472 let isPredicatedNew = 1;
1473 let BaseOpcode = "A2_tfr";
1474 let CextOpcode = "A2_tfr";
1475 let InputType = "reg";
1476 let isPseudo = 1;
1477 let isCodeGenOnly = 1;
1478 }
1479 def A2_tfrih : HInst<
1480 (outs IntRegs:$Rx32),
1481 (ins IntRegs:$Rx32in, u16_0Imm:$Ii),
1482 "$Rx32.h = #$Ii",
1483 tc_713b66bf, TypeALU32_2op>, Enc_51436c {
1484 let Inst{21-21} = 0b1;
1485 let Inst{31-24} = 0b01110010;
1486 let hasNewValue = 1;
1487 let opNewValue = 0;
1488 let Constraints = "$Rx32 = $Rx32in";
1489 }
1490 def A2_tfril : HInst<
1491 (outs IntRegs:$Rx32),
1492 (ins IntRegs:$Rx32in, u16_0Imm:$Ii),
1493 "$Rx32.l = #$Ii",
1494 tc_713b66bf, TypeALU32_2op>, Enc_51436c {
1495 let Inst{21-21} = 0b1;
1496 let Inst{31-24} = 0b01110001;
1497 let hasNewValue = 1;
1498 let opNewValue = 0;
1499 let Constraints = "$Rx32 = $Rx32in";
1500 }
1501 def A2_tfrp : HInst<
1502 (outs DoubleRegs:$Rdd32),
1503 (ins DoubleRegs:$Rss32),
1504 "$Rdd32 = $Rss32",
1505 tc_713b66bf, TypeALU32_2op>, PredNewRel {
1506 let BaseOpcode = "A2_tfrp";
1507 let isPredicable = 1;
1508 let isPseudo = 1;
1509 }
1510 def A2_tfrpf : HInst<
1511 (outs DoubleRegs:$Rdd32),
1512 (ins PredRegs:$Pu4, DoubleRegs:$Rss32),
1513 "if (!$Pu4) $Rdd32 = $Rss32",
1514 tc_713b66bf, TypeALU32_2op>, PredNewRel {
1515 let isPredicated = 1;
1516 let isPredicatedFalse = 1;
1517 let BaseOpcode = "A2_tfrp";
1518 let isPseudo = 1;
1519 }
1520 def A2_tfrpfnew : HInst<
1521 (outs DoubleRegs:$Rdd32),
1522 (ins PredRegs:$Pu4, DoubleRegs:$Rss32),
1523 "if (!$Pu4.new) $Rdd32 = $Rss32",
1524 tc_86173609, TypeALU32_2op>, PredNewRel {
1525 let isPredicated = 1;
1526 let isPredicatedFalse = 1;
1527 let isPredicatedNew = 1;
1528 let BaseOpcode = "A2_tfrp";
1529 let isPseudo = 1;
1530 }
1531 def A2_tfrpi : HInst<
1532 (outs DoubleRegs:$Rdd32),
1533 (ins s8_0Imm:$Ii),
1534 "$Rdd32 = #$Ii",
1535 tc_713b66bf, TypeALU64> {
1536 let isReMaterializable = 1;
1537 let isAsCheapAsAMove = 1;
1538 let isMoveImm = 1;
1539 let isPseudo = 1;
1540 }
1541 def A2_tfrpt : HInst<
1542 (outs DoubleRegs:$Rdd32),
1543 (ins PredRegs:$Pu4, DoubleRegs:$Rss32),
1544 "if ($Pu4) $Rdd32 = $Rss32",
1545 tc_713b66bf, TypeALU32_2op>, PredNewRel {
1546 let isPredicated = 1;
1547 let BaseOpcode = "A2_tfrp";
1548 let isPseudo = 1;
1549 }
1550 def A2_tfrptnew : HInst<
1551 (outs DoubleRegs:$Rdd32),
1552 (ins PredRegs:$Pu4, DoubleRegs:$Rss32),
1553 "if ($Pu4.new) $Rdd32 = $Rss32",
1554 tc_86173609, TypeALU32_2op>, PredNewRel {
1555 let isPredicated = 1;
1556 let isPredicatedNew = 1;
1557 let BaseOpcode = "A2_tfrp";
1558 let isPseudo = 1;
1559 }
1560 def A2_tfrrcr : HInst<
1561 (outs CtrRegs:$Cd32),
1562 (ins IntRegs:$Rs32),
1563 "$Cd32 = $Rs32",
1564 tc_49fdfd4b, TypeCR>, Enc_bd811a {
1565 let Inst{13-5} = 0b000000000;
1566 let Inst{31-21} = 0b01100010001;
1567 let hasNewValue = 1;
1568 let opNewValue = 0;
1569 }
1570 def A2_tfrsi : HInst<
1571 (outs IntRegs:$Rd32),
1572 (ins s32_0Imm:$Ii),
1573 "$Rd32 = #$Ii",
1574 tc_c57d9f39, TypeALU32_2op>, Enc_5e87ce, PredNewRel, ImmRegRel {
1575 let Inst{21-21} = 0b0;
1576 let Inst{31-24} = 0b01111000;
1577 let hasNewValue = 1;
1578 let opNewValue = 0;
1579 let BaseOpcode = "A2_tfrsi";
1580 let CextOpcode = "A2_tfr";
1581 let InputType = "imm";
1582 let isPredicable = 1;
1583 let isReMaterializable = 1;
1584 let isAsCheapAsAMove = 1;
1585 let isMoveImm = 1;
1586 let isExtendable = 1;
1587 let opExtendable = 1;
1588 let isExtentSigned = 1;
1589 let opExtentBits = 16;
1590 let opExtentAlign = 0;
1591 }
1592 def A2_tfrt : HInst<
1593 (outs IntRegs:$Rd32),
1594 (ins PredRegs:$Pu4, IntRegs:$Rs32),
1595 "if ($Pu4) $Rd32 = $Rs32",
1596 tc_1c2c7a4a, TypeALU32_2op>, PredNewRel, ImmRegRel {
1597 let isPredicated = 1;
1598 let hasNewValue = 1;
1599 let opNewValue = 0;
1600 let BaseOpcode = "A2_tfr";
1601 let CextOpcode = "A2_tfr";
1602 let InputType = "reg";
1603 let isPseudo = 1;
1604 let isCodeGenOnly = 1;
1605 }
1606 def A2_tfrtnew : HInst<
1607 (outs IntRegs:$Rd32),
1608 (ins PredRegs:$Pu4, IntRegs:$Rs32),
1609 "if ($Pu4.new) $Rd32 = $Rs32",
1610 tc_442395f3, TypeALU32_2op>, PredNewRel, ImmRegRel {
1611 let isPredicated = 1;
1612 let hasNewValue = 1;
1613 let opNewValue = 0;
1614 let isPredicatedNew = 1;
1615 let BaseOpcode = "A2_tfr";
1616 let CextOpcode = "A2_tfr";
1617 let InputType = "reg";
1618 let isPseudo = 1;
1619 let isCodeGenOnly = 1;
1620 }
1621 def A2_vabsh : HInst<
1622 (outs DoubleRegs:$Rdd32),
1623 (ins DoubleRegs:$Rss32),
1624 "$Rdd32 = vabsh($Rss32)",
1625 tc_d61dfdc3, TypeS_2op>, Enc_b9c5fb {
1626 let Inst{13-5} = 0b000000100;
1627 let Inst{31-21} = 0b10000000010;
1628 let prefersSlot3 = 1;
1629 }
1630 def A2_vabshsat : HInst<
1631 (outs DoubleRegs:$Rdd32),
1632 (ins DoubleRegs:$Rss32),
1633 "$Rdd32 = vabsh($Rss32):sat",
1634 tc_d61dfdc3, TypeS_2op>, Enc_b9c5fb {
1635 let Inst{13-5} = 0b000000101;
1636 let Inst{31-21} = 0b10000000010;
1637 let prefersSlot3 = 1;
1638 let Defs = [USR_OVF];
1639 }
1640 def A2_vabsw : HInst<
1641 (outs DoubleRegs:$Rdd32),
1642 (ins DoubleRegs:$Rss32),
1643 "$Rdd32 = vabsw($Rss32)",
1644 tc_d61dfdc3, TypeS_2op>, Enc_b9c5fb {
1645 let Inst{13-5} = 0b000000110;
1646 let Inst{31-21} = 0b10000000010;
1647 let prefersSlot3 = 1;
1648 }
1649 def A2_vabswsat : HInst<
1650 (outs DoubleRegs:$Rdd32),
1651 (ins DoubleRegs:$Rss32),
1652 "$Rdd32 = vabsw($Rss32):sat",
1653 tc_d61dfdc3, TypeS_2op>, Enc_b9c5fb {
1654 let Inst{13-5} = 0b000000111;
1655 let Inst{31-21} = 0b10000000010;
1656 let prefersSlot3 = 1;
1657 let Defs = [USR_OVF];
1658 }
1659 def A2_vaddb_map : HInst<
1660 (outs DoubleRegs:$Rdd32),
1661 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1662 "$Rdd32 = vaddb($Rss32,$Rtt32)",
1663 tc_5da50c4b, TypeMAPPING> {
1664 let isPseudo = 1;
1665 let isCodeGenOnly = 1;
1666 }
1667 def A2_vaddh : HInst<
1668 (outs DoubleRegs:$Rdd32),
1669 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1670 "$Rdd32 = vaddh($Rss32,$Rtt32)",
1671 tc_5da50c4b, TypeALU64>, Enc_a56825 {
1672 let Inst{7-5} = 0b010;
1673 let Inst{13-13} = 0b0;
1674 let Inst{31-21} = 0b11010011000;
1675 }
1676 def A2_vaddhs : HInst<
1677 (outs DoubleRegs:$Rdd32),
1678 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1679 "$Rdd32 = vaddh($Rss32,$Rtt32):sat",
1680 tc_8a825db2, TypeALU64>, Enc_a56825 {
1681 let Inst{7-5} = 0b011;
1682 let Inst{13-13} = 0b0;
1683 let Inst{31-21} = 0b11010011000;
1684 let prefersSlot3 = 1;
1685 let Defs = [USR_OVF];
1686 }
1687 def A2_vaddub : HInst<
1688 (outs DoubleRegs:$Rdd32),
1689 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1690 "$Rdd32 = vaddub($Rss32,$Rtt32)",
1691 tc_5da50c4b, TypeALU64>, Enc_a56825 {
1692 let Inst{7-5} = 0b000;
1693 let Inst{13-13} = 0b0;
1694 let Inst{31-21} = 0b11010011000;
1695 }
1696 def A2_vaddubs : HInst<
1697 (outs DoubleRegs:$Rdd32),
1698 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1699 "$Rdd32 = vaddub($Rss32,$Rtt32):sat",
1700 tc_8a825db2, TypeALU64>, Enc_a56825 {
1701 let Inst{7-5} = 0b001;
1702 let Inst{13-13} = 0b0;
1703 let Inst{31-21} = 0b11010011000;
1704 let prefersSlot3 = 1;
1705 let Defs = [USR_OVF];
1706 }
1707 def A2_vadduhs : HInst<
1708 (outs DoubleRegs:$Rdd32),
1709 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1710 "$Rdd32 = vadduh($Rss32,$Rtt32):sat",
1711 tc_8a825db2, TypeALU64>, Enc_a56825 {
1712 let Inst{7-5} = 0b100;
1713 let Inst{13-13} = 0b0;
1714 let Inst{31-21} = 0b11010011000;
1715 let prefersSlot3 = 1;
1716 let Defs = [USR_OVF];
1717 }
1718 def A2_vaddw : HInst<
1719 (outs DoubleRegs:$Rdd32),
1720 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1721 "$Rdd32 = vaddw($Rss32,$Rtt32)",
1722 tc_5da50c4b, TypeALU64>, Enc_a56825 {
1723 let Inst{7-5} = 0b101;
1724 let Inst{13-13} = 0b0;
1725 let Inst{31-21} = 0b11010011000;
1726 }
1727 def A2_vaddws : HInst<
1728 (outs DoubleRegs:$Rdd32),
1729 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1730 "$Rdd32 = vaddw($Rss32,$Rtt32):sat",
1731 tc_8a825db2, TypeALU64>, Enc_a56825 {
1732 let Inst{7-5} = 0b110;
1733 let Inst{13-13} = 0b0;
1734 let Inst{31-21} = 0b11010011000;
1735 let prefersSlot3 = 1;
1736 let Defs = [USR_OVF];
1737 }
1738 def A2_vavgh : HInst<
1739 (outs DoubleRegs:$Rdd32),
1740 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1741 "$Rdd32 = vavgh($Rss32,$Rtt32)",
1742 tc_f098b237, TypeALU64>, Enc_a56825 {
1743 let Inst{7-5} = 0b010;
1744 let Inst{13-13} = 0b0;
1745 let Inst{31-21} = 0b11010011010;
1746 let prefersSlot3 = 1;
1747 }
1748 def A2_vavghcr : HInst<
1749 (outs DoubleRegs:$Rdd32),
1750 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1751 "$Rdd32 = vavgh($Rss32,$Rtt32):crnd",
1752 tc_0dfac0a7, TypeALU64>, Enc_a56825 {
1753 let Inst{7-5} = 0b100;
1754 let Inst{13-13} = 0b0;
1755 let Inst{31-21} = 0b11010011010;
1756 let prefersSlot3 = 1;
1757 }
1758 def A2_vavghr : HInst<
1759 (outs DoubleRegs:$Rdd32),
1760 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1761 "$Rdd32 = vavgh($Rss32,$Rtt32):rnd",
1762 tc_20131976, TypeALU64>, Enc_a56825 {
1763 let Inst{7-5} = 0b011;
1764 let Inst{13-13} = 0b0;
1765 let Inst{31-21} = 0b11010011010;
1766 let prefersSlot3 = 1;
1767 }
1768 def A2_vavgub : HInst<
1769 (outs DoubleRegs:$Rdd32),
1770 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1771 "$Rdd32 = vavgub($Rss32,$Rtt32)",
1772 tc_f098b237, TypeALU64>, Enc_a56825 {
1773 let Inst{7-5} = 0b000;
1774 let Inst{13-13} = 0b0;
1775 let Inst{31-21} = 0b11010011010;
1776 let prefersSlot3 = 1;
1777 }
1778 def A2_vavgubr : HInst<
1779 (outs DoubleRegs:$Rdd32),
1780 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1781 "$Rdd32 = vavgub($Rss32,$Rtt32):rnd",
1782 tc_20131976, TypeALU64>, Enc_a56825 {
1783 let Inst{7-5} = 0b001;
1784 let Inst{13-13} = 0b0;
1785 let Inst{31-21} = 0b11010011010;
1786 let prefersSlot3 = 1;
1787 }
1788 def A2_vavguh : HInst<
1789 (outs DoubleRegs:$Rdd32),
1790 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1791 "$Rdd32 = vavguh($Rss32,$Rtt32)",
1792 tc_f098b237, TypeALU64>, Enc_a56825 {
1793 let Inst{7-5} = 0b101;
1794 let Inst{13-13} = 0b0;
1795 let Inst{31-21} = 0b11010011010;
1796 let prefersSlot3 = 1;
1797 }
1798 def A2_vavguhr : HInst<
1799 (outs DoubleRegs:$Rdd32),
1800 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1801 "$Rdd32 = vavguh($Rss32,$Rtt32):rnd",
1802 tc_20131976, TypeALU64>, Enc_a56825 {
1803 let Inst{7-5} = 0b110;
1804 let Inst{13-13} = 0b0;
1805 let Inst{31-21} = 0b11010011010;
1806 let prefersSlot3 = 1;
1807 }
1808 def A2_vavguw : HInst<
1809 (outs DoubleRegs:$Rdd32),
1810 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1811 "$Rdd32 = vavguw($Rss32,$Rtt32)",
1812 tc_f098b237, TypeALU64>, Enc_a56825 {
1813 let Inst{7-5} = 0b011;
1814 let Inst{13-13} = 0b0;
1815 let Inst{31-21} = 0b11010011011;
1816 let prefersSlot3 = 1;
1817 }
1818 def A2_vavguwr : HInst<
1819 (outs DoubleRegs:$Rdd32),
1820 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1821 "$Rdd32 = vavguw($Rss32,$Rtt32):rnd",
1822 tc_20131976, TypeALU64>, Enc_a56825 {
1823 let Inst{7-5} = 0b100;
1824 let Inst{13-13} = 0b0;
1825 let Inst{31-21} = 0b11010011011;
1826 let prefersSlot3 = 1;
1827 }
1828 def A2_vavgw : HInst<
1829 (outs DoubleRegs:$Rdd32),
1830 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1831 "$Rdd32 = vavgw($Rss32,$Rtt32)",
1832 tc_f098b237, TypeALU64>, Enc_a56825 {
1833 let Inst{7-5} = 0b000;
1834 let Inst{13-13} = 0b0;
1835 let Inst{31-21} = 0b11010011011;
1836 let prefersSlot3 = 1;
1837 }
1838 def A2_vavgwcr : HInst<
1839 (outs DoubleRegs:$Rdd32),
1840 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1841 "$Rdd32 = vavgw($Rss32,$Rtt32):crnd",
1842 tc_0dfac0a7, TypeALU64>, Enc_a56825 {
1843 let Inst{7-5} = 0b010;
1844 let Inst{13-13} = 0b0;
1845 let Inst{31-21} = 0b11010011011;
1846 let prefersSlot3 = 1;
1847 }
1848 def A2_vavgwr : HInst<
1849 (outs DoubleRegs:$Rdd32),
1850 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1851 "$Rdd32 = vavgw($Rss32,$Rtt32):rnd",
1852 tc_20131976, TypeALU64>, Enc_a56825 {
1853 let Inst{7-5} = 0b001;
1854 let Inst{13-13} = 0b0;
1855 let Inst{31-21} = 0b11010011011;
1856 let prefersSlot3 = 1;
1857 }
1858 def A2_vcmpbeq : HInst<
1859 (outs PredRegs:$Pd4),
1860 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1861 "$Pd4 = vcmpb.eq($Rss32,$Rtt32)",
1862 tc_4a55d03c, TypeALU64>, Enc_fcf7a7 {
1863 let Inst{7-2} = 0b110000;
1864 let Inst{13-13} = 0b0;
1865 let Inst{31-21} = 0b11010010000;
1866 }
1867 def A2_vcmpbgtu : HInst<
1868 (outs PredRegs:$Pd4),
1869 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1870 "$Pd4 = vcmpb.gtu($Rss32,$Rtt32)",
1871 tc_4a55d03c, TypeALU64>, Enc_fcf7a7 {
1872 let Inst{7-2} = 0b111000;
1873 let Inst{13-13} = 0b0;
1874 let Inst{31-21} = 0b11010010000;
1875 }
1876 def A2_vcmpheq : HInst<
1877 (outs PredRegs:$Pd4),
1878 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1879 "$Pd4 = vcmph.eq($Rss32,$Rtt32)",
1880 tc_4a55d03c, TypeALU64>, Enc_fcf7a7 {
1881 let Inst{7-2} = 0b011000;
1882 let Inst{13-13} = 0b0;
1883 let Inst{31-21} = 0b11010010000;
1884 }
1885 def A2_vcmphgt : HInst<
1886 (outs PredRegs:$Pd4),
1887 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1888 "$Pd4 = vcmph.gt($Rss32,$Rtt32)",
1889 tc_4a55d03c, TypeALU64>, Enc_fcf7a7 {
1890 let Inst{7-2} = 0b100000;
1891 let Inst{13-13} = 0b0;
1892 let Inst{31-21} = 0b11010010000;
1893 }
1894 def A2_vcmphgtu : HInst<
1895 (outs PredRegs:$Pd4),
1896 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1897 "$Pd4 = vcmph.gtu($Rss32,$Rtt32)",
1898 tc_4a55d03c, TypeALU64>, Enc_fcf7a7 {
1899 let Inst{7-2} = 0b101000;
1900 let Inst{13-13} = 0b0;
1901 let Inst{31-21} = 0b11010010000;
1902 }
1903 def A2_vcmpweq : HInst<
1904 (outs PredRegs:$Pd4),
1905 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1906 "$Pd4 = vcmpw.eq($Rss32,$Rtt32)",
1907 tc_4a55d03c, TypeALU64>, Enc_fcf7a7 {
1908 let Inst{7-2} = 0b000000;
1909 let Inst{13-13} = 0b0;
1910 let Inst{31-21} = 0b11010010000;
1911 }
1912 def A2_vcmpwgt : HInst<
1913 (outs PredRegs:$Pd4),
1914 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1915 "$Pd4 = vcmpw.gt($Rss32,$Rtt32)",
1916 tc_4a55d03c, TypeALU64>, Enc_fcf7a7 {
1917 let Inst{7-2} = 0b001000;
1918 let Inst{13-13} = 0b0;
1919 let Inst{31-21} = 0b11010010000;
1920 }
1921 def A2_vcmpwgtu : HInst<
1922 (outs PredRegs:$Pd4),
1923 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1924 "$Pd4 = vcmpw.gtu($Rss32,$Rtt32)",
1925 tc_4a55d03c, TypeALU64>, Enc_fcf7a7 {
1926 let Inst{7-2} = 0b010000;
1927 let Inst{13-13} = 0b0;
1928 let Inst{31-21} = 0b11010010000;
1929 }
1930 def A2_vconj : HInst<
1931 (outs DoubleRegs:$Rdd32),
1932 (ins DoubleRegs:$Rss32),
1933 "$Rdd32 = vconj($Rss32):sat",
1934 tc_d61dfdc3, TypeS_2op>, Enc_b9c5fb {
1935 let Inst{13-5} = 0b000000111;
1936 let Inst{31-21} = 0b10000000100;
1937 let prefersSlot3 = 1;
1938 let Defs = [USR_OVF];
1939 }
1940 def A2_vmaxb : HInst<
1941 (outs DoubleRegs:$Rdd32),
1942 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
1943 "$Rdd32 = vmaxb($Rtt32,$Rss32)",
1944 tc_8a825db2, TypeALU64>, Enc_ea23e4 {
1945 let Inst{7-5} = 0b110;
1946 let Inst{13-13} = 0b0;
1947 let Inst{31-21} = 0b11010011110;
1948 let prefersSlot3 = 1;
1949 }
1950 def A2_vmaxh : HInst<
1951 (outs DoubleRegs:$Rdd32),
1952 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
1953 "$Rdd32 = vmaxh($Rtt32,$Rss32)",
1954 tc_8a825db2, TypeALU64>, Enc_ea23e4 {
1955 let Inst{7-5} = 0b001;
1956 let Inst{13-13} = 0b0;
1957 let Inst{31-21} = 0b11010011110;
1958 let prefersSlot3 = 1;
1959 }
1960 def A2_vmaxub : HInst<
1961 (outs DoubleRegs:$Rdd32),
1962 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
1963 "$Rdd32 = vmaxub($Rtt32,$Rss32)",
1964 tc_8a825db2, TypeALU64>, Enc_ea23e4 {
1965 let Inst{7-5} = 0b000;
1966 let Inst{13-13} = 0b0;
1967 let Inst{31-21} = 0b11010011110;
1968 let prefersSlot3 = 1;
1969 }
1970 def A2_vmaxuh : HInst<
1971 (outs DoubleRegs:$Rdd32),
1972 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
1973 "$Rdd32 = vmaxuh($Rtt32,$Rss32)",
1974 tc_8a825db2, TypeALU64>, Enc_ea23e4 {
1975 let Inst{7-5} = 0b010;
1976 let Inst{13-13} = 0b0;
1977 let Inst{31-21} = 0b11010011110;
1978 let prefersSlot3 = 1;
1979 }
1980 def A2_vmaxuw : HInst<
1981 (outs DoubleRegs:$Rdd32),
1982 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
1983 "$Rdd32 = vmaxuw($Rtt32,$Rss32)",
1984 tc_8a825db2, TypeALU64>, Enc_ea23e4 {
1985 let Inst{7-5} = 0b101;
1986 let Inst{13-13} = 0b0;
1987 let Inst{31-21} = 0b11010011101;
1988 let prefersSlot3 = 1;
1989 }
1990 def A2_vmaxw : HInst<
1991 (outs DoubleRegs:$Rdd32),
1992 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
1993 "$Rdd32 = vmaxw($Rtt32,$Rss32)",
1994 tc_8a825db2, TypeALU64>, Enc_ea23e4 {
1995 let Inst{7-5} = 0b011;
1996 let Inst{13-13} = 0b0;
1997 let Inst{31-21} = 0b11010011110;
1998 let prefersSlot3 = 1;
1999 }
2000 def A2_vminb : HInst<
2001 (outs DoubleRegs:$Rdd32),
2002 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2003 "$Rdd32 = vminb($Rtt32,$Rss32)",
2004 tc_8a825db2, TypeALU64>, Enc_ea23e4 {
2005 let Inst{7-5} = 0b111;
2006 let Inst{13-13} = 0b0;
2007 let Inst{31-21} = 0b11010011110;
2008 let prefersSlot3 = 1;
2009 }
2010 def A2_vminh : HInst<
2011 (outs DoubleRegs:$Rdd32),
2012 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2013 "$Rdd32 = vminh($Rtt32,$Rss32)",
2014 tc_8a825db2, TypeALU64>, Enc_ea23e4 {
2015 let Inst{7-5} = 0b001;
2016 let Inst{13-13} = 0b0;
2017 let Inst{31-21} = 0b11010011101;
2018 let prefersSlot3 = 1;
2019 }
2020 def A2_vminub : HInst<
2021 (outs DoubleRegs:$Rdd32),
2022 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2023 "$Rdd32 = vminub($Rtt32,$Rss32)",
2024 tc_8a825db2, TypeALU64>, Enc_ea23e4 {
2025 let Inst{7-5} = 0b000;
2026 let Inst{13-13} = 0b0;
2027 let Inst{31-21} = 0b11010011101;
2028 let prefersSlot3 = 1;
2029 }
2030 def A2_vminuh : HInst<
2031 (outs DoubleRegs:$Rdd32),
2032 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2033 "$Rdd32 = vminuh($Rtt32,$Rss32)",
2034 tc_8a825db2, TypeALU64>, Enc_ea23e4 {
2035 let Inst{7-5} = 0b010;
2036 let Inst{13-13} = 0b0;
2037 let Inst{31-21} = 0b11010011101;
2038 let prefersSlot3 = 1;
2039 }
2040 def A2_vminuw : HInst<
2041 (outs DoubleRegs:$Rdd32),
2042 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2043 "$Rdd32 = vminuw($Rtt32,$Rss32)",
2044 tc_8a825db2, TypeALU64>, Enc_ea23e4 {
2045 let Inst{7-5} = 0b100;
2046 let Inst{13-13} = 0b0;
2047 let Inst{31-21} = 0b11010011101;
2048 let prefersSlot3 = 1;
2049 }
2050 def A2_vminw : HInst<
2051 (outs DoubleRegs:$Rdd32),
2052 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2053 "$Rdd32 = vminw($Rtt32,$Rss32)",
2054 tc_8a825db2, TypeALU64>, Enc_ea23e4 {
2055 let Inst{7-5} = 0b011;
2056 let Inst{13-13} = 0b0;
2057 let Inst{31-21} = 0b11010011101;
2058 let prefersSlot3 = 1;
2059 }
2060 def A2_vnavgh : HInst<
2061 (outs DoubleRegs:$Rdd32),
2062 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2063 "$Rdd32 = vnavgh($Rtt32,$Rss32)",
2064 tc_f098b237, TypeALU64>, Enc_ea23e4 {
2065 let Inst{7-5} = 0b000;
2066 let Inst{13-13} = 0b0;
2067 let Inst{31-21} = 0b11010011100;
2068 let prefersSlot3 = 1;
2069 }
2070 def A2_vnavghcr : HInst<
2071 (outs DoubleRegs:$Rdd32),
2072 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2073 "$Rdd32 = vnavgh($Rtt32,$Rss32):crnd:sat",
2074 tc_0dfac0a7, TypeALU64>, Enc_ea23e4 {
2075 let Inst{7-5} = 0b010;
2076 let Inst{13-13} = 0b0;
2077 let Inst{31-21} = 0b11010011100;
2078 let prefersSlot3 = 1;
2079 let Defs = [USR_OVF];
2080 }
2081 def A2_vnavghr : HInst<
2082 (outs DoubleRegs:$Rdd32),
2083 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2084 "$Rdd32 = vnavgh($Rtt32,$Rss32):rnd:sat",
2085 tc_0dfac0a7, TypeALU64>, Enc_ea23e4 {
2086 let Inst{7-5} = 0b001;
2087 let Inst{13-13} = 0b0;
2088 let Inst{31-21} = 0b11010011100;
2089 let prefersSlot3 = 1;
2090 let Defs = [USR_OVF];
2091 }
2092 def A2_vnavgw : HInst<
2093 (outs DoubleRegs:$Rdd32),
2094 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2095 "$Rdd32 = vnavgw($Rtt32,$Rss32)",
2096 tc_f098b237, TypeALU64>, Enc_ea23e4 {
2097 let Inst{7-5} = 0b011;
2098 let Inst{13-13} = 0b0;
2099 let Inst{31-21} = 0b11010011100;
2100 let prefersSlot3 = 1;
2101 }
2102 def A2_vnavgwcr : HInst<
2103 (outs DoubleRegs:$Rdd32),
2104 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2105 "$Rdd32 = vnavgw($Rtt32,$Rss32):crnd:sat",
2106 tc_0dfac0a7, TypeALU64>, Enc_ea23e4 {
2107 let Inst{7-5} = 0b110;
2108 let Inst{13-13} = 0b0;
2109 let Inst{31-21} = 0b11010011100;
2110 let prefersSlot3 = 1;
2111 let Defs = [USR_OVF];
2112 }
2113 def A2_vnavgwr : HInst<
2114 (outs DoubleRegs:$Rdd32),
2115 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2116 "$Rdd32 = vnavgw($Rtt32,$Rss32):rnd:sat",
2117 tc_0dfac0a7, TypeALU64>, Enc_ea23e4 {
2118 let Inst{7-5} = 0b100;
2119 let Inst{13-13} = 0b0;
2120 let Inst{31-21} = 0b11010011100;
2121 let prefersSlot3 = 1;
2122 let Defs = [USR_OVF];
2123 }
2124 def A2_vraddub : HInst<
2125 (outs DoubleRegs:$Rdd32),
2126 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
2127 "$Rdd32 = vraddub($Rss32,$Rtt32)",
2128 tc_c21d7447, TypeM>, Enc_a56825 {
2129 let Inst{7-5} = 0b001;
2130 let Inst{13-13} = 0b0;
2131 let Inst{31-21} = 0b11101000010;
2132 let prefersSlot3 = 1;
2133 }
2134 def A2_vraddub_acc : HInst<
2135 (outs DoubleRegs:$Rxx32),
2136 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
2137 "$Rxx32 += vraddub($Rss32,$Rtt32)",
2138 tc_7f8ae742, TypeM>, Enc_88c16c {
2139 let Inst{7-5} = 0b001;
2140 let Inst{13-13} = 0b0;
2141 let Inst{31-21} = 0b11101010010;
2142 let prefersSlot3 = 1;
2143 let Constraints = "$Rxx32 = $Rxx32in";
2144 }
2145 def A2_vrsadub : HInst<
2146 (outs DoubleRegs:$Rdd32),
2147 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
2148 "$Rdd32 = vrsadub($Rss32,$Rtt32)",
2149 tc_c21d7447, TypeM>, Enc_a56825 {
2150 let Inst{7-5} = 0b010;
2151 let Inst{13-13} = 0b0;
2152 let Inst{31-21} = 0b11101000010;
2153 let prefersSlot3 = 1;
2154 }
2155 def A2_vrsadub_acc : HInst<
2156 (outs DoubleRegs:$Rxx32),
2157 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
2158 "$Rxx32 += vrsadub($Rss32,$Rtt32)",
2159 tc_7f8ae742, TypeM>, Enc_88c16c {
2160 let Inst{7-5} = 0b010;
2161 let Inst{13-13} = 0b0;
2162 let Inst{31-21} = 0b11101010010;
2163 let prefersSlot3 = 1;
2164 let Constraints = "$Rxx32 = $Rxx32in";
2165 }
2166 def A2_vsubb_map : HInst<
2167 (outs DoubleRegs:$Rdd32),
2168 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
2169 "$Rdd32 = vsubb($Rss32,$Rtt32)",
2170 tc_5da50c4b, TypeMAPPING> {
2171 let isPseudo = 1;
2172 let isCodeGenOnly = 1;
2173 }
2174 def A2_vsubh : HInst<
2175 (outs DoubleRegs:$Rdd32),
2176 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2177 "$Rdd32 = vsubh($Rtt32,$Rss32)",
2178 tc_5da50c4b, TypeALU64>, Enc_ea23e4 {
2179 let Inst{7-5} = 0b010;
2180 let Inst{13-13} = 0b0;
2181 let Inst{31-21} = 0b11010011001;
2182 }
2183 def A2_vsubhs : HInst<
2184 (outs DoubleRegs:$Rdd32),
2185 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2186 "$Rdd32 = vsubh($Rtt32,$Rss32):sat",
2187 tc_8a825db2, TypeALU64>, Enc_ea23e4 {
2188 let Inst{7-5} = 0b011;
2189 let Inst{13-13} = 0b0;
2190 let Inst{31-21} = 0b11010011001;
2191 let prefersSlot3 = 1;
2192 let Defs = [USR_OVF];
2193 }
2194 def A2_vsubub : HInst<
2195 (outs DoubleRegs:$Rdd32),
2196 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2197 "$Rdd32 = vsubub($Rtt32,$Rss32)",
2198 tc_5da50c4b, TypeALU64>, Enc_ea23e4 {
2199 let Inst{7-5} = 0b000;
2200 let Inst{13-13} = 0b0;
2201 let Inst{31-21} = 0b11010011001;
2202 }
2203 def A2_vsububs : HInst<
2204 (outs DoubleRegs:$Rdd32),
2205 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2206 "$Rdd32 = vsubub($Rtt32,$Rss32):sat",
2207 tc_8a825db2, TypeALU64>, Enc_ea23e4 {
2208 let Inst{7-5} = 0b001;
2209 let Inst{13-13} = 0b0;
2210 let Inst{31-21} = 0b11010011001;
2211 let prefersSlot3 = 1;
2212 let Defs = [USR_OVF];
2213 }
2214 def A2_vsubuhs : HInst<
2215 (outs DoubleRegs:$Rdd32),
2216 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2217 "$Rdd32 = vsubuh($Rtt32,$Rss32):sat",
2218 tc_8a825db2, TypeALU64>, Enc_ea23e4 {
2219 let Inst{7-5} = 0b100;
2220 let Inst{13-13} = 0b0;
2221 let Inst{31-21} = 0b11010011001;
2222 let prefersSlot3 = 1;
2223 let Defs = [USR_OVF];
2224 }
2225 def A2_vsubw : HInst<
2226 (outs DoubleRegs:$Rdd32),
2227 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2228 "$Rdd32 = vsubw($Rtt32,$Rss32)",
2229 tc_5da50c4b, TypeALU64>, Enc_ea23e4 {
2230 let Inst{7-5} = 0b101;
2231 let Inst{13-13} = 0b0;
2232 let Inst{31-21} = 0b11010011001;
2233 }
2234 def A2_vsubws : HInst<
2235 (outs DoubleRegs:$Rdd32),
2236 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2237 "$Rdd32 = vsubw($Rtt32,$Rss32):sat",
2238 tc_8a825db2, TypeALU64>, Enc_ea23e4 {
2239 let Inst{7-5} = 0b110;
2240 let Inst{13-13} = 0b0;
2241 let Inst{31-21} = 0b11010011001;
2242 let prefersSlot3 = 1;
2243 let Defs = [USR_OVF];
2244 }
2245 def A2_xor : HInst<
2246 (outs IntRegs:$Rd32),
2247 (ins IntRegs:$Rs32, IntRegs:$Rt32),
2248 "$Rd32 = xor($Rs32,$Rt32)",
2249 tc_713b66bf, TypeALU32_3op>, Enc_5ab2be, PredNewRel {
2250 let Inst{7-5} = 0b000;
2251 let Inst{13-13} = 0b0;
2252 let Inst{31-21} = 0b11110001011;
2253 let hasNewValue = 1;
2254 let opNewValue = 0;
2255 let BaseOpcode = "A2_xor";
2256 let InputType = "reg";
2257 let isCommutable = 1;
2258 let isPredicable = 1;
2259 }
2260 def A2_xorp : HInst<
2261 (outs DoubleRegs:$Rdd32),
2262 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
2263 "$Rdd32 = xor($Rss32,$Rtt32)",
2264 tc_5da50c4b, TypeALU64>, Enc_a56825 {
2265 let Inst{7-5} = 0b100;
2266 let Inst{13-13} = 0b0;
2267 let Inst{31-21} = 0b11010011111;
2268 let isCommutable = 1;
2269 }
2270 def A2_zxtb : HInst<
2271 (outs IntRegs:$Rd32),
2272 (ins IntRegs:$Rs32),
2273 "$Rd32 = zxtb($Rs32)",
2274 tc_713b66bf, TypeALU32_2op>, PredNewRel {
2275 let hasNewValue = 1;
2276 let opNewValue = 0;
2277 let BaseOpcode = "A2_zxtb";
2278 let isPredicable = 1;
2279 let isPseudo = 1;
2280 let isCodeGenOnly = 1;
2281 }
2282 def A2_zxth : HInst<
2283 (outs IntRegs:$Rd32),
2284 (ins IntRegs:$Rs32),
2285 "$Rd32 = zxth($Rs32)",
2286 tc_c57d9f39, TypeALU32_2op>, Enc_5e2823, PredNewRel {
2287 let Inst{13-5} = 0b000000000;
2288 let Inst{31-21} = 0b01110000110;
2289 let hasNewValue = 1;
2290 let opNewValue = 0;
2291 let BaseOpcode = "A2_zxth";
2292 let isPredicable = 1;
2293 }
2294 def A4_addp_c : HInst<
2295 (outs DoubleRegs:$Rdd32, PredRegs:$Px4),
2296 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32, PredRegs:$Px4in),
2297 "$Rdd32 = add($Rss32,$Rtt32,$Px4):carry",
2298 tc_1d41f8b7, TypeS_3op>, Enc_2b3f60 {
2299 let Inst{7-7} = 0b0;
2300 let Inst{13-13} = 0b0;
2301 let Inst{31-21} = 0b11000010110;
2302 let isPredicateLate = 1;
2303 let Constraints = "$Px4 = $Px4in";
2304 }
2305 def A4_andn : HInst<
2306 (outs IntRegs:$Rd32),
2307 (ins IntRegs:$Rt32, IntRegs:$Rs32),
2308 "$Rd32 = and($Rt32,~$Rs32)",
2309 tc_713b66bf, TypeALU32_3op>, Enc_bd6011 {
2310 let Inst{7-5} = 0b000;
2311 let Inst{13-13} = 0b0;
2312 let Inst{31-21} = 0b11110001100;
2313 let hasNewValue = 1;
2314 let opNewValue = 0;
2315 let InputType = "reg";
2316 }
2317 def A4_andnp : HInst<
2318 (outs DoubleRegs:$Rdd32),
2319 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2320 "$Rdd32 = and($Rtt32,~$Rss32)",
2321 tc_5da50c4b, TypeALU64>, Enc_ea23e4 {
2322 let Inst{7-5} = 0b001;
2323 let Inst{13-13} = 0b0;
2324 let Inst{31-21} = 0b11010011111;
2325 }
2326 def A4_bitsplit : HInst<
2327 (outs DoubleRegs:$Rdd32),
2328 (ins IntRegs:$Rs32, IntRegs:$Rt32),
2329 "$Rdd32 = bitsplit($Rs32,$Rt32)",
2330 tc_f34c1c21, TypeALU64>, Enc_be32a5 {
2331 let Inst{7-5} = 0b000;
2332 let Inst{13-13} = 0b0;
2333 let Inst{31-21} = 0b11010100001;
2334 let prefersSlot3 = 1;
2335 }
2336 def A4_bitspliti : HInst<
2337 (outs DoubleRegs:$Rdd32),
2338 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
2339 "$Rdd32 = bitsplit($Rs32,#$Ii)",
2340 tc_f34c1c21, TypeS_2op>, Enc_311abd {
2341 let Inst{7-5} = 0b100;
2342 let Inst{13-13} = 0b0;
2343 let Inst{31-21} = 0b10001000110;
2344 let prefersSlot3 = 1;
2345 }
2346 def A4_boundscheck : HInst<
2347 (outs PredRegs:$Pd4),
2348 (ins IntRegs:$Rs32, DoubleRegs:$Rtt32),
2349 "$Pd4 = boundscheck($Rs32,$Rtt32)",
2350 tc_4a55d03c, TypeALU64> {
2351 let isPseudo = 1;
2352 }
2353 def A4_boundscheck_hi : HInst<
2354 (outs PredRegs:$Pd4),
2355 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
2356 "$Pd4 = boundscheck($Rss32,$Rtt32):raw:hi",
2357 tc_4a55d03c, TypeALU64>, Enc_fcf7a7 {
2358 let Inst{7-2} = 0b101000;
2359 let Inst{13-13} = 0b1;
2360 let Inst{31-21} = 0b11010010000;
2361 }
2362 def A4_boundscheck_lo : HInst<
2363 (outs PredRegs:$Pd4),
2364 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
2365 "$Pd4 = boundscheck($Rss32,$Rtt32):raw:lo",
2366 tc_4a55d03c, TypeALU64>, Enc_fcf7a7 {
2367 let Inst{7-2} = 0b100000;
2368 let Inst{13-13} = 0b1;
2369 let Inst{31-21} = 0b11010010000;
2370 }
2371 def A4_cmpbeq : HInst<
2372 (outs PredRegs:$Pd4),
2373 (ins IntRegs:$Rs32, IntRegs:$Rt32),
2374 "$Pd4 = cmpb.eq($Rs32,$Rt32)",
2375 tc_4a55d03c, TypeS_3op>, Enc_c2b48e, ImmRegRel {
2376 let Inst{7-2} = 0b110000;
2377 let Inst{13-13} = 0b0;
2378 let Inst{31-21} = 0b11000111110;
2379 let CextOpcode = "A4_cmpbeq";
2380 let InputType = "reg";
2381 let isCommutable = 1;
2382 let isCompare = 1;
2383 }
2384 def A4_cmpbeqi : HInst<
2385 (outs PredRegs:$Pd4),
2386 (ins IntRegs:$Rs32, u8_0Imm:$Ii),
2387 "$Pd4 = cmpb.eq($Rs32,#$Ii)",
2388 tc_a1297125, TypeALU64>, Enc_08d755, ImmRegRel {
2389 let Inst{4-2} = 0b000;
2390 let Inst{13-13} = 0b0;
2391 let Inst{31-21} = 0b11011101000;
2392 let CextOpcode = "A4_cmpbeq";
2393 let InputType = "imm";
2394 let isCommutable = 1;
2395 let isCompare = 1;
2396 }
2397 def A4_cmpbgt : HInst<
2398 (outs PredRegs:$Pd4),
2399 (ins IntRegs:$Rs32, IntRegs:$Rt32),
2400 "$Pd4 = cmpb.gt($Rs32,$Rt32)",
2401 tc_4a55d03c, TypeS_3op>, Enc_c2b48e, ImmRegRel {
2402 let Inst{7-2} = 0b010000;
2403 let Inst{13-13} = 0b0;
2404 let Inst{31-21} = 0b11000111110;
2405 let CextOpcode = "A4_cmpbgt";
2406 let InputType = "reg";
2407 let isCompare = 1;
2408 }
2409 def A4_cmpbgti : HInst<
2410 (outs PredRegs:$Pd4),
2411 (ins IntRegs:$Rs32, s8_0Imm:$Ii),
2412 "$Pd4 = cmpb.gt($Rs32,#$Ii)",
2413 tc_a1297125, TypeALU64>, Enc_08d755, ImmRegRel {
2414 let Inst{4-2} = 0b000;
2415 let Inst{13-13} = 0b0;
2416 let Inst{31-21} = 0b11011101001;
2417 let CextOpcode = "A4_cmpbgt";
2418 let InputType = "imm";
2419 let isCompare = 1;
2420 }
2421 def A4_cmpbgtu : HInst<
2422 (outs PredRegs:$Pd4),
2423 (ins IntRegs:$Rs32, IntRegs:$Rt32),
2424 "$Pd4 = cmpb.gtu($Rs32,$Rt32)",
2425 tc_4a55d03c, TypeS_3op>, Enc_c2b48e, ImmRegRel {
2426 let Inst{7-2} = 0b111000;
2427 let Inst{13-13} = 0b0;
2428 let Inst{31-21} = 0b11000111110;
2429 let CextOpcode = "A4_cmpbgtu";
2430 let InputType = "reg";
2431 let isCompare = 1;
2432 }
2433 def A4_cmpbgtui : HInst<
2434 (outs PredRegs:$Pd4),
2435 (ins IntRegs:$Rs32, u32_0Imm:$Ii),
2436 "$Pd4 = cmpb.gtu($Rs32,#$Ii)",
2437 tc_a1297125, TypeALU64>, Enc_02553a, ImmRegRel {
2438 let Inst{4-2} = 0b000;
2439 let Inst{13-12} = 0b00;
2440 let Inst{31-21} = 0b11011101010;
2441 let CextOpcode = "A4_cmpbgtu";
2442 let InputType = "imm";
2443 let isCompare = 1;
2444 let isExtendable = 1;
2445 let opExtendable = 2;
2446 let isExtentSigned = 0;
2447 let opExtentBits = 7;
2448 let opExtentAlign = 0;
2449 }
2450 def A4_cmpheq : HInst<
2451 (outs PredRegs:$Pd4),
2452 (ins IntRegs:$Rs32, IntRegs:$Rt32),
2453 "$Pd4 = cmph.eq($Rs32,$Rt32)",
2454 tc_4a55d03c, TypeS_3op>, Enc_c2b48e, ImmRegRel {
2455 let Inst{7-2} = 0b011000;
2456 let Inst{13-13} = 0b0;
2457 let Inst{31-21} = 0b11000111110;
2458 let CextOpcode = "A4_cmpheq";
2459 let InputType = "reg";
2460 let isCommutable = 1;
2461 let isCompare = 1;
2462 }
2463 def A4_cmpheqi : HInst<
2464 (outs PredRegs:$Pd4),
2465 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
2466 "$Pd4 = cmph.eq($Rs32,#$Ii)",
2467 tc_a1297125, TypeALU64>, Enc_08d755, ImmRegRel {
2468 let Inst{4-2} = 0b010;
2469 let Inst{13-13} = 0b0;
2470 let Inst{31-21} = 0b11011101000;
2471 let CextOpcode = "A4_cmpheq";
2472 let InputType = "imm";
2473 let isCommutable = 1;
2474 let isCompare = 1;
2475 let isExtendable = 1;
2476 let opExtendable = 2;
2477 let isExtentSigned = 1;
2478 let opExtentBits = 8;
2479 let opExtentAlign = 0;
2480 }
2481 def A4_cmphgt : HInst<
2482 (outs PredRegs:$Pd4),
2483 (ins IntRegs:$Rs32, IntRegs:$Rt32),
2484 "$Pd4 = cmph.gt($Rs32,$Rt32)",
2485 tc_4a55d03c, TypeS_3op>, Enc_c2b48e, ImmRegRel {
2486 let Inst{7-2} = 0b100000;
2487 let Inst{13-13} = 0b0;
2488 let Inst{31-21} = 0b11000111110;
2489 let CextOpcode = "A4_cmphgt";
2490 let InputType = "reg";
2491 let isCompare = 1;
2492 }
2493 def A4_cmphgti : HInst<
2494 (outs PredRegs:$Pd4),
2495 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
2496 "$Pd4 = cmph.gt($Rs32,#$Ii)",
2497 tc_a1297125, TypeALU64>, Enc_08d755, ImmRegRel {
2498 let Inst{4-2} = 0b010;
2499 let Inst{13-13} = 0b0;
2500 let Inst{31-21} = 0b11011101001;
2501 let CextOpcode = "A4_cmphgt";
2502 let InputType = "imm";
2503 let isCompare = 1;
2504 let isExtendable = 1;
2505 let opExtendable = 2;
2506 let isExtentSigned = 1;
2507 let opExtentBits = 8;
2508 let opExtentAlign = 0;
2509 }
2510 def A4_cmphgtu : HInst<
2511 (outs PredRegs:$Pd4),
2512 (ins IntRegs:$Rs32, IntRegs:$Rt32),
2513 "$Pd4 = cmph.gtu($Rs32,$Rt32)",
2514 tc_4a55d03c, TypeS_3op>, Enc_c2b48e, ImmRegRel {
2515 let Inst{7-2} = 0b101000;
2516 let Inst{13-13} = 0b0;
2517 let Inst{31-21} = 0b11000111110;
2518 let CextOpcode = "A4_cmphgtu";
2519 let InputType = "reg";
2520 let isCompare = 1;
2521 }
2522 def A4_cmphgtui : HInst<
2523 (outs PredRegs:$Pd4),
2524 (ins IntRegs:$Rs32, u32_0Imm:$Ii),
2525 "$Pd4 = cmph.gtu($Rs32,#$Ii)",
2526 tc_a1297125, TypeALU64>, Enc_02553a, ImmRegRel {
2527 let Inst{4-2} = 0b010;
2528 let Inst{13-12} = 0b00;
2529 let Inst{31-21} = 0b11011101010;
2530 let CextOpcode = "A4_cmphgtu";
2531 let InputType = "imm";
2532 let isCompare = 1;
2533 let isExtendable = 1;
2534 let opExtendable = 2;
2535 let isExtentSigned = 0;
2536 let opExtentBits = 7;
2537 let opExtentAlign = 0;
2538 }
2539 def A4_combineii : HInst<
2540 (outs DoubleRegs:$Rdd32),
2541 (ins s8_0Imm:$Ii, u32_0Imm:$II),
2542 "$Rdd32 = combine(#$Ii,#$II)",
2543 tc_713b66bf, TypeALU32_2op>, Enc_f0cca7 {
2544 let Inst{31-21} = 0b01111100100;
2545 let isExtendable = 1;
2546 let opExtendable = 2;
2547 let isExtentSigned = 0;
2548 let opExtentBits = 6;
2549 let opExtentAlign = 0;
2550 }
2551 def A4_combineir : HInst<
2552 (outs DoubleRegs:$Rdd32),
2553 (ins s32_0Imm:$Ii, IntRegs:$Rs32),
2554 "$Rdd32 = combine(#$Ii,$Rs32)",
2555 tc_713b66bf, TypeALU32_2op>, Enc_9cdba7 {
2556 let Inst{13-13} = 0b1;
2557 let Inst{31-21} = 0b01110011001;
2558 let isExtendable = 1;
2559 let opExtendable = 1;
2560 let isExtentSigned = 1;
2561 let opExtentBits = 8;
2562 let opExtentAlign = 0;
2563 }
2564 def A4_combineri : HInst<
2565 (outs DoubleRegs:$Rdd32),
2566 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
2567 "$Rdd32 = combine($Rs32,#$Ii)",
2568 tc_713b66bf, TypeALU32_2op>, Enc_9cdba7 {
2569 let Inst{13-13} = 0b1;
2570 let Inst{31-21} = 0b01110011000;
2571 let isExtendable = 1;
2572 let opExtendable = 2;
2573 let isExtentSigned = 1;
2574 let opExtentBits = 8;
2575 let opExtentAlign = 0;
2576 }
2577 def A4_cround_ri : HInst<
2578 (outs IntRegs:$Rd32),
2579 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
2580 "$Rd32 = cround($Rs32,#$Ii)",
2581 tc_0dfac0a7, TypeS_2op>, Enc_a05677 {
2582 let Inst{7-5} = 0b000;
2583 let Inst{13-13} = 0b0;
2584 let Inst{31-21} = 0b10001100111;
2585 let hasNewValue = 1;
2586 let opNewValue = 0;
2587 let prefersSlot3 = 1;
2588 }
2589 def A4_cround_rr : HInst<
2590 (outs IntRegs:$Rd32),
2591 (ins IntRegs:$Rs32, IntRegs:$Rt32),
2592 "$Rd32 = cround($Rs32,$Rt32)",
2593 tc_0dfac0a7, TypeS_3op>, Enc_5ab2be {
2594 let Inst{7-5} = 0b000;
2595 let Inst{13-13} = 0b0;
2596 let Inst{31-21} = 0b11000110110;
2597 let hasNewValue = 1;
2598 let opNewValue = 0;
2599 let prefersSlot3 = 1;
2600 }
2601 def A4_ext : HInst<
2602 (outs),
2603 (ins u26_6Imm:$Ii),
2604 "immext(#$Ii)",
2605 tc_112d30d6, TypeEXTENDER>, Enc_2b518f {
2606 let Inst{31-28} = 0b0000;
2607 }
2608 def A4_modwrapu : HInst<
2609 (outs IntRegs:$Rd32),
2610 (ins IntRegs:$Rs32, IntRegs:$Rt32),
2611 "$Rd32 = modwrap($Rs32,$Rt32)",
2612 tc_8a825db2, TypeALU64>, Enc_5ab2be {
2613 let Inst{7-5} = 0b111;
2614 let Inst{13-13} = 0b0;
2615 let Inst{31-21} = 0b11010011111;
2616 let hasNewValue = 1;
2617 let opNewValue = 0;
2618 let prefersSlot3 = 1;
2619 }
2620 def A4_orn : HInst<
2621 (outs IntRegs:$Rd32),
2622 (ins IntRegs:$Rt32, IntRegs:$Rs32),
2623 "$Rd32 = or($Rt32,~$Rs32)",
2624 tc_713b66bf, TypeALU32_3op>, Enc_bd6011 {
2625 let Inst{7-5} = 0b000;
2626 let Inst{13-13} = 0b0;
2627 let Inst{31-21} = 0b11110001101;
2628 let hasNewValue = 1;
2629 let opNewValue = 0;
2630 let InputType = "reg";
2631 }
2632 def A4_ornp : HInst<
2633 (outs DoubleRegs:$Rdd32),
2634 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2635 "$Rdd32 = or($Rtt32,~$Rss32)",
2636 tc_5da50c4b, TypeALU64>, Enc_ea23e4 {
2637 let Inst{7-5} = 0b011;
2638 let Inst{13-13} = 0b0;
2639 let Inst{31-21} = 0b11010011111;
2640 }
2641 def A4_paslhf : HInst<
2642 (outs IntRegs:$Rd32),
2643 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2644 "if (!$Pu4) $Rd32 = aslh($Rs32)",
2645 tc_713b66bf, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2646 let Inst{7-5} = 0b000;
2647 let Inst{13-10} = 0b1010;
2648 let Inst{31-21} = 0b01110000000;
2649 let isPredicated = 1;
2650 let isPredicatedFalse = 1;
2651 let hasNewValue = 1;
2652 let opNewValue = 0;
2653 let BaseOpcode = "A2_aslh";
2654 }
2655 def A4_paslhfnew : HInst<
2656 (outs IntRegs:$Rd32),
2657 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2658 "if (!$Pu4.new) $Rd32 = aslh($Rs32)",
2659 tc_86173609, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2660 let Inst{7-5} = 0b000;
2661 let Inst{13-10} = 0b1011;
2662 let Inst{31-21} = 0b01110000000;
2663 let isPredicated = 1;
2664 let isPredicatedFalse = 1;
2665 let hasNewValue = 1;
2666 let opNewValue = 0;
2667 let isPredicatedNew = 1;
2668 let BaseOpcode = "A2_aslh";
2669 }
2670 def A4_paslht : HInst<
2671 (outs IntRegs:$Rd32),
2672 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2673 "if ($Pu4) $Rd32 = aslh($Rs32)",
2674 tc_713b66bf, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2675 let Inst{7-5} = 0b000;
2676 let Inst{13-10} = 0b1000;
2677 let Inst{31-21} = 0b01110000000;
2678 let isPredicated = 1;
2679 let hasNewValue = 1;
2680 let opNewValue = 0;
2681 let BaseOpcode = "A2_aslh";
2682 }
2683 def A4_paslhtnew : HInst<
2684 (outs IntRegs:$Rd32),
2685 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2686 "if ($Pu4.new) $Rd32 = aslh($Rs32)",
2687 tc_86173609, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2688 let Inst{7-5} = 0b000;
2689 let Inst{13-10} = 0b1001;
2690 let Inst{31-21} = 0b01110000000;
2691 let isPredicated = 1;
2692 let hasNewValue = 1;
2693 let opNewValue = 0;
2694 let isPredicatedNew = 1;
2695 let BaseOpcode = "A2_aslh";
2696 }
2697 def A4_pasrhf : HInst<
2698 (outs IntRegs:$Rd32),
2699 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2700 "if (!$Pu4) $Rd32 = asrh($Rs32)",
2701 tc_713b66bf, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2702 let Inst{7-5} = 0b000;
2703 let Inst{13-10} = 0b1010;
2704 let Inst{31-21} = 0b01110000001;
2705 let isPredicated = 1;
2706 let isPredicatedFalse = 1;
2707 let hasNewValue = 1;
2708 let opNewValue = 0;
2709 let BaseOpcode = "A2_asrh";
2710 }
2711 def A4_pasrhfnew : HInst<
2712 (outs IntRegs:$Rd32),
2713 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2714 "if (!$Pu4.new) $Rd32 = asrh($Rs32)",
2715 tc_86173609, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2716 let Inst{7-5} = 0b000;
2717 let Inst{13-10} = 0b1011;
2718 let Inst{31-21} = 0b01110000001;
2719 let isPredicated = 1;
2720 let isPredicatedFalse = 1;
2721 let hasNewValue = 1;
2722 let opNewValue = 0;
2723 let isPredicatedNew = 1;
2724 let BaseOpcode = "A2_asrh";
2725 }
2726 def A4_pasrht : HInst<
2727 (outs IntRegs:$Rd32),
2728 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2729 "if ($Pu4) $Rd32 = asrh($Rs32)",
2730 tc_713b66bf, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2731 let Inst{7-5} = 0b000;
2732 let Inst{13-10} = 0b1000;
2733 let Inst{31-21} = 0b01110000001;
2734 let isPredicated = 1;
2735 let hasNewValue = 1;
2736 let opNewValue = 0;
2737 let BaseOpcode = "A2_asrh";
2738 }
2739 def A4_pasrhtnew : HInst<
2740 (outs IntRegs:$Rd32),
2741 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2742 "if ($Pu4.new) $Rd32 = asrh($Rs32)",
2743 tc_86173609, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2744 let Inst{7-5} = 0b000;
2745 let Inst{13-10} = 0b1001;
2746 let Inst{31-21} = 0b01110000001;
2747 let isPredicated = 1;
2748 let hasNewValue = 1;
2749 let opNewValue = 0;
2750 let isPredicatedNew = 1;
2751 let BaseOpcode = "A2_asrh";
2752 }
2753 def A4_psxtbf : HInst<
2754 (outs IntRegs:$Rd32),
2755 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2756 "if (!$Pu4) $Rd32 = sxtb($Rs32)",
2757 tc_713b66bf, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2758 let Inst{7-5} = 0b000;
2759 let Inst{13-10} = 0b1010;
2760 let Inst{31-21} = 0b01110000101;
2761 let isPredicated = 1;
2762 let isPredicatedFalse = 1;
2763 let hasNewValue = 1;
2764 let opNewValue = 0;
2765 let BaseOpcode = "A2_sxtb";
2766 }
2767 def A4_psxtbfnew : HInst<
2768 (outs IntRegs:$Rd32),
2769 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2770 "if (!$Pu4.new) $Rd32 = sxtb($Rs32)",
2771 tc_86173609, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2772 let Inst{7-5} = 0b000;
2773 let Inst{13-10} = 0b1011;
2774 let Inst{31-21} = 0b01110000101;
2775 let isPredicated = 1;
2776 let isPredicatedFalse = 1;
2777 let hasNewValue = 1;
2778 let opNewValue = 0;
2779 let isPredicatedNew = 1;
2780 let BaseOpcode = "A2_sxtb";
2781 }
2782 def A4_psxtbt : HInst<
2783 (outs IntRegs:$Rd32),
2784 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2785 "if ($Pu4) $Rd32 = sxtb($Rs32)",
2786 tc_713b66bf, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2787 let Inst{7-5} = 0b000;
2788 let Inst{13-10} = 0b1000;
2789 let Inst{31-21} = 0b01110000101;
2790 let isPredicated = 1;
2791 let hasNewValue = 1;
2792 let opNewValue = 0;
2793 let BaseOpcode = "A2_sxtb";
2794 }
2795 def A4_psxtbtnew : HInst<
2796 (outs IntRegs:$Rd32),
2797 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2798 "if ($Pu4.new) $Rd32 = sxtb($Rs32)",
2799 tc_86173609, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2800 let Inst{7-5} = 0b000;
2801 let Inst{13-10} = 0b1001;
2802 let Inst{31-21} = 0b01110000101;
2803 let isPredicated = 1;
2804 let hasNewValue = 1;
2805 let opNewValue = 0;
2806 let isPredicatedNew = 1;
2807 let BaseOpcode = "A2_sxtb";
2808 }
2809 def A4_psxthf : HInst<
2810 (outs IntRegs:$Rd32),
2811 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2812 "if (!$Pu4) $Rd32 = sxth($Rs32)",
2813 tc_713b66bf, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2814 let Inst{7-5} = 0b000;
2815 let Inst{13-10} = 0b1010;
2816 let Inst{31-21} = 0b01110000111;
2817 let isPredicated = 1;
2818 let isPredicatedFalse = 1;
2819 let hasNewValue = 1;
2820 let opNewValue = 0;
2821 let BaseOpcode = "A2_sxth";
2822 }
2823 def A4_psxthfnew : HInst<
2824 (outs IntRegs:$Rd32),
2825 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2826 "if (!$Pu4.new) $Rd32 = sxth($Rs32)",
2827 tc_86173609, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2828 let Inst{7-5} = 0b000;
2829 let Inst{13-10} = 0b1011;
2830 let Inst{31-21} = 0b01110000111;
2831 let isPredicated = 1;
2832 let isPredicatedFalse = 1;
2833 let hasNewValue = 1;
2834 let opNewValue = 0;
2835 let isPredicatedNew = 1;
2836 let BaseOpcode = "A2_sxth";
2837 }
2838 def A4_psxtht : HInst<
2839 (outs IntRegs:$Rd32),
2840 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2841 "if ($Pu4) $Rd32 = sxth($Rs32)",
2842 tc_713b66bf, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2843 let Inst{7-5} = 0b000;
2844 let Inst{13-10} = 0b1000;
2845 let Inst{31-21} = 0b01110000111;
2846 let isPredicated = 1;
2847 let hasNewValue = 1;
2848 let opNewValue = 0;
2849 let BaseOpcode = "A2_sxth";
2850 }
2851 def A4_psxthtnew : HInst<
2852 (outs IntRegs:$Rd32),
2853 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2854 "if ($Pu4.new) $Rd32 = sxth($Rs32)",
2855 tc_86173609, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2856 let Inst{7-5} = 0b000;
2857 let Inst{13-10} = 0b1001;
2858 let Inst{31-21} = 0b01110000111;
2859 let isPredicated = 1;
2860 let hasNewValue = 1;
2861 let opNewValue = 0;
2862 let isPredicatedNew = 1;
2863 let BaseOpcode = "A2_sxth";
2864 }
2865 def A4_pzxtbf : HInst<
2866 (outs IntRegs:$Rd32),
2867 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2868 "if (!$Pu4) $Rd32 = zxtb($Rs32)",
2869 tc_713b66bf, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2870 let Inst{7-5} = 0b000;
2871 let Inst{13-10} = 0b1010;
2872 let Inst{31-21} = 0b01110000100;
2873 let isPredicated = 1;
2874 let isPredicatedFalse = 1;
2875 let hasNewValue = 1;
2876 let opNewValue = 0;
2877 let BaseOpcode = "A2_zxtb";
2878 }
2879 def A4_pzxtbfnew : HInst<
2880 (outs IntRegs:$Rd32),
2881 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2882 "if (!$Pu4.new) $Rd32 = zxtb($Rs32)",
2883 tc_86173609, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2884 let Inst{7-5} = 0b000;
2885 let Inst{13-10} = 0b1011;
2886 let Inst{31-21} = 0b01110000100;
2887 let isPredicated = 1;
2888 let isPredicatedFalse = 1;
2889 let hasNewValue = 1;
2890 let opNewValue = 0;
2891 let isPredicatedNew = 1;
2892 let BaseOpcode = "A2_zxtb";
2893 }
2894 def A4_pzxtbt : HInst<
2895 (outs IntRegs:$Rd32),
2896 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2897 "if ($Pu4) $Rd32 = zxtb($Rs32)",
2898 tc_713b66bf, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2899 let Inst{7-5} = 0b000;
2900 let Inst{13-10} = 0b1000;
2901 let Inst{31-21} = 0b01110000100;
2902 let isPredicated = 1;
2903 let hasNewValue = 1;
2904 let opNewValue = 0;
2905 let BaseOpcode = "A2_zxtb";
2906 }
2907 def A4_pzxtbtnew : HInst<
2908 (outs IntRegs:$Rd32),
2909 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2910 "if ($Pu4.new) $Rd32 = zxtb($Rs32)",
2911 tc_86173609, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2912 let Inst{7-5} = 0b000;
2913 let Inst{13-10} = 0b1001;
2914 let Inst{31-21} = 0b01110000100;
2915 let isPredicated = 1;
2916 let hasNewValue = 1;
2917 let opNewValue = 0;
2918 let isPredicatedNew = 1;
2919 let BaseOpcode = "A2_zxtb";
2920 }
2921 def A4_pzxthf : HInst<
2922 (outs IntRegs:$Rd32),
2923 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2924 "if (!$Pu4) $Rd32 = zxth($Rs32)",
2925 tc_713b66bf, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2926 let Inst{7-5} = 0b000;
2927 let Inst{13-10} = 0b1010;
2928 let Inst{31-21} = 0b01110000110;
2929 let isPredicated = 1;
2930 let isPredicatedFalse = 1;
2931 let hasNewValue = 1;
2932 let opNewValue = 0;
2933 let BaseOpcode = "A2_zxth";
2934 }
2935 def A4_pzxthfnew : HInst<
2936 (outs IntRegs:$Rd32),
2937 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2938 "if (!$Pu4.new) $Rd32 = zxth($Rs32)",
2939 tc_86173609, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2940 let Inst{7-5} = 0b000;
2941 let Inst{13-10} = 0b1011;
2942 let Inst{31-21} = 0b01110000110;
2943 let isPredicated = 1;
2944 let isPredicatedFalse = 1;
2945 let hasNewValue = 1;
2946 let opNewValue = 0;
2947 let isPredicatedNew = 1;
2948 let BaseOpcode = "A2_zxth";
2949 }
2950 def A4_pzxtht : HInst<
2951 (outs IntRegs:$Rd32),
2952 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2953 "if ($Pu4) $Rd32 = zxth($Rs32)",
2954 tc_713b66bf, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2955 let Inst{7-5} = 0b000;
2956 let Inst{13-10} = 0b1000;
2957 let Inst{31-21} = 0b01110000110;
2958 let isPredicated = 1;
2959 let hasNewValue = 1;
2960 let opNewValue = 0;
2961 let BaseOpcode = "A2_zxth";
2962 }
2963 def A4_pzxthtnew : HInst<
2964 (outs IntRegs:$Rd32),
2965 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2966 "if ($Pu4.new) $Rd32 = zxth($Rs32)",
2967 tc_86173609, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2968 let Inst{7-5} = 0b000;
2969 let Inst{13-10} = 0b1001;
2970 let Inst{31-21} = 0b01110000110;
2971 let isPredicated = 1;
2972 let hasNewValue = 1;
2973 let opNewValue = 0;
2974 let isPredicatedNew = 1;
2975 let BaseOpcode = "A2_zxth";
2976 }
2977 def A4_rcmpeq : HInst<
2978 (outs IntRegs:$Rd32),
2979 (ins IntRegs:$Rs32, IntRegs:$Rt32),
2980 "$Rd32 = cmp.eq($Rs32,$Rt32)",
2981 tc_713b66bf, TypeALU32_3op>, Enc_5ab2be, ImmRegRel {
2982 let Inst{7-5} = 0b000;
2983 let Inst{13-13} = 0b0;
2984 let Inst{31-21} = 0b11110011010;
2985 let hasNewValue = 1;
2986 let opNewValue = 0;
2987 let CextOpcode = "A4_rcmpeq";
2988 let InputType = "reg";
2989 let isCommutable = 1;
2990 }
2991 def A4_rcmpeqi : HInst<
2992 (outs IntRegs:$Rd32),
2993 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
2994 "$Rd32 = cmp.eq($Rs32,#$Ii)",
2995 tc_713b66bf, TypeALU32_2op>, Enc_b8c967, ImmRegRel {
2996 let Inst{13-13} = 0b1;
2997 let Inst{31-21} = 0b01110011010;
2998 let hasNewValue = 1;
2999 let opNewValue = 0;
3000 let CextOpcode = "A4_rcmpeqi";
3001 let InputType = "imm";
3002 let isExtendable = 1;
3003 let opExtendable = 2;
3004 let isExtentSigned = 1;
3005 let opExtentBits = 8;
3006 let opExtentAlign = 0;
3007 }
3008 def A4_rcmpneq : HInst<
3009 (outs IntRegs:$Rd32),
3010 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3011 "$Rd32 = !cmp.eq($Rs32,$Rt32)",
3012 tc_713b66bf, TypeALU32_3op>, Enc_5ab2be, ImmRegRel {
3013 let Inst{7-5} = 0b000;
3014 let Inst{13-13} = 0b0;
3015 let Inst{31-21} = 0b11110011011;
3016 let hasNewValue = 1;
3017 let opNewValue = 0;
3018 let CextOpcode = "A4_rcmpneq";
3019 let InputType = "reg";
3020 let isCommutable = 1;
3021 }
3022 def A4_rcmpneqi : HInst<
3023 (outs IntRegs:$Rd32),
3024 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
3025 "$Rd32 = !cmp.eq($Rs32,#$Ii)",
3026 tc_713b66bf, TypeALU32_2op>, Enc_b8c967, ImmRegRel {
3027 let Inst{13-13} = 0b1;
3028 let Inst{31-21} = 0b01110011011;
3029 let hasNewValue = 1;
3030 let opNewValue = 0;
3031 let CextOpcode = "A4_rcmpeqi";
3032 let InputType = "imm";
3033 let isExtendable = 1;
3034 let opExtendable = 2;
3035 let isExtentSigned = 1;
3036 let opExtentBits = 8;
3037 let opExtentAlign = 0;
3038 }
3039 def A4_round_ri : HInst<
3040 (outs IntRegs:$Rd32),
3041 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
3042 "$Rd32 = round($Rs32,#$Ii)",
3043 tc_0dfac0a7, TypeS_2op>, Enc_a05677 {
3044 let Inst{7-5} = 0b100;
3045 let Inst{13-13} = 0b0;
3046 let Inst{31-21} = 0b10001100111;
3047 let hasNewValue = 1;
3048 let opNewValue = 0;
3049 let prefersSlot3 = 1;
3050 }
3051 def A4_round_ri_sat : HInst<
3052 (outs IntRegs:$Rd32),
3053 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
3054 "$Rd32 = round($Rs32,#$Ii):sat",
3055 tc_0dfac0a7, TypeS_2op>, Enc_a05677 {
3056 let Inst{7-5} = 0b110;
3057 let Inst{13-13} = 0b0;
3058 let Inst{31-21} = 0b10001100111;
3059 let hasNewValue = 1;
3060 let opNewValue = 0;
3061 let prefersSlot3 = 1;
3062 let Defs = [USR_OVF];
3063 }
3064 def A4_round_rr : HInst<
3065 (outs IntRegs:$Rd32),
3066 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3067 "$Rd32 = round($Rs32,$Rt32)",
3068 tc_0dfac0a7, TypeS_3op>, Enc_5ab2be {
3069 let Inst{7-5} = 0b100;
3070 let Inst{13-13} = 0b0;
3071 let Inst{31-21} = 0b11000110110;
3072 let hasNewValue = 1;
3073 let opNewValue = 0;
3074 let prefersSlot3 = 1;
3075 }
3076 def A4_round_rr_sat : HInst<
3077 (outs IntRegs:$Rd32),
3078 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3079 "$Rd32 = round($Rs32,$Rt32):sat",
3080 tc_0dfac0a7, TypeS_3op>, Enc_5ab2be {
3081 let Inst{7-5} = 0b110;
3082 let Inst{13-13} = 0b0;
3083 let Inst{31-21} = 0b11000110110;
3084 let hasNewValue = 1;
3085 let opNewValue = 0;
3086 let prefersSlot3 = 1;
3087 let Defs = [USR_OVF];
3088 }
3089 def A4_subp_c : HInst<
3090 (outs DoubleRegs:$Rdd32, PredRegs:$Px4),
3091 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32, PredRegs:$Px4in),
3092 "$Rdd32 = sub($Rss32,$Rtt32,$Px4):carry",
3093 tc_1d41f8b7, TypeS_3op>, Enc_2b3f60 {
3094 let Inst{7-7} = 0b0;
3095 let Inst{13-13} = 0b0;
3096 let Inst{31-21} = 0b11000010111;
3097 let isPredicateLate = 1;
3098 let Constraints = "$Px4 = $Px4in";
3099 }
3100 def A4_tfrcpp : HInst<
3101 (outs DoubleRegs:$Rdd32),
3102 (ins CtrRegs64:$Css32),
3103 "$Rdd32 = $Css32",
3104 tc_7476d766, TypeCR>, Enc_667b39 {
3105 let Inst{13-5} = 0b000000000;
3106 let Inst{31-21} = 0b01101000000;
3107 }
3108 def A4_tfrpcp : HInst<
3109 (outs CtrRegs64:$Cdd32),
3110 (ins DoubleRegs:$Rss32),
3111 "$Cdd32 = $Rss32",
3112 tc_49fdfd4b, TypeCR>, Enc_0ed752 {
3113 let Inst{13-5} = 0b000000000;
3114 let Inst{31-21} = 0b01100011001;
3115 }
3116 def A4_tlbmatch : HInst<
3117 (outs PredRegs:$Pd4),
3118 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
3119 "$Pd4 = tlbmatch($Rss32,$Rt32)",
3120 tc_d68dca5c, TypeALU64>, Enc_03833b {
3121 let Inst{7-2} = 0b011000;
3122 let Inst{13-13} = 0b1;
3123 let Inst{31-21} = 0b11010010000;
3124 let isPredicateLate = 1;
3125 }
3126 def A4_vcmpbeq_any : HInst<
3127 (outs PredRegs:$Pd4),
3128 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
3129 "$Pd4 = any8(vcmpb.eq($Rss32,$Rtt32))",
3130 tc_4a55d03c, TypeALU64>, Enc_fcf7a7 {
3131 let Inst{7-2} = 0b000000;
3132 let Inst{13-13} = 0b1;
3133 let Inst{31-21} = 0b11010010000;
3134 }
3135 def A4_vcmpbeqi : HInst<
3136 (outs PredRegs:$Pd4),
3137 (ins DoubleRegs:$Rss32, u8_0Imm:$Ii),
3138 "$Pd4 = vcmpb.eq($Rss32,#$Ii)",
3139 tc_a1297125, TypeALU64>, Enc_0d8adb {
3140 let Inst{4-2} = 0b000;
3141 let Inst{13-13} = 0b0;
3142 let Inst{31-21} = 0b11011100000;
3143 }
3144 def A4_vcmpbgt : HInst<
3145 (outs PredRegs:$Pd4),
3146 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
3147 "$Pd4 = vcmpb.gt($Rss32,$Rtt32)",
3148 tc_4a55d03c, TypeALU64>, Enc_fcf7a7 {
3149 let Inst{7-2} = 0b010000;
3150 let Inst{13-13} = 0b1;
3151 let Inst{31-21} = 0b11010010000;
3152 }
3153 def A4_vcmpbgti : HInst<
3154 (outs PredRegs:$Pd4),
3155 (ins DoubleRegs:$Rss32, s8_0Imm:$Ii),
3156 "$Pd4 = vcmpb.gt($Rss32,#$Ii)",
3157 tc_a1297125, TypeALU64>, Enc_0d8adb {
3158 let Inst{4-2} = 0b000;
3159 let Inst{13-13} = 0b0;
3160 let Inst{31-21} = 0b11011100001;
3161 }
3162 def A4_vcmpbgtui : HInst<
3163 (outs PredRegs:$Pd4),
3164 (ins DoubleRegs:$Rss32, u7_0Imm:$Ii),
3165 "$Pd4 = vcmpb.gtu($Rss32,#$Ii)",
3166 tc_a1297125, TypeALU64>, Enc_3680c2 {
3167 let Inst{4-2} = 0b000;
3168 let Inst{13-12} = 0b00;
3169 let Inst{31-21} = 0b11011100010;
3170 }
3171 def A4_vcmpheqi : HInst<
3172 (outs PredRegs:$Pd4),
3173 (ins DoubleRegs:$Rss32, s8_0Imm:$Ii),
3174 "$Pd4 = vcmph.eq($Rss32,#$Ii)",
3175 tc_a1297125, TypeALU64>, Enc_0d8adb {
3176 let Inst{4-2} = 0b010;
3177 let Inst{13-13} = 0b0;
3178 let Inst{31-21} = 0b11011100000;
3179 }
3180 def A4_vcmphgti : HInst<
3181 (outs PredRegs:$Pd4),
3182 (ins DoubleRegs:$Rss32, s8_0Imm:$Ii),
3183 "$Pd4 = vcmph.gt($Rss32,#$Ii)",
3184 tc_a1297125, TypeALU64>, Enc_0d8adb {
3185 let Inst{4-2} = 0b010;
3186 let Inst{13-13} = 0b0;
3187 let Inst{31-21} = 0b11011100001;
3188 }
3189 def A4_vcmphgtui : HInst<
3190 (outs PredRegs:$Pd4),
3191 (ins DoubleRegs:$Rss32, u7_0Imm:$Ii),
3192 "$Pd4 = vcmph.gtu($Rss32,#$Ii)",
3193 tc_a1297125, TypeALU64>, Enc_3680c2 {
3194 let Inst{4-2} = 0b010;
3195 let Inst{13-12} = 0b00;
3196 let Inst{31-21} = 0b11011100010;
3197 }
3198 def A4_vcmpweqi : HInst<
3199 (outs PredRegs:$Pd4),
3200 (ins DoubleRegs:$Rss32, s8_0Imm:$Ii),
3201 "$Pd4 = vcmpw.eq($Rss32,#$Ii)",
3202 tc_a1297125, TypeALU64>, Enc_0d8adb {
3203 let Inst{4-2} = 0b100;
3204 let Inst{13-13} = 0b0;
3205 let Inst{31-21} = 0b11011100000;
3206 }
3207 def A4_vcmpwgti : HInst<
3208 (outs PredRegs:$Pd4),
3209 (ins DoubleRegs:$Rss32, s8_0Imm:$Ii),
3210 "$Pd4 = vcmpw.gt($Rss32,#$Ii)",
3211 tc_a1297125, TypeALU64>, Enc_0d8adb {
3212 let Inst{4-2} = 0b100;
3213 let Inst{13-13} = 0b0;
3214 let Inst{31-21} = 0b11011100001;
3215 }
3216 def A4_vcmpwgtui : HInst<
3217 (outs PredRegs:$Pd4),
3218 (ins DoubleRegs:$Rss32, u7_0Imm:$Ii),
3219 "$Pd4 = vcmpw.gtu($Rss32,#$Ii)",
3220 tc_a1297125, TypeALU64>, Enc_3680c2 {
3221 let Inst{4-2} = 0b100;
3222 let Inst{13-12} = 0b00;
3223 let Inst{31-21} = 0b11011100010;
3224 }
3225 def A4_vrmaxh : HInst<
3226 (outs DoubleRegs:$Rxx32),
3227 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Ru32),
3228 "$Rxx32 = vrmaxh($Rss32,$Ru32)",
3229 tc_788b1d09, TypeS_3op>, Enc_412ff0 {
3230 let Inst{7-5} = 0b001;
3231 let Inst{13-13} = 0b0;
3232 let Inst{31-21} = 0b11001011001;
3233 let prefersSlot3 = 1;
3234 let Constraints = "$Rxx32 = $Rxx32in";
3235 }
3236 def A4_vrmaxuh : HInst<
3237 (outs DoubleRegs:$Rxx32),
3238 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Ru32),
3239 "$Rxx32 = vrmaxuh($Rss32,$Ru32)",
3240 tc_788b1d09, TypeS_3op>, Enc_412ff0 {
3241 let Inst{7-5} = 0b001;
3242 let Inst{13-13} = 0b1;
3243 let Inst{31-21} = 0b11001011001;
3244 let prefersSlot3 = 1;
3245 let Constraints = "$Rxx32 = $Rxx32in";
3246 }
3247 def A4_vrmaxuw : HInst<
3248 (outs DoubleRegs:$Rxx32),
3249 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Ru32),
3250 "$Rxx32 = vrmaxuw($Rss32,$Ru32)",
3251 tc_788b1d09, TypeS_3op>, Enc_412ff0 {
3252 let Inst{7-5} = 0b010;
3253 let Inst{13-13} = 0b1;
3254 let Inst{31-21} = 0b11001011001;
3255 let prefersSlot3 = 1;
3256 let Constraints = "$Rxx32 = $Rxx32in";
3257 }
3258 def A4_vrmaxw : HInst<
3259 (outs DoubleRegs:$Rxx32),
3260 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Ru32),
3261 "$Rxx32 = vrmaxw($Rss32,$Ru32)",
3262 tc_788b1d09, TypeS_3op>, Enc_412ff0 {
3263 let Inst{7-5} = 0b010;
3264 let Inst{13-13} = 0b0;
3265 let Inst{31-21} = 0b11001011001;
3266 let prefersSlot3 = 1;
3267 let Constraints = "$Rxx32 = $Rxx32in";
3268 }
3269 def A4_vrminh : HInst<
3270 (outs DoubleRegs:$Rxx32),
3271 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Ru32),
3272 "$Rxx32 = vrminh($Rss32,$Ru32)",
3273 tc_788b1d09, TypeS_3op>, Enc_412ff0 {
3274 let Inst{7-5} = 0b101;
3275 let Inst{13-13} = 0b0;
3276 let Inst{31-21} = 0b11001011001;
3277 let prefersSlot3 = 1;
3278 let Constraints = "$Rxx32 = $Rxx32in";
3279 }
3280 def A4_vrminuh : HInst<
3281 (outs DoubleRegs:$Rxx32),
3282 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Ru32),
3283 "$Rxx32 = vrminuh($Rss32,$Ru32)",
3284 tc_788b1d09, TypeS_3op>, Enc_412ff0 {
3285 let Inst{7-5} = 0b101;
3286 let Inst{13-13} = 0b1;
3287 let Inst{31-21} = 0b11001011001;
3288 let prefersSlot3 = 1;
3289 let Constraints = "$Rxx32 = $Rxx32in";
3290 }
3291 def A4_vrminuw : HInst<
3292 (outs DoubleRegs:$Rxx32),
3293 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Ru32),
3294 "$Rxx32 = vrminuw($Rss32,$Ru32)",
3295 tc_788b1d09, TypeS_3op>, Enc_412ff0 {
3296 let Inst{7-5} = 0b110;
3297 let Inst{13-13} = 0b1;
3298 let Inst{31-21} = 0b11001011001;
3299 let prefersSlot3 = 1;
3300 let Constraints = "$Rxx32 = $Rxx32in";
3301 }
3302 def A4_vrminw : HInst<
3303 (outs DoubleRegs:$Rxx32),
3304 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Ru32),
3305 "$Rxx32 = vrminw($Rss32,$Ru32)",
3306 tc_788b1d09, TypeS_3op>, Enc_412ff0 {
3307 let Inst{7-5} = 0b110;
3308 let Inst{13-13} = 0b0;
3309 let Inst{31-21} = 0b11001011001;
3310 let prefersSlot3 = 1;
3311 let Constraints = "$Rxx32 = $Rxx32in";
3312 }
3313 def A5_ACS : HInst<
3314 (outs DoubleRegs:$Rxx32, PredRegs:$Pe4),
3315 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
3316 "$Rxx32,$Pe4 = vacsh($Rss32,$Rtt32)",
3317 tc_38e0bae9, TypeM>, Enc_831a7d, Requires<[HasV55]> {
3318 let Inst{7-7} = 0b0;
3319 let Inst{13-13} = 0b0;
3320 let Inst{31-21} = 0b11101010101;
3321 let isPredicateLate = 1;
3322 let prefersSlot3 = 1;
3323 let Defs = [USR_OVF];
3324 let Constraints = "$Rxx32 = $Rxx32in";
3325 }
3326 def A5_vaddhubs : HInst<
3327 (outs IntRegs:$Rd32),
3328 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
3329 "$Rd32 = vaddhub($Rss32,$Rtt32):sat",
3330 tc_0dfac0a7, TypeS_3op>, Enc_d2216a {
3331 let Inst{7-5} = 0b001;
3332 let Inst{13-13} = 0b0;
3333 let Inst{31-21} = 0b11000001010;
3334 let hasNewValue = 1;
3335 let opNewValue = 0;
3336 let prefersSlot3 = 1;
3337 let Defs = [USR_OVF];
3338 }
3339 def A6_vcmpbeq_notany : HInst<
3340 (outs PredRegs:$Pd4),
3341 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
3342 "$Pd4 = !any8(vcmpb.eq($Rss32,$Rtt32))",
3343 tc_407e96f9, TypeALU64>, Enc_fcf7a7, Requires<[HasV65]> {
3344 let Inst{7-2} = 0b001000;
3345 let Inst{13-13} = 0b1;
3346 let Inst{31-21} = 0b11010010000;
3347 }
3348 def A6_vminub_RdP : HInst<
3349 (outs DoubleRegs:$Rdd32, PredRegs:$Pe4),
3350 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
3351 "$Rdd32,$Pe4 = vminub($Rtt32,$Rss32)",
3352 tc_7401744f, TypeM>, Enc_d2c7f1, Requires<[HasV62]> {
3353 let Inst{7-7} = 0b0;
3354 let Inst{13-13} = 0b0;
3355 let Inst{31-21} = 0b11101010111;
3356 let isPredicateLate = 1;
3357 let prefersSlot3 = 1;
3358 }
3359 def A7_clip : HInst<
3360 (outs IntRegs:$Rd32),
3361 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
3362 "$Rd32 = clip($Rs32,#$Ii)",
3363 tc_407e96f9, TypeS_2op>, Enc_a05677, Requires<[HasV67,UseAudio]> {
3364 let Inst{7-5} = 0b101;
3365 let Inst{13-13} = 0b0;
3366 let Inst{31-21} = 0b10001000110;
3367 let hasNewValue = 1;
3368 let opNewValue = 0;
3369 }
3370 def A7_croundd_ri : HInst<
3371 (outs DoubleRegs:$Rdd32),
3372 (ins DoubleRegs:$Rss32, u6_0Imm:$Ii),
3373 "$Rdd32 = cround($Rss32,#$Ii)",
3374 tc_9b3c0462, TypeS_2op>, Enc_5eac98, Requires<[HasV67,UseAudio]> {
3375 let Inst{7-5} = 0b010;
3376 let Inst{31-21} = 0b10001100111;
3377 let prefersSlot3 = 1;
3378 }
3379 def A7_croundd_rr : HInst<
3380 (outs DoubleRegs:$Rdd32),
3381 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
3382 "$Rdd32 = cround($Rss32,$Rt32)",
3383 tc_9b3c0462, TypeS_3op>, Enc_927852, Requires<[HasV67,UseAudio]> {
3384 let Inst{7-5} = 0b010;
3385 let Inst{13-13} = 0b0;
3386 let Inst{31-21} = 0b11000110110;
3387 let prefersSlot3 = 1;
3388 }
3389 def A7_vclip : HInst<
3390 (outs DoubleRegs:$Rdd32),
3391 (ins DoubleRegs:$Rss32, u5_0Imm:$Ii),
3392 "$Rdd32 = vclip($Rss32,#$Ii)",
3393 tc_407e96f9, TypeS_2op>, Enc_7e5a82, Requires<[HasV67,UseAudio]> {
3394 let Inst{7-5} = 0b110;
3395 let Inst{13-13} = 0b0;
3396 let Inst{31-21} = 0b10001000110;
3397 }
3398 def C2_all8 : HInst<
3399 (outs PredRegs:$Pd4),
3400 (ins PredRegs:$Ps4),
3401 "$Pd4 = all8($Ps4)",
3402 tc_151bf368, TypeCR>, Enc_65d691 {
3403 let Inst{13-2} = 0b000000000000;
3404 let Inst{31-18} = 0b01101011101000;
3405 }
3406 def C2_and : HInst<
3407 (outs PredRegs:$Pd4),
3408 (ins PredRegs:$Pt4, PredRegs:$Ps4),
3409 "$Pd4 = and($Pt4,$Ps4)",
3410 tc_651cbe02, TypeCR>, Enc_454a26 {
3411 let Inst{7-2} = 0b000000;
3412 let Inst{13-10} = 0b0000;
3413 let Inst{31-18} = 0b01101011000000;
3414 }
3415 def C2_andn : HInst<
3416 (outs PredRegs:$Pd4),
3417 (ins PredRegs:$Pt4, PredRegs:$Ps4),
3418 "$Pd4 = and($Pt4,!$Ps4)",
3419 tc_651cbe02, TypeCR>, Enc_454a26 {
3420 let Inst{7-2} = 0b000000;
3421 let Inst{13-10} = 0b0000;
3422 let Inst{31-18} = 0b01101011011000;
3423 }
3424 def C2_any8 : HInst<
3425 (outs PredRegs:$Pd4),
3426 (ins PredRegs:$Ps4),
3427 "$Pd4 = any8($Ps4)",
3428 tc_151bf368, TypeCR>, Enc_65d691 {
3429 let Inst{13-2} = 0b000000000000;
3430 let Inst{31-18} = 0b01101011100000;
3431 }
3432 def C2_bitsclr : HInst<
3433 (outs PredRegs:$Pd4),
3434 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3435 "$Pd4 = bitsclr($Rs32,$Rt32)",
3436 tc_4a55d03c, TypeS_3op>, Enc_c2b48e {
3437 let Inst{7-2} = 0b000000;
3438 let Inst{13-13} = 0b0;
3439 let Inst{31-21} = 0b11000111100;
3440 }
3441 def C2_bitsclri : HInst<
3442 (outs PredRegs:$Pd4),
3443 (ins IntRegs:$Rs32, u6_0Imm:$Ii),
3444 "$Pd4 = bitsclr($Rs32,#$Ii)",
3445 tc_a1297125, TypeS_2op>, Enc_5d6c34 {
3446 let Inst{7-2} = 0b000000;
3447 let Inst{31-21} = 0b10000101100;
3448 }
3449 def C2_bitsset : HInst<
3450 (outs PredRegs:$Pd4),
3451 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3452 "$Pd4 = bitsset($Rs32,$Rt32)",
3453 tc_4a55d03c, TypeS_3op>, Enc_c2b48e {
3454 let Inst{7-2} = 0b000000;
3455 let Inst{13-13} = 0b0;
3456 let Inst{31-21} = 0b11000111010;
3457 }
3458 def C2_ccombinewf : HInst<
3459 (outs DoubleRegs:$Rdd32),
3460 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
3461 "if (!$Pu4) $Rdd32 = combine($Rs32,$Rt32)",
3462 tc_1c2c7a4a, TypeALU32_3op>, Enc_cb4b4e, PredNewRel {
3463 let Inst{7-7} = 0b1;
3464 let Inst{13-13} = 0b0;
3465 let Inst{31-21} = 0b11111101000;
3466 let isPredicated = 1;
3467 let isPredicatedFalse = 1;
3468 let BaseOpcode = "A2_combinew";
3469 }
3470 def C2_ccombinewnewf : HInst<
3471 (outs DoubleRegs:$Rdd32),
3472 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
3473 "if (!$Pu4.new) $Rdd32 = combine($Rs32,$Rt32)",
3474 tc_442395f3, TypeALU32_3op>, Enc_cb4b4e, PredNewRel {
3475 let Inst{7-7} = 0b1;
3476 let Inst{13-13} = 0b1;
3477 let Inst{31-21} = 0b11111101000;
3478 let isPredicated = 1;
3479 let isPredicatedFalse = 1;
3480 let isPredicatedNew = 1;
3481 let BaseOpcode = "A2_combinew";
3482 }
3483 def C2_ccombinewnewt : HInst<
3484 (outs DoubleRegs:$Rdd32),
3485 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
3486 "if ($Pu4.new) $Rdd32 = combine($Rs32,$Rt32)",
3487 tc_442395f3, TypeALU32_3op>, Enc_cb4b4e, PredNewRel {
3488 let Inst{7-7} = 0b0;
3489 let Inst{13-13} = 0b1;
3490 let Inst{31-21} = 0b11111101000;
3491 let isPredicated = 1;
3492 let isPredicatedNew = 1;
3493 let BaseOpcode = "A2_combinew";
3494 }
3495 def C2_ccombinewt : HInst<
3496 (outs DoubleRegs:$Rdd32),
3497 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
3498 "if ($Pu4) $Rdd32 = combine($Rs32,$Rt32)",
3499 tc_1c2c7a4a, TypeALU32_3op>, Enc_cb4b4e, PredNewRel {
3500 let Inst{7-7} = 0b0;
3501 let Inst{13-13} = 0b0;
3502 let Inst{31-21} = 0b11111101000;
3503 let isPredicated = 1;
3504 let BaseOpcode = "A2_combinew";
3505 }
3506 def C2_cmoveif : HInst<
3507 (outs IntRegs:$Rd32),
3508 (ins PredRegs:$Pu4, s32_0Imm:$Ii),
3509 "if (!$Pu4) $Rd32 = #$Ii",
3510 tc_713b66bf, TypeALU32_2op>, Enc_cda00a, PredNewRel, ImmRegRel {
3511 let Inst{13-13} = 0b0;
3512 let Inst{20-20} = 0b0;
3513 let Inst{31-23} = 0b011111101;
3514 let isPredicated = 1;
3515 let isPredicatedFalse = 1;
3516 let hasNewValue = 1;
3517 let opNewValue = 0;
3518 let BaseOpcode = "A2_tfrsi";
3519 let CextOpcode = "A2_tfr";
3520 let InputType = "imm";
3521 let isMoveImm = 1;
3522 let isExtendable = 1;
3523 let opExtendable = 2;
3524 let isExtentSigned = 1;
3525 let opExtentBits = 12;
3526 let opExtentAlign = 0;
3527 }
3528 def C2_cmoveit : HInst<
3529 (outs IntRegs:$Rd32),
3530 (ins PredRegs:$Pu4, s32_0Imm:$Ii),
3531 "if ($Pu4) $Rd32 = #$Ii",
3532 tc_713b66bf, TypeALU32_2op>, Enc_cda00a, PredNewRel, ImmRegRel {
3533 let Inst{13-13} = 0b0;
3534 let Inst{20-20} = 0b0;
3535 let Inst{31-23} = 0b011111100;
3536 let isPredicated = 1;
3537 let hasNewValue = 1;
3538 let opNewValue = 0;
3539 let BaseOpcode = "A2_tfrsi";
3540 let CextOpcode = "A2_tfr";
3541 let InputType = "imm";
3542 let isMoveImm = 1;
3543 let isExtendable = 1;
3544 let opExtendable = 2;
3545 let isExtentSigned = 1;
3546 let opExtentBits = 12;
3547 let opExtentAlign = 0;
3548 }
3549 def C2_cmovenewif : HInst<
3550 (outs IntRegs:$Rd32),
3551 (ins PredRegs:$Pu4, s32_0Imm:$Ii),
3552 "if (!$Pu4.new) $Rd32 = #$Ii",
3553 tc_86173609, TypeALU32_2op>, Enc_cda00a, PredNewRel, ImmRegRel {
3554 let Inst{13-13} = 0b1;
3555 let Inst{20-20} = 0b0;
3556 let Inst{31-23} = 0b011111101;
3557 let isPredicated = 1;
3558 let isPredicatedFalse = 1;
3559 let hasNewValue = 1;
3560 let opNewValue = 0;
3561 let isPredicatedNew = 1;
3562 let BaseOpcode = "A2_tfrsi";
3563 let CextOpcode = "A2_tfr";
3564 let InputType = "imm";
3565 let isMoveImm = 1;
3566 let isExtendable = 1;
3567 let opExtendable = 2;
3568 let isExtentSigned = 1;
3569 let opExtentBits = 12;
3570 let opExtentAlign = 0;
3571 }
3572 def C2_cmovenewit : HInst<
3573 (outs IntRegs:$Rd32),
3574 (ins PredRegs:$Pu4, s32_0Imm:$Ii),
3575 "if ($Pu4.new) $Rd32 = #$Ii",
3576 tc_86173609, TypeALU32_2op>, Enc_cda00a, PredNewRel, ImmRegRel {
3577 let Inst{13-13} = 0b1;
3578 let Inst{20-20} = 0b0;
3579 let Inst{31-23} = 0b011111100;
3580 let isPredicated = 1;
3581 let hasNewValue = 1;
3582 let opNewValue = 0;
3583 let isPredicatedNew = 1;
3584 let BaseOpcode = "A2_tfrsi";
3585 let CextOpcode = "A2_tfr";
3586 let InputType = "imm";
3587 let isMoveImm = 1;
3588 let isExtendable = 1;
3589 let opExtendable = 2;
3590 let isExtentSigned = 1;
3591 let opExtentBits = 12;
3592 let opExtentAlign = 0;
3593 }
3594 def C2_cmpeq : HInst<
3595 (outs PredRegs:$Pd4),
3596 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3597 "$Pd4 = cmp.eq($Rs32,$Rt32)",
3598 tc_9c52f549, TypeALU32_3op>, Enc_c2b48e, ImmRegRel {
3599 let Inst{7-2} = 0b000000;
3600 let Inst{13-13} = 0b0;
3601 let Inst{31-21} = 0b11110010000;
3602 let CextOpcode = "C2_cmpeq";
3603 let InputType = "reg";
3604 let isCommutable = 1;
3605 let isCompare = 1;
3606 }
3607 def C2_cmpeqi : HInst<
3608 (outs PredRegs:$Pd4),
3609 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
3610 "$Pd4 = cmp.eq($Rs32,#$Ii)",
3611 tc_d33e5eee, TypeALU32_2op>, Enc_bd0b33, ImmRegRel {
3612 let Inst{4-2} = 0b000;
3613 let Inst{31-22} = 0b0111010100;
3614 let CextOpcode = "C2_cmpeq";
3615 let InputType = "imm";
3616 let isCompare = 1;
3617 let isExtendable = 1;
3618 let opExtendable = 2;
3619 let isExtentSigned = 1;
3620 let opExtentBits = 10;
3621 let opExtentAlign = 0;
3622 }
3623 def C2_cmpeqp : HInst<
3624 (outs PredRegs:$Pd4),
3625 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
3626 "$Pd4 = cmp.eq($Rss32,$Rtt32)",
3627 tc_4a55d03c, TypeALU64>, Enc_fcf7a7 {
3628 let Inst{7-2} = 0b000000;
3629 let Inst{13-13} = 0b0;
3630 let Inst{31-21} = 0b11010010100;
3631 let isCommutable = 1;
3632 let isCompare = 1;
3633 }
3634 def C2_cmpgei : HInst<
3635 (outs PredRegs:$Pd4),
3636 (ins IntRegs:$Rs32, s8_0Imm:$Ii),
3637 "$Pd4 = cmp.ge($Rs32,#$Ii)",
3638 tc_d33e5eee, TypeALU32_2op> {
3639 let isCompare = 1;
3640 let isPseudo = 1;
3641 }
3642 def C2_cmpgeui : HInst<
3643 (outs PredRegs:$Pd4),
3644 (ins IntRegs:$Rs32, u8_0Imm:$Ii),
3645 "$Pd4 = cmp.geu($Rs32,#$Ii)",
3646 tc_d33e5eee, TypeALU32_2op> {
3647 let isCompare = 1;
3648 let isPseudo = 1;
3649 }
3650 def C2_cmpgt : HInst<
3651 (outs PredRegs:$Pd4),
3652 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3653 "$Pd4 = cmp.gt($Rs32,$Rt32)",
3654 tc_9c52f549, TypeALU32_3op>, Enc_c2b48e, ImmRegRel {
3655 let Inst{7-2} = 0b000000;
3656 let Inst{13-13} = 0b0;
3657 let Inst{31-21} = 0b11110010010;
3658 let CextOpcode = "C2_cmpgt";
3659 let InputType = "reg";
3660 let isCompare = 1;
3661 }
3662 def C2_cmpgti : HInst<
3663 (outs PredRegs:$Pd4),
3664 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
3665 "$Pd4 = cmp.gt($Rs32,#$Ii)",
3666 tc_d33e5eee, TypeALU32_2op>, Enc_bd0b33, ImmRegRel {
3667 let Inst{4-2} = 0b000;
3668 let Inst{31-22} = 0b0111010101;
3669 let CextOpcode = "C2_cmpgt";
3670 let InputType = "imm";
3671 let isCompare = 1;
3672 let isExtendable = 1;
3673 let opExtendable = 2;
3674 let isExtentSigned = 1;
3675 let opExtentBits = 10;
3676 let opExtentAlign = 0;
3677 }
3678 def C2_cmpgtp : HInst<
3679 (outs PredRegs:$Pd4),
3680 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
3681 "$Pd4 = cmp.gt($Rss32,$Rtt32)",
3682 tc_4a55d03c, TypeALU64>, Enc_fcf7a7 {
3683 let Inst{7-2} = 0b010000;
3684 let Inst{13-13} = 0b0;
3685 let Inst{31-21} = 0b11010010100;
3686 let isCompare = 1;
3687 }
3688 def C2_cmpgtu : HInst<
3689 (outs PredRegs:$Pd4),
3690 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3691 "$Pd4 = cmp.gtu($Rs32,$Rt32)",
3692 tc_9c52f549, TypeALU32_3op>, Enc_c2b48e, ImmRegRel {
3693 let Inst{7-2} = 0b000000;
3694 let Inst{13-13} = 0b0;
3695 let Inst{31-21} = 0b11110010011;
3696 let CextOpcode = "C2_cmpgtu";
3697 let InputType = "reg";
3698 let isCompare = 1;
3699 }
3700 def C2_cmpgtui : HInst<
3701 (outs PredRegs:$Pd4),
3702 (ins IntRegs:$Rs32, u32_0Imm:$Ii),
3703 "$Pd4 = cmp.gtu($Rs32,#$Ii)",
3704 tc_d33e5eee, TypeALU32_2op>, Enc_c0cdde, ImmRegRel {
3705 let Inst{4-2} = 0b000;
3706 let Inst{31-21} = 0b01110101100;
3707 let CextOpcode = "C2_cmpgtu";
3708 let InputType = "imm";
3709 let isCompare = 1;
3710 let isExtendable = 1;
3711 let opExtendable = 2;
3712 let isExtentSigned = 0;
3713 let opExtentBits = 9;
3714 let opExtentAlign = 0;
3715 }
3716 def C2_cmpgtup : HInst<
3717 (outs PredRegs:$Pd4),
3718 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
3719 "$Pd4 = cmp.gtu($Rss32,$Rtt32)",
3720 tc_4a55d03c, TypeALU64>, Enc_fcf7a7 {
3721 let Inst{7-2} = 0b100000;
3722 let Inst{13-13} = 0b0;
3723 let Inst{31-21} = 0b11010010100;
3724 let isCompare = 1;
3725 }
3726 def C2_cmplt : HInst<
3727 (outs PredRegs:$Pd4),
3728 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3729 "$Pd4 = cmp.lt($Rs32,$Rt32)",
3730 tc_d33e5eee, TypeALU32_3op> {
3731 let isCompare = 1;
3732 let isPseudo = 1;
3733 let isCodeGenOnly = 1;
3734 }
3735 def C2_cmpltu : HInst<
3736 (outs PredRegs:$Pd4),
3737 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3738 "$Pd4 = cmp.ltu($Rs32,$Rt32)",
3739 tc_d33e5eee, TypeALU32_3op> {
3740 let isCompare = 1;
3741 let isPseudo = 1;
3742 let isCodeGenOnly = 1;
3743 }
3744 def C2_mask : HInst<
3745 (outs DoubleRegs:$Rdd32),
3746 (ins PredRegs:$Pt4),
3747 "$Rdd32 = mask($Pt4)",
3748 tc_9f6cd987, TypeS_2op>, Enc_78e566 {
3749 let Inst{7-5} = 0b000;
3750 let Inst{13-10} = 0b0000;
3751 let Inst{31-16} = 0b1000011000000000;
3752 }
3753 def C2_mux : HInst<
3754 (outs IntRegs:$Rd32),
3755 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
3756 "$Rd32 = mux($Pu4,$Rs32,$Rt32)",
3757 tc_1c2c7a4a, TypeALU32_3op>, Enc_ea4c54 {
3758 let Inst{7-7} = 0b0;
3759 let Inst{13-13} = 0b0;
3760 let Inst{31-21} = 0b11110100000;
3761 let hasNewValue = 1;
3762 let opNewValue = 0;
3763 let InputType = "reg";
3764 }
3765 def C2_muxii : HInst<
3766 (outs IntRegs:$Rd32),
3767 (ins PredRegs:$Pu4, s32_0Imm:$Ii, s8_0Imm:$II),
3768 "$Rd32 = mux($Pu4,#$Ii,#$II)",
3769 tc_1c2c7a4a, TypeALU32_2op>, Enc_830e5d {
3770 let Inst{31-25} = 0b0111101;
3771 let hasNewValue = 1;
3772 let opNewValue = 0;
3773 let isExtendable = 1;
3774 let opExtendable = 2;
3775 let isExtentSigned = 1;
3776 let opExtentBits = 8;
3777 let opExtentAlign = 0;
3778 }
3779 def C2_muxir : HInst<
3780 (outs IntRegs:$Rd32),
3781 (ins PredRegs:$Pu4, IntRegs:$Rs32, s32_0Imm:$Ii),
3782 "$Rd32 = mux($Pu4,$Rs32,#$Ii)",
3783 tc_1c2c7a4a, TypeALU32_2op>, Enc_e38e1f {
3784 let Inst{13-13} = 0b0;
3785 let Inst{31-23} = 0b011100110;
3786 let hasNewValue = 1;
3787 let opNewValue = 0;
3788 let InputType = "imm";
3789 let isExtendable = 1;
3790 let opExtendable = 3;
3791 let isExtentSigned = 1;
3792 let opExtentBits = 8;
3793 let opExtentAlign = 0;
3794 }
3795 def C2_muxri : HInst<
3796 (outs IntRegs:$Rd32),
3797 (ins PredRegs:$Pu4, s32_0Imm:$Ii, IntRegs:$Rs32),
3798 "$Rd32 = mux($Pu4,#$Ii,$Rs32)",
3799 tc_1c2c7a4a, TypeALU32_2op>, Enc_e38e1f {
3800 let Inst{13-13} = 0b0;
3801 let Inst{31-23} = 0b011100111;
3802 let hasNewValue = 1;
3803 let opNewValue = 0;
3804 let InputType = "imm";
3805 let isExtendable = 1;
3806 let opExtendable = 2;
3807 let isExtentSigned = 1;
3808 let opExtentBits = 8;
3809 let opExtentAlign = 0;
3810 }
3811 def C2_not : HInst<
3812 (outs PredRegs:$Pd4),
3813 (ins PredRegs:$Ps4),
3814 "$Pd4 = not($Ps4)",
3815 tc_151bf368, TypeCR>, Enc_65d691 {
3816 let Inst{13-2} = 0b000000000000;
3817 let Inst{31-18} = 0b01101011110000;
3818 }
3819 def C2_or : HInst<
3820 (outs PredRegs:$Pd4),
3821 (ins PredRegs:$Pt4, PredRegs:$Ps4),
3822 "$Pd4 = or($Pt4,$Ps4)",
3823 tc_651cbe02, TypeCR>, Enc_454a26 {
3824 let Inst{7-2} = 0b000000;
3825 let Inst{13-10} = 0b0000;
3826 let Inst{31-18} = 0b01101011001000;
3827 }
3828 def C2_orn : HInst<
3829 (outs PredRegs:$Pd4),
3830 (ins PredRegs:$Pt4, PredRegs:$Ps4),
3831 "$Pd4 = or($Pt4,!$Ps4)",
3832 tc_651cbe02, TypeCR>, Enc_454a26 {
3833 let Inst{7-2} = 0b000000;
3834 let Inst{13-10} = 0b0000;
3835 let Inst{31-18} = 0b01101011111000;
3836 }
3837 def C2_pxfer_map : HInst<
3838 (outs PredRegs:$Pd4),
3839 (ins PredRegs:$Ps4),
3840 "$Pd4 = $Ps4",
3841 tc_651cbe02, TypeMAPPING> {
3842 let isPseudo = 1;
3843 let isCodeGenOnly = 1;
3844 }
3845 def C2_tfrpr : HInst<
3846 (outs IntRegs:$Rd32),
3847 (ins PredRegs:$Ps4),
3848 "$Rd32 = $Ps4",
3849 tc_9f6cd987, TypeS_2op>, Enc_f5e933 {
3850 let Inst{13-5} = 0b000000000;
3851 let Inst{31-18} = 0b10001001010000;
3852 let hasNewValue = 1;
3853 let opNewValue = 0;
3854 }
3855 def C2_tfrrp : HInst<
3856 (outs PredRegs:$Pd4),
3857 (ins IntRegs:$Rs32),
3858 "$Pd4 = $Rs32",
3859 tc_55b33fda, TypeS_2op>, Enc_48b75f {
3860 let Inst{13-2} = 0b000000000000;
3861 let Inst{31-21} = 0b10000101010;
3862 }
3863 def C2_vitpack : HInst<
3864 (outs IntRegs:$Rd32),
3865 (ins PredRegs:$Ps4, PredRegs:$Pt4),
3866 "$Rd32 = vitpack($Ps4,$Pt4)",
3867 tc_f34c1c21, TypeS_2op>, Enc_527412 {
3868 let Inst{7-5} = 0b000;
3869 let Inst{13-10} = 0b0000;
3870 let Inst{31-18} = 0b10001001000000;
3871 let hasNewValue = 1;
3872 let opNewValue = 0;
3873 let prefersSlot3 = 1;
3874 }
3875 def C2_vmux : HInst<
3876 (outs DoubleRegs:$Rdd32),
3877 (ins PredRegs:$Pu4, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
3878 "$Rdd32 = vmux($Pu4,$Rss32,$Rtt32)",
3879 tc_6fc5dbea, TypeALU64>, Enc_329361 {
3880 let Inst{7-7} = 0b0;
3881 let Inst{13-13} = 0b0;
3882 let Inst{31-21} = 0b11010001000;
3883 }
3884 def C2_xor : HInst<
3885 (outs PredRegs:$Pd4),
3886 (ins PredRegs:$Ps4, PredRegs:$Pt4),
3887 "$Pd4 = xor($Ps4,$Pt4)",
3888 tc_651cbe02, TypeCR>, Enc_284ebb {
3889 let Inst{7-2} = 0b000000;
3890 let Inst{13-10} = 0b0000;
3891 let Inst{31-18} = 0b01101011010000;
3892 }
3893 def C4_addipc : HInst<
3894 (outs IntRegs:$Rd32),
3895 (ins u32_0Imm:$Ii),
3896 "$Rd32 = add(pc,#$Ii)",
3897 tc_3edca78f, TypeCR>, Enc_607661 {
3898 let Inst{6-5} = 0b00;
3899 let Inst{13-13} = 0b0;
3900 let Inst{31-16} = 0b0110101001001001;
3901 let hasNewValue = 1;
3902 let opNewValue = 0;
3903 let isExtendable = 1;
3904 let opExtendable = 1;
3905 let isExtentSigned = 0;
3906 let opExtentBits = 6;
3907 let opExtentAlign = 0;
3908 }
3909 def C4_and_and : HInst<
3910 (outs PredRegs:$Pd4),
3911 (ins PredRegs:$Ps4, PredRegs:$Pt4, PredRegs:$Pu4),
3912 "$Pd4 = and($Ps4,and($Pt4,$Pu4))",
3913 tc_a7a13fac, TypeCR>, Enc_9ac432 {
3914 let Inst{5-2} = 0b0000;
3915 let Inst{13-10} = 0b0000;
3916 let Inst{31-18} = 0b01101011000100;
3917 }
3918 def C4_and_andn : HInst<
3919 (outs PredRegs:$Pd4),
3920 (ins PredRegs:$Ps4, PredRegs:$Pt4, PredRegs:$Pu4),
3921 "$Pd4 = and($Ps4,and($Pt4,!$Pu4))",
3922 tc_a7a13fac, TypeCR>, Enc_9ac432 {
3923 let Inst{5-2} = 0b0000;
3924 let Inst{13-10} = 0b0000;
3925 let Inst{31-18} = 0b01101011100100;
3926 }
3927 def C4_and_or : HInst<
3928 (outs PredRegs:$Pd4),
3929 (ins PredRegs:$Ps4, PredRegs:$Pt4, PredRegs:$Pu4),
3930 "$Pd4 = and($Ps4,or($Pt4,$Pu4))",
3931 tc_a7a13fac, TypeCR>, Enc_9ac432 {
3932 let Inst{5-2} = 0b0000;
3933 let Inst{13-10} = 0b0000;
3934 let Inst{31-18} = 0b01101011001100;
3935 }
3936 def C4_and_orn : HInst<
3937 (outs PredRegs:$Pd4),
3938 (ins PredRegs:$Ps4, PredRegs:$Pt4, PredRegs:$Pu4),
3939 "$Pd4 = and($Ps4,or($Pt4,!$Pu4))",
3940 tc_a7a13fac, TypeCR>, Enc_9ac432 {
3941 let Inst{5-2} = 0b0000;
3942 let Inst{13-10} = 0b0000;
3943 let Inst{31-18} = 0b01101011101100;
3944 }
3945 def C4_cmplte : HInst<
3946 (outs PredRegs:$Pd4),
3947 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3948 "$Pd4 = !cmp.gt($Rs32,$Rt32)",
3949 tc_9c52f549, TypeALU32_3op>, Enc_c2b48e, ImmRegRel {
3950 let Inst{7-2} = 0b000100;
3951 let Inst{13-13} = 0b0;
3952 let Inst{31-21} = 0b11110010010;
3953 let CextOpcode = "C4_cmplte";
3954 let InputType = "reg";
3955 let isCompare = 1;
3956 }
3957 def C4_cmpltei : HInst<
3958 (outs PredRegs:$Pd4),
3959 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
3960 "$Pd4 = !cmp.gt($Rs32,#$Ii)",
3961 tc_d33e5eee, TypeALU32_2op>, Enc_bd0b33, ImmRegRel {
3962 let Inst{4-2} = 0b100;
3963 let Inst{31-22} = 0b0111010101;
3964 let CextOpcode = "C4_cmplte";
3965 let InputType = "imm";
3966 let isCompare = 1;
3967 let isExtendable = 1;
3968 let opExtendable = 2;
3969 let isExtentSigned = 1;
3970 let opExtentBits = 10;
3971 let opExtentAlign = 0;
3972 }
3973 def C4_cmplteu : HInst<
3974 (outs PredRegs:$Pd4),
3975 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3976 "$Pd4 = !cmp.gtu($Rs32,$Rt32)",
3977 tc_9c52f549, TypeALU32_3op>, Enc_c2b48e, ImmRegRel {
3978 let Inst{7-2} = 0b000100;
3979 let Inst{13-13} = 0b0;
3980 let Inst{31-21} = 0b11110010011;
3981 let CextOpcode = "C4_cmplteu";
3982 let InputType = "reg";
3983 let isCompare = 1;
3984 }
3985 def C4_cmplteui : HInst<
3986 (outs PredRegs:$Pd4),
3987 (ins IntRegs:$Rs32, u32_0Imm:$Ii),
3988 "$Pd4 = !cmp.gtu($Rs32,#$Ii)",
3989 tc_d33e5eee, TypeALU32_2op>, Enc_c0cdde, ImmRegRel {
3990 let Inst{4-2} = 0b100;
3991 let Inst{31-21} = 0b01110101100;
3992 let CextOpcode = "C4_cmplteu";
3993 let InputType = "imm";
3994 let isCompare = 1;
3995 let isExtendable = 1;
3996 let opExtendable = 2;
3997 let isExtentSigned = 0;
3998 let opExtentBits = 9;
3999 let opExtentAlign = 0;
4000 }
4001 def C4_cmpneq : HInst<
4002 (outs PredRegs:$Pd4),
4003 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4004 "$Pd4 = !cmp.eq($Rs32,$Rt32)",
4005 tc_9c52f549, TypeALU32_3op>, Enc_c2b48e, ImmRegRel {
4006 let Inst{7-2} = 0b000100;
4007 let Inst{13-13} = 0b0;
4008 let Inst{31-21} = 0b11110010000;
4009 let CextOpcode = "C4_cmpneq";
4010 let InputType = "reg";
4011 let isCommutable = 1;
4012 let isCompare = 1;
4013 }
4014 def C4_cmpneqi : HInst<
4015 (outs PredRegs:$Pd4),
4016 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
4017 "$Pd4 = !cmp.eq($Rs32,#$Ii)",
4018 tc_d33e5eee, TypeALU32_2op>, Enc_bd0b33, ImmRegRel {
4019 let Inst{4-2} = 0b100;
4020 let Inst{31-22} = 0b0111010100;
4021 let CextOpcode = "C4_cmpneq";
4022 let InputType = "imm";
4023 let isCompare = 1;
4024 let isExtendable = 1;
4025 let opExtendable = 2;
4026 let isExtentSigned = 1;
4027 let opExtentBits = 10;
4028 let opExtentAlign = 0;
4029 }
4030 def C4_fastcorner9 : HInst<
4031 (outs PredRegs:$Pd4),
4032 (ins PredRegs:$Ps4, PredRegs:$Pt4),
4033 "$Pd4 = fastcorner9($Ps4,$Pt4)",
4034 tc_651cbe02, TypeCR>, Enc_284ebb {
4035 let Inst{7-2} = 0b100100;
4036 let Inst{13-10} = 0b1000;
4037 let Inst{31-18} = 0b01101011000000;
4038 }
4039 def C4_fastcorner9_not : HInst<
4040 (outs PredRegs:$Pd4),
4041 (ins PredRegs:$Ps4, PredRegs:$Pt4),
4042 "$Pd4 = !fastcorner9($Ps4,$Pt4)",
4043 tc_651cbe02, TypeCR>, Enc_284ebb {
4044 let Inst{7-2} = 0b100100;
4045 let Inst{13-10} = 0b1000;
4046 let Inst{31-18} = 0b01101011000100;
4047 }
4048 def C4_nbitsclr : HInst<
4049 (outs PredRegs:$Pd4),
4050 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4051 "$Pd4 = !bitsclr($Rs32,$Rt32)",
4052 tc_4a55d03c, TypeS_3op>, Enc_c2b48e {
4053 let Inst{7-2} = 0b000000;
4054 let Inst{13-13} = 0b0;
4055 let Inst{31-21} = 0b11000111101;
4056 }
4057 def C4_nbitsclri : HInst<
4058 (outs PredRegs:$Pd4),
4059 (ins IntRegs:$Rs32, u6_0Imm:$Ii),
4060 "$Pd4 = !bitsclr($Rs32,#$Ii)",
4061 tc_a1297125, TypeS_2op>, Enc_5d6c34 {
4062 let Inst{7-2} = 0b000000;
4063 let Inst{31-21} = 0b10000101101;
4064 }
4065 def C4_nbitsset : HInst<
4066 (outs PredRegs:$Pd4),
4067 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4068 "$Pd4 = !bitsset($Rs32,$Rt32)",
4069 tc_4a55d03c, TypeS_3op>, Enc_c2b48e {
4070 let Inst{7-2} = 0b000000;
4071 let Inst{13-13} = 0b0;
4072 let Inst{31-21} = 0b11000111011;
4073 }
4074 def C4_or_and : HInst<
4075 (outs PredRegs:$Pd4),
4076 (ins PredRegs:$Ps4, PredRegs:$Pt4, PredRegs:$Pu4),
4077 "$Pd4 = or($Ps4,and($Pt4,$Pu4))",
4078 tc_a7a13fac, TypeCR>, Enc_9ac432 {
4079 let Inst{5-2} = 0b0000;
4080 let Inst{13-10} = 0b0000;
4081 let Inst{31-18} = 0b01101011010100;
4082 }
4083 def C4_or_andn : HInst<
4084 (outs PredRegs:$Pd4),
4085 (ins PredRegs:$Ps4, PredRegs:$Pt4, PredRegs:$Pu4),
4086 "$Pd4 = or($Ps4,and($Pt4,!$Pu4))",
4087 tc_a7a13fac, TypeCR>, Enc_9ac432 {
4088 let Inst{5-2} = 0b0000;
4089 let Inst{13-10} = 0b0000;
4090 let Inst{31-18} = 0b01101011110100;
4091 }
4092 def C4_or_or : HInst<
4093 (outs PredRegs:$Pd4),
4094 (ins PredRegs:$Ps4, PredRegs:$Pt4, PredRegs:$Pu4),
4095 "$Pd4 = or($Ps4,or($Pt4,$Pu4))",
4096 tc_a7a13fac, TypeCR>, Enc_9ac432 {
4097 let Inst{5-2} = 0b0000;
4098 let Inst{13-10} = 0b0000;
4099 let Inst{31-18} = 0b01101011011100;
4100 }
4101 def C4_or_orn : HInst<
4102 (outs PredRegs:$Pd4),
4103 (ins PredRegs:$Ps4, PredRegs:$Pt4, PredRegs:$Pu4),
4104 "$Pd4 = or($Ps4,or($Pt4,!$Pu4))",
4105 tc_a7a13fac, TypeCR>, Enc_9ac432 {
4106 let Inst{5-2} = 0b0000;
4107 let Inst{13-10} = 0b0000;
4108 let Inst{31-18} = 0b01101011111100;
4109 }
4110 def F2_conv_d2df : HInst<
4111 (outs DoubleRegs:$Rdd32),
4112 (ins DoubleRegs:$Rss32),
4113 "$Rdd32 = convert_d2df($Rss32)",
4114 tc_9783714b, TypeS_2op>, Enc_b9c5fb {
4115 let Inst{13-5} = 0b000000011;
4116 let Inst{31-21} = 0b10000000111;
4117 let isFP = 1;
4118 let Uses = [USR];
4119 }
4120 def F2_conv_d2sf : HInst<
4121 (outs IntRegs:$Rd32),
4122 (ins DoubleRegs:$Rss32),
4123 "$Rd32 = convert_d2sf($Rss32)",
4124 tc_9783714b, TypeS_2op>, Enc_90cd8b {
4125 let Inst{13-5} = 0b000000001;
4126 let Inst{31-21} = 0b10001000010;
4127 let hasNewValue = 1;
4128 let opNewValue = 0;
4129 let isFP = 1;
4130 let Uses = [USR];
4131 }
4132 def F2_conv_df2d : HInst<
4133 (outs DoubleRegs:$Rdd32),
4134 (ins DoubleRegs:$Rss32),
4135 "$Rdd32 = convert_df2d($Rss32)",
4136 tc_9783714b, TypeS_2op>, Enc_b9c5fb {
4137 let Inst{13-5} = 0b000000000;
4138 let Inst{31-21} = 0b10000000111;
4139 let isFP = 1;
4140 let Uses = [USR];
4141 }
4142 def F2_conv_df2d_chop : HInst<
4143 (outs DoubleRegs:$Rdd32),
4144 (ins DoubleRegs:$Rss32),
4145 "$Rdd32 = convert_df2d($Rss32):chop",
4146 tc_9783714b, TypeS_2op>, Enc_b9c5fb {
4147 let Inst{13-5} = 0b000000110;
4148 let Inst{31-21} = 0b10000000111;
4149 let isFP = 1;
4150 let Uses = [USR];
4151 }
4152 def F2_conv_df2sf : HInst<
4153 (outs IntRegs:$Rd32),
4154 (ins DoubleRegs:$Rss32),
4155 "$Rd32 = convert_df2sf($Rss32)",
4156 tc_9783714b, TypeS_2op>, Enc_90cd8b {
4157 let Inst{13-5} = 0b000000001;
4158 let Inst{31-21} = 0b10001000000;
4159 let hasNewValue = 1;
4160 let opNewValue = 0;
4161 let isFP = 1;
4162 let Uses = [USR];
4163 }
4164 def F2_conv_df2ud : HInst<
4165 (outs DoubleRegs:$Rdd32),
4166 (ins DoubleRegs:$Rss32),
4167 "$Rdd32 = convert_df2ud($Rss32)",
4168 tc_9783714b, TypeS_2op>, Enc_b9c5fb {
4169 let Inst{13-5} = 0b000000001;
4170 let Inst{31-21} = 0b10000000111;
4171 let isFP = 1;
4172 let Uses = [USR];
4173 }
4174 def F2_conv_df2ud_chop : HInst<
4175 (outs DoubleRegs:$Rdd32),
4176 (ins DoubleRegs:$Rss32),
4177 "$Rdd32 = convert_df2ud($Rss32):chop",
4178 tc_9783714b, TypeS_2op>, Enc_b9c5fb {
4179 let Inst{13-5} = 0b000000111;
4180 let Inst{31-21} = 0b10000000111;
4181 let isFP = 1;
4182 let Uses = [USR];
4183 }
4184 def F2_conv_df2uw : HInst<
4185 (outs IntRegs:$Rd32),
4186 (ins DoubleRegs:$Rss32),
4187 "$Rd32 = convert_df2uw($Rss32)",
4188 tc_9783714b, TypeS_2op>, Enc_90cd8b {
4189 let Inst{13-5} = 0b000000001;
4190 let Inst{31-21} = 0b10001000011;
4191 let hasNewValue = 1;
4192 let opNewValue = 0;
4193 let isFP = 1;
4194 let Uses = [USR];
4195 }
4196 def F2_conv_df2uw_chop : HInst<
4197 (outs IntRegs:$Rd32),
4198 (ins DoubleRegs:$Rss32),
4199 "$Rd32 = convert_df2uw($Rss32):chop",
4200 tc_9783714b, TypeS_2op>, Enc_90cd8b {
4201 let Inst{13-5} = 0b000000001;
4202 let Inst{31-21} = 0b10001000101;
4203 let hasNewValue = 1;
4204 let opNewValue = 0;
4205 let isFP = 1;
4206 let Uses = [USR];
4207 }
4208 def F2_conv_df2w : HInst<
4209 (outs IntRegs:$Rd32),
4210 (ins DoubleRegs:$Rss32),
4211 "$Rd32 = convert_df2w($Rss32)",
4212 tc_9783714b, TypeS_2op>, Enc_90cd8b {
4213 let Inst{13-5} = 0b000000001;
4214 let Inst{31-21} = 0b10001000100;
4215 let hasNewValue = 1;
4216 let opNewValue = 0;
4217 let isFP = 1;
4218 let Uses = [USR];
4219 }
4220 def F2_conv_df2w_chop : HInst<
4221 (outs IntRegs:$Rd32),
4222 (ins DoubleRegs:$Rss32),
4223 "$Rd32 = convert_df2w($Rss32):chop",
4224 tc_9783714b, TypeS_2op>, Enc_90cd8b {
4225 let Inst{13-5} = 0b000000001;
4226 let Inst{31-21} = 0b10001000111;
4227 let hasNewValue = 1;
4228 let opNewValue = 0;
4229 let isFP = 1;
4230 let Uses = [USR];
4231 }
4232 def F2_conv_sf2d : HInst<
4233 (outs DoubleRegs:$Rdd32),
4234 (ins IntRegs:$Rs32),
4235 "$Rdd32 = convert_sf2d($Rs32)",
4236 tc_9783714b, TypeS_2op>, Enc_3a3d62 {
4237 let Inst{13-5} = 0b000000100;
4238 let Inst{31-21} = 0b10000100100;
4239 let isFP = 1;
4240 let Uses = [USR];
4241 }
4242 def F2_conv_sf2d_chop : HInst<
4243 (outs DoubleRegs:$Rdd32),
4244 (ins IntRegs:$Rs32),
4245 "$Rdd32 = convert_sf2d($Rs32):chop",
4246 tc_9783714b, TypeS_2op>, Enc_3a3d62 {
4247 let Inst{13-5} = 0b000000110;
4248 let Inst{31-21} = 0b10000100100;
4249 let isFP = 1;
4250 let Uses = [USR];
4251 }
4252 def F2_conv_sf2df : HInst<
4253 (outs DoubleRegs:$Rdd32),
4254 (ins IntRegs:$Rs32),
4255 "$Rdd32 = convert_sf2df($Rs32)",
4256 tc_9783714b, TypeS_2op>, Enc_3a3d62 {
4257 let Inst{13-5} = 0b000000000;
4258 let Inst{31-21} = 0b10000100100;
4259 let isFP = 1;
4260 let Uses = [USR];
4261 }
4262 def F2_conv_sf2ud : HInst<
4263 (outs DoubleRegs:$Rdd32),
4264 (ins IntRegs:$Rs32),
4265 "$Rdd32 = convert_sf2ud($Rs32)",
4266 tc_9783714b, TypeS_2op>, Enc_3a3d62 {
4267 let Inst{13-5} = 0b000000011;
4268 let Inst{31-21} = 0b10000100100;
4269 let isFP = 1;
4270 let Uses = [USR];
4271 }
4272 def F2_conv_sf2ud_chop : HInst<
4273 (outs DoubleRegs:$Rdd32),
4274 (ins IntRegs:$Rs32),
4275 "$Rdd32 = convert_sf2ud($Rs32):chop",
4276 tc_9783714b, TypeS_2op>, Enc_3a3d62 {
4277 let Inst{13-5} = 0b000000101;
4278 let Inst{31-21} = 0b10000100100;
4279 let isFP = 1;
4280 let Uses = [USR];
4281 }
4282 def F2_conv_sf2uw : HInst<
4283 (outs IntRegs:$Rd32),
4284 (ins IntRegs:$Rs32),
4285 "$Rd32 = convert_sf2uw($Rs32)",
4286 tc_9783714b, TypeS_2op>, Enc_5e2823 {
4287 let Inst{13-5} = 0b000000000;
4288 let Inst{31-21} = 0b10001011011;
4289 let hasNewValue = 1;
4290 let opNewValue = 0;
4291 let isFP = 1;
4292 let Uses = [USR];
4293 }
4294 def F2_conv_sf2uw_chop : HInst<
4295 (outs IntRegs:$Rd32),
4296 (ins IntRegs:$Rs32),
4297 "$Rd32 = convert_sf2uw($Rs32):chop",
4298 tc_9783714b, TypeS_2op>, Enc_5e2823 {
4299 let Inst{13-5} = 0b000000001;
4300 let Inst{31-21} = 0b10001011011;
4301 let hasNewValue = 1;
4302 let opNewValue = 0;
4303 let isFP = 1;
4304 let Uses = [USR];
4305 }
4306 def F2_conv_sf2w : HInst<
4307 (outs IntRegs:$Rd32),
4308 (ins IntRegs:$Rs32),
4309 "$Rd32 = convert_sf2w($Rs32)",
4310 tc_9783714b, TypeS_2op>, Enc_5e2823 {
4311 let Inst{13-5} = 0b000000000;
4312 let Inst{31-21} = 0b10001011100;
4313 let hasNewValue = 1;
4314 let opNewValue = 0;
4315 let isFP = 1;
4316 let Uses = [USR];
4317 }
4318 def F2_conv_sf2w_chop : HInst<
4319 (outs IntRegs:$Rd32),
4320 (ins IntRegs:$Rs32),
4321 "$Rd32 = convert_sf2w($Rs32):chop",
4322 tc_9783714b, TypeS_2op>, Enc_5e2823 {
4323 let Inst{13-5} = 0b000000001;
4324 let Inst{31-21} = 0b10001011100;
4325 let hasNewValue = 1;
4326 let opNewValue = 0;
4327 let isFP = 1;
4328 let Uses = [USR];
4329 }
4330 def F2_conv_ud2df : HInst<
4331 (outs DoubleRegs:$Rdd32),
4332 (ins DoubleRegs:$Rss32),
4333 "$Rdd32 = convert_ud2df($Rss32)",
4334 tc_9783714b, TypeS_2op>, Enc_b9c5fb {
4335 let Inst{13-5} = 0b000000010;
4336 let Inst{31-21} = 0b10000000111;
4337 let isFP = 1;
4338 let Uses = [USR];
4339 }
4340 def F2_conv_ud2sf : HInst<
4341 (outs IntRegs:$Rd32),
4342 (ins DoubleRegs:$Rss32),
4343 "$Rd32 = convert_ud2sf($Rss32)",
4344 tc_9783714b, TypeS_2op>, Enc_90cd8b {
4345 let Inst{13-5} = 0b000000001;
4346 let Inst{31-21} = 0b10001000001;
4347 let hasNewValue = 1;
4348 let opNewValue = 0;
4349 let isFP = 1;
4350 let Uses = [USR];
4351 }
4352 def F2_conv_uw2df : HInst<
4353 (outs DoubleRegs:$Rdd32),
4354 (ins IntRegs:$Rs32),
4355 "$Rdd32 = convert_uw2df($Rs32)",
4356 tc_9783714b, TypeS_2op>, Enc_3a3d62 {
4357 let Inst{13-5} = 0b000000001;
4358 let Inst{31-21} = 0b10000100100;
4359 let isFP = 1;
4360 let Uses = [USR];
4361 }
4362 def F2_conv_uw2sf : HInst<
4363 (outs IntRegs:$Rd32),
4364 (ins IntRegs:$Rs32),
4365 "$Rd32 = convert_uw2sf($Rs32)",
4366 tc_9783714b, TypeS_2op>, Enc_5e2823 {
4367 let Inst{13-5} = 0b000000000;
4368 let Inst{31-21} = 0b10001011001;
4369 let hasNewValue = 1;
4370 let opNewValue = 0;
4371 let isFP = 1;
4372 let Uses = [USR];
4373 }
4374 def F2_conv_w2df : HInst<
4375 (outs DoubleRegs:$Rdd32),
4376 (ins IntRegs:$Rs32),
4377 "$Rdd32 = convert_w2df($Rs32)",
4378 tc_9783714b, TypeS_2op>, Enc_3a3d62 {
4379 let Inst{13-5} = 0b000000010;
4380 let Inst{31-21} = 0b10000100100;
4381 let isFP = 1;
4382 let Uses = [USR];
4383 }
4384 def F2_conv_w2sf : HInst<
4385 (outs IntRegs:$Rd32),
4386 (ins IntRegs:$Rs32),
4387 "$Rd32 = convert_w2sf($Rs32)",
4388 tc_9783714b, TypeS_2op>, Enc_5e2823 {
4389 let Inst{13-5} = 0b000000000;
4390 let Inst{31-21} = 0b10001011010;
4391 let hasNewValue = 1;
4392 let opNewValue = 0;
4393 let isFP = 1;
4394 let Uses = [USR];
4395 }
4396 def F2_dfadd : HInst<
4397 (outs DoubleRegs:$Rdd32),
4398 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
4399 "$Rdd32 = dfadd($Rss32,$Rtt32)",
4400 tc_f0e8e832, TypeM>, Enc_a56825, Requires<[HasV66]> {
4401 let Inst{7-5} = 0b011;
4402 let Inst{13-13} = 0b0;
4403 let Inst{31-21} = 0b11101000000;
4404 let isFP = 1;
4405 let Uses = [USR];
4406 }
4407 def F2_dfclass : HInst<
4408 (outs PredRegs:$Pd4),
4409 (ins DoubleRegs:$Rss32, u5_0Imm:$Ii),
4410 "$Pd4 = dfclass($Rss32,#$Ii)",
4411 tc_a1297125, TypeALU64>, Enc_1f19b5 {
4412 let Inst{4-2} = 0b100;
4413 let Inst{13-10} = 0b0000;
4414 let Inst{31-21} = 0b11011100100;
4415 let isFP = 1;
4416 let Uses = [USR];
4417 }
4418 def F2_dfcmpeq : HInst<
4419 (outs PredRegs:$Pd4),
4420 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
4421 "$Pd4 = dfcmp.eq($Rss32,$Rtt32)",
4422 tc_4a55d03c, TypeALU64>, Enc_fcf7a7 {
4423 let Inst{7-2} = 0b000000;
4424 let Inst{13-13} = 0b0;
4425 let Inst{31-21} = 0b11010010111;
4426 let isFP = 1;
4427 let Uses = [USR];
4428 let isCompare = 1;
4429 }
4430 def F2_dfcmpge : HInst<
4431 (outs PredRegs:$Pd4),
4432 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
4433 "$Pd4 = dfcmp.ge($Rss32,$Rtt32)",
4434 tc_4a55d03c, TypeALU64>, Enc_fcf7a7 {
4435 let Inst{7-2} = 0b010000;
4436 let Inst{13-13} = 0b0;
4437 let Inst{31-21} = 0b11010010111;
4438 let isFP = 1;
4439 let Uses = [USR];
4440 let isCompare = 1;
4441 }
4442 def F2_dfcmpgt : HInst<
4443 (outs PredRegs:$Pd4),
4444 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
4445 "$Pd4 = dfcmp.gt($Rss32,$Rtt32)",
4446 tc_4a55d03c, TypeALU64>, Enc_fcf7a7 {
4447 let Inst{7-2} = 0b001000;
4448 let Inst{13-13} = 0b0;
4449 let Inst{31-21} = 0b11010010111;
4450 let isFP = 1;
4451 let Uses = [USR];
4452 let isCompare = 1;
4453 }
4454 def F2_dfcmpuo : HInst<
4455 (outs PredRegs:$Pd4),
4456 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
4457 "$Pd4 = dfcmp.uo($Rss32,$Rtt32)",
4458 tc_4a55d03c, TypeALU64>, Enc_fcf7a7 {
4459 let Inst{7-2} = 0b011000;
4460 let Inst{13-13} = 0b0;
4461 let Inst{31-21} = 0b11010010111;
4462 let isFP = 1;
4463 let Uses = [USR];
4464 let isCompare = 1;
4465 }
4466 def F2_dfimm_n : HInst<
4467 (outs DoubleRegs:$Rdd32),
4468 (ins u10_0Imm:$Ii),
4469 "$Rdd32 = dfmake(#$Ii):neg",
4470 tc_65279839, TypeALU64>, Enc_e6c957 {
4471 let Inst{20-16} = 0b00000;
4472 let Inst{31-22} = 0b1101100101;
4473 let prefersSlot3 = 1;
4474 }
4475 def F2_dfimm_p : HInst<
4476 (outs DoubleRegs:$Rdd32),
4477 (ins u10_0Imm:$Ii),
4478 "$Rdd32 = dfmake(#$Ii):pos",
4479 tc_65279839, TypeALU64>, Enc_e6c957 {
4480 let Inst{20-16} = 0b00000;
4481 let Inst{31-22} = 0b1101100100;
4482 let prefersSlot3 = 1;
4483 }
4484 def F2_dfmax : HInst<
4485 (outs DoubleRegs:$Rdd32),
4486 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
4487 "$Rdd32 = dfmax($Rss32,$Rtt32)",
4488 tc_9b3c0462, TypeM>, Enc_a56825, Requires<[HasV67]> {
4489 let Inst{7-5} = 0b011;
4490 let Inst{13-13} = 0b0;
4491 let Inst{31-21} = 0b11101000001;
4492 let isFP = 1;
4493 let prefersSlot3 = 1;
4494 let Uses = [USR];
4495 }
4496 def F2_dfmin : HInst<
4497 (outs DoubleRegs:$Rdd32),
4498 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
4499 "$Rdd32 = dfmin($Rss32,$Rtt32)",
4500 tc_9b3c0462, TypeM>, Enc_a56825, Requires<[HasV67]> {
4501 let Inst{7-5} = 0b011;
4502 let Inst{13-13} = 0b0;
4503 let Inst{31-21} = 0b11101000110;
4504 let isFP = 1;
4505 let prefersSlot3 = 1;
4506 let Uses = [USR];
4507 }
4508 def F2_dfmpyfix : HInst<
4509 (outs DoubleRegs:$Rdd32),
4510 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
4511 "$Rdd32 = dfmpyfix($Rss32,$Rtt32)",
4512 tc_f0e8e832, TypeM>, Enc_a56825, Requires<[HasV67]> {
4513 let Inst{7-5} = 0b011;
4514 let Inst{13-13} = 0b0;
4515 let Inst{31-21} = 0b11101000010;
4516 let isFP = 1;
4517 let Uses = [USR];
4518 }
4519 def F2_dfmpyhh : HInst<
4520 (outs DoubleRegs:$Rxx32),
4521 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
4522 "$Rxx32 += dfmpyhh($Rss32,$Rtt32)",
4523 tc_0a195f2c, TypeM>, Enc_88c16c, Requires<[HasV67]> {
4524 let Inst{7-5} = 0b011;
4525 let Inst{13-13} = 0b0;
4526 let Inst{31-21} = 0b11101010100;
4527 let isFP = 1;
4528 let Uses = [USR];
4529 let Constraints = "$Rxx32 = $Rxx32in";
4530 }
4531 def F2_dfmpylh : HInst<
4532 (outs DoubleRegs:$Rxx32),
4533 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
4534 "$Rxx32 += dfmpylh($Rss32,$Rtt32)",
4535 tc_01e1be3b, TypeM>, Enc_88c16c, Requires<[HasV67]> {
4536 let Inst{7-5} = 0b011;
4537 let Inst{13-13} = 0b0;
4538 let Inst{31-21} = 0b11101010000;
4539 let prefersSlot3 = 1;
4540 let Constraints = "$Rxx32 = $Rxx32in";
4541 }
4542 def F2_dfmpyll : HInst<
4543 (outs DoubleRegs:$Rdd32),
4544 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
4545 "$Rdd32 = dfmpyll($Rss32,$Rtt32)",
4546 tc_556f6577, TypeM>, Enc_a56825, Requires<[HasV67]> {
4547 let Inst{7-5} = 0b011;
4548 let Inst{13-13} = 0b0;
4549 let Inst{31-21} = 0b11101000101;
4550 let prefersSlot3 = 1;
4551 }
4552 def F2_dfsub : HInst<
4553 (outs DoubleRegs:$Rdd32),
4554 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
4555 "$Rdd32 = dfsub($Rss32,$Rtt32)",
4556 tc_f0e8e832, TypeM>, Enc_a56825, Requires<[HasV66]> {
4557 let Inst{7-5} = 0b011;
4558 let Inst{13-13} = 0b0;
4559 let Inst{31-21} = 0b11101000100;
4560 let isFP = 1;
4561 let Uses = [USR];
4562 }
4563 def F2_sfadd : HInst<
4564 (outs IntRegs:$Rd32),
4565 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4566 "$Rd32 = sfadd($Rs32,$Rt32)",
4567 tc_02fe1c65, TypeM>, Enc_5ab2be {
4568 let Inst{7-5} = 0b000;
4569 let Inst{13-13} = 0b0;
4570 let Inst{31-21} = 0b11101011000;
4571 let hasNewValue = 1;
4572 let opNewValue = 0;
4573 let isFP = 1;
4574 let Uses = [USR];
4575 let isCommutable = 1;
4576 }
4577 def F2_sfclass : HInst<
4578 (outs PredRegs:$Pd4),
4579 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
4580 "$Pd4 = sfclass($Rs32,#$Ii)",
4581 tc_a1297125, TypeS_2op>, Enc_83ee64 {
4582 let Inst{7-2} = 0b000000;
4583 let Inst{13-13} = 0b0;
4584 let Inst{31-21} = 0b10000101111;
4585 let isFP = 1;
4586 let Uses = [USR];
4587 }
4588 def F2_sfcmpeq : HInst<
4589 (outs PredRegs:$Pd4),
4590 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4591 "$Pd4 = sfcmp.eq($Rs32,$Rt32)",
4592 tc_4a55d03c, TypeS_3op>, Enc_c2b48e {
4593 let Inst{7-2} = 0b011000;
4594 let Inst{13-13} = 0b0;
4595 let Inst{31-21} = 0b11000111111;
4596 let isFP = 1;
4597 let Uses = [USR];
4598 let isCompare = 1;
4599 }
4600 def F2_sfcmpge : HInst<
4601 (outs PredRegs:$Pd4),
4602 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4603 "$Pd4 = sfcmp.ge($Rs32,$Rt32)",
4604 tc_4a55d03c, TypeS_3op>, Enc_c2b48e {
4605 let Inst{7-2} = 0b000000;
4606 let Inst{13-13} = 0b0;
4607 let Inst{31-21} = 0b11000111111;
4608 let isFP = 1;
4609 let Uses = [USR];
4610 let isCompare = 1;
4611 }
4612 def F2_sfcmpgt : HInst<
4613 (outs PredRegs:$Pd4),
4614 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4615 "$Pd4 = sfcmp.gt($Rs32,$Rt32)",
4616 tc_4a55d03c, TypeS_3op>, Enc_c2b48e {
4617 let Inst{7-2} = 0b100000;
4618 let Inst{13-13} = 0b0;
4619 let Inst{31-21} = 0b11000111111;
4620 let isFP = 1;
4621 let Uses = [USR];
4622 let isCompare = 1;
4623 }
4624 def F2_sfcmpuo : HInst<
4625 (outs PredRegs:$Pd4),
4626 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4627 "$Pd4 = sfcmp.uo($Rs32,$Rt32)",
4628 tc_4a55d03c, TypeS_3op>, Enc_c2b48e {
4629 let Inst{7-2} = 0b001000;
4630 let Inst{13-13} = 0b0;
4631 let Inst{31-21} = 0b11000111111;
4632 let isFP = 1;
4633 let Uses = [USR];
4634 let isCompare = 1;
4635 }
4636 def F2_sffixupd : HInst<
4637 (outs IntRegs:$Rd32),
4638 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4639 "$Rd32 = sffixupd($Rs32,$Rt32)",
4640 tc_02fe1c65, TypeM>, Enc_5ab2be {
4641 let Inst{7-5} = 0b001;
4642 let Inst{13-13} = 0b0;
4643 let Inst{31-21} = 0b11101011110;
4644 let hasNewValue = 1;
4645 let opNewValue = 0;
4646 let isFP = 1;
4647 }
4648 def F2_sffixupn : HInst<
4649 (outs IntRegs:$Rd32),
4650 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4651 "$Rd32 = sffixupn($Rs32,$Rt32)",
4652 tc_02fe1c65, TypeM>, Enc_5ab2be {
4653 let Inst{7-5} = 0b000;
4654 let Inst{13-13} = 0b0;
4655 let Inst{31-21} = 0b11101011110;
4656 let hasNewValue = 1;
4657 let opNewValue = 0;
4658 let isFP = 1;
4659 }
4660 def F2_sffixupr : HInst<
4661 (outs IntRegs:$Rd32),
4662 (ins IntRegs:$Rs32),
4663 "$Rd32 = sffixupr($Rs32)",
4664 tc_9783714b, TypeS_2op>, Enc_5e2823 {
4665 let Inst{13-5} = 0b000000000;
4666 let Inst{31-21} = 0b10001011101;
4667 let hasNewValue = 1;
4668 let opNewValue = 0;
4669 let isFP = 1;
4670 }
4671 def F2_sffma : HInst<
4672 (outs IntRegs:$Rx32),
4673 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
4674 "$Rx32 += sfmpy($Rs32,$Rt32)",
4675 tc_9e72dc89, TypeM>, Enc_2ae154 {
4676 let Inst{7-5} = 0b100;
4677 let Inst{13-13} = 0b0;
4678 let Inst{31-21} = 0b11101111000;
4679 let hasNewValue = 1;
4680 let opNewValue = 0;
4681 let isFP = 1;
4682 let Uses = [USR];
4683 let Constraints = "$Rx32 = $Rx32in";
4684 }
4685 def F2_sffma_lib : HInst<
4686 (outs IntRegs:$Rx32),
4687 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
4688 "$Rx32 += sfmpy($Rs32,$Rt32):lib",
4689 tc_9e72dc89, TypeM>, Enc_2ae154 {
4690 let Inst{7-5} = 0b110;
4691 let Inst{13-13} = 0b0;
4692 let Inst{31-21} = 0b11101111000;
4693 let hasNewValue = 1;
4694 let opNewValue = 0;
4695 let isFP = 1;
4696 let Uses = [USR];
4697 let Constraints = "$Rx32 = $Rx32in";
4698 }
4699 def F2_sffma_sc : HInst<
4700 (outs IntRegs:$Rx32),
4701 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32, PredRegs:$Pu4),
4702 "$Rx32 += sfmpy($Rs32,$Rt32,$Pu4):scale",
4703 tc_9edb7c77, TypeM>, Enc_437f33 {
4704 let Inst{7-7} = 0b1;
4705 let Inst{13-13} = 0b0;
4706 let Inst{31-21} = 0b11101111011;
4707 let hasNewValue = 1;
4708 let opNewValue = 0;
4709 let isFP = 1;
4710 let Uses = [USR];
4711 let Constraints = "$Rx32 = $Rx32in";
4712 }
4713 def F2_sffms : HInst<
4714 (outs IntRegs:$Rx32),
4715 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
4716 "$Rx32 -= sfmpy($Rs32,$Rt32)",
4717 tc_9e72dc89, TypeM>, Enc_2ae154 {
4718 let Inst{7-5} = 0b101;
4719 let Inst{13-13} = 0b0;
4720 let Inst{31-21} = 0b11101111000;
4721 let hasNewValue = 1;
4722 let opNewValue = 0;
4723 let isFP = 1;
4724 let Uses = [USR];
4725 let Constraints = "$Rx32 = $Rx32in";
4726 }
4727 def F2_sffms_lib : HInst<
4728 (outs IntRegs:$Rx32),
4729 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
4730 "$Rx32 -= sfmpy($Rs32,$Rt32):lib",
4731 tc_9e72dc89, TypeM>, Enc_2ae154 {
4732 let Inst{7-5} = 0b111;
4733 let Inst{13-13} = 0b0;
4734 let Inst{31-21} = 0b11101111000;
4735 let hasNewValue = 1;
4736 let opNewValue = 0;
4737 let isFP = 1;
4738 let Uses = [USR];
4739 let Constraints = "$Rx32 = $Rx32in";
4740 }
4741 def F2_sfimm_n : HInst<
4742 (outs IntRegs:$Rd32),
4743 (ins u10_0Imm:$Ii),
4744 "$Rd32 = sfmake(#$Ii):neg",
4745 tc_65279839, TypeALU64>, Enc_6c9440 {
4746 let Inst{20-16} = 0b00000;
4747 let Inst{31-22} = 0b1101011001;
4748 let hasNewValue = 1;
4749 let opNewValue = 0;
4750 let prefersSlot3 = 1;
4751 }
4752 def F2_sfimm_p : HInst<
4753 (outs IntRegs:$Rd32),
4754 (ins u10_0Imm:$Ii),
4755 "$Rd32 = sfmake(#$Ii):pos",
4756 tc_65279839, TypeALU64>, Enc_6c9440 {
4757 let Inst{20-16} = 0b00000;
4758 let Inst{31-22} = 0b1101011000;
4759 let hasNewValue = 1;
4760 let opNewValue = 0;
4761 let prefersSlot3 = 1;
4762 }
4763 def F2_sfinvsqrta : HInst<
4764 (outs IntRegs:$Rd32, PredRegs:$Pe4),
4765 (ins IntRegs:$Rs32),
4766 "$Rd32,$Pe4 = sfinvsqrta($Rs32)",
4767 tc_7f7f45f5, TypeS_2op>, Enc_890909 {
4768 let Inst{13-7} = 0b0000000;
4769 let Inst{31-21} = 0b10001011111;
4770 let hasNewValue = 1;
4771 let opNewValue = 0;
4772 let isFP = 1;
4773 let isPredicateLate = 1;
4774 }
4775 def F2_sfmax : HInst<
4776 (outs IntRegs:$Rd32),
4777 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4778 "$Rd32 = sfmax($Rs32,$Rt32)",
4779 tc_c20701f0, TypeM>, Enc_5ab2be {
4780 let Inst{7-5} = 0b000;
4781 let Inst{13-13} = 0b0;
4782 let Inst{31-21} = 0b11101011100;
4783 let hasNewValue = 1;
4784 let opNewValue = 0;
4785 let isFP = 1;
4786 let prefersSlot3 = 1;
4787 let Uses = [USR];
4788 }
4789 def F2_sfmin : HInst<
4790 (outs IntRegs:$Rd32),
4791 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4792 "$Rd32 = sfmin($Rs32,$Rt32)",
4793 tc_c20701f0, TypeM>, Enc_5ab2be {
4794 let Inst{7-5} = 0b001;
4795 let Inst{13-13} = 0b0;
4796 let Inst{31-21} = 0b11101011100;
4797 let hasNewValue = 1;
4798 let opNewValue = 0;
4799 let isFP = 1;
4800 let prefersSlot3 = 1;
4801 let Uses = [USR];
4802 }
4803 def F2_sfmpy : HInst<
4804 (outs IntRegs:$Rd32),
4805 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4806 "$Rd32 = sfmpy($Rs32,$Rt32)",
4807 tc_02fe1c65, TypeM>, Enc_5ab2be {
4808 let Inst{7-5} = 0b000;
4809 let Inst{13-13} = 0b0;
4810 let Inst{31-21} = 0b11101011010;
4811 let hasNewValue = 1;
4812 let opNewValue = 0;
4813 let isFP = 1;
4814 let Uses = [USR];
4815 let isCommutable = 1;
4816 }
4817 def F2_sfrecipa : HInst<
4818 (outs IntRegs:$Rd32, PredRegs:$Pe4),
4819 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4820 "$Rd32,$Pe4 = sfrecipa($Rs32,$Rt32)",
4821 tc_f7569068, TypeM>, Enc_a94f3b {
4822 let Inst{7-7} = 0b1;
4823 let Inst{13-13} = 0b0;
4824 let Inst{31-21} = 0b11101011111;
4825 let hasNewValue = 1;
4826 let opNewValue = 0;
4827 let isFP = 1;
4828 let isPredicateLate = 1;
4829 }
4830 def F2_sfsub : HInst<
4831 (outs IntRegs:$Rd32),
4832 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4833 "$Rd32 = sfsub($Rs32,$Rt32)",
4834 tc_02fe1c65, TypeM>, Enc_5ab2be {
4835 let Inst{7-5} = 0b001;
4836 let Inst{13-13} = 0b0;
4837 let Inst{31-21} = 0b11101011000;
4838 let hasNewValue = 1;
4839 let opNewValue = 0;
4840 let isFP = 1;
4841 let Uses = [USR];
4842 }
4843 def G4_tfrgcpp : HInst<
4844 (outs DoubleRegs:$Rdd32),
4845 (ins GuestRegs64:$Gss32),
4846 "$Rdd32 = $Gss32",
4847 tc_fae9dfa5, TypeCR>, Enc_0aa344 {
4848 let Inst{13-5} = 0b000000000;
4849 let Inst{31-21} = 0b01101000001;
4850 }
4851 def G4_tfrgcrr : HInst<
4852 (outs IntRegs:$Rd32),
4853 (ins GuestRegs:$Gs32),
4854 "$Rd32 = $Gs32",
4855 tc_fae9dfa5, TypeCR>, Enc_44271f {
4856 let Inst{13-5} = 0b000000000;
4857 let Inst{31-21} = 0b01101010001;
4858 let hasNewValue = 1;
4859 let opNewValue = 0;
4860 }
4861 def G4_tfrgpcp : HInst<
4862 (outs GuestRegs64:$Gdd32),
4863 (ins DoubleRegs:$Rss32),
4864 "$Gdd32 = $Rss32",
4865 tc_6ae3426b, TypeCR>, Enc_ed5027 {
4866 let Inst{13-5} = 0b000000000;
4867 let Inst{31-21} = 0b01100011000;
4868 let hasNewValue = 1;
4869 let opNewValue = 0;
4870 }
4871 def G4_tfrgrcr : HInst<
4872 (outs GuestRegs:$Gd32),
4873 (ins IntRegs:$Rs32),
4874 "$Gd32 = $Rs32",
4875 tc_6ae3426b, TypeCR>, Enc_621fba {
4876 let Inst{13-5} = 0b000000000;
4877 let Inst{31-21} = 0b01100010000;
4878 let hasNewValue = 1;
4879 let opNewValue = 0;
4880 }
4881 def J2_call : HInst<
4882 (outs),
4883 (ins a30_2Imm:$Ii),
4884 "call $Ii",
4885 tc_44fffc58, TypeJ>, Enc_81ac1d, PredRel {
4886 let Inst{0-0} = 0b0;
4887 let Inst{31-25} = 0b0101101;
4888 let isCall = 1;
4889 let prefersSlot3 = 1;
4890 let cofRelax2 = 1;
4891 let cofMax1 = 1;
4892 let Uses = [R29];
4893 let Defs = [PC, R31];
4894 let BaseOpcode = "J2_call";
4895 let isPredicable = 1;
4896 let hasSideEffects = 1;
4897 let isExtendable = 1;
4898 let opExtendable = 0;
4899 let isExtentSigned = 1;
4900 let opExtentBits = 24;
4901 let opExtentAlign = 2;
4902 }
4903 def J2_callf : HInst<
4904 (outs),
4905 (ins PredRegs:$Pu4, a30_2Imm:$Ii),
4906 "if (!$Pu4) call $Ii",
4907 tc_69bfb303, TypeJ>, Enc_daea09, PredRel {
4908 let Inst{0-0} = 0b0;
4909 let Inst{12-10} = 0b000;
4910 let Inst{21-21} = 0b1;
4911 let Inst{31-24} = 0b01011101;
4912 let isPredicated = 1;
4913 let isPredicatedFalse = 1;
4914 let isCall = 1;
4915 let prefersSlot3 = 1;
4916 let cofRelax1 = 1;
4917 let cofRelax2 = 1;
4918 let cofMax1 = 1;
4919 let Uses = [R29];
4920 let Defs = [PC, R31];
4921 let BaseOpcode = "J2_call";
4922 let hasSideEffects = 1;
4923 let isTaken = Inst{12};
4924 let isExtendable = 1;
4925 let opExtendable = 1;
4926 let isExtentSigned = 1;
4927 let opExtentBits = 17;
4928 let opExtentAlign = 2;
4929 }
4930 def J2_callr : HInst<
4931 (outs),
4932 (ins IntRegs:$Rs32),
4933 "callr $Rs32",
4934 tc_362b0be2, TypeJ>, Enc_ecbcc8 {
4935 let Inst{13-0} = 0b00000000000000;
4936 let Inst{31-21} = 0b01010000101;
4937 let isCall = 1;
4938 let prefersSlot3 = 1;
4939 let cofMax1 = 1;
4940 let Uses = [R29];
4941 let Defs = [PC, R31];
4942 let hasSideEffects = 1;
4943 }
4944 def J2_callrf : HInst<
4945 (outs),
4946 (ins PredRegs:$Pu4, IntRegs:$Rs32),
4947 "if (!$Pu4) callr $Rs32",
4948 tc_dc51281d, TypeJ>, Enc_88d4d9 {
4949 let Inst{7-0} = 0b00000000;
4950 let Inst{13-10} = 0b0000;
4951 let Inst{31-21} = 0b01010001001;
4952 let isPredicated = 1;
4953 let isPredicatedFalse = 1;
4954 let isCall = 1;
4955 let prefersSlot3 = 1;
4956 let cofMax1 = 1;
4957 let Uses = [R29];
4958 let Defs = [PC, R31];
4959 let hasSideEffects = 1;
4960 let isTaken = Inst{12};
4961 }
4962 def J2_callrt : HInst<
4963 (outs),
4964 (ins PredRegs:$Pu4, IntRegs:$Rs32),
4965 "if ($Pu4) callr $Rs32",
4966 tc_dc51281d, TypeJ>, Enc_88d4d9 {
4967 let Inst{7-0} = 0b00000000;
4968 let Inst{13-10} = 0b0000;
4969 let Inst{31-21} = 0b01010001000;
4970 let isPredicated = 1;
4971 let isCall = 1;
4972 let prefersSlot3 = 1;
4973 let cofMax1 = 1;
4974 let Uses = [R29];
4975 let Defs = [PC, R31];
4976 let hasSideEffects = 1;
4977 let isTaken = Inst{12};
4978 }
4979 def J2_callt : HInst<
4980 (outs),
4981 (ins PredRegs:$Pu4, a30_2Imm:$Ii),
4982 "if ($Pu4) call $Ii",
4983 tc_69bfb303, TypeJ>, Enc_daea09, PredRel {
4984 let Inst{0-0} = 0b0;
4985 let Inst{12-10} = 0b000;
4986 let Inst{21-21} = 0b0;
4987 let Inst{31-24} = 0b01011101;
4988 let isPredicated = 1;
4989 let isCall = 1;
4990 let prefersSlot3 = 1;
4991 let cofRelax1 = 1;
4992 let cofRelax2 = 1;
4993 let cofMax1 = 1;
4994 let Uses = [R29];
4995 let Defs = [PC, R31];
4996 let BaseOpcode = "J2_call";
4997 let hasSideEffects = 1;
4998 let isTaken = Inst{12};
4999 let isExtendable = 1;
5000 let opExtendable = 1;
5001 let isExtentSigned = 1;
5002 let opExtentBits = 17;
5003 let opExtentAlign = 2;
5004 }
5005 def J2_endloop0 : HInst<
5006 (outs),
5007 (ins),
5008 "endloop0",
5009 tc_23708a21, TypeJ> {
5010 let Uses = [LC0, SA0];
5011 let Defs = [LC0, P3, PC, USR];
5012 let isBranch = 1;
5013 let isTerminator = 1;
5014 let isPseudo = 1;
5015 }
5016 def J2_endloop01 : HInst<
5017 (outs),
5018 (ins),
5019 "endloop01",
5020 tc_23708a21, TypeJ> {
5021 let Uses = [LC0, LC1, SA0, SA1];
5022 let Defs = [LC0, LC1, P3, PC, USR];
5023 let isPseudo = 1;
5024 }
5025 def J2_endloop1 : HInst<
5026 (outs),
5027 (ins),
5028 "endloop1",
5029 tc_23708a21, TypeJ> {
5030 let Uses = [LC1, SA1];
5031 let Defs = [LC1, PC];
5032 let isBranch = 1;
5033 let isTerminator = 1;
5034 let isPseudo = 1;
5035 }
5036 def J2_jump : HInst<
5037 (outs),
5038 (ins b30_2Imm:$Ii),
5039 "jump $Ii",
5040 tc_decdde8a, TypeJ>, Enc_81ac1d, PredNewRel {
5041 let Inst{0-0} = 0b0;
5042 let Inst{31-25} = 0b0101100;
5043 let isTerminator = 1;
5044 let isBranch = 1;
5045 let cofRelax2 = 1;
5046 let cofMax1 = 1;
5047 let Defs = [PC];
5048 let BaseOpcode = "J2_jump";
5049 let InputType = "imm";
5050 let isBarrier = 1;
5051 let isPredicable = 1;
5052 let isExtendable = 1;
5053 let opExtendable = 0;
5054 let isExtentSigned = 1;
5055 let opExtentBits = 24;
5056 let opExtentAlign = 2;
5057 }
5058 def J2_jumpf : HInst<
5059 (outs),
5060 (ins PredRegs:$Pu4, b30_2Imm:$Ii),
5061 "if (!$Pu4) jump:nt $Ii",
5062 tc_56a124a7, TypeJ>, Enc_daea09, PredNewRel {
5063 let Inst{0-0} = 0b0;
5064 let Inst{12-10} = 0b000;
5065 let Inst{21-21} = 0b1;
5066 let Inst{31-24} = 0b01011100;
5067 let isPredicated = 1;
5068 let isPredicatedFalse = 1;
5069 let isTerminator = 1;
5070 let isBranch = 1;
5071 let cofRelax1 = 1;
5072 let cofRelax2 = 1;
5073 let cofMax1 = 1;
5074 let Defs = [PC];
5075 let BaseOpcode = "J2_jump";
5076 let InputType = "imm";
5077 let isTaken = Inst{12};
5078 let isExtendable = 1;
5079 let opExtendable = 1;
5080 let isExtentSigned = 1;
5081 let opExtentBits = 17;
5082 let opExtentAlign = 2;
5083 }
5084 def J2_jumpf_nopred_map : HInst<
5085 (outs),
5086 (ins PredRegs:$Pu4, b15_2Imm:$Ii),
5087 "if (!$Pu4) jump $Ii",
5088 tc_56a124a7, TypeMAPPING>, Requires<[HasV60]> {
5089 let isPseudo = 1;
5090 let isCodeGenOnly = 1;
5091 }
5092 def J2_jumpfnew : HInst<
5093 (outs),
5094 (ins PredRegs:$Pu4, b30_2Imm:$Ii),
5095 "if (!$Pu4.new) jump:nt $Ii",
5096 tc_eeda4109, TypeJ>, Enc_daea09, PredNewRel {
5097 let Inst{0-0} = 0b0;
5098 let Inst{12-10} = 0b010;
5099 let Inst{21-21} = 0b1;
5100 let Inst{31-24} = 0b01011100;
5101 let isPredicated = 1;
5102 let isPredicatedFalse = 1;
5103 let isTerminator = 1;
5104 let isBranch = 1;
5105 let isPredicatedNew = 1;
5106 let cofRelax1 = 1;
5107 let cofRelax2 = 1;
5108 let cofMax1 = 1;
5109 let Defs = [PC];
5110 let BaseOpcode = "J2_jump";
5111 let InputType = "imm";
5112 let isTaken = Inst{12};
5113 let isExtendable = 1;
5114 let opExtendable = 1;
5115 let isExtentSigned = 1;
5116 let opExtentBits = 17;
5117 let opExtentAlign = 2;
5118 }
5119 def J2_jumpfnewpt : HInst<
5120 (outs),
5121 (ins PredRegs:$Pu4, b30_2Imm:$Ii),
5122 "if (!$Pu4.new) jump:t $Ii",
5123 tc_eeda4109, TypeJ>, Enc_daea09, PredNewRel {
5124 let Inst{0-0} = 0b0;
5125 let Inst{12-10} = 0b110;
5126 let Inst{21-21} = 0b1;
5127 let Inst{31-24} = 0b01011100;
5128 let isPredicated = 1;
5129 let isPredicatedFalse = 1;
5130 let isTerminator = 1;
5131 let isBranch = 1;
5132 let isPredicatedNew = 1;
5133 let cofRelax1 = 1;
5134 let cofRelax2 = 1;
5135 let cofMax1 = 1;
5136 let Defs = [PC];
5137 let BaseOpcode = "J2_jump";
5138 let InputType = "imm";
5139 let isTaken = Inst{12};
5140 let isExtendable = 1;
5141 let opExtendable = 1;
5142 let isExtentSigned = 1;
5143 let opExtentBits = 17;
5144 let opExtentAlign = 2;
5145 }
5146 def J2_jumpfpt : HInst<
5147 (outs),
5148 (ins PredRegs:$Pu4, b30_2Imm:$Ii),
5149 "if (!$Pu4) jump:t $Ii",
5150 tc_711c805f, TypeJ>, Enc_daea09, Requires<[HasV60]>, PredNewRel {
5151 let Inst{0-0} = 0b0;
5152 let Inst{12-10} = 0b100;
5153 let Inst{21-21} = 0b1;
5154 let Inst{31-24} = 0b01011100;
5155 let isPredicated = 1;
5156 let isPredicatedFalse = 1;
5157 let isTerminator = 1;
5158 let isBranch = 1;
5159 let cofRelax1 = 1;
5160 let cofRelax2 = 1;
5161 let cofMax1 = 1;
5162 let Defs = [PC];
5163 let BaseOpcode = "J2_jump";
5164 let InputType = "imm";
5165 let isTaken = Inst{12};
5166 let isExtendable = 1;
5167 let opExtendable = 1;
5168 let isExtentSigned = 1;
5169 let opExtentBits = 17;
5170 let opExtentAlign = 2;
5171 }
5172 def J2_jumpr : HInst<
5173 (outs),
5174 (ins IntRegs:$Rs32),
5175 "jumpr $Rs32",
5176 tc_60e324ff, TypeJ>, Enc_ecbcc8, PredNewRel {
5177 let Inst{13-0} = 0b00000000000000;
5178 let Inst{31-21} = 0b01010010100;
5179 let isTerminator = 1;
5180 let isIndirectBranch = 1;
5181 let isBranch = 1;
5182 let cofMax1 = 1;
5183 let Defs = [PC];
5184 let BaseOpcode = "J2_jumpr";
5185 let InputType = "reg";
5186 let isBarrier = 1;
5187 let isPredicable = 1;
5188 }
5189 def J2_jumprf : HInst<
5190 (outs),
5191 (ins PredRegs:$Pu4, IntRegs:$Rs32),
5192 "if (!$Pu4) jumpr:nt $Rs32",
5193 tc_2f573607, TypeJ>, Enc_88d4d9, PredNewRel {
5194 let Inst{7-0} = 0b00000000;
5195 let Inst{13-10} = 0b0000;
5196 let Inst{31-21} = 0b01010011011;
5197 let isPredicated = 1;
5198 let isPredicatedFalse = 1;
5199 let isTerminator = 1;
5200 let isIndirectBranch = 1;
5201 let isBranch = 1;
5202 let cofMax1 = 1;
5203 let Defs = [PC];
5204 let BaseOpcode = "J2_jumpr";
5205 let InputType = "reg";
5206 let isTaken = Inst{12};
5207 }
5208 def J2_jumprf_nopred_map : HInst<
5209 (outs),
5210 (ins PredRegs:$Pu4, IntRegs:$Rs32),
5211 "if (!$Pu4) jumpr $Rs32",
5212 tc_2f573607, TypeMAPPING>, Requires<[HasV60]> {
5213 let isPseudo = 1;
5214 let isCodeGenOnly = 1;
5215 }
5216 def J2_jumprfnew : HInst<
5217 (outs),
5218 (ins PredRegs:$Pu4, IntRegs:$Rs32),
5219 "if (!$Pu4.new) jumpr:nt $Rs32",
5220 tc_ed03645c, TypeJ>, Enc_88d4d9, PredNewRel {
5221 let Inst{7-0} = 0b00000000;
5222 let Inst{13-10} = 0b0010;
5223 let Inst{31-21} = 0b01010011011;
5224 let isPredicated = 1;
5225 let isPredicatedFalse = 1;
5226 let isTerminator = 1;
5227 let isIndirectBranch = 1;
5228 let isBranch = 1;
5229 let isPredicatedNew = 1;
5230 let cofMax1 = 1;
5231 let Defs = [PC];
5232 let BaseOpcode = "J2_jumpr";
5233 let InputType = "reg";
5234 let isTaken = Inst{12};
5235 }
5236 def J2_jumprfnewpt : HInst<
5237 (outs),
5238 (ins PredRegs:$Pu4, IntRegs:$Rs32),
5239 "if (!$Pu4.new) jumpr:t $Rs32",
5240 tc_ed03645c, TypeJ>, Enc_88d4d9, PredNewRel {
5241 let Inst{7-0} = 0b00000000;
5242 let Inst{13-10} = 0b0110;
5243 let Inst{31-21} = 0b01010011011;
5244 let isPredicated = 1;
5245 let isPredicatedFalse = 1;
5246 let isTerminator = 1;
5247 let isIndirectBranch = 1;
5248 let isBranch = 1;
5249 let isPredicatedNew = 1;
5250 let cofMax1 = 1;
5251 let Defs = [PC];
5252 let BaseOpcode = "J2_jumpr";
5253 let InputType = "reg";
5254 let isTaken = Inst{12};
5255 }
5256 def J2_jumprfpt : HInst<
5257 (outs),
5258 (ins PredRegs:$Pu4, IntRegs:$Rs32),
5259 "if (!$Pu4) jumpr:t $Rs32",
5260 tc_42ff66ba, TypeJ>, Enc_88d4d9, Requires<[HasV60]>, PredNewRel {
5261 let Inst{7-0} = 0b00000000;
5262 let Inst{13-10} = 0b0100;
5263 let Inst{31-21} = 0b01010011011;
5264 let isPredicated = 1;
5265 let isPredicatedFalse = 1;
5266 let isTerminator = 1;
5267 let isIndirectBranch = 1;
5268 let isBranch = 1;
5269 let cofMax1 = 1;
5270 let Defs = [PC];
5271 let BaseOpcode = "J2_jumpr";
5272 let InputType = "reg";
5273 let isTaken = Inst{12};
5274 }
5275 def J2_jumprgtez : HInst<
5276 (outs),
5277 (ins IntRegs:$Rs32, b13_2Imm:$Ii),
5278 "if ($Rs32>=#0) jump:nt $Ii",
5279 tc_57a55b54, TypeCR>, Enc_0fa531 {
5280 let Inst{0-0} = 0b0;
5281 let Inst{12-12} = 0b0;
5282 let Inst{31-22} = 0b0110000101;
5283 let isPredicated = 1;
5284 let isTerminator = 1;
5285 let isBranch = 1;
5286 let isPredicatedNew = 1;
5287 let cofRelax1 = 1;
5288 let cofRelax2 = 1;
5289 let cofMax1 = 1;
5290 let Defs = [PC];
5291 let isTaken = Inst{12};
5292 }
5293 def J2_jumprgtezpt : HInst<
5294 (outs),
5295 (ins IntRegs:$Rs32, b13_2Imm:$Ii),
5296 "if ($Rs32>=#0) jump:t $Ii",
5297 tc_57a55b54, TypeCR>, Enc_0fa531 {
5298 let Inst{0-0} = 0b0;
5299 let Inst{12-12} = 0b1;
5300 let Inst{31-22} = 0b0110000101;
5301 let isPredicated = 1;
5302 let isTerminator = 1;
5303 let isBranch = 1;
5304 let isPredicatedNew = 1;
5305 let cofRelax1 = 1;
5306 let cofRelax2 = 1;
5307 let cofMax1 = 1;
5308 let Defs = [PC];
5309 let isTaken = Inst{12};
5310 }
5311 def J2_jumprltez : HInst<
5312 (outs),
5313 (ins IntRegs:$Rs32, b13_2Imm:$Ii),
5314 "if ($Rs32<=#0) jump:nt $Ii",
5315 tc_57a55b54, TypeCR>, Enc_0fa531 {
5316 let Inst{0-0} = 0b0;
5317 let Inst{12-12} = 0b0;
5318 let Inst{31-22} = 0b0110000111;
5319 let isPredicated = 1;
5320 let isTerminator = 1;
5321 let isBranch = 1;
5322 let isPredicatedNew = 1;
5323 let cofRelax1 = 1;
5324 let cofRelax2 = 1;
5325 let cofMax1 = 1;
5326 let Defs = [PC];
5327 let isTaken = Inst{12};
5328 }
5329 def J2_jumprltezpt : HInst<
5330 (outs),
5331 (ins IntRegs:$Rs32, b13_2Imm:$Ii),
5332 "if ($Rs32<=#0) jump:t $Ii",
5333 tc_57a55b54, TypeCR>, Enc_0fa531 {
5334 let Inst{0-0} = 0b0;
5335 let Inst{12-12} = 0b1;
5336 let Inst{31-22} = 0b0110000111;
5337 let isPredicated = 1;
5338 let isTerminator = 1;
5339 let isBranch = 1;
5340 let isPredicatedNew = 1;
5341 let cofRelax1 = 1;
5342 let cofRelax2 = 1;
5343 let cofMax1 = 1;
5344 let Defs = [PC];
5345 let isTaken = Inst{12};
5346 }
5347 def J2_jumprnz : HInst<
5348 (outs),
5349 (ins IntRegs:$Rs32, b13_2Imm:$Ii),
5350 "if ($Rs32==#0) jump:nt $Ii",
5351 tc_57a55b54, TypeCR>, Enc_0fa531 {
5352 let Inst{0-0} = 0b0;
5353 let Inst{12-12} = 0b0;
5354 let Inst{31-22} = 0b0110000110;
5355 let isPredicated = 1;
5356 let isTerminator = 1;
5357 let isBranch = 1;
5358 let isPredicatedNew = 1;
5359 let cofRelax1 = 1;
5360 let cofRelax2 = 1;
5361 let cofMax1 = 1;
5362 let Defs = [PC];
5363 let isTaken = Inst{12};
5364 }
5365 def J2_jumprnzpt : HInst<
5366 (outs),
5367 (ins IntRegs:$Rs32, b13_2Imm:$Ii),
5368 "if ($Rs32==#0) jump:t $Ii",
5369 tc_57a55b54, TypeCR>, Enc_0fa531 {
5370 let Inst{0-0} = 0b0;
5371 let Inst{12-12} = 0b1;
5372 let Inst{31-22} = 0b0110000110;
5373 let isPredicated = 1;
5374 let isTerminator = 1;
5375 let isBranch = 1;
5376 let isPredicatedNew = 1;
5377 let cofRelax1 = 1;
5378 let cofRelax2 = 1;
5379 let cofMax1 = 1;
5380 let Defs = [PC];
5381 let isTaken = Inst{12};
5382 }
5383 def J2_jumprt : HInst<
5384 (outs),
5385 (ins PredRegs:$Pu4, IntRegs:$Rs32),
5386 "if ($Pu4) jumpr:nt $Rs32",
5387 tc_2f573607, TypeJ>, Enc_88d4d9, PredNewRel {
5388 let Inst{7-0} = 0b00000000;
5389 let Inst{13-10} = 0b0000;
5390 let Inst{31-21} = 0b01010011010;
5391 let isPredicated = 1;
5392 let isTerminator = 1;
5393 let isIndirectBranch = 1;
5394 let isBranch = 1;
5395 let cofMax1 = 1;
5396 let Defs = [PC];
5397 let BaseOpcode = "J2_jumpr";
5398 let InputType = "reg";
5399 let isTaken = Inst{12};
5400 }
5401 def J2_jumprt_nopred_map : HInst<
5402 (outs),
5403 (ins PredRegs:$Pu4, IntRegs:$Rs32),
5404 "if ($Pu4) jumpr $Rs32",
5405 tc_2f573607, TypeMAPPING>, Requires<[HasV60]> {
5406 let isPseudo = 1;
5407 let isCodeGenOnly = 1;
5408 }
5409 def J2_jumprtnew : HInst<
5410 (outs),
5411 (ins PredRegs:$Pu4, IntRegs:$Rs32),
5412 "if ($Pu4.new) jumpr:nt $Rs32",
5413 tc_ed03645c, TypeJ>, Enc_88d4d9, PredNewRel {
5414 let Inst{7-0} = 0b00000000;
5415 let Inst{13-10} = 0b0010;
5416 let Inst{31-21} = 0b01010011010;
5417 let isPredicated = 1;
5418 let isTerminator = 1;
5419 let isIndirectBranch = 1;
5420 let isBranch = 1;
5421 let isPredicatedNew = 1;
5422 let cofMax1 = 1;
5423 let Defs = [PC];
5424 let BaseOpcode = "J2_jumpr";
5425 let InputType = "reg";
5426 let isTaken = Inst{12};
5427 }
5428 def J2_jumprtnewpt : HInst<
5429 (outs),
5430 (ins PredRegs:$Pu4, IntRegs:$Rs32),
5431 "if ($Pu4.new) jumpr:t $Rs32",
5432 tc_ed03645c, TypeJ>, Enc_88d4d9, PredNewRel {
5433 let Inst{7-0} = 0b00000000;
5434 let Inst{13-10} = 0b0110;
5435 let Inst{31-21} = 0b01010011010;
5436 let isPredicated = 1;
5437 let isTerminator = 1;
5438 let isIndirectBranch = 1;
5439 let isBranch = 1;
5440 let isPredicatedNew = 1;
5441 let cofMax1 = 1;
5442 let Defs = [PC];
5443 let BaseOpcode = "J2_jumpr";
5444 let InputType = "reg";
5445 let isTaken = Inst{12};
5446 }
5447 def J2_jumprtpt : HInst<
5448 (outs),
5449 (ins PredRegs:$Pu4, IntRegs:$Rs32),
5450 "if ($Pu4) jumpr:t $Rs32",
5451 tc_42ff66ba, TypeJ>, Enc_88d4d9, Requires<[HasV60]>, PredNewRel {
5452 let Inst{7-0} = 0b00000000;
5453 let Inst{13-10} = 0b0100;
5454 let Inst{31-21} = 0b01010011010;
5455 let isPredicated = 1;
5456 let isTerminator = 1;
5457 let isIndirectBranch = 1;
5458 let isBranch = 1;
5459 let cofMax1 = 1;
5460 let Defs = [PC];
5461 let BaseOpcode = "J2_jumpr";
5462 let InputType = "reg";
5463 let isTaken = Inst{12};
5464 }
5465 def J2_jumprz : HInst<
5466 (outs),
5467 (ins IntRegs:$Rs32, b13_2Imm:$Ii),
5468 "if ($Rs32!=#0) jump:nt $Ii",
5469 tc_57a55b54, TypeCR>, Enc_0fa531 {
5470 let Inst{0-0} = 0b0;
5471 let Inst{12-12} = 0b0;
5472 let Inst{31-22} = 0b0110000100;
5473 let isPredicated = 1;
5474 let isTerminator = 1;
5475 let isBranch = 1;
5476 let isPredicatedNew = 1;
5477 let cofRelax1 = 1;
5478 let cofRelax2 = 1;
5479 let cofMax1 = 1;
5480 let Defs = [PC];
5481 let isTaken = Inst{12};
5482 }
5483 def J2_jumprzpt : HInst<
5484 (outs),
5485 (ins IntRegs:$Rs32, b13_2Imm:$Ii),
5486 "if ($Rs32!=#0) jump:t $Ii",
5487 tc_57a55b54, TypeCR>, Enc_0fa531 {
5488 let Inst{0-0} = 0b0;
5489 let Inst{12-12} = 0b1;
5490 let Inst{31-22} = 0b0110000100;
5491 let isPredicated = 1;
5492 let isTerminator = 1;
5493 let isBranch = 1;
5494 let isPredicatedNew = 1;
5495 let cofRelax1 = 1;
5496 let cofRelax2 = 1;
5497 let cofMax1 = 1;
5498 let Defs = [PC];
5499 let isTaken = Inst{12};
5500 }
5501 def J2_jumpt : HInst<
5502 (outs),
5503 (ins PredRegs:$Pu4, b30_2Imm:$Ii),
5504 "if ($Pu4) jump:nt $Ii",
5505 tc_56a124a7, TypeJ>, Enc_daea09, PredNewRel {
5506 let Inst{0-0} = 0b0;
5507 let Inst{12-10} = 0b000;
5508 let Inst{21-21} = 0b0;
5509 let Inst{31-24} = 0b01011100;
5510 let isPredicated = 1;
5511 let isTerminator = 1;
5512 let isBranch = 1;
5513 let cofRelax1 = 1;
5514 let cofRelax2 = 1;
5515 let cofMax1 = 1;
5516 let Defs = [PC];
5517 let BaseOpcode = "J2_jump";
5518 let InputType = "imm";
5519 let isTaken = Inst{12};
5520 let isExtendable = 1;
5521 let opExtendable = 1;
5522 let isExtentSigned = 1;
5523 let opExtentBits = 17;
5524 let opExtentAlign = 2;
5525 }
5526 def J2_jumpt_nopred_map : HInst<
5527 (outs),
5528 (ins PredRegs:$Pu4, b15_2Imm:$Ii),
5529 "if ($Pu4) jump $Ii",
5530 tc_56a124a7, TypeMAPPING>, Requires<[HasV60]> {
5531 let isPseudo = 1;
5532 let isCodeGenOnly = 1;
5533 }
5534 def J2_jumptnew : HInst<
5535 (outs),
5536 (ins PredRegs:$Pu4, b30_2Imm:$Ii),
5537 "if ($Pu4.new) jump:nt $Ii",
5538 tc_eeda4109, TypeJ>, Enc_daea09, PredNewRel {
5539 let Inst{0-0} = 0b0;
5540 let Inst{12-10} = 0b010;
5541 let Inst{21-21} = 0b0;
5542 let Inst{31-24} = 0b01011100;
5543 let isPredicated = 1;
5544 let isTerminator = 1;
5545 let isBranch = 1;
5546 let isPredicatedNew = 1;
5547 let cofRelax1 = 1;
5548 let cofRelax2 = 1;
5549 let cofMax1 = 1;
5550 let Defs = [PC];
5551 let BaseOpcode = "J2_jump";
5552 let InputType = "imm";
5553 let isTaken = Inst{12};
5554 let isExtendable = 1;
5555 let opExtendable = 1;
5556 let isExtentSigned = 1;
5557 let opExtentBits = 17;
5558 let opExtentAlign = 2;
5559 }
5560 def J2_jumptnewpt : HInst<
5561 (outs),
5562 (ins PredRegs:$Pu4, b30_2Imm:$Ii),
5563 "if ($Pu4.new) jump:t $Ii",
5564 tc_eeda4109, TypeJ>, Enc_daea09, PredNewRel {
5565 let Inst{0-0} = 0b0;
5566 let Inst{12-10} = 0b110;
5567 let Inst{21-21} = 0b0;
5568 let Inst{31-24} = 0b01011100;
5569 let isPredicated = 1;
5570 let isTerminator = 1;
5571 let isBranch = 1;
5572 let isPredicatedNew = 1;
5573 let cofRelax1 = 1;
5574 let cofRelax2 = 1;
5575 let cofMax1 = 1;
5576 let Defs = [PC];
5577 let BaseOpcode = "J2_jump";
5578 let InputType = "imm";
5579 let isTaken = Inst{12};
5580 let isExtendable = 1;
5581 let opExtendable = 1;
5582 let isExtentSigned = 1;
5583 let opExtentBits = 17;
5584 let opExtentAlign = 2;
5585 }
5586 def J2_jumptpt : HInst<
5587 (outs),
5588 (ins PredRegs:$Pu4, b30_2Imm:$Ii),
5589 "if ($Pu4) jump:t $Ii",
5590 tc_711c805f, TypeJ>, Enc_daea09, Requires<[HasV60]>, PredNewRel {
5591 let Inst{0-0} = 0b0;
5592 let Inst{12-10} = 0b100;
5593 let Inst{21-21} = 0b0;
5594 let Inst{31-24} = 0b01011100;
5595 let isPredicated = 1;
5596 let isTerminator = 1;
5597 let isBranch = 1;
5598 let cofRelax1 = 1;
5599 let cofRelax2 = 1;
5600 let cofMax1 = 1;
5601 let Defs = [PC];
5602 let BaseOpcode = "J2_jump";
5603 let InputType = "imm";
5604 let isTaken = Inst{12};
5605 let isExtendable = 1;
5606 let opExtendable = 1;
5607 let isExtentSigned = 1;
5608 let opExtentBits = 17;
5609 let opExtentAlign = 2;
5610 }
5611 def J2_loop0i : HInst<
5612 (outs),
5613 (ins b30_2Imm:$Ii, u10_0Imm:$II),
5614 "loop0($Ii,#$II)",
5615 tc_1248597c, TypeCR>, Enc_4dc228 {
5616 let Inst{2-2} = 0b0;
5617 let Inst{13-13} = 0b0;
5618 let Inst{31-21} = 0b01101001000;
5619 let cofRelax1 = 1;
5620 let cofRelax2 = 1;
5621 let Defs = [LC0, SA0, USR];
5622 let isExtendable = 1;
5623 let opExtendable = 0;
5624 let isExtentSigned = 1;
5625 let opExtentBits = 9;
5626 let opExtentAlign = 2;
5627 }
5628 def J2_loop0r : HInst<
5629 (outs),
5630 (ins b30_2Imm:$Ii, IntRegs:$Rs32),
5631 "loop0($Ii,$Rs32)",
5632 tc_9406230a, TypeCR>, Enc_864a5a {
5633 let Inst{2-0} = 0b000;
5634 let Inst{7-5} = 0b000;
5635 let Inst{13-13} = 0b0;
5636 let Inst{31-21} = 0b01100000000;
5637 let cofRelax1 = 1;
5638 let cofRelax2 = 1;
5639 let Defs = [LC0, SA0, USR];
5640 let isExtendable = 1;
5641 let opExtendable = 0;
5642 let isExtentSigned = 1;
5643 let opExtentBits = 9;
5644 let opExtentAlign = 2;
5645 }
5646 def J2_loop1i : HInst<
5647 (outs),
5648 (ins b30_2Imm:$Ii, u10_0Imm:$II),
5649 "loop1($Ii,#$II)",
5650 tc_1248597c, TypeCR>, Enc_4dc228 {
5651 let Inst{2-2} = 0b0;
5652 let Inst{13-13} = 0b0;
5653 let Inst{31-21} = 0b01101001001;
5654 let cofRelax1 = 1;
5655 let cofRelax2 = 1;
5656 let Defs = [LC1, SA1];
5657 let isExtendable = 1;
5658 let opExtendable = 0;
5659 let isExtentSigned = 1;
5660 let opExtentBits = 9;
5661 let opExtentAlign = 2;
5662 }
5663 def J2_loop1r : HInst<
5664 (outs),
5665 (ins b30_2Imm:$Ii, IntRegs:$Rs32),
5666 "loop1($Ii,$Rs32)",
5667 tc_9406230a, TypeCR>, Enc_864a5a {
5668 let Inst{2-0} = 0b000;
5669 let Inst{7-5} = 0b000;
5670 let Inst{13-13} = 0b0;
5671 let Inst{31-21} = 0b01100000001;
5672 let cofRelax1 = 1;
5673 let cofRelax2 = 1;
5674 let Defs = [LC1, SA1];
5675 let isExtendable = 1;
5676 let opExtendable = 0;
5677 let isExtentSigned = 1;
5678 let opExtentBits = 9;
5679 let opExtentAlign = 2;
5680 }
5681 def J2_pause : HInst<
5682 (outs),
5683 (ins u8_0Imm:$Ii),
5684 "pause(#$Ii)",
5685 tc_d57d649c, TypeJ>, Enc_a51a9a {
5686 let Inst{1-0} = 0b00;
5687 let Inst{7-5} = 0b000;
5688 let Inst{13-13} = 0b0;
5689 let Inst{31-16} = 0b0101010001000000;
5690 let isSolo = 1;
5691 }
5692 def J2_ploop1si : HInst<
5693 (outs),
5694 (ins b30_2Imm:$Ii, u10_0Imm:$II),
5695 "p3 = sp1loop0($Ii,#$II)",
5696 tc_4abdbdc6, TypeCR>, Enc_4dc228 {
5697 let Inst{2-2} = 0b0;
5698 let Inst{13-13} = 0b0;
5699 let Inst{31-21} = 0b01101001101;
5700 let isPredicateLate = 1;
5701 let cofRelax1 = 1;
5702 let cofRelax2 = 1;
5703 let Defs = [LC0, P3, SA0, USR];
5704 let isExtendable = 1;
5705 let opExtendable = 0;
5706 let isExtentSigned = 1;
5707 let opExtentBits = 9;
5708 let opExtentAlign = 2;
5709 }
5710 def J2_ploop1sr : HInst<
5711 (outs),
5712 (ins b30_2Imm:$Ii, IntRegs:$Rs32),
5713 "p3 = sp1loop0($Ii,$Rs32)",
5714 tc_6d861a95, TypeCR>, Enc_864a5a {
5715 let Inst{2-0} = 0b000;
5716 let Inst{7-5} = 0b000;
5717 let Inst{13-13} = 0b0;
5718 let Inst{31-21} = 0b01100000101;
5719 let isPredicateLate = 1;
5720 let cofRelax1 = 1;
5721 let cofRelax2 = 1;
5722 let Defs = [LC0, P3, SA0, USR];
5723 let isExtendable = 1;
5724 let opExtendable = 0;
5725 let isExtentSigned = 1;
5726 let opExtentBits = 9;
5727 let opExtentAlign = 2;
5728 }
5729 def J2_ploop2si : HInst<
5730 (outs),
5731 (ins b30_2Imm:$Ii, u10_0Imm:$II),
5732 "p3 = sp2loop0($Ii,#$II)",
5733 tc_4abdbdc6, TypeCR>, Enc_4dc228 {
5734 let Inst{2-2} = 0b0;
5735 let Inst{13-13} = 0b0;
5736 let Inst{31-21} = 0b01101001110;
5737 let isPredicateLate = 1;
5738 let cofRelax1 = 1;
5739 let cofRelax2 = 1;
5740 let Defs = [LC0, P3, SA0, USR];
5741 let isExtendable = 1;
5742 let opExtendable = 0;
5743 let isExtentSigned = 1;
5744 let opExtentBits = 9;
5745 let opExtentAlign = 2;
5746 }
5747 def J2_ploop2sr : HInst<
5748 (outs),
5749 (ins b30_2Imm:$Ii, IntRegs:$Rs32),
5750 "p3 = sp2loop0($Ii,$Rs32)",
5751 tc_6d861a95, TypeCR>, Enc_864a5a {
5752 let Inst{2-0} = 0b000;
5753 let Inst{7-5} = 0b000;
5754 let Inst{13-13} = 0b0;
5755 let Inst{31-21} = 0b01100000110;
5756 let isPredicateLate = 1;
5757 let cofRelax1 = 1;
5758 let cofRelax2 = 1;
5759 let Defs = [LC0, P3, SA0, USR];
5760 let isExtendable = 1;
5761 let opExtendable = 0;
5762 let isExtentSigned = 1;
5763 let opExtentBits = 9;
5764 let opExtentAlign = 2;
5765 }
5766 def J2_ploop3si : HInst<
5767 (outs),
5768 (ins b30_2Imm:$Ii, u10_0Imm:$II),
5769 "p3 = sp3loop0($Ii,#$II)",
5770 tc_4abdbdc6, TypeCR>, Enc_4dc228 {
5771 let Inst{2-2} = 0b0;
5772 let Inst{13-13} = 0b0;
5773 let Inst{31-21} = 0b01101001111;
5774 let isPredicateLate = 1;
5775 let cofRelax1 = 1;
5776 let cofRelax2 = 1;
5777 let Defs = [LC0, P3, SA0, USR];
5778 let isExtendable = 1;
5779 let opExtendable = 0;
5780 let isExtentSigned = 1;
5781 let opExtentBits = 9;
5782 let opExtentAlign = 2;
5783 }
5784 def J2_ploop3sr : HInst<
5785 (outs),
5786 (ins b30_2Imm:$Ii, IntRegs:$Rs32),
5787 "p3 = sp3loop0($Ii,$Rs32)",
5788 tc_6d861a95, TypeCR>, Enc_864a5a {
5789 let Inst{2-0} = 0b000;
5790 let Inst{7-5} = 0b000;
5791 let Inst{13-13} = 0b0;
5792 let Inst{31-21} = 0b01100000111;
5793 let isPredicateLate = 1;
5794 let cofRelax1 = 1;
5795 let cofRelax2 = 1;
5796 let Defs = [LC0, P3, SA0, USR];
5797 let isExtendable = 1;
5798 let opExtendable = 0;
5799 let isExtentSigned = 1;
5800 let opExtentBits = 9;
5801 let opExtentAlign = 2;
5802 }
5803 def J2_trap0 : HInst<
5804 (outs),
5805 (ins u8_0Imm:$Ii),
5806 "trap0(#$Ii)",
5807 tc_45f9d1be, TypeJ>, Enc_a51a9a {
5808 let Inst{1-0} = 0b00;
5809 let Inst{7-5} = 0b000;
5810 let Inst{13-13} = 0b0;
5811 let Inst{31-16} = 0b0101010000000000;
5812 let isSolo = 1;
5813 let hasSideEffects = 1;
5814 }
5815 def J2_trap1 : HInst<
5816 (outs IntRegs:$Rx32),
5817 (ins IntRegs:$Rx32in, u8_0Imm:$Ii),
5818 "trap1($Rx32,#$Ii)",
5819 tc_53c851ab, TypeJ>, Enc_33f8ba, Requires<[HasV65]> {
5820 let Inst{1-0} = 0b00;
5821 let Inst{7-5} = 0b000;
5822 let Inst{13-13} = 0b0;
5823 let Inst{31-21} = 0b01010100100;
5824 let hasNewValue = 1;
5825 let opNewValue = 0;
5826 let isSolo = 1;
5827 let Uses = [GOSP];
5828 let Defs = [GOSP, PC];
5829 let hasSideEffects = 1;
5830 let Constraints = "$Rx32 = $Rx32in";
5831 }
5832 def J2_trap1_noregmap : HInst<
5833 (outs),
5834 (ins u8_0Imm:$Ii),
5835 "trap1(#$Ii)",
5836 tc_53c851ab, TypeMAPPING>, Requires<[HasV65]> {
5837 let hasSideEffects = 1;
5838 let isPseudo = 1;
5839 let isCodeGenOnly = 1;
5840 }
5841 def J4_cmpeq_f_jumpnv_nt : HInst<
5842 (outs),
5843 (ins IntRegs:$Ns8, IntRegs:$Rt32, b30_2Imm:$Ii),
5844 "if (!cmp.eq($Ns8.new,$Rt32)) jump:nt $Ii",
5845 tc_24e109c7, TypeNCJ>, Enc_c9a18e, PredRel {
5846 let Inst{0-0} = 0b0;
5847 let Inst{13-13} = 0b0;
5848 let Inst{19-19} = 0b0;
5849 let Inst{31-22} = 0b0010000001;
5850 let isPredicated = 1;
5851 let isPredicatedFalse = 1;
5852 let isTerminator = 1;
5853 let isBranch = 1;
5854 let isNewValue = 1;
5855 let cofMax1 = 1;
5856 let isRestrictNoSlot1Store = 1;
5857 let Defs = [PC];
5858 let BaseOpcode = "J4_cmpeqr";
5859 let isTaken = Inst{13};
5860 let isExtendable = 1;
5861 let opExtendable = 2;
5862 let isExtentSigned = 1;
5863 let opExtentBits = 11;
5864 let opExtentAlign = 2;
5865 let opNewValue = 0;
5866 }
5867 def J4_cmpeq_f_jumpnv_t : HInst<
5868 (outs),
5869 (ins IntRegs:$Ns8, IntRegs:$Rt32, b30_2Imm:$Ii),
5870 "if (!cmp.eq($Ns8.new,$Rt32)) jump:t $Ii",
5871 tc_24e109c7, TypeNCJ>, Enc_c9a18e, PredRel {
5872 let Inst{0-0} = 0b0;
5873 let Inst{13-13} = 0b1;
5874 let Inst{19-19} = 0b0;
5875 let Inst{31-22} = 0b0010000001;
5876 let isPredicated = 1;
5877 let isPredicatedFalse = 1;
5878 let isTerminator = 1;
5879 let isBranch = 1;
5880 let isNewValue = 1;
5881 let cofMax1 = 1;
5882 let isRestrictNoSlot1Store = 1;
5883 let Defs = [PC];
5884 let BaseOpcode = "J4_cmpeqr";
5885 let isTaken = Inst{13};
5886 let isExtendable = 1;
5887 let opExtendable = 2;
5888 let isExtentSigned = 1;
5889 let opExtentBits = 11;
5890 let opExtentAlign = 2;
5891 let opNewValue = 0;
5892 }
5893 def J4_cmpeq_fp0_jump_nt : HInst<
5894 (outs),
5895 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
5896 "p0 = cmp.eq($Rs16,$Rt16); if (!p0.new) jump:nt $Ii",
5897 tc_9e27f2f9, TypeCJ>, Enc_6a5972, PredRel {
5898 let Inst{0-0} = 0b0;
5899 let Inst{13-12} = 0b00;
5900 let Inst{31-22} = 0b0001010001;
5901 let isPredicated = 1;
5902 let isPredicatedFalse = 1;
5903 let isTerminator = 1;
5904 let isBranch = 1;
5905 let isPredicatedNew = 1;
5906 let cofRelax1 = 1;
5907 let cofRelax2 = 1;
5908 let cofMax1 = 1;
5909 let Uses = [P0];
5910 let Defs = [P0, PC];
5911 let BaseOpcode = "J4_cmpeqp0";
5912 let isTaken = Inst{13};
5913 let isExtendable = 1;
5914 let opExtendable = 2;
5915 let isExtentSigned = 1;
5916 let opExtentBits = 11;
5917 let opExtentAlign = 2;
5918 }
5919 def J4_cmpeq_fp0_jump_t : HInst<
5920 (outs),
5921 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
5922 "p0 = cmp.eq($Rs16,$Rt16); if (!p0.new) jump:t $Ii",
5923 tc_9e27f2f9, TypeCJ>, Enc_6a5972, PredRel {
5924 let Inst{0-0} = 0b0;
5925 let Inst{13-12} = 0b10;
5926 let Inst{31-22} = 0b0001010001;
5927 let isPredicated = 1;
5928 let isPredicatedFalse = 1;
5929 let isTerminator = 1;
5930 let isBranch = 1;
5931 let isPredicatedNew = 1;
5932 let cofRelax1 = 1;
5933 let cofRelax2 = 1;
5934 let cofMax1 = 1;
5935 let Uses = [P0];
5936 let Defs = [P0, PC];
5937 let BaseOpcode = "J4_cmpeqp0";
5938 let isTaken = Inst{13};
5939 let isExtendable = 1;
5940 let opExtendable = 2;
5941 let isExtentSigned = 1;
5942 let opExtentBits = 11;
5943 let opExtentAlign = 2;
5944 }
5945 def J4_cmpeq_fp1_jump_nt : HInst<
5946 (outs),
5947 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
5948 "p1 = cmp.eq($Rs16,$Rt16); if (!p1.new) jump:nt $Ii",
5949 tc_9e27f2f9, TypeCJ>, Enc_6a5972, PredRel {
5950 let Inst{0-0} = 0b0;
5951 let Inst{13-12} = 0b01;
5952 let Inst{31-22} = 0b0001010001;
5953 let isPredicated = 1;
5954 let isPredicatedFalse = 1;
5955 let isTerminator = 1;
5956 let isBranch = 1;
5957 let isPredicatedNew = 1;
5958 let cofRelax1 = 1;
5959 let cofRelax2 = 1;
5960 let cofMax1 = 1;
5961 let Uses = [P1];
5962 let Defs = [P1, PC];
5963 let BaseOpcode = "J4_cmpeqp1";
5964 let isTaken = Inst{13};
5965 let isExtendable = 1;
5966 let opExtendable = 2;
5967 let isExtentSigned = 1;
5968 let opExtentBits = 11;
5969 let opExtentAlign = 2;
5970 }
5971 def J4_cmpeq_fp1_jump_t : HInst<
5972 (outs),
5973 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
5974 "p1 = cmp.eq($Rs16,$Rt16); if (!p1.new) jump:t $Ii",
5975 tc_9e27f2f9, TypeCJ>, Enc_6a5972, PredRel {
5976 let Inst{0-0} = 0b0;
5977 let Inst{13-12} = 0b11;
5978 let Inst{31-22} = 0b0001010001;
5979 let isPredicated = 1;
5980 let isPredicatedFalse = 1;
5981 let isTerminator = 1;
5982 let isBranch = 1;
5983 let isPredicatedNew = 1;
5984 let cofRelax1 = 1;
5985 let cofRelax2 = 1;
5986 let cofMax1 = 1;
5987 let Uses = [P1];
5988 let Defs = [P1, PC];
5989 let BaseOpcode = "J4_cmpeqp1";
5990 let isTaken = Inst{13};
5991 let isExtendable = 1;
5992 let opExtendable = 2;
5993 let isExtentSigned = 1;
5994 let opExtentBits = 11;
5995 let opExtentAlign = 2;
5996 }
5997 def J4_cmpeq_t_jumpnv_nt : HInst<
5998 (outs),
5999 (ins IntRegs:$Ns8, IntRegs:$Rt32, b30_2Imm:$Ii),
6000 "if (cmp.eq($Ns8.new,$Rt32)) jump:nt $Ii",
6001 tc_24e109c7, TypeNCJ>, Enc_c9a18e, PredRel {
6002 let Inst{0-0} = 0b0;
6003 let Inst{13-13} = 0b0;
6004 let Inst{19-19} = 0b0;
6005 let Inst{31-22} = 0b0010000000;
6006 let isPredicated = 1;
6007 let isTerminator = 1;
6008 let isBranch = 1;
6009 let isNewValue = 1;
6010 let cofMax1 = 1;
6011 let isRestrictNoSlot1Store = 1;
6012 let Defs = [PC];
6013 let BaseOpcode = "J4_cmpeqr";
6014 let isTaken = Inst{13};
6015 let isExtendable = 1;
6016 let opExtendable = 2;
6017 let isExtentSigned = 1;
6018 let opExtentBits = 11;
6019 let opExtentAlign = 2;
6020 let opNewValue = 0;
6021 }
6022 def J4_cmpeq_t_jumpnv_t : HInst<
6023 (outs),
6024 (ins IntRegs:$Ns8, IntRegs:$Rt32, b30_2Imm:$Ii),
6025 "if (cmp.eq($Ns8.new,$Rt32)) jump:t $Ii",
6026 tc_24e109c7, TypeNCJ>, Enc_c9a18e, PredRel {
6027 let Inst{0-0} = 0b0;
6028 let Inst{13-13} = 0b1;
6029 let Inst{19-19} = 0b0;
6030 let Inst{31-22} = 0b0010000000;
6031 let isPredicated = 1;
6032 let isTerminator = 1;
6033 let isBranch = 1;
6034 let isNewValue = 1;
6035 let cofMax1 = 1;
6036 let isRestrictNoSlot1Store = 1;
6037 let Defs = [PC];
6038 let BaseOpcode = "J4_cmpeqr";
6039 let isTaken = Inst{13};
6040 let isExtendable = 1;
6041 let opExtendable = 2;
6042 let isExtentSigned = 1;
6043 let opExtentBits = 11;
6044 let opExtentAlign = 2;
6045 let opNewValue = 0;
6046 }
6047 def J4_cmpeq_tp0_jump_nt : HInst<
6048 (outs),
6049 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
6050 "p0 = cmp.eq($Rs16,$Rt16); if (p0.new) jump:nt $Ii",
6051 tc_9e27f2f9, TypeCJ>, Enc_6a5972, PredRel {
6052 let Inst{0-0} = 0b0;
6053 let Inst{13-12} = 0b00;
6054 let Inst{31-22} = 0b0001010000;
6055 let isPredicated = 1;
6056 let isTerminator = 1;
6057 let isBranch = 1;
6058 let isPredicatedNew = 1;
6059 let cofRelax1 = 1;
6060 let cofRelax2 = 1;
6061 let cofMax1 = 1;
6062 let Uses = [P0];
6063 let Defs = [P0, PC];
6064 let BaseOpcode = "J4_cmpeqp0";
6065 let isTaken = Inst{13};
6066 let isExtendable = 1;
6067 let opExtendable = 2;
6068 let isExtentSigned = 1;
6069 let opExtentBits = 11;
6070 let opExtentAlign = 2;
6071 }
6072 def J4_cmpeq_tp0_jump_t : HInst<
6073 (outs),
6074 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
6075 "p0 = cmp.eq($Rs16,$Rt16); if (p0.new) jump:t $Ii",
6076 tc_9e27f2f9, TypeCJ>, Enc_6a5972, PredRel {
6077 let Inst{0-0} = 0b0;
6078 let Inst{13-12} = 0b10;
6079 let Inst{31-22} = 0b0001010000;
6080 let isPredicated = 1;
6081 let isTerminator = 1;
6082 let isBranch = 1;
6083 let isPredicatedNew = 1;
6084 let cofRelax1 = 1;
6085 let cofRelax2 = 1;
6086 let cofMax1 = 1;
6087 let Uses = [P0];
6088 let Defs = [P0, PC];
6089 let BaseOpcode = "J4_cmpeqp0";
6090 let isTaken = Inst{13};
6091 let isExtendable = 1;
6092 let opExtendable = 2;
6093 let isExtentSigned = 1;
6094 let opExtentBits = 11;
6095 let opExtentAlign = 2;
6096 }
6097 def J4_cmpeq_tp1_jump_nt : HInst<
6098 (outs),
6099 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
6100 "p1 = cmp.eq($Rs16,$Rt16); if (p1.new) jump:nt $Ii",
6101 tc_9e27f2f9, TypeCJ>, Enc_6a5972, PredRel {
6102 let Inst{0-0} = 0b0;
6103 let Inst{13-12} = 0b01;
6104 let Inst{31-22} = 0b0001010000;
6105 let isPredicated = 1;
6106 let isTerminator = 1;
6107 let isBranch = 1;
6108 let isPredicatedNew = 1;
6109 let cofRelax1 = 1;
6110 let cofRelax2 = 1;
6111 let cofMax1 = 1;
6112 let Uses = [P1];
6113 let Defs = [P1, PC];
6114 let BaseOpcode = "J4_cmpeqp1";
6115 let isTaken = Inst{13};
6116 let isExtendable = 1;
6117 let opExtendable = 2;
6118 let isExtentSigned = 1;
6119 let opExtentBits = 11;
6120 let opExtentAlign = 2;
6121 }
6122 def J4_cmpeq_tp1_jump_t : HInst<
6123 (outs),
6124 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
6125 "p1 = cmp.eq($Rs16,$Rt16); if (p1.new) jump:t $Ii",
6126 tc_9e27f2f9, TypeCJ>, Enc_6a5972, PredRel {
6127 let Inst{0-0} = 0b0;
6128 let Inst{13-12} = 0b11;
6129 let Inst{31-22} = 0b0001010000;
6130 let isPredicated = 1;
6131 let isTerminator = 1;
6132 let isBranch = 1;
6133 let isPredicatedNew = 1;
6134 let cofRelax1 = 1;
6135 let cofRelax2 = 1;
6136 let cofMax1 = 1;
6137 let Uses = [P1];
6138 let Defs = [P1, PC];
6139 let BaseOpcode = "J4_cmpeqp1";
6140 let isTaken = Inst{13};
6141 let isExtendable = 1;
6142 let opExtendable = 2;
6143 let isExtentSigned = 1;
6144 let opExtentBits = 11;
6145 let opExtentAlign = 2;
6146 }
6147 def J4_cmpeqi_f_jumpnv_nt : HInst<
6148 (outs),
6149 (ins IntRegs:$Ns8, u5_0Imm:$II, b30_2Imm:$Ii),
6150 "if (!cmp.eq($Ns8.new,#$II)) jump:nt $Ii",
6151 tc_f6e2aff9, TypeNCJ>, Enc_eafd18, PredRel {
6152 let Inst{0-0} = 0b0;
6153 let Inst{13-13} = 0b0;
6154 let Inst{19-19} = 0b0;
6155 let Inst{31-22} = 0b0010010001;
6156 let isPredicated = 1;
6157 let isPredicatedFalse = 1;
6158 let isTerminator = 1;
6159 let isBranch = 1;
6160 let isNewValue = 1;
6161 let cofMax1 = 1;
6162 let isRestrictNoSlot1Store = 1;
6163 let Defs = [PC];
6164 let BaseOpcode = "J4_cmpeqi";
6165 let isTaken = Inst{13};
6166 let isExtendable = 1;
6167 let opExtendable = 2;
6168 let isExtentSigned = 1;
6169 let opExtentBits = 11;
6170 let opExtentAlign = 2;
6171 let opNewValue = 0;
6172 }
6173 def J4_cmpeqi_f_jumpnv_t : HInst<
6174 (outs),
6175 (ins IntRegs:$Ns8, u5_0Imm:$II, b30_2Imm:$Ii),
6176 "if (!cmp.eq($Ns8.new,#$II)) jump:t $Ii",
6177 tc_f6e2aff9, TypeNCJ>, Enc_eafd18, PredRel {
6178 let Inst{0-0} = 0b0;
6179 let Inst{13-13} = 0b1;
6180 let Inst{19-19} = 0b0;
6181 let Inst{31-22} = 0b0010010001;
6182 let isPredicated = 1;
6183 let isPredicatedFalse = 1;
6184 let isTerminator = 1;
6185 let isBranch = 1;
6186 let isNewValue = 1;
6187 let cofMax1 = 1;
6188 let isRestrictNoSlot1Store = 1;
6189 let Defs = [PC];
6190 let BaseOpcode = "J4_cmpeqi";
6191 let isTaken = Inst{13};
6192 let isExtendable = 1;
6193 let opExtendable = 2;
6194 let isExtentSigned = 1;
6195 let opExtentBits = 11;
6196 let opExtentAlign = 2;
6197 let opNewValue = 0;
6198 }
6199 def J4_cmpeqi_fp0_jump_nt : HInst<
6200 (outs),
6201 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
6202 "p0 = cmp.eq($Rs16,#$II); if (!p0.new) jump:nt $Ii",
6203 tc_24f426ab, TypeCJ>, Enc_14d27a, PredRel {
6204 let Inst{0-0} = 0b0;
6205 let Inst{13-13} = 0b0;
6206 let Inst{31-22} = 0b0001000001;
6207 let isPredicated = 1;
6208 let isPredicatedFalse = 1;
6209 let isTerminator = 1;
6210 let isBranch = 1;
6211 let isPredicatedNew = 1;
6212 let cofRelax1 = 1;
6213 let cofRelax2 = 1;
6214 let cofMax1 = 1;
6215 let Uses = [P0];
6216 let Defs = [P0, PC];
6217 let BaseOpcode = "J4_cmpeqip0";
6218 let isTaken = Inst{13};
6219 let isExtendable = 1;
6220 let opExtendable = 2;
6221 let isExtentSigned = 1;
6222 let opExtentBits = 11;
6223 let opExtentAlign = 2;
6224 }
6225 def J4_cmpeqi_fp0_jump_t : HInst<
6226 (outs),
6227 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
6228 "p0 = cmp.eq($Rs16,#$II); if (!p0.new) jump:t $Ii",
6229 tc_24f426ab, TypeCJ>, Enc_14d27a, PredRel {
6230 let Inst{0-0} = 0b0;
6231 let Inst{13-13} = 0b1;
6232 let Inst{31-22} = 0b0001000001;
6233 let isPredicated = 1;
6234 let isPredicatedFalse = 1;
6235 let isTerminator = 1;
6236 let isBranch = 1;
6237 let isPredicatedNew = 1;
6238 let cofRelax1 = 1;
6239 let cofRelax2 = 1;
6240 let cofMax1 = 1;
6241 let Uses = [P0];
6242 let Defs = [P0, PC];
6243 let BaseOpcode = "J4_cmpeqip0";
6244 let isTaken = Inst{13};
6245 let isExtendable = 1;
6246 let opExtendable = 2;
6247 let isExtentSigned = 1;
6248 let opExtentBits = 11;
6249 let opExtentAlign = 2;
6250 }
6251 def J4_cmpeqi_fp1_jump_nt : HInst<
6252 (outs),
6253 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
6254 "p1 = cmp.eq($Rs16,#$II); if (!p1.new) jump:nt $Ii",
6255 tc_24f426ab, TypeCJ>, Enc_14d27a, PredRel {
6256 let Inst{0-0} = 0b0;
6257 let Inst{13-13} = 0b0;
6258 let Inst{31-22} = 0b0001001001;
6259 let isPredicated = 1;
6260 let isPredicatedFalse = 1;
6261 let isTerminator = 1;
6262 let isBranch = 1;
6263 let isPredicatedNew = 1;
6264 let cofRelax1 = 1;
6265 let cofRelax2 = 1;
6266 let cofMax1 = 1;
6267 let Uses = [P1];
6268 let Defs = [P1, PC];
6269 let BaseOpcode = "J4_cmpeqip1";
6270 let isTaken = Inst{13};
6271 let isExtendable = 1;
6272 let opExtendable = 2;
6273 let isExtentSigned = 1;
6274 let opExtentBits = 11;
6275 let opExtentAlign = 2;
6276 }
6277 def J4_cmpeqi_fp1_jump_t : HInst<
6278 (outs),
6279 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
6280 "p1 = cmp.eq($Rs16,#$II); if (!p1.new) jump:t $Ii",
6281 tc_24f426ab, TypeCJ>, Enc_14d27a, PredRel {
6282 let Inst{0-0} = 0b0;
6283 let Inst{13-13} = 0b1;
6284 let Inst{31-22} = 0b0001001001;
6285 let isPredicated = 1;
6286 let isPredicatedFalse = 1;
6287 let isTerminator = 1;
6288 let isBranch = 1;
6289 let isPredicatedNew = 1;
6290 let cofRelax1 = 1;
6291 let cofRelax2 = 1;
6292 let cofMax1 = 1;
6293 let Uses = [P1];
6294 let Defs = [P1, PC];
6295 let BaseOpcode = "J4_cmpeqip1";
6296 let isTaken = Inst{13};
6297 let isExtendable = 1;
6298 let opExtendable = 2;
6299 let isExtentSigned = 1;
6300 let opExtentBits = 11;
6301 let opExtentAlign = 2;
6302 }
6303 def J4_cmpeqi_t_jumpnv_nt : HInst<
6304 (outs),
6305 (ins IntRegs:$Ns8, u5_0Imm:$II, b30_2Imm:$Ii),
6306 "if (cmp.eq($Ns8.new,#$II)) jump:nt $Ii",
6307 tc_f6e2aff9, TypeNCJ>, Enc_eafd18, PredRel {
6308 let Inst{0-0} = 0b0;
6309 let Inst{13-13} = 0b0;
6310 let Inst{19-19} = 0b0;
6311 let Inst{31-22} = 0b0010010000;
6312 let isPredicated = 1;
6313 let isTerminator = 1;
6314 let isBranch = 1;
6315 let isNewValue = 1;
6316 let cofMax1 = 1;
6317 let isRestrictNoSlot1Store = 1;
6318 let Defs = [PC];
6319 let BaseOpcode = "J4_cmpeqi";
6320 let isTaken = Inst{13};
6321 let isExtendable = 1;
6322 let opExtendable = 2;
6323 let isExtentSigned = 1;
6324 let opExtentBits = 11;
6325 let opExtentAlign = 2;
6326 let opNewValue = 0;
6327 }
6328 def J4_cmpeqi_t_jumpnv_t : HInst<
6329 (outs),
6330 (ins IntRegs:$Ns8, u5_0Imm:$II, b30_2Imm:$Ii),
6331 "if (cmp.eq($Ns8.new,#$II)) jump:t $Ii",
6332 tc_f6e2aff9, TypeNCJ>, Enc_eafd18, PredRel {
6333 let Inst{0-0} = 0b0;
6334 let Inst{13-13} = 0b1;
6335 let Inst{19-19} = 0b0;
6336 let Inst{31-22} = 0b0010010000;
6337 let isPredicated = 1;
6338 let isTerminator = 1;
6339 let isBranch = 1;
6340 let isNewValue = 1;
6341 let cofMax1 = 1;
6342 let isRestrictNoSlot1Store = 1;
6343 let Defs = [PC];
6344 let BaseOpcode = "J4_cmpeqi";
6345 let isTaken = Inst{13};
6346 let isExtendable = 1;
6347 let opExtendable = 2;
6348 let isExtentSigned = 1;
6349 let opExtentBits = 11;
6350 let opExtentAlign = 2;
6351 let opNewValue = 0;
6352 }
6353 def J4_cmpeqi_tp0_jump_nt : HInst<
6354 (outs),
6355 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
6356 "p0 = cmp.eq($Rs16,#$II); if (p0.new) jump:nt $Ii",
6357 tc_24f426ab, TypeCJ>, Enc_14d27a, PredRel {
6358 let Inst{0-0} = 0b0;
6359 let Inst{13-13} = 0b0;
6360 let Inst{31-22} = 0b0001000000;
6361 let isPredicated = 1;
6362 let isTerminator = 1;
6363 let isBranch = 1;
6364 let isPredicatedNew = 1;
6365 let cofRelax1 = 1;
6366 let cofRelax2 = 1;
6367 let cofMax1 = 1;
6368 let Uses = [P0];
6369 let Defs = [P0, PC];
6370 let BaseOpcode = "J4_cmpeqip0";
6371 let isTaken = Inst{13};
6372 let isExtendable = 1;
6373 let opExtendable = 2;
6374 let isExtentSigned = 1;
6375 let opExtentBits = 11;
6376 let opExtentAlign = 2;
6377 }
6378 def J4_cmpeqi_tp0_jump_t : HInst<
6379 (outs),
6380 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
6381 "p0 = cmp.eq($Rs16,#$II); if (p0.new) jump:t $Ii",
6382 tc_24f426ab, TypeCJ>, Enc_14d27a, PredRel {
6383 let Inst{0-0} = 0b0;
6384 let Inst{13-13} = 0b1;
6385 let Inst{31-22} = 0b0001000000;
6386 let isPredicated = 1;
6387 let isTerminator = 1;
6388 let isBranch = 1;
6389 let isPredicatedNew = 1;
6390 let cofRelax1 = 1;
6391 let cofRelax2 = 1;
6392 let cofMax1 = 1;
6393 let Uses = [P0];
6394 let Defs = [P0, PC];
6395 let BaseOpcode = "J4_cmpeqip0";
6396 let isTaken = Inst{13};
6397 let isExtendable = 1;
6398 let opExtendable = 2;
6399 let isExtentSigned = 1;
6400 let opExtentBits = 11;
6401 let opExtentAlign = 2;
6402 }
6403 def J4_cmpeqi_tp1_jump_nt : HInst<
6404 (outs),
6405 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
6406 "p1 = cmp.eq($Rs16,#$II); if (p1.new) jump:nt $Ii",
6407 tc_24f426ab, TypeCJ>, Enc_14d27a, PredRel {
6408 let Inst{0-0} = 0b0;
6409 let Inst{13-13} = 0b0;
6410 let Inst{31-22} = 0b0001001000;
6411 let isPredicated = 1;
6412 let isTerminator = 1;
6413 let isBranch = 1;
6414 let isPredicatedNew = 1;
6415 let cofRelax1 = 1;
6416 let cofRelax2 = 1;
6417 let cofMax1 = 1;
6418 let Uses = [P1];
6419 let Defs = [P1, PC];
6420 let BaseOpcode = "J4_cmpeqip1";
6421 let isTaken = Inst{13};
6422 let isExtendable = 1;
6423 let opExtendable = 2;
6424 let isExtentSigned = 1;
6425 let opExtentBits = 11;
6426 let opExtentAlign = 2;
6427 }
6428 def J4_cmpeqi_tp1_jump_t : HInst<
6429 (outs),
6430 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
6431 "p1 = cmp.eq($Rs16,#$II); if (p1.new) jump:t $Ii",
6432 tc_24f426ab, TypeCJ>, Enc_14d27a, PredRel {
6433 let Inst{0-0} = 0b0;
6434 let Inst{13-13} = 0b1;
6435 let Inst{31-22} = 0b0001001000;
6436 let isPredicated = 1;
6437 let isTerminator = 1;
6438 let isBranch = 1;
6439 let isPredicatedNew = 1;
6440 let cofRelax1 = 1;
6441 let cofRelax2 = 1;
6442 let cofMax1 = 1;
6443 let Uses = [P1];
6444 let Defs = [P1, PC];
6445 let BaseOpcode = "J4_cmpeqip1";
6446 let isTaken = Inst{13};
6447 let isExtendable = 1;
6448 let opExtendable = 2;
6449 let isExtentSigned = 1;
6450 let opExtentBits = 11;
6451 let opExtentAlign = 2;
6452 }
6453 def J4_cmpeqn1_f_jumpnv_nt : HInst<
6454 (outs),
6455 (ins IntRegs:$Ns8, n1Const:$n1, b30_2Imm:$Ii),
6456 "if (!cmp.eq($Ns8.new,#$n1)) jump:nt $Ii",
6457 tc_f6e2aff9, TypeNCJ>, Enc_e90a15, PredRel {
6458 let Inst{0-0} = 0b0;
6459 let Inst{13-8} = 0b000000;
6460 let Inst{19-19} = 0b0;
6461 let Inst{31-22} = 0b0010011001;
6462 let isPredicated = 1;
6463 let isPredicatedFalse = 1;
6464 let isTerminator = 1;
6465 let isBranch = 1;
6466 let isNewValue = 1;
6467 let cofMax1 = 1;
6468 let isRestrictNoSlot1Store = 1;
6469 let Defs = [PC];
6470 let BaseOpcode = "J4_cmpeqn1r";
6471 let isTaken = Inst{13};
6472 let isExtendable = 1;
6473 let opExtendable = 2;
6474 let isExtentSigned = 1;
6475 let opExtentBits = 11;
6476 let opExtentAlign = 2;
6477 let opNewValue = 0;
6478 }
6479 def J4_cmpeqn1_f_jumpnv_t : HInst<
6480 (outs),
6481 (ins IntRegs:$Ns8, n1Const:$n1, b30_2Imm:$Ii),
6482 "if (!cmp.eq($Ns8.new,#$n1)) jump:t $Ii",
6483 tc_f6e2aff9, TypeNCJ>, Enc_5a18b3, PredRel {
6484 let Inst{0-0} = 0b0;
6485 let Inst{13-8} = 0b100000;
6486 let Inst{19-19} = 0b0;
6487 let Inst{31-22} = 0b0010011001;
6488 let isPredicated = 1;
6489 let isPredicatedFalse = 1;
6490 let isTerminator = 1;
6491 let isBranch = 1;
6492 let isNewValue = 1;
6493 let cofMax1 = 1;
6494 let isRestrictNoSlot1Store = 1;
6495 let Defs = [PC];
6496 let BaseOpcode = "J4_cmpeqn1r";
6497 let isTaken = Inst{13};
6498 let isExtendable = 1;
6499 let opExtendable = 2;
6500 let isExtentSigned = 1;
6501 let opExtentBits = 11;
6502 let opExtentAlign = 2;
6503 let opNewValue = 0;
6504 }
6505 def J4_cmpeqn1_fp0_jump_nt : HInst<
6506 (outs),
6507 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
6508 "p0 = cmp.eq($Rs16,#$n1); if (!p0.new) jump:nt $Ii",
6509 tc_24f426ab, TypeCJ>, Enc_1de724, PredRel {
6510 let Inst{0-0} = 0b0;
6511 let Inst{13-8} = 0b000000;
6512 let Inst{31-22} = 0b0001000111;
6513 let isPredicated = 1;
6514 let isPredicatedFalse = 1;
6515 let isTerminator = 1;
6516 let isBranch = 1;
6517 let isPredicatedNew = 1;
6518 let cofRelax1 = 1;
6519 let cofRelax2 = 1;
6520 let cofMax1 = 1;
6521 let Uses = [P0];
6522 let Defs = [P0, PC];
6523 let BaseOpcode = "J4_cmpeqn1p0";
6524 let isTaken = Inst{13};
6525 let isExtendable = 1;
6526 let opExtendable = 2;
6527 let isExtentSigned = 1;
6528 let opExtentBits = 11;
6529 let opExtentAlign = 2;
6530 }
6531 def J4_cmpeqn1_fp0_jump_t : HInst<
6532 (outs),
6533 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
6534 "p0 = cmp.eq($Rs16,#$n1); if (!p0.new) jump:t $Ii",
6535 tc_24f426ab, TypeCJ>, Enc_14640c, PredRel {
6536 let Inst{0-0} = 0b0;
6537 let Inst{13-8} = 0b100000;
6538 let Inst{31-22} = 0b0001000111;
6539 let isPredicated = 1;
6540 let isPredicatedFalse = 1;
6541 let isTerminator = 1;
6542 let isBranch = 1;
6543 let isPredicatedNew = 1;
6544 let cofRelax1 = 1;
6545 let cofRelax2 = 1;
6546 let cofMax1 = 1;
6547 let Uses = [P0];
6548 let Defs = [P0, PC];
6549 let BaseOpcode = "J4_cmpeqn1p0";
6550 let isTaken = Inst{13};
6551 let isExtendable = 1;
6552 let opExtendable = 2;
6553 let isExtentSigned = 1;
6554 let opExtentBits = 11;
6555 let opExtentAlign = 2;
6556 }
6557 def J4_cmpeqn1_fp1_jump_nt : HInst<
6558 (outs),
6559 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
6560 "p1 = cmp.eq($Rs16,#$n1); if (!p1.new) jump:nt $Ii",
6561 tc_24f426ab, TypeCJ>, Enc_668704, PredRel {
6562 let Inst{0-0} = 0b0;
6563 let Inst{13-8} = 0b000000;
6564 let Inst{31-22} = 0b0001001111;
6565 let isPredicated = 1;
6566 let isPredicatedFalse = 1;
6567 let isTerminator = 1;
6568 let isBranch = 1;
6569 let isPredicatedNew = 1;
6570 let cofRelax1 = 1;
6571 let cofRelax2 = 1;
6572 let cofMax1 = 1;
6573 let Uses = [P1];
6574 let Defs = [P1, PC];
6575 let BaseOpcode = "J4_cmpeqn1p1";
6576 let isTaken = Inst{13};
6577 let isExtendable = 1;
6578 let opExtendable = 2;
6579 let isExtentSigned = 1;
6580 let opExtentBits = 11;
6581 let opExtentAlign = 2;
6582 }
6583 def J4_cmpeqn1_fp1_jump_t : HInst<
6584 (outs),
6585 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
6586 "p1 = cmp.eq($Rs16,#$n1); if (!p1.new) jump:t $Ii",
6587 tc_24f426ab, TypeCJ>, Enc_800e04, PredRel {
6588 let Inst{0-0} = 0b0;
6589 let Inst{13-8} = 0b100000;
6590 let Inst{31-22} = 0b0001001111;
6591 let isPredicated = 1;
6592 let isPredicatedFalse = 1;
6593 let isTerminator = 1;
6594 let isBranch = 1;
6595 let isPredicatedNew = 1;
6596 let cofRelax1 = 1;
6597 let cofRelax2 = 1;
6598 let cofMax1 = 1;
6599 let Uses = [P1];
6600 let Defs = [P1, PC];
6601 let BaseOpcode = "J4_cmpeqn1p1";
6602 let isTaken = Inst{13};
6603 let isExtendable = 1;
6604 let opExtendable = 2;
6605 let isExtentSigned = 1;
6606 let opExtentBits = 11;
6607 let opExtentAlign = 2;
6608 }
6609 def J4_cmpeqn1_t_jumpnv_nt : HInst<
6610 (outs),
6611 (ins IntRegs:$Ns8, n1Const:$n1, b30_2Imm:$Ii),
6612 "if (cmp.eq($Ns8.new,#$n1)) jump:nt $Ii",
6613 tc_f6e2aff9, TypeNCJ>, Enc_4aca3a, PredRel {
6614 let Inst{0-0} = 0b0;
6615 let Inst{13-8} = 0b000000;
6616 let Inst{19-19} = 0b0;
6617 let Inst{31-22} = 0b0010011000;
6618 let isPredicated = 1;
6619 let isTerminator = 1;
6620 let isBranch = 1;
6621 let isNewValue = 1;
6622 let cofMax1 = 1;
6623 let isRestrictNoSlot1Store = 1;
6624 let Defs = [PC];
6625 let BaseOpcode = "J4_cmpeqn1r";
6626 let isTaken = Inst{13};
6627 let isExtendable = 1;
6628 let opExtendable = 2;
6629 let isExtentSigned = 1;
6630 let opExtentBits = 11;
6631 let opExtentAlign = 2;
6632 let opNewValue = 0;
6633 }
6634 def J4_cmpeqn1_t_jumpnv_t : HInst<
6635 (outs),
6636 (ins IntRegs:$Ns8, n1Const:$n1, b30_2Imm:$Ii),
6637 "if (cmp.eq($Ns8.new,#$n1)) jump:t $Ii",
6638 tc_f6e2aff9, TypeNCJ>, Enc_f7ea77, PredRel {
6639 let Inst{0-0} = 0b0;
6640 let Inst{13-8} = 0b100000;
6641 let Inst{19-19} = 0b0;
6642 let Inst{31-22} = 0b0010011000;
6643 let isPredicated = 1;
6644 let isTerminator = 1;
6645 let isBranch = 1;
6646 let isNewValue = 1;
6647 let cofMax1 = 1;
6648 let isRestrictNoSlot1Store = 1;
6649 let Defs = [PC];
6650 let BaseOpcode = "J4_cmpeqn1r";
6651 let isTaken = Inst{13};
6652 let isExtendable = 1;
6653 let opExtendable = 2;
6654 let isExtentSigned = 1;
6655 let opExtentBits = 11;
6656 let opExtentAlign = 2;
6657 let opNewValue = 0;
6658 }
6659 def J4_cmpeqn1_tp0_jump_nt : HInst<
6660 (outs),
6661 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
6662 "p0 = cmp.eq($Rs16,#$n1); if (p0.new) jump:nt $Ii",
6663 tc_24f426ab, TypeCJ>, Enc_405228, PredRel {
6664 let Inst{0-0} = 0b0;
6665 let Inst{13-8} = 0b000000;
6666 let Inst{31-22} = 0b0001000110;
6667 let isPredicated = 1;
6668 let isTerminator = 1;
6669 let isBranch = 1;
6670 let isPredicatedNew = 1;
6671 let cofRelax1 = 1;
6672 let cofRelax2 = 1;
6673 let cofMax1 = 1;
6674 let Uses = [P0];
6675 let Defs = [P0, PC];
6676 let BaseOpcode = "J4_cmpeqn1p0";
6677 let isTaken = Inst{13};
6678 let isExtendable = 1;
6679 let opExtendable = 2;
6680 let isExtentSigned = 1;
6681 let opExtentBits = 11;
6682 let opExtentAlign = 2;
6683 }
6684 def J4_cmpeqn1_tp0_jump_t : HInst<
6685 (outs),
6686 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
6687 "p0 = cmp.eq($Rs16,#$n1); if (p0.new) jump:t $Ii",
6688 tc_24f426ab, TypeCJ>, Enc_3a2484, PredRel {
6689 let Inst{0-0} = 0b0;
6690 let Inst{13-8} = 0b100000;
6691 let Inst{31-22} = 0b0001000110;
6692 let isPredicated = 1;
6693 let isTerminator = 1;
6694 let isBranch = 1;
6695 let isPredicatedNew = 1;
6696 let cofRelax1 = 1;
6697 let cofRelax2 = 1;
6698 let cofMax1 = 1;
6699 let Uses = [P0];
6700 let Defs = [P0, PC];
6701 let BaseOpcode = "J4_cmpeqn1p0";
6702 let isTaken = Inst{13};
6703 let isExtendable = 1;
6704 let opExtendable = 2;
6705 let isExtentSigned = 1;
6706 let opExtentBits = 11;
6707 let opExtentAlign = 2;
6708 }
6709 def J4_cmpeqn1_tp1_jump_nt : HInst<
6710 (outs),
6711 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
6712 "p1 = cmp.eq($Rs16,#$n1); if (p1.new) jump:nt $Ii",
6713 tc_24f426ab, TypeCJ>, Enc_736575, PredRel {
6714 let Inst{0-0} = 0b0;
6715 let Inst{13-8} = 0b000000;
6716 let Inst{31-22} = 0b0001001110;
6717 let isPredicated = 1;
6718 let isTerminator = 1;
6719 let isBranch = 1;
6720 let isPredicatedNew = 1;
6721 let cofRelax1 = 1;
6722 let cofRelax2 = 1;
6723 let cofMax1 = 1;
6724 let Uses = [P1];
6725 let Defs = [P1, PC];
6726 let BaseOpcode = "J4_cmpeqn1p1";
6727 let isTaken = Inst{13};
6728 let isExtendable = 1;
6729 let opExtendable = 2;
6730 let isExtentSigned = 1;
6731 let opExtentBits = 11;
6732 let opExtentAlign = 2;
6733 }
6734 def J4_cmpeqn1_tp1_jump_t : HInst<
6735 (outs),
6736 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
6737 "p1 = cmp.eq($Rs16,#$n1); if (p1.new) jump:t $Ii",
6738 tc_24f426ab, TypeCJ>, Enc_8e583a, PredRel {
6739 let Inst{0-0} = 0b0;
6740 let Inst{13-8} = 0b100000;
6741 let Inst{31-22} = 0b0001001110;
6742 let isPredicated = 1;
6743 let isTerminator = 1;
6744 let isBranch = 1;
6745 let isPredicatedNew = 1;
6746 let cofRelax1 = 1;
6747 let cofRelax2 = 1;
6748 let cofMax1 = 1;
6749 let Uses = [P1];
6750 let Defs = [P1, PC];
6751 let BaseOpcode = "J4_cmpeqn1p1";
6752 let isTaken = Inst{13};
6753 let isExtendable = 1;
6754 let opExtendable = 2;
6755 let isExtentSigned = 1;
6756 let opExtentBits = 11;
6757 let opExtentAlign = 2;
6758 }
6759 def J4_cmpgt_f_jumpnv_nt : HInst<
6760 (outs),
6761 (ins IntRegs:$Ns8, IntRegs:$Rt32, b30_2Imm:$Ii),
6762 "if (!cmp.gt($Ns8.new,$Rt32)) jump:nt $Ii",
6763 tc_24e109c7, TypeNCJ>, Enc_c9a18e, PredRel {
6764 let Inst{0-0} = 0b0;
6765 let Inst{13-13} = 0b0;
6766 let Inst{19-19} = 0b0;
6767 let Inst{31-22} = 0b0010000011;
6768 let isPredicated = 1;
6769 let isPredicatedFalse = 1;
6770 let isTerminator = 1;
6771 let isBranch = 1;
6772 let isNewValue = 1;
6773 let cofMax1 = 1;
6774 let isRestrictNoSlot1Store = 1;
6775 let Defs = [PC];
6776 let BaseOpcode = "J4_cmpgtr";
6777 let isTaken = Inst{13};
6778 let isExtendable = 1;
6779 let opExtendable = 2;
6780 let isExtentSigned = 1;
6781 let opExtentBits = 11;
6782 let opExtentAlign = 2;
6783 let opNewValue = 0;
6784 }
6785 def J4_cmpgt_f_jumpnv_t : HInst<
6786 (outs),
6787 (ins IntRegs:$Ns8, IntRegs:$Rt32, b30_2Imm:$Ii),
6788 "if (!cmp.gt($Ns8.new,$Rt32)) jump:t $Ii",
6789 tc_24e109c7, TypeNCJ>, Enc_c9a18e, PredRel {
6790 let Inst{0-0} = 0b0;
6791 let Inst{13-13} = 0b1;
6792 let Inst{19-19} = 0b0;
6793 let Inst{31-22} = 0b0010000011;
6794 let isPredicated = 1;
6795 let isPredicatedFalse = 1;
6796 let isTerminator = 1;
6797 let isBranch = 1;
6798 let isNewValue = 1;
6799 let cofMax1 = 1;
6800 let isRestrictNoSlot1Store = 1;
6801 let Defs = [PC];
6802 let BaseOpcode = "J4_cmpgtr";
6803 let isTaken = Inst{13};
6804 let isExtendable = 1;
6805 let opExtendable = 2;
6806 let isExtentSigned = 1;
6807 let opExtentBits = 11;
6808 let opExtentAlign = 2;
6809 let opNewValue = 0;
6810 }
6811 def J4_cmpgt_fp0_jump_nt : HInst<
6812 (outs),
6813 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
6814 "p0 = cmp.gt($Rs16,$Rt16); if (!p0.new) jump:nt $Ii",
6815 tc_9e27f2f9, TypeCJ>, Enc_6a5972, PredRel {
6816 let Inst{0-0} = 0b0;
6817 let Inst{13-12} = 0b00;
6818 let Inst{31-22} = 0b0001010011;
6819 let isPredicated = 1;
6820 let isPredicatedFalse = 1;
6821 let isTerminator = 1;
6822 let isBranch = 1;
6823 let isPredicatedNew = 1;
6824 let cofRelax1 = 1;
6825 let cofRelax2 = 1;
6826 let cofMax1 = 1;
6827 let Uses = [P0];
6828 let Defs = [P0, PC];
6829 let BaseOpcode = "J4_cmpgtp0";
6830 let isTaken = Inst{13};
6831 let isExtendable = 1;
6832 let opExtendable = 2;
6833 let isExtentSigned = 1;
6834 let opExtentBits = 11;
6835 let opExtentAlign = 2;
6836 }
6837 def J4_cmpgt_fp0_jump_t : HInst<
6838 (outs),
6839 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
6840 "p0 = cmp.gt($Rs16,$Rt16); if (!p0.new) jump:t $Ii",
6841 tc_9e27f2f9, TypeCJ>, Enc_6a5972, PredRel {
6842 let Inst{0-0} = 0b0;
6843 let Inst{13-12} = 0b10;
6844 let Inst{31-22} = 0b0001010011;
6845 let isPredicated = 1;
6846 let isPredicatedFalse = 1;
6847 let isTerminator = 1;
6848 let isBranch = 1;
6849 let isPredicatedNew = 1;
6850 let cofRelax1 = 1;
6851 let cofRelax2 = 1;
6852 let cofMax1 = 1;
6853 let Uses = [P0];
6854 let Defs = [P0, PC];
6855 let BaseOpcode = "J4_cmpgtp0";
6856 let isTaken = Inst{13};
6857 let isExtendable = 1;
6858 let opExtendable = 2;
6859 let isExtentSigned = 1;
6860 let opExtentBits = 11;
6861 let opExtentAlign = 2;
6862 }
6863 def J4_cmpgt_fp1_jump_nt : HInst<
6864 (outs),
6865 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
6866 "p1 = cmp.gt($Rs16,$Rt16); if (!p1.new) jump:nt $Ii",
6867 tc_9e27f2f9, TypeCJ>, Enc_6a5972, PredRel {
6868 let Inst{0-0} = 0b0;
6869 let Inst{13-12} = 0b01;
6870 let Inst{31-22} = 0b0001010011;
6871 let isPredicated = 1;
6872 let isPredicatedFalse = 1;
6873 let isTerminator = 1;
6874 let isBranch = 1;
6875 let isPredicatedNew = 1;
6876 let cofRelax1 = 1;
6877 let cofRelax2 = 1;
6878 let cofMax1 = 1;
6879 let Uses = [P1];
6880 let Defs = [P1, PC];
6881 let BaseOpcode = "J4_cmpgtp1";
6882 let isTaken = Inst{13};
6883 let isExtendable = 1;
6884 let opExtendable = 2;
6885 let isExtentSigned = 1;
6886 let opExtentBits = 11;
6887 let opExtentAlign = 2;
6888 }
6889 def J4_cmpgt_fp1_jump_t : HInst<
6890 (outs),
6891 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
6892 "p1 = cmp.gt($Rs16,$Rt16); if (!p1.new) jump:t $Ii",
6893 tc_9e27f2f9, TypeCJ>, Enc_6a5972, PredRel {
6894 let Inst{0-0} = 0b0;
6895 let Inst{13-12} = 0b11;
6896 let Inst{31-22} = 0b0001010011;
6897 let isPredicated = 1;
6898 let isPredicatedFalse = 1;
6899 let isTerminator = 1;
6900 let isBranch = 1;
6901 let isPredicatedNew = 1;
6902 let cofRelax1 = 1;
6903 let cofRelax2 = 1;
6904 let cofMax1 = 1;
6905 let Uses = [P1];
6906 let Defs = [P1, PC];
6907 let BaseOpcode = "J4_cmpgtp1";
6908 let isTaken = Inst{13};
6909 let isExtendable = 1;
6910 let opExtendable = 2;
6911 let isExtentSigned = 1;
6912 let opExtentBits = 11;
6913 let opExtentAlign = 2;
6914 }
6915 def J4_cmpgt_t_jumpnv_nt : HInst<
6916 (outs),
6917 (ins IntRegs:$Ns8, IntRegs:$Rt32, b30_2Imm:$Ii),
6918 "if (cmp.gt($Ns8.new,$Rt32)) jump:nt $Ii",
6919 tc_24e109c7, TypeNCJ>, Enc_c9a18e, PredRel {
6920 let Inst{0-0} = 0b0;
6921 let Inst{13-13} = 0b0;
6922 let Inst{19-19} = 0b0;
6923 let Inst{31-22} = 0b0010000010;
6924 let isPredicated = 1;
6925 let isTerminator = 1;
6926 let isBranch = 1;
6927 let isNewValue = 1;
6928 let cofMax1 = 1;
6929 let isRestrictNoSlot1Store = 1;
6930 let Defs = [PC];
6931 let BaseOpcode = "J4_cmpgtr";
6932 let isTaken = Inst{13};
6933 let isExtendable = 1;
6934 let opExtendable = 2;
6935 let isExtentSigned = 1;
6936 let opExtentBits = 11;
6937 let opExtentAlign = 2;
6938 let opNewValue = 0;
6939 }
6940 def J4_cmpgt_t_jumpnv_t : HInst<
6941 (outs),
6942 (ins IntRegs:$Ns8, IntRegs:$Rt32, b30_2Imm:$Ii),
6943 "if (cmp.gt($Ns8.new,$Rt32)) jump:t $Ii",
6944 tc_24e109c7, TypeNCJ>, Enc_c9a18e, PredRel {
6945 let Inst{0-0} = 0b0;
6946 let Inst{13-13} = 0b1;
6947 let Inst{19-19} = 0b0;
6948 let Inst{31-22} = 0b0010000010;
6949 let isPredicated = 1;
6950 let isTerminator = 1;
6951 let isBranch = 1;
6952 let isNewValue = 1;
6953 let cofMax1 = 1;
6954 let isRestrictNoSlot1Store = 1;
6955 let Defs = [PC];
6956 let BaseOpcode = "J4_cmpgtr";
6957 let isTaken = Inst{13};
6958 let isExtendable = 1;
6959 let opExtendable = 2;
6960 let isExtentSigned = 1;
6961 let opExtentBits = 11;
6962 let opExtentAlign = 2;
6963 let opNewValue = 0;
6964 }
6965 def J4_cmpgt_tp0_jump_nt : HInst<
6966 (outs),
6967 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
6968 "p0 = cmp.gt($Rs16,$Rt16); if (p0.new) jump:nt $Ii",
6969 tc_9e27f2f9, TypeCJ>, Enc_6a5972, PredRel {
6970 let Inst{0-0} = 0b0;
6971 let Inst{13-12} = 0b00;
6972 let Inst{31-22} = 0b0001010010;
6973 let isPredicated = 1;
6974 let isTerminator = 1;
6975 let isBranch = 1;
6976 let isPredicatedNew = 1;
6977 let cofRelax1 = 1;
6978 let cofRelax2 = 1;
6979 let cofMax1 = 1;
6980 let Uses = [P0];
6981 let Defs = [P0, PC];
6982 let BaseOpcode = "J4_cmpgtp0";
6983 let isTaken = Inst{13};
6984 let isExtendable = 1;
6985 let opExtendable = 2;
6986 let isExtentSigned = 1;
6987 let opExtentBits = 11;
6988 let opExtentAlign = 2;
6989 }
6990 def J4_cmpgt_tp0_jump_t : HInst<
6991 (outs),
6992 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
6993 "p0 = cmp.gt($Rs16,$Rt16); if (p0.new) jump:t $Ii",
6994 tc_9e27f2f9, TypeCJ>, Enc_6a5972, PredRel {
6995 let Inst{0-0} = 0b0;
6996 let Inst{13-12} = 0b10;
6997 let Inst{31-22} = 0b0001010010;
6998 let isPredicated = 1;
6999 let isTerminator = 1;
7000 let isBranch = 1;
7001 let isPredicatedNew = 1;
7002 let cofRelax1 = 1;
7003 let cofRelax2 = 1;
7004 let cofMax1 = 1;
7005 let Uses = [P0];
7006 let Defs = [P0, PC];
7007 let BaseOpcode = "J4_cmpgtp0";
7008 let isTaken = Inst{13};
7009 let isExtendable = 1;
7010 let opExtendable = 2;
7011 let isExtentSigned = 1;
7012 let opExtentBits = 11;
7013 let opExtentAlign = 2;
7014 }
7015 def J4_cmpgt_tp1_jump_nt : HInst<
7016 (outs),
7017 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
7018 "p1 = cmp.gt($Rs16,$Rt16); if (p1.new) jump:nt $Ii",
7019 tc_9e27f2f9, TypeCJ>, Enc_6a5972, PredRel {
7020 let Inst{0-0} = 0b0;
7021 let Inst{13-12} = 0b01;
7022 let Inst{31-22} = 0b0001010010;
7023 let isPredicated = 1;
7024 let isTerminator = 1;
7025 let isBranch = 1;
7026 let isPredicatedNew = 1;
7027 let cofRelax1 = 1;
7028 let cofRelax2 = 1;
7029 let cofMax1 = 1;
7030 let Uses = [P1];
7031 let Defs = [P1, PC];
7032 let BaseOpcode = "J4_cmpgtp1";
7033 let isTaken = Inst{13};
7034 let isExtendable = 1;
7035 let opExtendable = 2;
7036 let isExtentSigned = 1;
7037 let opExtentBits = 11;
7038 let opExtentAlign = 2;
7039 }
7040 def J4_cmpgt_tp1_jump_t : HInst<
7041 (outs),
7042 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
7043 "p1 = cmp.gt($Rs16,$Rt16); if (p1.new) jump:t $Ii",
7044 tc_9e27f2f9, TypeCJ>, Enc_6a5972, PredRel {
7045 let Inst{0-0} = 0b0;
7046 let Inst{13-12} = 0b11;
7047 let Inst{31-22} = 0b0001010010;
7048 let isPredicated = 1;
7049 let isTerminator = 1;
7050 let isBranch = 1;
7051 let isPredicatedNew = 1;
7052 let cofRelax1 = 1;
7053 let cofRelax2 = 1;
7054 let cofMax1 = 1;
7055 let Uses = [P1];
7056 let Defs = [P1, PC];
7057 let BaseOpcode = "J4_cmpgtp1";
7058 let isTaken = Inst{13};
7059 let isExtendable = 1;
7060 let opExtendable = 2;
7061 let isExtentSigned = 1;
7062 let opExtentBits = 11;
7063 let opExtentAlign = 2;
7064 }
7065 def J4_cmpgti_f_jumpnv_nt : HInst<
7066 (outs),
7067 (ins IntRegs:$Ns8, u5_0Imm:$II, b30_2Imm:$Ii),
7068 "if (!cmp.gt($Ns8.new,#$II)) jump:nt $Ii",
7069 tc_f6e2aff9, TypeNCJ>, Enc_eafd18, PredRel {
7070 let Inst{0-0} = 0b0;
7071 let Inst{13-13} = 0b0;
7072 let Inst{19-19} = 0b0;
7073 let Inst{31-22} = 0b0010010011;
7074 let isPredicated = 1;
7075 let isPredicatedFalse = 1;
7076 let isTerminator = 1;
7077 let isBranch = 1;
7078 let isNewValue = 1;
7079 let cofMax1 = 1;
7080 let isRestrictNoSlot1Store = 1;
7081 let Defs = [PC];
7082 let BaseOpcode = "J4_cmpgtir";
7083 let isTaken = Inst{13};
7084 let isExtendable = 1;
7085 let opExtendable = 2;
7086 let isExtentSigned = 1;
7087 let opExtentBits = 11;
7088 let opExtentAlign = 2;
7089 let opNewValue = 0;
7090 }
7091 def J4_cmpgti_f_jumpnv_t : HInst<
7092 (outs),
7093 (ins IntRegs:$Ns8, u5_0Imm:$II, b30_2Imm:$Ii),
7094 "if (!cmp.gt($Ns8.new,#$II)) jump:t $Ii",
7095 tc_f6e2aff9, TypeNCJ>, Enc_eafd18, PredRel {
7096 let Inst{0-0} = 0b0;
7097 let Inst{13-13} = 0b1;
7098 let Inst{19-19} = 0b0;
7099 let Inst{31-22} = 0b0010010011;
7100 let isPredicated = 1;
7101 let isPredicatedFalse = 1;
7102 let isTerminator = 1;
7103 let isBranch = 1;
7104 let isNewValue = 1;
7105 let cofMax1 = 1;
7106 let isRestrictNoSlot1Store = 1;
7107 let Defs = [PC];
7108 let BaseOpcode = "J4_cmpgtir";
7109 let isTaken = Inst{13};
7110 let isExtendable = 1;
7111 let opExtendable = 2;
7112 let isExtentSigned = 1;
7113 let opExtentBits = 11;
7114 let opExtentAlign = 2;
7115 let opNewValue = 0;
7116 }
7117 def J4_cmpgti_fp0_jump_nt : HInst<
7118 (outs),
7119 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
7120 "p0 = cmp.gt($Rs16,#$II); if (!p0.new) jump:nt $Ii",
7121 tc_24f426ab, TypeCJ>, Enc_14d27a, PredRel {
7122 let Inst{0-0} = 0b0;
7123 let Inst{13-13} = 0b0;
7124 let Inst{31-22} = 0b0001000011;
7125 let isPredicated = 1;
7126 let isPredicatedFalse = 1;
7127 let isTerminator = 1;
7128 let isBranch = 1;
7129 let isPredicatedNew = 1;
7130 let cofRelax1 = 1;
7131 let cofRelax2 = 1;
7132 let cofMax1 = 1;
7133 let Uses = [P0];
7134 let Defs = [P0, PC];
7135 let BaseOpcode = "J4_cmpgtip0";
7136 let isTaken = Inst{13};
7137 let isExtendable = 1;
7138 let opExtendable = 2;
7139 let isExtentSigned = 1;
7140 let opExtentBits = 11;
7141 let opExtentAlign = 2;
7142 }
7143 def J4_cmpgti_fp0_jump_t : HInst<
7144 (outs),
7145 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
7146 "p0 = cmp.gt($Rs16,#$II); if (!p0.new) jump:t $Ii",
7147 tc_24f426ab, TypeCJ>, Enc_14d27a, PredRel {
7148 let Inst{0-0} = 0b0;
7149 let Inst{13-13} = 0b1;
7150 let Inst{31-22} = 0b0001000011;
7151 let isPredicated = 1;
7152 let isPredicatedFalse = 1;
7153 let isTerminator = 1;
7154 let isBranch = 1;
7155 let isPredicatedNew = 1;
7156 let cofRelax1 = 1;
7157 let cofRelax2 = 1;
7158 let cofMax1 = 1;
7159 let Uses = [P0];
7160 let Defs = [P0, PC];
7161 let BaseOpcode = "J4_cmpgtip0";
7162 let isTaken = Inst{13};
7163 let isExtendable = 1;
7164 let opExtendable = 2;
7165 let isExtentSigned = 1;
7166 let opExtentBits = 11;
7167 let opExtentAlign = 2;
7168 }
7169 def J4_cmpgti_fp1_jump_nt : HInst<
7170 (outs),
7171 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
7172 "p1 = cmp.gt($Rs16,#$II); if (!p1.new) jump:nt $Ii",
7173 tc_24f426ab, TypeCJ>, Enc_14d27a, PredRel {
7174 let Inst{0-0} = 0b0;
7175 let Inst{13-13} = 0b0;
7176 let Inst{31-22} = 0b0001001011;
7177 let isPredicated = 1;
7178 let isPredicatedFalse = 1;
7179 let isTerminator = 1;
7180 let isBranch = 1;
7181 let isPredicatedNew = 1;
7182 let cofRelax1 = 1;
7183 let cofRelax2 = 1;
7184 let cofMax1 = 1;
7185 let Uses = [P1];
7186 let Defs = [P1, PC];
7187 let BaseOpcode = "J4_cmpgtip1";
7188 let isTaken = Inst{13};
7189 let isExtendable = 1;
7190 let opExtendable = 2;
7191 let isExtentSigned = 1;
7192 let opExtentBits = 11;
7193 let opExtentAlign = 2;
7194 }
7195 def J4_cmpgti_fp1_jump_t : HInst<
7196 (outs),
7197 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
7198 "p1 = cmp.gt($Rs16,#$II); if (!p1.new) jump:t $Ii",
7199 tc_24f426ab, TypeCJ>, Enc_14d27a, PredRel {
7200 let Inst{0-0} = 0b0;
7201 let Inst{13-13} = 0b1;
7202 let Inst{31-22} = 0b0001001011;
7203 let isPredicated = 1;
7204 let isPredicatedFalse = 1;
7205 let isTerminator = 1;
7206 let isBranch = 1;
7207 let isPredicatedNew = 1;
7208 let cofRelax1 = 1;
7209 let cofRelax2 = 1;
7210 let cofMax1 = 1;
7211 let Uses = [P1];
7212 let Defs = [P1, PC];
7213 let BaseOpcode = "J4_cmpgtip1";
7214 let isTaken = Inst{13};
7215 let isExtendable = 1;
7216 let opExtendable = 2;
7217 let isExtentSigned = 1;
7218 let opExtentBits = 11;
7219 let opExtentAlign = 2;
7220 }
7221 def J4_cmpgti_t_jumpnv_nt : HInst<
7222 (outs),
7223 (ins IntRegs:$Ns8, u5_0Imm:$II, b30_2Imm:$Ii),
7224 "if (cmp.gt($Ns8.new,#$II)) jump:nt $Ii",
7225 tc_f6e2aff9, TypeNCJ>, Enc_eafd18, PredRel {
7226 let Inst{0-0} = 0b0;
7227 let Inst{13-13} = 0b0;
7228 let Inst{19-19} = 0b0;
7229 let Inst{31-22} = 0b0010010010;
7230 let isPredicated = 1;
7231 let isTerminator = 1;
7232 let isBranch = 1;
7233 let isNewValue = 1;
7234 let cofMax1 = 1;
7235 let isRestrictNoSlot1Store = 1;
7236 let Defs = [PC];
7237 let BaseOpcode = "J4_cmpgtir";
7238 let isTaken = Inst{13};
7239 let isExtendable = 1;
7240 let opExtendable = 2;
7241 let isExtentSigned = 1;
7242 let opExtentBits = 11;
7243 let opExtentAlign = 2;
7244 let opNewValue = 0;
7245 }
7246 def J4_cmpgti_t_jumpnv_t : HInst<
7247 (outs),
7248 (ins IntRegs:$Ns8, u5_0Imm:$II, b30_2Imm:$Ii),
7249 "if (cmp.gt($Ns8.new,#$II)) jump:t $Ii",
7250 tc_f6e2aff9, TypeNCJ>, Enc_eafd18, PredRel {
7251 let Inst{0-0} = 0b0;
7252 let Inst{13-13} = 0b1;
7253 let Inst{19-19} = 0b0;
7254 let Inst{31-22} = 0b0010010010;
7255 let isPredicated = 1;
7256 let isTerminator = 1;
7257 let isBranch = 1;
7258 let isNewValue = 1;
7259 let cofMax1 = 1;
7260 let isRestrictNoSlot1Store = 1;
7261 let Defs = [PC];
7262 let BaseOpcode = "J4_cmpgtir";
7263 let isTaken = Inst{13};
7264 let isExtendable = 1;
7265 let opExtendable = 2;
7266 let isExtentSigned = 1;
7267 let opExtentBits = 11;
7268 let opExtentAlign = 2;
7269 let opNewValue = 0;
7270 }
7271 def J4_cmpgti_tp0_jump_nt : HInst<
7272 (outs),
7273 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
7274 "p0 = cmp.gt($Rs16,#$II); if (p0.new) jump:nt $Ii",
7275 tc_24f426ab, TypeCJ>, Enc_14d27a, PredRel {
7276 let Inst{0-0} = 0b0;
7277 let Inst{13-13} = 0b0;
7278 let Inst{31-22} = 0b0001000010;
7279 let isPredicated = 1;
7280 let isTerminator = 1;
7281 let isBranch = 1;
7282 let isPredicatedNew = 1;
7283 let cofRelax1 = 1;
7284 let cofRelax2 = 1;
7285 let cofMax1 = 1;
7286 let Uses = [P0];
7287 let Defs = [P0, PC];
7288 let BaseOpcode = "J4_cmpgtip0";
7289 let isTaken = Inst{13};
7290 let isExtendable = 1;
7291 let opExtendable = 2;
7292 let isExtentSigned = 1;
7293 let opExtentBits = 11;
7294 let opExtentAlign = 2;
7295 }
7296 def J4_cmpgti_tp0_jump_t : HInst<
7297 (outs),
7298 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
7299 "p0 = cmp.gt($Rs16,#$II); if (p0.new) jump:t $Ii",
7300 tc_24f426ab, TypeCJ>, Enc_14d27a, PredRel {
7301 let Inst{0-0} = 0b0;
7302 let Inst{13-13} = 0b1;
7303 let Inst{31-22} = 0b0001000010;
7304 let isPredicated = 1;
7305 let isTerminator = 1;
7306 let isBranch = 1;
7307 let isPredicatedNew = 1;
7308 let cofRelax1 = 1;
7309 let cofRelax2 = 1;
7310 let cofMax1 = 1;
7311 let Uses = [P0];
7312 let Defs = [P0, PC];
7313 let BaseOpcode = "J4_cmpgtip0";
7314 let isTaken = Inst{13};
7315 let isExtendable = 1;
7316 let opExtendable = 2;
7317 let isExtentSigned = 1;
7318 let opExtentBits = 11;
7319 let opExtentAlign = 2;
7320 }
7321 def J4_cmpgti_tp1_jump_nt : HInst<
7322 (outs),
7323 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
7324 "p1 = cmp.gt($Rs16,#$II); if (p1.new) jump:nt $Ii",
7325 tc_24f426ab, TypeCJ>, Enc_14d27a, PredRel {
7326 let Inst{0-0} = 0b0;
7327 let Inst{13-13} = 0b0;
7328 let Inst{31-22} = 0b0001001010;
7329 let isPredicated = 1;
7330 let isTerminator = 1;
7331 let isBranch = 1;
7332 let isPredicatedNew = 1;
7333 let cofRelax1 = 1;
7334 let cofRelax2 = 1;
7335 let cofMax1 = 1;
7336 let Uses = [P1];
7337 let Defs = [P1, PC];
7338 let BaseOpcode = "J4_cmpgtip1";
7339 let isTaken = Inst{13};
7340 let isExtendable = 1;
7341 let opExtendable = 2;
7342 let isExtentSigned = 1;
7343 let opExtentBits = 11;
7344 let opExtentAlign = 2;
7345 }
7346 def J4_cmpgti_tp1_jump_t : HInst<
7347 (outs),
7348 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
7349 "p1 = cmp.gt($Rs16,#$II); if (p1.new) jump:t $Ii",
7350 tc_24f426ab, TypeCJ>, Enc_14d27a, PredRel {
7351 let Inst{0-0} = 0b0;
7352 let Inst{13-13} = 0b1;
7353 let Inst{31-22} = 0b0001001010;
7354 let isPredicated = 1;
7355 let isTerminator = 1;
7356 let isBranch = 1;
7357 let isPredicatedNew = 1;
7358 let cofRelax1 = 1;
7359 let cofRelax2 = 1;
7360 let cofMax1 = 1;
7361 let Uses = [P1];
7362 let Defs = [P1, PC];
7363 let BaseOpcode = "J4_cmpgtip1";
7364 let isTaken = Inst{13};
7365 let isExtendable = 1;
7366 let opExtendable = 2;
7367 let isExtentSigned = 1;
7368 let opExtentBits = 11;
7369 let opExtentAlign = 2;
7370 }
7371 def J4_cmpgtn1_f_jumpnv_nt : HInst<
7372 (outs),
7373 (ins IntRegs:$Ns8, n1Const:$n1, b30_2Imm:$Ii),
7374 "if (!cmp.gt($Ns8.new,#$n1)) jump:nt $Ii",
7375 tc_f6e2aff9, TypeNCJ>, Enc_3694bd, PredRel {
7376 let Inst{0-0} = 0b0;
7377 let Inst{13-8} = 0b000000;
7378 let Inst{19-19} = 0b0;
7379 let Inst{31-22} = 0b0010011011;
7380 let isPredicated = 1;
7381 let isPredicatedFalse = 1;
7382 let isTerminator = 1;
7383 let isBranch = 1;
7384 let isNewValue = 1;
7385 let cofMax1 = 1;
7386 let isRestrictNoSlot1Store = 1;
7387 let Defs = [PC];
7388 let BaseOpcode = "J4_cmpgtn1r";
7389 let isTaken = Inst{13};
7390 let isExtendable = 1;
7391 let opExtendable = 2;
7392 let isExtentSigned = 1;
7393 let opExtentBits = 11;
7394 let opExtentAlign = 2;
7395 let opNewValue = 0;
7396 }
7397 def J4_cmpgtn1_f_jumpnv_t : HInst<
7398 (outs),
7399 (ins IntRegs:$Ns8, n1Const:$n1, b30_2Imm:$Ii),
7400 "if (!cmp.gt($Ns8.new,#$n1)) jump:t $Ii",
7401 tc_f6e2aff9, TypeNCJ>, Enc_a6853f, PredRel {
7402 let Inst{0-0} = 0b0;
7403 let Inst{13-8} = 0b100000;
7404 let Inst{19-19} = 0b0;
7405 let Inst{31-22} = 0b0010011011;
7406 let isPredicated = 1;
7407 let isPredicatedFalse = 1;
7408 let isTerminator = 1;
7409 let isBranch = 1;
7410 let isNewValue = 1;
7411 let cofMax1 = 1;
7412 let isRestrictNoSlot1Store = 1;
7413 let Defs = [PC];
7414 let BaseOpcode = "J4_cmpgtn1r";
7415 let isTaken = Inst{13};
7416 let isExtendable = 1;
7417 let opExtendable = 2;
7418 let isExtentSigned = 1;
7419 let opExtentBits = 11;
7420 let opExtentAlign = 2;
7421 let opNewValue = 0;
7422 }
7423 def J4_cmpgtn1_fp0_jump_nt : HInst<
7424 (outs),
7425 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
7426 "p0 = cmp.gt($Rs16,#$n1); if (!p0.new) jump:nt $Ii",
7427 tc_24f426ab, TypeCJ>, Enc_a42857, PredRel {
7428 let Inst{0-0} = 0b0;
7429 let Inst{13-8} = 0b000001;
7430 let Inst{31-22} = 0b0001000111;
7431 let isPredicated = 1;
7432 let isPredicatedFalse = 1;
7433 let isTerminator = 1;
7434 let isBranch = 1;
7435 let isPredicatedNew = 1;
7436 let cofRelax1 = 1;
7437 let cofRelax2 = 1;
7438 let cofMax1 = 1;
7439 let Uses = [P0];
7440 let Defs = [P0, PC];
7441 let BaseOpcode = "J4_cmpgtn1p0";
7442 let isTaken = Inst{13};
7443 let isExtendable = 1;
7444 let opExtendable = 2;
7445 let isExtentSigned = 1;
7446 let opExtentBits = 11;
7447 let opExtentAlign = 2;
7448 }
7449 def J4_cmpgtn1_fp0_jump_t : HInst<
7450 (outs),
7451 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
7452 "p0 = cmp.gt($Rs16,#$n1); if (!p0.new) jump:t $Ii",
7453 tc_24f426ab, TypeCJ>, Enc_f6fe0b, PredRel {
7454 let Inst{0-0} = 0b0;
7455 let Inst{13-8} = 0b100001;
7456 let Inst{31-22} = 0b0001000111;
7457 let isPredicated = 1;
7458 let isPredicatedFalse = 1;
7459 let isTerminator = 1;
7460 let isBranch = 1;
7461 let isPredicatedNew = 1;
7462 let cofRelax1 = 1;
7463 let cofRelax2 = 1;
7464 let cofMax1 = 1;
7465 let Uses = [P0];
7466 let Defs = [P0, PC];
7467 let BaseOpcode = "J4_cmpgtn1p0";
7468 let isTaken = Inst{13};
7469 let isExtendable = 1;
7470 let opExtendable = 2;
7471 let isExtentSigned = 1;
7472 let opExtentBits = 11;
7473 let opExtentAlign = 2;
7474 }
7475 def J4_cmpgtn1_fp1_jump_nt : HInst<
7476 (outs),
7477 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
7478 "p1 = cmp.gt($Rs16,#$n1); if (!p1.new) jump:nt $Ii",
7479 tc_24f426ab, TypeCJ>, Enc_3e3989, PredRel {
7480 let Inst{0-0} = 0b0;
7481 let Inst{13-8} = 0b000001;
7482 let Inst{31-22} = 0b0001001111;
7483 let isPredicated = 1;
7484 let isPredicatedFalse = 1;
7485 let isTerminator = 1;
7486 let isBranch = 1;
7487 let isPredicatedNew = 1;
7488 let cofRelax1 = 1;
7489 let cofRelax2 = 1;
7490 let cofMax1 = 1;
7491 let Uses = [P1];
7492 let Defs = [P1, PC];
7493 let BaseOpcode = "J4_cmpgtn1p1";
7494 let isTaken = Inst{13};
7495 let isExtendable = 1;
7496 let opExtendable = 2;
7497 let isExtentSigned = 1;
7498 let opExtentBits = 11;
7499 let opExtentAlign = 2;
7500 }
7501 def J4_cmpgtn1_fp1_jump_t : HInst<
7502 (outs),
7503 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
7504 "p1 = cmp.gt($Rs16,#$n1); if (!p1.new) jump:t $Ii",
7505 tc_24f426ab, TypeCJ>, Enc_b909d2, PredRel {
7506 let Inst{0-0} = 0b0;
7507 let Inst{13-8} = 0b100001;
7508 let Inst{31-22} = 0b0001001111;
7509 let isPredicated = 1;
7510 let isPredicatedFalse = 1;
7511 let isTerminator = 1;
7512 let isBranch = 1;
7513 let isPredicatedNew = 1;
7514 let cofRelax1 = 1;
7515 let cofRelax2 = 1;
7516 let cofMax1 = 1;
7517 let Uses = [P1];
7518 let Defs = [P1, PC];
7519 let BaseOpcode = "J4_cmpgtn1p1";
7520 let isTaken = Inst{13};
7521 let isExtendable = 1;
7522 let opExtendable = 2;
7523 let isExtentSigned = 1;
7524 let opExtentBits = 11;
7525 let opExtentAlign = 2;
7526 }
7527 def J4_cmpgtn1_t_jumpnv_nt : HInst<
7528 (outs),
7529 (ins IntRegs:$Ns8, n1Const:$n1, b30_2Imm:$Ii),
7530 "if (cmp.gt($Ns8.new,#$n1)) jump:nt $Ii",
7531 tc_f6e2aff9, TypeNCJ>, Enc_f82302, PredRel {
7532 let Inst{0-0} = 0b0;
7533 let Inst{13-8} = 0b000000;
7534 let Inst{19-19} = 0b0;
7535 let Inst{31-22} = 0b0010011010;
7536 let isPredicated = 1;
7537 let isTerminator = 1;
7538 let isBranch = 1;
7539 let isNewValue = 1;
7540 let cofMax1 = 1;
7541 let isRestrictNoSlot1Store = 1;
7542 let Defs = [PC];
7543 let BaseOpcode = "J4_cmpgtn1r";
7544 let isTaken = Inst{13};
7545 let isExtendable = 1;
7546 let opExtendable = 2;
7547 let isExtentSigned = 1;
7548 let opExtentBits = 11;
7549 let opExtentAlign = 2;
7550 let opNewValue = 0;
7551 }
7552 def J4_cmpgtn1_t_jumpnv_t : HInst<
7553 (outs),
7554 (ins IntRegs:$Ns8, n1Const:$n1, b30_2Imm:$Ii),
7555 "if (cmp.gt($Ns8.new,#$n1)) jump:t $Ii",
7556 tc_f6e2aff9, TypeNCJ>, Enc_6413b6, PredRel {
7557 let Inst{0-0} = 0b0;
7558 let Inst{13-8} = 0b100000;
7559 let Inst{19-19} = 0b0;
7560 let Inst{31-22} = 0b0010011010;
7561 let isPredicated = 1;
7562 let isTerminator = 1;
7563 let isBranch = 1;
7564 let isNewValue = 1;
7565 let cofMax1 = 1;
7566 let isRestrictNoSlot1Store = 1;
7567 let Defs = [PC];
7568 let BaseOpcode = "J4_cmpgtn1r";
7569 let isTaken = Inst{13};
7570 let isExtendable = 1;
7571 let opExtendable = 2;
7572 let isExtentSigned = 1;
7573 let opExtentBits = 11;
7574 let opExtentAlign = 2;
7575 let opNewValue = 0;
7576 }
7577 def J4_cmpgtn1_tp0_jump_nt : HInst<
7578 (outs),
7579 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
7580 "p0 = cmp.gt($Rs16,#$n1); if (p0.new) jump:nt $Ii",
7581 tc_24f426ab, TypeCJ>, Enc_b78edd, PredRel {
7582 let Inst{0-0} = 0b0;
7583 let Inst{13-8} = 0b000001;
7584 let Inst{31-22} = 0b0001000110;
7585 let isPredicated = 1;
7586 let isTerminator = 1;
7587 let isBranch = 1;
7588 let isPredicatedNew = 1;
7589 let cofRelax1 = 1;
7590 let cofRelax2 = 1;
7591 let cofMax1 = 1;
7592 let Uses = [P0];
7593 let Defs = [P0, PC];
7594 let BaseOpcode = "J4_cmpgtn1p0";
7595 let isTaken = Inst{13};
7596 let isExtendable = 1;
7597 let opExtendable = 2;
7598 let isExtentSigned = 1;
7599 let opExtentBits = 11;
7600 let opExtentAlign = 2;
7601 }
7602 def J4_cmpgtn1_tp0_jump_t : HInst<
7603 (outs),
7604 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
7605 "p0 = cmp.gt($Rs16,#$n1); if (p0.new) jump:t $Ii",
7606 tc_24f426ab, TypeCJ>, Enc_041d7b, PredRel {
7607 let Inst{0-0} = 0b0;
7608 let Inst{13-8} = 0b100001;
7609 let Inst{31-22} = 0b0001000110;
7610 let isPredicated = 1;
7611 let isTerminator = 1;
7612 let isBranch = 1;
7613 let isPredicatedNew = 1;
7614 let cofRelax1 = 1;
7615 let cofRelax2 = 1;
7616 let cofMax1 = 1;
7617 let Uses = [P0];
7618 let Defs = [P0, PC];
7619 let BaseOpcode = "J4_cmpgtn1p0";
7620 let isTaken = Inst{13};
7621 let isExtendable = 1;
7622 let opExtendable = 2;
7623 let isExtentSigned = 1;
7624 let opExtentBits = 11;
7625 let opExtentAlign = 2;
7626 }
7627 def J4_cmpgtn1_tp1_jump_nt : HInst<
7628 (outs),
7629 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
7630 "p1 = cmp.gt($Rs16,#$n1); if (p1.new) jump:nt $Ii",
7631 tc_24f426ab, TypeCJ>, Enc_b1e1fb, PredRel {
7632 let Inst{0-0} = 0b0;
7633 let Inst{13-8} = 0b000001;
7634 let Inst{31-22} = 0b0001001110;
7635 let isPredicated = 1;
7636 let isTerminator = 1;
7637 let isBranch = 1;
7638 let isPredicatedNew = 1;
7639 let cofRelax1 = 1;
7640 let cofRelax2 = 1;
7641 let cofMax1 = 1;
7642 let Uses = [P1];
7643 let Defs = [P1, PC];
7644 let BaseOpcode = "J4_cmpgtn1p1";
7645 let isTaken = Inst{13};
7646 let isExtendable = 1;
7647 let opExtendable = 2;
7648 let isExtentSigned = 1;
7649 let opExtentBits = 11;
7650 let opExtentAlign = 2;
7651 }
7652 def J4_cmpgtn1_tp1_jump_t : HInst<
7653 (outs),
7654 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
7655 "p1 = cmp.gt($Rs16,#$n1); if (p1.new) jump:t $Ii",
7656 tc_24f426ab, TypeCJ>, Enc_178717, PredRel {
7657 let Inst{0-0} = 0b0;
7658 let Inst{13-8} = 0b100001;
7659 let Inst{31-22} = 0b0001001110;
7660 let isPredicated = 1;
7661 let isTerminator = 1;
7662 let isBranch = 1;
7663 let isPredicatedNew = 1;
7664 let cofRelax1 = 1;
7665 let cofRelax2 = 1;
7666 let cofMax1 = 1;
7667 let Uses = [P1];
7668 let Defs = [P1, PC];
7669 let BaseOpcode = "J4_cmpgtn1p1";
7670 let isTaken = Inst{13};
7671 let isExtendable = 1;
7672 let opExtendable = 2;
7673 let isExtentSigned = 1;
7674 let opExtentBits = 11;
7675 let opExtentAlign = 2;
7676 }
7677 def J4_cmpgtu_f_jumpnv_nt : HInst<
7678 (outs),
7679 (ins IntRegs:$Ns8, IntRegs:$Rt32, b30_2Imm:$Ii),
7680 "if (!cmp.gtu($Ns8.new,$Rt32)) jump:nt $Ii",
7681 tc_24e109c7, TypeNCJ>, Enc_c9a18e, PredRel {
7682 let Inst{0-0} = 0b0;
7683 let Inst{13-13} = 0b0;
7684 let Inst{19-19} = 0b0;
7685 let Inst{31-22} = 0b0010000101;
7686 let isPredicated = 1;
7687 let isPredicatedFalse = 1;
7688 let isTerminator = 1;
7689 let isBranch = 1;
7690 let isNewValue = 1;
7691 let cofMax1 = 1;
7692 let isRestrictNoSlot1Store = 1;
7693 let Defs = [PC];
7694 let BaseOpcode = "J4_cmpgtur";
7695 let isTaken = Inst{13};
7696 let isExtendable = 1;
7697 let opExtendable = 2;
7698 let isExtentSigned = 1;
7699 let opExtentBits = 11;
7700 let opExtentAlign = 2;
7701 let opNewValue = 0;
7702 }
7703 def J4_cmpgtu_f_jumpnv_t : HInst<
7704 (outs),
7705 (ins IntRegs:$Ns8, IntRegs:$Rt32, b30_2Imm:$Ii),
7706 "if (!cmp.gtu($Ns8.new,$Rt32)) jump:t $Ii",
7707 tc_24e109c7, TypeNCJ>, Enc_c9a18e, PredRel {
7708 let Inst{0-0} = 0b0;
7709 let Inst{13-13} = 0b1;
7710 let Inst{19-19} = 0b0;
7711 let Inst{31-22} = 0b0010000101;
7712 let isPredicated = 1;
7713 let isPredicatedFalse = 1;
7714 let isTerminator = 1;
7715 let isBranch = 1;
7716 let isNewValue = 1;
7717 let cofMax1 = 1;
7718 let isRestrictNoSlot1Store = 1;
7719 let Defs = [PC];
7720 let BaseOpcode = "J4_cmpgtur";
7721 let isTaken = Inst{13};
7722 let isExtendable = 1;
7723 let opExtendable = 2;
7724 let isExtentSigned = 1;
7725 let opExtentBits = 11;
7726 let opExtentAlign = 2;
7727 let opNewValue = 0;
7728 }
7729 def J4_cmpgtu_fp0_jump_nt : HInst<
7730 (outs),
7731 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
7732 "p0 = cmp.gtu($Rs16,$Rt16); if (!p0.new) jump:nt $Ii",
7733 tc_9e27f2f9, TypeCJ>, Enc_6a5972, PredRel {
7734 let Inst{0-0} = 0b0;
7735 let Inst{13-12} = 0b00;
7736 let Inst{31-22} = 0b0001010101;
7737 let isPredicated = 1;
7738 let isPredicatedFalse = 1;
7739 let isTerminator = 1;
7740 let isBranch = 1;
7741 let isPredicatedNew = 1;
7742 let cofRelax1 = 1;
7743 let cofRelax2 = 1;
7744 let cofMax1 = 1;
7745 let Uses = [P0];
7746 let Defs = [P0, PC];
7747 let BaseOpcode = "J4_cmpgtup0";
7748 let isTaken = Inst{13};
7749 let isExtendable = 1;
7750 let opExtendable = 2;
7751 let isExtentSigned = 1;
7752 let opExtentBits = 11;
7753 let opExtentAlign = 2;
7754 }
7755 def J4_cmpgtu_fp0_jump_t : HInst<
7756 (outs),
7757 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
7758 "p0 = cmp.gtu($Rs16,$Rt16); if (!p0.new) jump:t $Ii",
7759 tc_9e27f2f9, TypeCJ>, Enc_6a5972, PredRel {
7760 let Inst{0-0} = 0b0;
7761 let Inst{13-12} = 0b10;
7762 let Inst{31-22} = 0b0001010101;
7763 let isPredicated = 1;
7764 let isPredicatedFalse = 1;
7765 let isTerminator = 1;
7766 let isBranch = 1;
7767 let isPredicatedNew = 1;
7768 let cofRelax1 = 1;
7769 let cofRelax2 = 1;
7770 let cofMax1 = 1;
7771 let Uses = [P0];
7772 let Defs = [P0, PC];
7773 let BaseOpcode = "J4_cmpgtup0";
7774 let isTaken = Inst{13};
7775 let isExtendable = 1;
7776 let opExtendable = 2;
7777 let isExtentSigned = 1;
7778 let opExtentBits = 11;
7779 let opExtentAlign = 2;
7780 }
7781 def J4_cmpgtu_fp1_jump_nt : HInst<
7782 (outs),
7783 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
7784 "p1 = cmp.gtu($Rs16,$Rt16); if (!p1.new) jump:nt $Ii",
7785 tc_9e27f2f9, TypeCJ>, Enc_6a5972, PredRel {
7786 let Inst{0-0} = 0b0;
7787 let Inst{13-12} = 0b01;
7788 let Inst{31-22} = 0b0001010101;
7789 let isPredicated = 1;
7790 let isPredicatedFalse = 1;
7791 let isTerminator = 1;
7792 let isBranch = 1;
7793 let isPredicatedNew = 1;
7794 let cofRelax1 = 1;
7795 let cofRelax2 = 1;
7796 let cofMax1 = 1;
7797 let Uses = [P1];
7798 let Defs = [P1, PC];
7799 let BaseOpcode = "J4_cmpgtup1";
7800 let isTaken = Inst{13};
7801 let isExtendable = 1;
7802 let opExtendable = 2;
7803 let isExtentSigned = 1;
7804 let opExtentBits = 11;
7805 let opExtentAlign = 2;
7806 }
7807 def J4_cmpgtu_fp1_jump_t : HInst<
7808 (outs),
7809 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
7810 "p1 = cmp.gtu($Rs16,$Rt16); if (!p1.new) jump:t $Ii",
7811 tc_9e27f2f9, TypeCJ>, Enc_6a5972, PredRel {
7812 let Inst{0-0} = 0b0;
7813 let Inst{13-12} = 0b11;
7814 let Inst{31-22} = 0b0001010101;
7815 let isPredicated = 1;
7816 let isPredicatedFalse = 1;
7817 let isTerminator = 1;
7818 let isBranch = 1;
7819 let isPredicatedNew = 1;
7820 let cofRelax1 = 1;
7821 let cofRelax2 = 1;
7822 let cofMax1 = 1;
7823 let Uses = [P1];
7824 let Defs = [P1, PC];
7825 let BaseOpcode = "J4_cmpgtup1";
7826 let isTaken = Inst{13};
7827 let isExtendable = 1;
7828 let opExtendable = 2;
7829 let isExtentSigned = 1;
7830 let opExtentBits = 11;
7831 let opExtentAlign = 2;
7832 }
7833 def J4_cmpgtu_t_jumpnv_nt : HInst<
7834 (outs),
7835 (ins IntRegs:$Ns8, IntRegs:$Rt32, b30_2Imm:$Ii),
7836 "if (cmp.gtu($Ns8.new,$Rt32)) jump:nt $Ii",
7837 tc_24e109c7, TypeNCJ>, Enc_c9a18e, PredRel {
7838 let Inst{0-0} = 0b0;
7839 let Inst{13-13} = 0b0;
7840 let Inst{19-19} = 0b0;
7841 let Inst{31-22} = 0b0010000100;
7842 let isPredicated = 1;
7843 let isTerminator = 1;
7844 let isBranch = 1;
7845 let isNewValue = 1;
7846 let cofMax1 = 1;
7847 let isRestrictNoSlot1Store = 1;
7848 let Defs = [PC];
7849 let BaseOpcode = "J4_cmpgtur";
7850 let isTaken = Inst{13};
7851 let isExtendable = 1;
7852 let opExtendable = 2;
7853 let isExtentSigned = 1;
7854 let opExtentBits = 11;
7855 let opExtentAlign = 2;
7856 let opNewValue = 0;
7857 }
7858 def J4_cmpgtu_t_jumpnv_t : HInst<
7859 (outs),
7860 (ins IntRegs:$Ns8, IntRegs:$Rt32, b30_2Imm:$Ii),
7861 "if (cmp.gtu($Ns8.new,$Rt32)) jump:t $Ii",
7862 tc_24e109c7, TypeNCJ>, Enc_c9a18e, PredRel {
7863 let Inst{0-0} = 0b0;
7864 let Inst{13-13} = 0b1;
7865 let Inst{19-19} = 0b0;
7866 let Inst{31-22} = 0b0010000100;
7867 let isPredicated = 1;
7868 let isTerminator = 1;
7869 let isBranch = 1;
7870 let isNewValue = 1;
7871 let cofMax1 = 1;
7872 let isRestrictNoSlot1Store = 1;
7873 let Defs = [PC];
7874 let BaseOpcode = "J4_cmpgtur";
7875 let isTaken = Inst{13};
7876 let isExtendable = 1;
7877 let opExtendable = 2;
7878 let isExtentSigned = 1;
7879 let opExtentBits = 11;
7880 let opExtentAlign = 2;
7881 let opNewValue = 0;
7882 }
7883 def J4_cmpgtu_tp0_jump_nt : HInst<
7884 (outs),
7885 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
7886 "p0 = cmp.gtu($Rs16,$Rt16); if (p0.new) jump:nt $Ii",
7887 tc_9e27f2f9, TypeCJ>, Enc_6a5972, PredRel {
7888 let Inst{0-0} = 0b0;
7889 let Inst{13-12} = 0b00;
7890 let Inst{31-22} = 0b0001010100;
7891 let isPredicated = 1;
7892 let isTerminator = 1;
7893 let isBranch = 1;
7894 let isPredicatedNew = 1;
7895 let cofRelax1 = 1;
7896 let cofRelax2 = 1;
7897 let cofMax1 = 1;
7898 let Uses = [P0];
7899 let Defs = [P0, PC];
7900 let BaseOpcode = "J4_cmpgtup0";
7901 let isTaken = Inst{13};
7902 let isExtendable = 1;
7903 let opExtendable = 2;
7904 let isExtentSigned = 1;
7905 let opExtentBits = 11;
7906 let opExtentAlign = 2;
7907 }
7908 def J4_cmpgtu_tp0_jump_t : HInst<
7909 (outs),
7910 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
7911 "p0 = cmp.gtu($Rs16,$Rt16); if (p0.new) jump:t $Ii",
7912 tc_9e27f2f9, TypeCJ>, Enc_6a5972, PredRel {
7913 let Inst{0-0} = 0b0;
7914 let Inst{13-12} = 0b10;
7915 let Inst{31-22} = 0b0001010100;
7916 let isPredicated = 1;
7917 let isTerminator = 1;
7918 let isBranch = 1;
7919 let isPredicatedNew = 1;
7920 let cofRelax1 = 1;
7921 let cofRelax2 = 1;
7922 let cofMax1 = 1;
7923 let Uses = [P0];
7924 let Defs = [P0, PC];
7925 let BaseOpcode = "J4_cmpgtup0";
7926 let isTaken = Inst{13};
7927 let isExtendable = 1;
7928 let opExtendable = 2;
7929 let isExtentSigned = 1;
7930 let opExtentBits = 11;
7931 let opExtentAlign = 2;
7932 }
7933 def J4_cmpgtu_tp1_jump_nt : HInst<
7934 (outs),
7935 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
7936 "p1 = cmp.gtu($Rs16,$Rt16); if (p1.new) jump:nt $Ii",
7937 tc_9e27f2f9, TypeCJ>, Enc_6a5972, PredRel {
7938 let Inst{0-0} = 0b0;
7939 let Inst{13-12} = 0b01;
7940 let Inst{31-22} = 0b0001010100;
7941 let isPredicated = 1;
7942 let isTerminator = 1;
7943 let isBranch = 1;
7944 let isPredicatedNew = 1;
7945 let cofRelax1 = 1;
7946 let cofRelax2 = 1;
7947 let cofMax1 = 1;
7948 let Uses = [P1];
7949 let Defs = [P1, PC];
7950 let BaseOpcode = "J4_cmpgtup1";
7951 let isTaken = Inst{13};
7952 let isExtendable = 1;
7953 let opExtendable = 2;
7954 let isExtentSigned = 1;
7955 let opExtentBits = 11;
7956 let opExtentAlign = 2;
7957 }
7958 def J4_cmpgtu_tp1_jump_t : HInst<
7959 (outs),
7960 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
7961 "p1 = cmp.gtu($Rs16,$Rt16); if (p1.new) jump:t $Ii",
7962 tc_9e27f2f9, TypeCJ>, Enc_6a5972, PredRel {
7963 let Inst{0-0} = 0b0;
7964 let Inst{13-12} = 0b11;
7965 let Inst{31-22} = 0b0001010100;
7966 let isPredicated = 1;
7967 let isTerminator = 1;
7968 let isBranch = 1;
7969 let isPredicatedNew = 1;
7970 let cofRelax1 = 1;
7971 let cofRelax2 = 1;
7972 let cofMax1 = 1;
7973 let Uses = [P1];
7974 let Defs = [P1, PC];
7975 let BaseOpcode = "J4_cmpgtup1";
7976 let isTaken = Inst{13};
7977 let isExtendable = 1;
7978 let opExtendable = 2;
7979 let isExtentSigned = 1;
7980 let opExtentBits = 11;
7981 let opExtentAlign = 2;
7982 }
7983 def J4_cmpgtui_f_jumpnv_nt : HInst<
7984 (outs),
7985 (ins IntRegs:$Ns8, u5_0Imm:$II, b30_2Imm:$Ii),
7986 "if (!cmp.gtu($Ns8.new,#$II)) jump:nt $Ii",
7987 tc_f6e2aff9, TypeNCJ>, Enc_eafd18, PredRel {
7988 let Inst{0-0} = 0b0;
7989 let Inst{13-13} = 0b0;
7990 let Inst{19-19} = 0b0;
7991 let Inst{31-22} = 0b0010010101;
7992 let isPredicated = 1;
7993 let isPredicatedFalse = 1;
7994 let isTerminator = 1;
7995 let isBranch = 1;
7996 let isNewValue = 1;
7997 let cofMax1 = 1;
7998 let isRestrictNoSlot1Store = 1;
7999 let Defs = [PC];
8000 let BaseOpcode = "J4_cmpgtuir";
8001 let isTaken = Inst{13};
8002 let isExtendable = 1;
8003 let opExtendable = 2;
8004 let isExtentSigned = 1;
8005 let opExtentBits = 11;
8006 let opExtentAlign = 2;
8007 let opNewValue = 0;
8008 }
8009 def J4_cmpgtui_f_jumpnv_t : HInst<
8010 (outs),
8011 (ins IntRegs:$Ns8, u5_0Imm:$II, b30_2Imm:$Ii),
8012 "if (!cmp.gtu($Ns8.new,#$II)) jump:t $Ii",
8013 tc_f6e2aff9, TypeNCJ>, Enc_eafd18, PredRel {
8014 let Inst{0-0} = 0b0;
8015 let Inst{13-13} = 0b1;
8016 let Inst{19-19} = 0b0;
8017 let Inst{31-22} = 0b0010010101;
8018 let isPredicated = 1;
8019 let isPredicatedFalse = 1;
8020 let isTerminator = 1;
8021 let isBranch = 1;
8022 let isNewValue = 1;
8023 let cofMax1 = 1;
8024 let isRestrictNoSlot1Store = 1;
8025 let Defs = [PC];
8026 let BaseOpcode = "J4_cmpgtuir";
8027 let isTaken = Inst{13};
8028 let isExtendable = 1;
8029 let opExtendable = 2;
8030 let isExtentSigned = 1;
8031 let opExtentBits = 11;
8032 let opExtentAlign = 2;
8033 let opNewValue = 0;
8034 }
8035 def J4_cmpgtui_fp0_jump_nt : HInst<
8036 (outs),
8037 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
8038 "p0 = cmp.gtu($Rs16,#$II); if (!p0.new) jump:nt $Ii",
8039 tc_24f426ab, TypeCJ>, Enc_14d27a, PredRel {
8040 let Inst{0-0} = 0b0;
8041 let Inst{13-13} = 0b0;
8042 let Inst{31-22} = 0b0001000101;
8043 let isPredicated = 1;
8044 let isPredicatedFalse = 1;
8045 let isTerminator = 1;
8046 let isBranch = 1;
8047 let isPredicatedNew = 1;
8048 let cofRelax1 = 1;
8049 let cofRelax2 = 1;
8050 let cofMax1 = 1;
8051 let Uses = [P0];
8052 let Defs = [P0, PC];
8053 let BaseOpcode = "J4_cmpgtuip0";
8054 let isTaken = Inst{13};
8055 let isExtendable = 1;
8056 let opExtendable = 2;
8057 let isExtentSigned = 1;
8058 let opExtentBits = 11;
8059 let opExtentAlign = 2;
8060 }
8061 def J4_cmpgtui_fp0_jump_t : HInst<
8062 (outs),
8063 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
8064 "p0 = cmp.gtu($Rs16,#$II); if (!p0.new) jump:t $Ii",
8065 tc_24f426ab, TypeCJ>, Enc_14d27a, PredRel {
8066 let Inst{0-0} = 0b0;
8067 let Inst{13-13} = 0b1;
8068 let Inst{31-22} = 0b0001000101;
8069 let isPredicated = 1;
8070 let isPredicatedFalse = 1;
8071 let isTerminator = 1;
8072 let isBranch = 1;
8073 let isPredicatedNew = 1;
8074 let cofRelax1 = 1;
8075 let cofRelax2 = 1;
8076 let cofMax1 = 1;
8077 let Uses = [P0];
8078 let Defs = [P0, PC];
8079 let BaseOpcode = "J4_cmpgtuip0";
8080 let isTaken = Inst{13};
8081 let isExtendable = 1;
8082 let opExtendable = 2;
8083 let isExtentSigned = 1;
8084 let opExtentBits = 11;
8085 let opExtentAlign = 2;
8086 }
8087 def J4_cmpgtui_fp1_jump_nt : HInst<
8088 (outs),
8089 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
8090 "p1 = cmp.gtu($Rs16,#$II); if (!p1.new) jump:nt $Ii",
8091 tc_24f426ab, TypeCJ>, Enc_14d27a, PredRel {
8092 let Inst{0-0} = 0b0;
8093 let Inst{13-13} = 0b0;
8094 let Inst{31-22} = 0b0001001101;
8095 let isPredicated = 1;
8096 let isPredicatedFalse = 1;
8097 let isTerminator = 1;
8098 let isBranch = 1;
8099 let isPredicatedNew = 1;
8100 let cofRelax1 = 1;
8101 let cofRelax2 = 1;
8102 let cofMax1 = 1;
8103 let Uses = [P1];
8104 let Defs = [P1, PC];
8105 let BaseOpcode = "J4_cmpgtuip1";
8106 let isTaken = Inst{13};
8107 let isExtendable = 1;
8108 let opExtendable = 2;
8109 let isExtentSigned = 1;
8110 let opExtentBits = 11;
8111 let opExtentAlign = 2;
8112 }
8113 def J4_cmpgtui_fp1_jump_t : HInst<
8114 (outs),
8115 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
8116 "p1 = cmp.gtu($Rs16,#$II); if (!p1.new) jump:t $Ii",
8117 tc_24f426ab, TypeCJ>, Enc_14d27a, PredRel {
8118 let Inst{0-0} = 0b0;
8119 let Inst{13-13} = 0b1;
8120 let Inst{31-22} = 0b0001001101;
8121 let isPredicated = 1;
8122 let isPredicatedFalse = 1;
8123 let isTerminator = 1;
8124 let isBranch = 1;
8125 let isPredicatedNew = 1;
8126 let cofRelax1 = 1;
8127 let cofRelax2 = 1;
8128 let cofMax1 = 1;
8129 let Uses = [P1];
8130 let Defs = [P1, PC];
8131 let BaseOpcode = "J4_cmpgtuip1";
8132 let isTaken = Inst{13};
8133 let isExtendable = 1;
8134 let opExtendable = 2;
8135 let isExtentSigned = 1;
8136 let opExtentBits = 11;
8137 let opExtentAlign = 2;
8138 }
8139 def J4_cmpgtui_t_jumpnv_nt : HInst<
8140 (outs),
8141 (ins IntRegs:$Ns8, u5_0Imm:$II, b30_2Imm:$Ii),
8142 "if (cmp.gtu($Ns8.new,#$II)) jump:nt $Ii",
8143 tc_f6e2aff9, TypeNCJ>, Enc_eafd18, PredRel {
8144 let Inst{0-0} = 0b0;
8145 let Inst{13-13} = 0b0;
8146 let Inst{19-19} = 0b0;
8147 let Inst{31-22} = 0b0010010100;
8148 let isPredicated = 1;
8149 let isTerminator = 1;
8150 let isBranch = 1;
8151 let isNewValue = 1;
8152 let cofMax1 = 1;
8153 let isRestrictNoSlot1Store = 1;
8154 let Defs = [PC];
8155 let BaseOpcode = "J4_cmpgtuir";
8156 let isTaken = Inst{13};
8157 let isExtendable = 1;
8158 let opExtendable = 2;
8159 let isExtentSigned = 1;
8160 let opExtentBits = 11;
8161 let opExtentAlign = 2;
8162 let opNewValue = 0;
8163 }
8164 def J4_cmpgtui_t_jumpnv_t : HInst<
8165 (outs),
8166 (ins IntRegs:$Ns8, u5_0Imm:$II, b30_2Imm:$Ii),
8167 "if (cmp.gtu($Ns8.new,#$II)) jump:t $Ii",
8168 tc_f6e2aff9, TypeNCJ>, Enc_eafd18, PredRel {
8169 let Inst{0-0} = 0b0;
8170 let Inst{13-13} = 0b1;
8171 let Inst{19-19} = 0b0;
8172 let Inst{31-22} = 0b0010010100;
8173 let isPredicated = 1;
8174 let isTerminator = 1;
8175 let isBranch = 1;
8176 let isNewValue = 1;
8177 let cofMax1 = 1;
8178 let isRestrictNoSlot1Store = 1;
8179 let Defs = [PC];
8180 let BaseOpcode = "J4_cmpgtuir";
8181 let isTaken = Inst{13};
8182 let isExtendable = 1;
8183 let opExtendable = 2;
8184 let isExtentSigned = 1;
8185 let opExtentBits = 11;
8186 let opExtentAlign = 2;
8187 let opNewValue = 0;
8188 }
8189 def J4_cmpgtui_tp0_jump_nt : HInst<
8190 (outs),
8191 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
8192 "p0 = cmp.gtu($Rs16,#$II); if (p0.new) jump:nt $Ii",
8193 tc_24f426ab, TypeCJ>, Enc_14d27a, PredRel {
8194 let Inst{0-0} = 0b0;
8195 let Inst{13-13} = 0b0;
8196 let Inst{31-22} = 0b0001000100;
8197 let isPredicated = 1;
8198 let isTerminator = 1;
8199 let isBranch = 1;
8200 let isPredicatedNew = 1;
8201 let cofRelax1 = 1;
8202 let cofRelax2 = 1;
8203 let cofMax1 = 1;
8204 let Uses = [P0];
8205 let Defs = [P0, PC];
8206 let BaseOpcode = "J4_cmpgtuip0";
8207 let isTaken = Inst{13};
8208 let isExtendable = 1;
8209 let opExtendable = 2;
8210 let isExtentSigned = 1;
8211 let opExtentBits = 11;
8212 let opExtentAlign = 2;
8213 }
8214 def J4_cmpgtui_tp0_jump_t : HInst<
8215 (outs),
8216 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
8217 "p0 = cmp.gtu($Rs16,#$II); if (p0.new) jump:t $Ii",
8218 tc_24f426ab, TypeCJ>, Enc_14d27a, PredRel {
8219 let Inst{0-0} = 0b0;
8220 let Inst{13-13} = 0b1;
8221 let Inst{31-22} = 0b0001000100;
8222 let isPredicated = 1;
8223 let isTerminator = 1;
8224 let isBranch = 1;
8225 let isPredicatedNew = 1;
8226 let cofRelax1 = 1;
8227 let cofRelax2 = 1;
8228 let cofMax1 = 1;
8229 let Uses = [P0];
8230 let Defs = [P0, PC];
8231 let BaseOpcode = "J4_cmpgtuip0";
8232 let isTaken = Inst{13};
8233 let isExtendable = 1;
8234 let opExtendable = 2;
8235 let isExtentSigned = 1;
8236 let opExtentBits = 11;
8237 let opExtentAlign = 2;
8238 }
8239 def J4_cmpgtui_tp1_jump_nt : HInst<
8240 (outs),
8241 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
8242 "p1 = cmp.gtu($Rs16,#$II); if (p1.new) jump:nt $Ii",
8243 tc_24f426ab, TypeCJ>, Enc_14d27a, PredRel {
8244 let Inst{0-0} = 0b0;
8245 let Inst{13-13} = 0b0;
8246 let Inst{31-22} = 0b0001001100;
8247 let isPredicated = 1;
8248 let isTerminator = 1;
8249 let isBranch = 1;
8250 let isPredicatedNew = 1;
8251 let cofRelax1 = 1;
8252 let cofRelax2 = 1;
8253 let cofMax1 = 1;
8254 let Uses = [P1];
8255 let Defs = [P1, PC];
8256 let BaseOpcode = "J4_cmpgtuip1";
8257 let isTaken = Inst{13};
8258 let isExtendable = 1;
8259 let opExtendable = 2;
8260 let isExtentSigned = 1;
8261 let opExtentBits = 11;
8262 let opExtentAlign = 2;
8263 }
8264 def J4_cmpgtui_tp1_jump_t : HInst<
8265 (outs),
8266 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
8267 "p1 = cmp.gtu($Rs16,#$II); if (p1.new) jump:t $Ii",
8268 tc_24f426ab, TypeCJ>, Enc_14d27a, PredRel {
8269 let Inst{0-0} = 0b0;
8270 let Inst{13-13} = 0b1;
8271 let Inst{31-22} = 0b0001001100;
8272 let isPredicated = 1;
8273 let isTerminator = 1;
8274 let isBranch = 1;
8275 let isPredicatedNew = 1;
8276 let cofRelax1 = 1;
8277 let cofRelax2 = 1;
8278 let cofMax1 = 1;
8279 let Uses = [P1];
8280 let Defs = [P1, PC];
8281 let BaseOpcode = "J4_cmpgtuip1";
8282 let isTaken = Inst{13};
8283 let isExtendable = 1;
8284 let opExtendable = 2;
8285 let isExtentSigned = 1;
8286 let opExtentBits = 11;
8287 let opExtentAlign = 2;
8288 }
8289 def J4_cmplt_f_jumpnv_nt : HInst<
8290 (outs),
8291 (ins IntRegs:$Rt32, IntRegs:$Ns8, b30_2Imm:$Ii),
8292 "if (!cmp.gt($Rt32,$Ns8.new)) jump:nt $Ii",
8293 tc_975a4e54, TypeNCJ>, Enc_5de85f, PredRel {
8294 let Inst{0-0} = 0b0;
8295 let Inst{13-13} = 0b0;
8296 let Inst{19-19} = 0b0;
8297 let Inst{31-22} = 0b0010000111;
8298 let isPredicated = 1;
8299 let isPredicatedFalse = 1;
8300 let isTerminator = 1;
8301 let isBranch = 1;
8302 let isNewValue = 1;
8303 let cofMax1 = 1;
8304 let isRestrictNoSlot1Store = 1;
8305 let Defs = [PC];
8306 let BaseOpcode = "J4_cmpltr";
8307 let isTaken = Inst{13};
8308 let isExtendable = 1;
8309 let opExtendable = 2;
8310 let isExtentSigned = 1;
8311 let opExtentBits = 11;
8312 let opExtentAlign = 2;
8313 let opNewValue = 1;
8314 }
8315 def J4_cmplt_f_jumpnv_t : HInst<
8316 (outs),
8317 (ins IntRegs:$Rt32, IntRegs:$Ns8, b30_2Imm:$Ii),
8318 "if (!cmp.gt($Rt32,$Ns8.new)) jump:t $Ii",
8319 tc_975a4e54, TypeNCJ>, Enc_5de85f, PredRel {
8320 let Inst{0-0} = 0b0;
8321 let Inst{13-13} = 0b1;
8322 let Inst{19-19} = 0b0;
8323 let Inst{31-22} = 0b0010000111;
8324 let isPredicated = 1;
8325 let isPredicatedFalse = 1;
8326 let isTerminator = 1;
8327 let isBranch = 1;
8328 let isNewValue = 1;
8329 let cofMax1 = 1;
8330 let isRestrictNoSlot1Store = 1;
8331 let Defs = [PC];
8332 let BaseOpcode = "J4_cmpltr";
8333 let isTaken = Inst{13};
8334 let isExtendable = 1;
8335 let opExtendable = 2;
8336 let isExtentSigned = 1;
8337 let opExtentBits = 11;
8338 let opExtentAlign = 2;
8339 let opNewValue = 1;
8340 }
8341 def J4_cmplt_t_jumpnv_nt : HInst<
8342 (outs),
8343 (ins IntRegs:$Rt32, IntRegs:$Ns8, b30_2Imm:$Ii),
8344 "if (cmp.gt($Rt32,$Ns8.new)) jump:nt $Ii",
8345 tc_975a4e54, TypeNCJ>, Enc_5de85f, PredRel {
8346 let Inst{0-0} = 0b0;
8347 let Inst{13-13} = 0b0;
8348 let Inst{19-19} = 0b0;
8349 let Inst{31-22} = 0b0010000110;
8350 let isPredicated = 1;
8351 let isTerminator = 1;
8352 let isBranch = 1;
8353 let isNewValue = 1;
8354 let cofMax1 = 1;
8355 let isRestrictNoSlot1Store = 1;
8356 let Defs = [PC];
8357 let BaseOpcode = "J4_cmpltr";
8358 let isTaken = Inst{13};
8359 let isExtendable = 1;
8360 let opExtendable = 2;
8361 let isExtentSigned = 1;
8362 let opExtentBits = 11;
8363 let opExtentAlign = 2;
8364 let opNewValue = 1;
8365 }
8366 def J4_cmplt_t_jumpnv_t : HInst<
8367 (outs),
8368 (ins IntRegs:$Rt32, IntRegs:$Ns8, b30_2Imm:$Ii),
8369 "if (cmp.gt($Rt32,$Ns8.new)) jump:t $Ii",
8370 tc_975a4e54, TypeNCJ>, Enc_5de85f, PredRel {
8371 let Inst{0-0} = 0b0;
8372 let Inst{13-13} = 0b1;
8373 let Inst{19-19} = 0b0;
8374 let Inst{31-22} = 0b0010000110;
8375 let isPredicated = 1;
8376 let isTerminator = 1;
8377 let isBranch = 1;
8378 let isNewValue = 1;
8379 let cofMax1 = 1;
8380 let isRestrictNoSlot1Store = 1;
8381 let Defs = [PC];
8382 let BaseOpcode = "J4_cmpltr";
8383 let isTaken = Inst{13};
8384 let isExtendable = 1;
8385 let opExtendable = 2;
8386 let isExtentSigned = 1;
8387 let opExtentBits = 11;
8388 let opExtentAlign = 2;
8389 let opNewValue = 1;
8390 }
8391 def J4_cmpltu_f_jumpnv_nt : HInst<
8392 (outs),
8393 (ins IntRegs:$Rt32, IntRegs:$Ns8, b30_2Imm:$Ii),
8394 "if (!cmp.gtu($Rt32,$Ns8.new)) jump:nt $Ii",
8395 tc_975a4e54, TypeNCJ>, Enc_5de85f, PredRel {
8396 let Inst{0-0} = 0b0;
8397 let Inst{13-13} = 0b0;
8398 let Inst{19-19} = 0b0;
8399 let Inst{31-22} = 0b0010001001;
8400 let isPredicated = 1;
8401 let isPredicatedFalse = 1;
8402 let isTerminator = 1;
8403 let isBranch = 1;
8404 let isNewValue = 1;
8405 let cofMax1 = 1;
8406 let isRestrictNoSlot1Store = 1;
8407 let Defs = [PC];
8408 let BaseOpcode = "J4_cmpltur";
8409 let isTaken = Inst{13};
8410 let isExtendable = 1;
8411 let opExtendable = 2;
8412 let isExtentSigned = 1;
8413 let opExtentBits = 11;
8414 let opExtentAlign = 2;
8415 let opNewValue = 1;
8416 }
8417 def J4_cmpltu_f_jumpnv_t : HInst<
8418 (outs),
8419 (ins IntRegs:$Rt32, IntRegs:$Ns8, b30_2Imm:$Ii),
8420 "if (!cmp.gtu($Rt32,$Ns8.new)) jump:t $Ii",
8421 tc_975a4e54, TypeNCJ>, Enc_5de85f, PredRel {
8422 let Inst{0-0} = 0b0;
8423 let Inst{13-13} = 0b1;
8424 let Inst{19-19} = 0b0;
8425 let Inst{31-22} = 0b0010001001;
8426 let isPredicated = 1;
8427 let isPredicatedFalse = 1;
8428 let isTerminator = 1;
8429 let isBranch = 1;
8430 let isNewValue = 1;
8431 let cofMax1 = 1;
8432 let isRestrictNoSlot1Store = 1;
8433 let Defs = [PC];
8434 let BaseOpcode = "J4_cmpltur";
8435 let isTaken = Inst{13};
8436 let isExtendable = 1;
8437 let opExtendable = 2;
8438 let isExtentSigned = 1;
8439 let opExtentBits = 11;
8440 let opExtentAlign = 2;
8441 let opNewValue = 1;
8442 }
8443 def J4_cmpltu_t_jumpnv_nt : HInst<
8444 (outs),
8445 (ins IntRegs:$Rt32, IntRegs:$Ns8, b30_2Imm:$Ii),
8446 "if (cmp.gtu($Rt32,$Ns8.new)) jump:nt $Ii",
8447 tc_975a4e54, TypeNCJ>, Enc_5de85f, PredRel {
8448 let Inst{0-0} = 0b0;
8449 let Inst{13-13} = 0b0;
8450 let Inst{19-19} = 0b0;
8451 let Inst{31-22} = 0b0010001000;
8452 let isPredicated = 1;
8453 let isTerminator = 1;
8454 let isBranch = 1;
8455 let isNewValue = 1;
8456 let cofMax1 = 1;
8457 let isRestrictNoSlot1Store = 1;
8458 let Defs = [PC];
8459 let BaseOpcode = "J4_cmpltur";
8460 let isTaken = Inst{13};
8461 let isExtendable = 1;
8462 let opExtendable = 2;
8463 let isExtentSigned = 1;
8464 let opExtentBits = 11;
8465 let opExtentAlign = 2;
8466 let opNewValue = 1;
8467 }
8468 def J4_cmpltu_t_jumpnv_t : HInst<
8469 (outs),
8470 (ins IntRegs:$Rt32, IntRegs:$Ns8, b30_2Imm:$Ii),
8471 "if (cmp.gtu($Rt32,$Ns8.new)) jump:t $Ii",
8472 tc_975a4e54, TypeNCJ>, Enc_5de85f, PredRel {
8473 let Inst{0-0} = 0b0;
8474 let Inst{13-13} = 0b1;
8475 let Inst{19-19} = 0b0;
8476 let Inst{31-22} = 0b0010001000;
8477 let isPredicated = 1;
8478 let isTerminator = 1;
8479 let isBranch = 1;
8480 let isNewValue = 1;
8481 let cofMax1 = 1;
8482 let isRestrictNoSlot1Store = 1;
8483 let Defs = [PC];
8484 let BaseOpcode = "J4_cmpltur";
8485 let isTaken = Inst{13};
8486 let isExtendable = 1;
8487 let opExtendable = 2;
8488 let isExtentSigned = 1;
8489 let opExtentBits = 11;
8490 let opExtentAlign = 2;
8491 let opNewValue = 1;
8492 }
8493 def J4_hintjumpr : HInst<
8494 (outs),
8495 (ins IntRegs:$Rs32),
8496 "hintjr($Rs32)",
8497 tc_60e324ff, TypeJ>, Enc_ecbcc8 {
8498 let Inst{13-0} = 0b00000000000000;
8499 let Inst{31-21} = 0b01010010101;
8500 let isTerminator = 1;
8501 let isIndirectBranch = 1;
8502 let isBranch = 1;
8503 let cofMax1 = 1;
8504 }
8505 def J4_jumpseti : HInst<
8506 (outs GeneralSubRegs:$Rd16),
8507 (ins u6_0Imm:$II, b30_2Imm:$Ii),
8508 "$Rd16 = #$II ; jump $Ii",
8509 tc_5502c366, TypeCJ>, Enc_9e4c3f {
8510 let Inst{0-0} = 0b0;
8511 let Inst{31-22} = 0b0001011000;
8512 let hasNewValue = 1;
8513 let opNewValue = 0;
8514 let isTerminator = 1;
8515 let isBranch = 1;
8516 let cofRelax2 = 1;
8517 let cofMax1 = 1;
8518 let Defs = [PC];
8519 let isExtendable = 1;
8520 let opExtendable = 2;
8521 let isExtentSigned = 1;
8522 let opExtentBits = 11;
8523 let opExtentAlign = 2;
8524 }
8525 def J4_jumpsetr : HInst<
8526 (outs GeneralSubRegs:$Rd16),
8527 (ins GeneralSubRegs:$Rs16, b30_2Imm:$Ii),
8528 "$Rd16 = $Rs16 ; jump $Ii",
8529 tc_5502c366, TypeCJ>, Enc_66bce1 {
8530 let Inst{0-0} = 0b0;
8531 let Inst{13-12} = 0b00;
8532 let Inst{31-22} = 0b0001011100;
8533 let hasNewValue = 1;
8534 let opNewValue = 0;
8535 let isTerminator = 1;
8536 let isBranch = 1;
8537 let cofRelax2 = 1;
8538 let cofMax1 = 1;
8539 let Defs = [PC];
8540 let isExtendable = 1;
8541 let opExtendable = 2;
8542 let isExtentSigned = 1;
8543 let opExtentBits = 11;
8544 let opExtentAlign = 2;
8545 }
8546 def J4_tstbit0_f_jumpnv_nt : HInst<
8547 (outs),
8548 (ins IntRegs:$Ns8, b30_2Imm:$Ii),
8549 "if (!tstbit($Ns8.new,#0)) jump:nt $Ii",
8550 tc_7b9187d3, TypeNCJ>, Enc_69d63b {
8551 let Inst{0-0} = 0b0;
8552 let Inst{13-8} = 0b000000;
8553 let Inst{19-19} = 0b0;
8554 let Inst{31-22} = 0b0010010111;
8555 let isPredicated = 1;
8556 let isPredicatedFalse = 1;
8557 let isTerminator = 1;
8558 let isBranch = 1;
8559 let isNewValue = 1;
8560 let cofMax1 = 1;
8561 let isRestrictNoSlot1Store = 1;
8562 let Defs = [PC];
8563 let isTaken = Inst{13};
8564 let isExtendable = 1;
8565 let opExtendable = 1;
8566 let isExtentSigned = 1;
8567 let opExtentBits = 11;
8568 let opExtentAlign = 2;
8569 let opNewValue = 0;
8570 }
8571 def J4_tstbit0_f_jumpnv_t : HInst<
8572 (outs),
8573 (ins IntRegs:$Ns8, b30_2Imm:$Ii),
8574 "if (!tstbit($Ns8.new,#0)) jump:t $Ii",
8575 tc_7b9187d3, TypeNCJ>, Enc_69d63b {
8576 let Inst{0-0} = 0b0;
8577 let Inst{13-8} = 0b100000;
8578 let Inst{19-19} = 0b0;
8579 let Inst{31-22} = 0b0010010111;
8580 let isPredicated = 1;
8581 let isPredicatedFalse = 1;
8582 let isTerminator = 1;
8583 let isBranch = 1;
8584 let isNewValue = 1;
8585 let cofMax1 = 1;
8586 let isRestrictNoSlot1Store = 1;
8587 let Defs = [PC];
8588 let isTaken = Inst{13};
8589 let isExtendable = 1;
8590 let opExtendable = 1;
8591 let isExtentSigned = 1;
8592 let opExtentBits = 11;
8593 let opExtentAlign = 2;
8594 let opNewValue = 0;
8595 }
8596 def J4_tstbit0_fp0_jump_nt : HInst<
8597 (outs),
8598 (ins GeneralSubRegs:$Rs16, b30_2Imm:$Ii),
8599 "p0 = tstbit($Rs16,#0); if (!p0.new) jump:nt $Ii",
8600 tc_f999c66e, TypeCJ>, Enc_ad1c74 {
8601 let Inst{0-0} = 0b0;
8602 let Inst{13-8} = 0b000011;
8603 let Inst{31-22} = 0b0001000111;
8604 let isPredicated = 1;
8605 let isPredicatedFalse = 1;
8606 let isTerminator = 1;
8607 let isBranch = 1;
8608 let isPredicatedNew = 1;
8609 let cofRelax1 = 1;
8610 let cofRelax2 = 1;
8611 let cofMax1 = 1;
8612 let Uses = [P0];
8613 let Defs = [P0, PC];
8614 let isTaken = Inst{13};
8615 let isExtendable = 1;
8616 let opExtendable = 1;
8617 let isExtentSigned = 1;
8618 let opExtentBits = 11;
8619 let opExtentAlign = 2;
8620 }
8621 def J4_tstbit0_fp0_jump_t : HInst<
8622 (outs),
8623 (ins GeneralSubRegs:$Rs16, b30_2Imm:$Ii),
8624 "p0 = tstbit($Rs16,#0); if (!p0.new) jump:t $Ii",
8625 tc_f999c66e, TypeCJ>, Enc_ad1c74 {
8626 let Inst{0-0} = 0b0;
8627 let Inst{13-8} = 0b100011;
8628 let Inst{31-22} = 0b0001000111;
8629 let isPredicated = 1;
8630 let isPredicatedFalse = 1;
8631 let isTerminator = 1;
8632 let isBranch = 1;
8633 let isPredicatedNew = 1;
8634 let cofRelax1 = 1;
8635 let cofRelax2 = 1;
8636 let cofMax1 = 1;
8637 let Uses = [P0];
8638 let Defs = [P0, PC];
8639 let isTaken = Inst{13};
8640 let isExtendable = 1;
8641 let opExtendable = 1;
8642 let isExtentSigned = 1;
8643 let opExtentBits = 11;
8644 let opExtentAlign = 2;
8645 }
8646 def J4_tstbit0_fp1_jump_nt : HInst<
8647 (outs),
8648 (ins GeneralSubRegs:$Rs16, b30_2Imm:$Ii),
8649 "p1 = tstbit($Rs16,#0); if (!p1.new) jump:nt $Ii",
8650 tc_f999c66e, TypeCJ>, Enc_ad1c74 {
8651 let Inst{0-0} = 0b0;
8652 let Inst{13-8} = 0b000011;
8653 let Inst{31-22} = 0b0001001111;
8654 let isPredicated = 1;
8655 let isPredicatedFalse = 1;
8656 let isTerminator = 1;
8657 let isBranch = 1;
8658 let isPredicatedNew = 1;
8659 let cofRelax1 = 1;
8660 let cofRelax2 = 1;
8661 let cofMax1 = 1;
8662 let Uses = [P1];
8663 let Defs = [P1, PC];
8664 let isTaken = Inst{13};
8665 let isExtendable = 1;
8666 let opExtendable = 1;
8667 let isExtentSigned = 1;
8668 let opExtentBits = 11;
8669 let opExtentAlign = 2;
8670 }
8671 def J4_tstbit0_fp1_jump_t : HInst<
8672 (outs),
8673 (ins GeneralSubRegs:$Rs16, b30_2Imm:$Ii),
8674 "p1 = tstbit($Rs16,#0); if (!p1.new) jump:t $Ii",
8675 tc_f999c66e, TypeCJ>, Enc_ad1c74 {
8676 let Inst{0-0} = 0b0;
8677 let Inst{13-8} = 0b100011;
8678 let Inst{31-22} = 0b0001001111;
8679 let isPredicated = 1;
8680 let isPredicatedFalse = 1;
8681 let isTerminator = 1;
8682 let isBranch = 1;
8683 let isPredicatedNew = 1;
8684 let cofRelax1 = 1;
8685 let cofRelax2 = 1;
8686 let cofMax1 = 1;
8687 let Uses = [P1];
8688 let Defs = [P1, PC];
8689 let isTaken = Inst{13};
8690 let isExtendable = 1;
8691 let opExtendable = 1;
8692 let isExtentSigned = 1;
8693 let opExtentBits = 11;
8694 let opExtentAlign = 2;
8695 }
8696 def J4_tstbit0_t_jumpnv_nt : HInst<
8697 (outs),
8698 (ins IntRegs:$Ns8, b30_2Imm:$Ii),
8699 "if (tstbit($Ns8.new,#0)) jump:nt $Ii",
8700 tc_7b9187d3, TypeNCJ>, Enc_69d63b {
8701 let Inst{0-0} = 0b0;
8702 let Inst{13-8} = 0b000000;
8703 let Inst{19-19} = 0b0;
8704 let Inst{31-22} = 0b0010010110;
8705 let isPredicated = 1;
8706 let isTerminator = 1;
8707 let isBranch = 1;
8708 let isNewValue = 1;
8709 let cofMax1 = 1;
8710 let isRestrictNoSlot1Store = 1;
8711 let Defs = [PC];
8712 let isTaken = Inst{13};
8713 let isExtendable = 1;
8714 let opExtendable = 1;
8715 let isExtentSigned = 1;
8716 let opExtentBits = 11;
8717 let opExtentAlign = 2;
8718 let opNewValue = 0;
8719 }
8720 def J4_tstbit0_t_jumpnv_t : HInst<
8721 (outs),
8722 (ins IntRegs:$Ns8, b30_2Imm:$Ii),
8723 "if (tstbit($Ns8.new,#0)) jump:t $Ii",
8724 tc_7b9187d3, TypeNCJ>, Enc_69d63b {
8725 let Inst{0-0} = 0b0;
8726 let Inst{13-8} = 0b100000;
8727 let Inst{19-19} = 0b0;
8728 let Inst{31-22} = 0b0010010110;
8729 let isPredicated = 1;
8730 let isTerminator = 1;
8731 let isBranch = 1;
8732 let isNewValue = 1;
8733 let cofMax1 = 1;
8734 let isRestrictNoSlot1Store = 1;
8735 let Defs = [PC];
8736 let isTaken = Inst{13};
8737 let isExtendable = 1;
8738 let opExtendable = 1;
8739 let isExtentSigned = 1;
8740 let opExtentBits = 11;
8741 let opExtentAlign = 2;
8742 let opNewValue = 0;
8743 }
8744 def J4_tstbit0_tp0_jump_nt : HInst<
8745 (outs),
8746 (ins GeneralSubRegs:$Rs16, b30_2Imm:$Ii),
8747 "p0 = tstbit($Rs16,#0); if (p0.new) jump:nt $Ii",
8748 tc_f999c66e, TypeCJ>, Enc_ad1c74 {
8749 let Inst{0-0} = 0b0;
8750 let Inst{13-8} = 0b000011;
8751 let Inst{31-22} = 0b0001000110;
8752 let isPredicated = 1;
8753 let isTerminator = 1;
8754 let isBranch = 1;
8755 let isPredicatedNew = 1;
8756 let cofRelax1 = 1;
8757 let cofRelax2 = 1;
8758 let cofMax1 = 1;
8759 let Uses = [P0];
8760 let Defs = [P0, PC];
8761 let isTaken = Inst{13};
8762 let isExtendable = 1;
8763 let opExtendable = 1;
8764 let isExtentSigned = 1;
8765 let opExtentBits = 11;
8766 let opExtentAlign = 2;
8767 }
8768 def J4_tstbit0_tp0_jump_t : HInst<
8769 (outs),
8770 (ins GeneralSubRegs:$Rs16, b30_2Imm:$Ii),
8771 "p0 = tstbit($Rs16,#0); if (p0.new) jump:t $Ii",
8772 tc_f999c66e, TypeCJ>, Enc_ad1c74 {
8773 let Inst{0-0} = 0b0;
8774 let Inst{13-8} = 0b100011;
8775 let Inst{31-22} = 0b0001000110;
8776 let isPredicated = 1;
8777 let isTerminator = 1;
8778 let isBranch = 1;
8779 let isPredicatedNew = 1;
8780 let cofRelax1 = 1;
8781 let cofRelax2 = 1;
8782 let cofMax1 = 1;
8783 let Uses = [P0];
8784 let Defs = [P0, PC];
8785 let isTaken = Inst{13};
8786 let isExtendable = 1;
8787 let opExtendable = 1;
8788 let isExtentSigned = 1;
8789 let opExtentBits = 11;
8790 let opExtentAlign = 2;
8791 }
8792 def J4_tstbit0_tp1_jump_nt : HInst<
8793 (outs),
8794 (ins GeneralSubRegs:$Rs16, b30_2Imm:$Ii),
8795 "p1 = tstbit($Rs16,#0); if (p1.new) jump:nt $Ii",
8796 tc_f999c66e, TypeCJ>, Enc_ad1c74 {
8797 let Inst{0-0} = 0b0;
8798 let Inst{13-8} = 0b000011;
8799 let Inst{31-22} = 0b0001001110;
8800 let isPredicated = 1;
8801 let isTerminator = 1;
8802 let isBranch = 1;
8803 let isPredicatedNew = 1;
8804 let cofRelax1 = 1;
8805 let cofRelax2 = 1;
8806 let cofMax1 = 1;
8807 let Uses = [P1];
8808 let Defs = [P1, PC];
8809 let isTaken = Inst{13};
8810 let isExtendable = 1;
8811 let opExtendable = 1;
8812 let isExtentSigned = 1;
8813 let opExtentBits = 11;
8814 let opExtentAlign = 2;
8815 }
8816 def J4_tstbit0_tp1_jump_t : HInst<
8817 (outs),
8818 (ins GeneralSubRegs:$Rs16, b30_2Imm:$Ii),
8819 "p1 = tstbit($Rs16,#0); if (p1.new) jump:t $Ii",
8820 tc_f999c66e, TypeCJ>, Enc_ad1c74 {
8821 let Inst{0-0} = 0b0;
8822 let Inst{13-8} = 0b100011;
8823 let Inst{31-22} = 0b0001001110;
8824 let isPredicated = 1;
8825 let isTerminator = 1;
8826 let isBranch = 1;
8827 let isPredicatedNew = 1;
8828 let cofRelax1 = 1;
8829 let cofRelax2 = 1;
8830 let cofMax1 = 1;
8831 let Uses = [P1];
8832 let Defs = [P1, PC];
8833 let isTaken = Inst{13};
8834 let isExtendable = 1;
8835 let opExtendable = 1;
8836 let isExtentSigned = 1;
8837 let opExtentBits = 11;
8838 let opExtentAlign = 2;
8839 }
8840 def L2_deallocframe : HInst<
8841 (outs DoubleRegs:$Rdd32),
8842 (ins IntRegs:$Rs32),
8843 "$Rdd32 = deallocframe($Rs32):raw",
8844 tc_e9170fb7, TypeLD>, Enc_3a3d62 {
8845 let Inst{13-5} = 0b000000000;
8846 let Inst{31-21} = 0b10010000000;
8847 let accessSize = DoubleWordAccess;
8848 let mayLoad = 1;
8849 let Uses = [FRAMEKEY];
8850 let Defs = [R29];
8851 }
8852 def L2_loadalignb_io : HInst<
8853 (outs DoubleRegs:$Ryy32),
8854 (ins DoubleRegs:$Ryy32in, IntRegs:$Rs32, s32_0Imm:$Ii),
8855 "$Ryy32 = memb_fifo($Rs32+#$Ii)",
8856 tc_fedb7e19, TypeLD>, Enc_a27588 {
8857 let Inst{24-21} = 0b0100;
8858 let Inst{31-27} = 0b10010;
8859 let addrMode = BaseImmOffset;
8860 let accessSize = ByteAccess;
8861 let mayLoad = 1;
8862 let isExtendable = 1;
8863 let opExtendable = 3;
8864 let isExtentSigned = 1;
8865 let opExtentBits = 11;
8866 let opExtentAlign = 0;
8867 let Constraints = "$Ryy32 = $Ryy32in";
8868 }
8869 def L2_loadalignb_pbr : HInst<
8870 (outs DoubleRegs:$Ryy32, IntRegs:$Rx32),
8871 (ins DoubleRegs:$Ryy32in, IntRegs:$Rx32in, ModRegs:$Mu2),
8872 "$Ryy32 = memb_fifo($Rx32++$Mu2:brev)",
8873 tc_1c7522a8, TypeLD>, Enc_1f5d8f {
8874 let Inst{12-5} = 0b00000000;
8875 let Inst{31-21} = 0b10011110100;
8876 let addrMode = PostInc;
8877 let accessSize = ByteAccess;
8878 let mayLoad = 1;
8879 let Constraints = "$Ryy32 = $Ryy32in, $Rx32 = $Rx32in";
8880 }
8881 def L2_loadalignb_pci : HInst<
8882 (outs DoubleRegs:$Ryy32, IntRegs:$Rx32),
8883 (ins DoubleRegs:$Ryy32in, IntRegs:$Rx32in, s4_0Imm:$Ii, ModRegs:$Mu2),
8884 "$Ryy32 = memb_fifo($Rx32++#$Ii:circ($Mu2))",
8885 tc_76bb5435, TypeLD>, Enc_74aef2 {
8886 let Inst{12-9} = 0b0000;
8887 let Inst{31-21} = 0b10011000100;
8888 let addrMode = PostInc;
8889 let accessSize = ByteAccess;
8890 let mayLoad = 1;
8891 let Uses = [CS];
8892 let Constraints = "$Ryy32 = $Ryy32in, $Rx32 = $Rx32in";
8893 }
8894 def L2_loadalignb_pcr : HInst<
8895 (outs DoubleRegs:$Ryy32, IntRegs:$Rx32),
8896 (ins DoubleRegs:$Ryy32in, IntRegs:$Rx32in, ModRegs:$Mu2),
8897 "$Ryy32 = memb_fifo($Rx32++I:circ($Mu2))",
8898 tc_1c7522a8, TypeLD>, Enc_1f5d8f {
8899 let Inst{12-5} = 0b00010000;
8900 let Inst{31-21} = 0b10011000100;
8901 let addrMode = PostInc;
8902 let accessSize = ByteAccess;
8903 let mayLoad = 1;
8904 let Uses = [CS];
8905 let Constraints = "$Ryy32 = $Ryy32in, $Rx32 = $Rx32in";
8906 }
8907 def L2_loadalignb_pi : HInst<
8908 (outs DoubleRegs:$Ryy32, IntRegs:$Rx32),
8909 (ins DoubleRegs:$Ryy32in, IntRegs:$Rx32in, s4_0Imm:$Ii),
8910 "$Ryy32 = memb_fifo($Rx32++#$Ii)",
8911 tc_1c7522a8, TypeLD>, Enc_6b197f {
8912 let Inst{13-9} = 0b00000;
8913 let Inst{31-21} = 0b10011010100;
8914 let addrMode = PostInc;
8915 let accessSize = ByteAccess;
8916 let mayLoad = 1;
8917 let Constraints = "$Ryy32 = $Ryy32in, $Rx32 = $Rx32in";
8918 }
8919 def L2_loadalignb_pr : HInst<
8920 (outs DoubleRegs:$Ryy32, IntRegs:$Rx32),
8921 (ins DoubleRegs:$Ryy32in, IntRegs:$Rx32in, ModRegs:$Mu2),
8922 "$Ryy32 = memb_fifo($Rx32++$Mu2)",
8923 tc_1c7522a8, TypeLD>, Enc_1f5d8f {
8924 let Inst{12-5} = 0b00000000;
8925 let Inst{31-21} = 0b10011100100;
8926 let addrMode = PostInc;
8927 let accessSize = ByteAccess;
8928 let mayLoad = 1;
8929 let Constraints = "$Ryy32 = $Ryy32in, $Rx32 = $Rx32in";
8930 }
8931 def L2_loadalignb_zomap : HInst<
8932 (outs DoubleRegs:$Ryy32),
8933 (ins DoubleRegs:$Ryy32in, IntRegs:$Rs32),
8934 "$Ryy32 = memb_fifo($Rs32)",
8935 tc_fedb7e19, TypeMAPPING> {
8936 let isPseudo = 1;
8937 let isCodeGenOnly = 1;
8938 let Constraints = "$Ryy32 = $Ryy32in";
8939 }
8940 def L2_loadalignh_io : HInst<
8941 (outs DoubleRegs:$Ryy32),
8942 (ins DoubleRegs:$Ryy32in, IntRegs:$Rs32, s31_1Imm:$Ii),
8943 "$Ryy32 = memh_fifo($Rs32+#$Ii)",
8944 tc_fedb7e19, TypeLD>, Enc_5cd7e9 {
8945 let Inst{24-21} = 0b0010;
8946 let Inst{31-27} = 0b10010;
8947 let addrMode = BaseImmOffset;
8948 let accessSize = HalfWordAccess;
8949 let mayLoad = 1;
8950 let isExtendable = 1;
8951 let opExtendable = 3;
8952 let isExtentSigned = 1;
8953 let opExtentBits = 12;
8954 let opExtentAlign = 1;
8955 let Constraints = "$Ryy32 = $Ryy32in";
8956 }
8957 def L2_loadalignh_pbr : HInst<
8958 (outs DoubleRegs:$Ryy32, IntRegs:$Rx32),
8959 (ins DoubleRegs:$Ryy32in, IntRegs:$Rx32in, ModRegs:$Mu2),
8960 "$Ryy32 = memh_fifo($Rx32++$Mu2:brev)",
8961 tc_1c7522a8, TypeLD>, Enc_1f5d8f {
8962 let Inst{12-5} = 0b00000000;
8963 let Inst{31-21} = 0b10011110010;
8964 let addrMode = PostInc;
8965 let accessSize = HalfWordAccess;
8966 let mayLoad = 1;
8967 let Constraints = "$Ryy32 = $Ryy32in, $Rx32 = $Rx32in";
8968 }
8969 def L2_loadalignh_pci : HInst<
8970 (outs DoubleRegs:$Ryy32, IntRegs:$Rx32),
8971 (ins DoubleRegs:$Ryy32in, IntRegs:$Rx32in, s4_1Imm:$Ii, ModRegs:$Mu2),
8972 "$Ryy32 = memh_fifo($Rx32++#$Ii:circ($Mu2))",
8973 tc_76bb5435, TypeLD>, Enc_9e2e1c {
8974 let Inst{12-9} = 0b0000;
8975 let Inst{31-21} = 0b10011000010;
8976 let addrMode = PostInc;
8977 let accessSize = HalfWordAccess;
8978 let mayLoad = 1;
8979 let Uses = [CS];
8980 let Constraints = "$Ryy32 = $Ryy32in, $Rx32 = $Rx32in";
8981 }
8982 def L2_loadalignh_pcr : HInst<
8983 (outs DoubleRegs:$Ryy32, IntRegs:$Rx32),
8984 (ins DoubleRegs:$Ryy32in, IntRegs:$Rx32in, ModRegs:$Mu2),
8985 "$Ryy32 = memh_fifo($Rx32++I:circ($Mu2))",
8986 tc_1c7522a8, TypeLD>, Enc_1f5d8f {
8987 let Inst{12-5} = 0b00010000;
8988 let Inst{31-21} = 0b10011000010;
8989 let addrMode = PostInc;
8990 let accessSize = HalfWordAccess;
8991 let mayLoad = 1;
8992 let Uses = [CS];
8993 let Constraints = "$Ryy32 = $Ryy32in, $Rx32 = $Rx32in";
8994 }
8995 def L2_loadalignh_pi : HInst<
8996 (outs DoubleRegs:$Ryy32, IntRegs:$Rx32),
8997 (ins DoubleRegs:$Ryy32in, IntRegs:$Rx32in, s4_1Imm:$Ii),
8998 "$Ryy32 = memh_fifo($Rx32++#$Ii)",
8999 tc_1c7522a8, TypeLD>, Enc_bd1cbc {
9000 let Inst{13-9} = 0b00000;
9001 let Inst{31-21} = 0b10011010010;
9002 let addrMode = PostInc;
9003 let accessSize = HalfWordAccess;
9004 let mayLoad = 1;
9005 let Constraints = "$Ryy32 = $Ryy32in, $Rx32 = $Rx32in";
9006 }
9007 def L2_loadalignh_pr : HInst<
9008 (outs DoubleRegs:$Ryy32, IntRegs:$Rx32),
9009 (ins DoubleRegs:$Ryy32in, IntRegs:$Rx32in, ModRegs:$Mu2),
9010 "$Ryy32 = memh_fifo($Rx32++$Mu2)",
9011 tc_1c7522a8, TypeLD>, Enc_1f5d8f {
9012 let Inst{12-5} = 0b00000000;
9013 let Inst{31-21} = 0b10011100010;
9014 let addrMode = PostInc;
9015 let accessSize = HalfWordAccess;
9016 let mayLoad = 1;
9017 let Constraints = "$Ryy32 = $Ryy32in, $Rx32 = $Rx32in";
9018 }
9019 def L2_loadalignh_zomap : HInst<
9020 (outs DoubleRegs:$Ryy32),
9021 (ins DoubleRegs:$Ryy32in, IntRegs:$Rs32),
9022 "$Ryy32 = memh_fifo($Rs32)",
9023 tc_fedb7e19, TypeMAPPING> {
9024 let isPseudo = 1;
9025 let isCodeGenOnly = 1;
9026 let Constraints = "$Ryy32 = $Ryy32in";
9027 }
9028 def L2_loadbsw2_io : HInst<
9029 (outs IntRegs:$Rd32),
9030 (ins IntRegs:$Rs32, s31_1Imm:$Ii),
9031 "$Rd32 = membh($Rs32+#$Ii)",
9032 tc_4222e6bf, TypeLD>, Enc_de0214 {
9033 let Inst{24-21} = 0b0001;
9034 let Inst{31-27} = 0b10010;
9035 let hasNewValue = 1;
9036 let opNewValue = 0;
9037 let addrMode = BaseImmOffset;
9038 let accessSize = HalfWordAccess;
9039 let mayLoad = 1;
9040 let isExtendable = 1;
9041 let opExtendable = 2;
9042 let isExtentSigned = 1;
9043 let opExtentBits = 12;
9044 let opExtentAlign = 1;
9045 }
9046 def L2_loadbsw2_pbr : HInst<
9047 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9048 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9049 "$Rd32 = membh($Rx32++$Mu2:brev)",
9050 tc_075c8dd8, TypeLD>, Enc_74d4e5 {
9051 let Inst{12-5} = 0b00000000;
9052 let Inst{31-21} = 0b10011110001;
9053 let hasNewValue = 1;
9054 let opNewValue = 0;
9055 let addrMode = PostInc;
9056 let accessSize = HalfWordAccess;
9057 let mayLoad = 1;
9058 let Constraints = "$Rx32 = $Rx32in";
9059 }
9060 def L2_loadbsw2_pci : HInst<
9061 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9062 (ins IntRegs:$Rx32in, s4_1Imm:$Ii, ModRegs:$Mu2),
9063 "$Rd32 = membh($Rx32++#$Ii:circ($Mu2))",
9064 tc_5ceb2f9e, TypeLD>, Enc_e83554 {
9065 let Inst{12-9} = 0b0000;
9066 let Inst{31-21} = 0b10011000001;
9067 let hasNewValue = 1;
9068 let opNewValue = 0;
9069 let addrMode = PostInc;
9070 let accessSize = HalfWordAccess;
9071 let mayLoad = 1;
9072 let Uses = [CS];
9073 let Constraints = "$Rx32 = $Rx32in";
9074 }
9075 def L2_loadbsw2_pcr : HInst<
9076 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9077 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9078 "$Rd32 = membh($Rx32++I:circ($Mu2))",
9079 tc_075c8dd8, TypeLD>, Enc_74d4e5 {
9080 let Inst{12-5} = 0b00010000;
9081 let Inst{31-21} = 0b10011000001;
9082 let hasNewValue = 1;
9083 let opNewValue = 0;
9084 let addrMode = PostInc;
9085 let accessSize = HalfWordAccess;
9086 let mayLoad = 1;
9087 let Uses = [CS];
9088 let Constraints = "$Rx32 = $Rx32in";
9089 }
9090 def L2_loadbsw2_pi : HInst<
9091 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9092 (ins IntRegs:$Rx32in, s4_1Imm:$Ii),
9093 "$Rd32 = membh($Rx32++#$Ii)",
9094 tc_075c8dd8, TypeLD>, Enc_152467 {
9095 let Inst{13-9} = 0b00000;
9096 let Inst{31-21} = 0b10011010001;
9097 let hasNewValue = 1;
9098 let opNewValue = 0;
9099 let addrMode = PostInc;
9100 let accessSize = HalfWordAccess;
9101 let mayLoad = 1;
9102 let Constraints = "$Rx32 = $Rx32in";
9103 }
9104 def L2_loadbsw2_pr : HInst<
9105 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9106 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9107 "$Rd32 = membh($Rx32++$Mu2)",
9108 tc_075c8dd8, TypeLD>, Enc_74d4e5 {
9109 let Inst{12-5} = 0b00000000;
9110 let Inst{31-21} = 0b10011100001;
9111 let hasNewValue = 1;
9112 let opNewValue = 0;
9113 let addrMode = PostInc;
9114 let accessSize = HalfWordAccess;
9115 let mayLoad = 1;
9116 let Constraints = "$Rx32 = $Rx32in";
9117 }
9118 def L2_loadbsw2_zomap : HInst<
9119 (outs IntRegs:$Rd32),
9120 (ins IntRegs:$Rs32),
9121 "$Rd32 = membh($Rs32)",
9122 tc_4222e6bf, TypeMAPPING> {
9123 let hasNewValue = 1;
9124 let opNewValue = 0;
9125 let isPseudo = 1;
9126 let isCodeGenOnly = 1;
9127 }
9128 def L2_loadbsw4_io : HInst<
9129 (outs DoubleRegs:$Rdd32),
9130 (ins IntRegs:$Rs32, s30_2Imm:$Ii),
9131 "$Rdd32 = membh($Rs32+#$Ii)",
9132 tc_4222e6bf, TypeLD>, Enc_2d7491 {
9133 let Inst{24-21} = 0b0111;
9134 let Inst{31-27} = 0b10010;
9135 let addrMode = BaseImmOffset;
9136 let accessSize = WordAccess;
9137 let mayLoad = 1;
9138 let isExtendable = 1;
9139 let opExtendable = 2;
9140 let isExtentSigned = 1;
9141 let opExtentBits = 13;
9142 let opExtentAlign = 2;
9143 }
9144 def L2_loadbsw4_pbr : HInst<
9145 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9146 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9147 "$Rdd32 = membh($Rx32++$Mu2:brev)",
9148 tc_075c8dd8, TypeLD>, Enc_7eee72 {
9149 let Inst{12-5} = 0b00000000;
9150 let Inst{31-21} = 0b10011110111;
9151 let addrMode = PostInc;
9152 let accessSize = WordAccess;
9153 let mayLoad = 1;
9154 let Constraints = "$Rx32 = $Rx32in";
9155 }
9156 def L2_loadbsw4_pci : HInst<
9157 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9158 (ins IntRegs:$Rx32in, s4_2Imm:$Ii, ModRegs:$Mu2),
9159 "$Rdd32 = membh($Rx32++#$Ii:circ($Mu2))",
9160 tc_5ceb2f9e, TypeLD>, Enc_70b24b {
9161 let Inst{12-9} = 0b0000;
9162 let Inst{31-21} = 0b10011000111;
9163 let addrMode = PostInc;
9164 let accessSize = WordAccess;
9165 let mayLoad = 1;
9166 let Uses = [CS];
9167 let Constraints = "$Rx32 = $Rx32in";
9168 }
9169 def L2_loadbsw4_pcr : HInst<
9170 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9171 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9172 "$Rdd32 = membh($Rx32++I:circ($Mu2))",
9173 tc_075c8dd8, TypeLD>, Enc_7eee72 {
9174 let Inst{12-5} = 0b00010000;
9175 let Inst{31-21} = 0b10011000111;
9176 let addrMode = PostInc;
9177 let accessSize = WordAccess;
9178 let mayLoad = 1;
9179 let Uses = [CS];
9180 let Constraints = "$Rx32 = $Rx32in";
9181 }
9182 def L2_loadbsw4_pi : HInst<
9183 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9184 (ins IntRegs:$Rx32in, s4_2Imm:$Ii),
9185 "$Rdd32 = membh($Rx32++#$Ii)",
9186 tc_075c8dd8, TypeLD>, Enc_71f1b4 {
9187 let Inst{13-9} = 0b00000;
9188 let Inst{31-21} = 0b10011010111;
9189 let addrMode = PostInc;
9190 let accessSize = WordAccess;
9191 let mayLoad = 1;
9192 let Constraints = "$Rx32 = $Rx32in";
9193 }
9194 def L2_loadbsw4_pr : HInst<
9195 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9196 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9197 "$Rdd32 = membh($Rx32++$Mu2)",
9198 tc_075c8dd8, TypeLD>, Enc_7eee72 {
9199 let Inst{12-5} = 0b00000000;
9200 let Inst{31-21} = 0b10011100111;
9201 let addrMode = PostInc;
9202 let accessSize = WordAccess;
9203 let mayLoad = 1;
9204 let Constraints = "$Rx32 = $Rx32in";
9205 }
9206 def L2_loadbsw4_zomap : HInst<
9207 (outs DoubleRegs:$Rdd32),
9208 (ins IntRegs:$Rs32),
9209 "$Rdd32 = membh($Rs32)",
9210 tc_4222e6bf, TypeMAPPING> {
9211 let isPseudo = 1;
9212 let isCodeGenOnly = 1;
9213 }
9214 def L2_loadbzw2_io : HInst<
9215 (outs IntRegs:$Rd32),
9216 (ins IntRegs:$Rs32, s31_1Imm:$Ii),
9217 "$Rd32 = memubh($Rs32+#$Ii)",
9218 tc_4222e6bf, TypeLD>, Enc_de0214 {
9219 let Inst{24-21} = 0b0011;
9220 let Inst{31-27} = 0b10010;
9221 let hasNewValue = 1;
9222 let opNewValue = 0;
9223 let addrMode = BaseImmOffset;
9224 let accessSize = HalfWordAccess;
9225 let mayLoad = 1;
9226 let isExtendable = 1;
9227 let opExtendable = 2;
9228 let isExtentSigned = 1;
9229 let opExtentBits = 12;
9230 let opExtentAlign = 1;
9231 }
9232 def L2_loadbzw2_pbr : HInst<
9233 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9234 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9235 "$Rd32 = memubh($Rx32++$Mu2:brev)",
9236 tc_075c8dd8, TypeLD>, Enc_74d4e5 {
9237 let Inst{12-5} = 0b00000000;
9238 let Inst{31-21} = 0b10011110011;
9239 let hasNewValue = 1;
9240 let opNewValue = 0;
9241 let addrMode = PostInc;
9242 let accessSize = HalfWordAccess;
9243 let mayLoad = 1;
9244 let Constraints = "$Rx32 = $Rx32in";
9245 }
9246 def L2_loadbzw2_pci : HInst<
9247 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9248 (ins IntRegs:$Rx32in, s4_1Imm:$Ii, ModRegs:$Mu2),
9249 "$Rd32 = memubh($Rx32++#$Ii:circ($Mu2))",
9250 tc_5ceb2f9e, TypeLD>, Enc_e83554 {
9251 let Inst{12-9} = 0b0000;
9252 let Inst{31-21} = 0b10011000011;
9253 let hasNewValue = 1;
9254 let opNewValue = 0;
9255 let addrMode = PostInc;
9256 let accessSize = HalfWordAccess;
9257 let mayLoad = 1;
9258 let Uses = [CS];
9259 let Constraints = "$Rx32 = $Rx32in";
9260 }
9261 def L2_loadbzw2_pcr : HInst<
9262 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9263 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9264 "$Rd32 = memubh($Rx32++I:circ($Mu2))",
9265 tc_075c8dd8, TypeLD>, Enc_74d4e5 {
9266 let Inst{12-5} = 0b00010000;
9267 let Inst{31-21} = 0b10011000011;
9268 let hasNewValue = 1;
9269 let opNewValue = 0;
9270 let addrMode = PostInc;
9271 let accessSize = HalfWordAccess;
9272 let mayLoad = 1;
9273 let Uses = [CS];
9274 let Constraints = "$Rx32 = $Rx32in";
9275 }
9276 def L2_loadbzw2_pi : HInst<
9277 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9278 (ins IntRegs:$Rx32in, s4_1Imm:$Ii),
9279 "$Rd32 = memubh($Rx32++#$Ii)",
9280 tc_075c8dd8, TypeLD>, Enc_152467 {
9281 let Inst{13-9} = 0b00000;
9282 let Inst{31-21} = 0b10011010011;
9283 let hasNewValue = 1;
9284 let opNewValue = 0;
9285 let addrMode = PostInc;
9286 let accessSize = HalfWordAccess;
9287 let mayLoad = 1;
9288 let Constraints = "$Rx32 = $Rx32in";
9289 }
9290 def L2_loadbzw2_pr : HInst<
9291 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9292 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9293 "$Rd32 = memubh($Rx32++$Mu2)",
9294 tc_075c8dd8, TypeLD>, Enc_74d4e5 {
9295 let Inst{12-5} = 0b00000000;
9296 let Inst{31-21} = 0b10011100011;
9297 let hasNewValue = 1;
9298 let opNewValue = 0;
9299 let addrMode = PostInc;
9300 let accessSize = HalfWordAccess;
9301 let mayLoad = 1;
9302 let Constraints = "$Rx32 = $Rx32in";
9303 }
9304 def L2_loadbzw2_zomap : HInst<
9305 (outs IntRegs:$Rd32),
9306 (ins IntRegs:$Rs32),
9307 "$Rd32 = memubh($Rs32)",
9308 tc_4222e6bf, TypeMAPPING> {
9309 let hasNewValue = 1;
9310 let opNewValue = 0;
9311 let isPseudo = 1;
9312 let isCodeGenOnly = 1;
9313 }
9314 def L2_loadbzw4_io : HInst<
9315 (outs DoubleRegs:$Rdd32),
9316 (ins IntRegs:$Rs32, s30_2Imm:$Ii),
9317 "$Rdd32 = memubh($Rs32+#$Ii)",
9318 tc_4222e6bf, TypeLD>, Enc_2d7491 {
9319 let Inst{24-21} = 0b0101;
9320 let Inst{31-27} = 0b10010;
9321 let addrMode = BaseImmOffset;
9322 let accessSize = WordAccess;
9323 let mayLoad = 1;
9324 let isExtendable = 1;
9325 let opExtendable = 2;
9326 let isExtentSigned = 1;
9327 let opExtentBits = 13;
9328 let opExtentAlign = 2;
9329 }
9330 def L2_loadbzw4_pbr : HInst<
9331 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9332 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9333 "$Rdd32 = memubh($Rx32++$Mu2:brev)",
9334 tc_075c8dd8, TypeLD>, Enc_7eee72 {
9335 let Inst{12-5} = 0b00000000;
9336 let Inst{31-21} = 0b10011110101;
9337 let addrMode = PostInc;
9338 let accessSize = WordAccess;
9339 let mayLoad = 1;
9340 let Constraints = "$Rx32 = $Rx32in";
9341 }
9342 def L2_loadbzw4_pci : HInst<
9343 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9344 (ins IntRegs:$Rx32in, s4_2Imm:$Ii, ModRegs:$Mu2),
9345 "$Rdd32 = memubh($Rx32++#$Ii:circ($Mu2))",
9346 tc_5ceb2f9e, TypeLD>, Enc_70b24b {
9347 let Inst{12-9} = 0b0000;
9348 let Inst{31-21} = 0b10011000101;
9349 let addrMode = PostInc;
9350 let accessSize = WordAccess;
9351 let mayLoad = 1;
9352 let Uses = [CS];
9353 let Constraints = "$Rx32 = $Rx32in";
9354 }
9355 def L2_loadbzw4_pcr : HInst<
9356 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9357 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9358 "$Rdd32 = memubh($Rx32++I:circ($Mu2))",
9359 tc_075c8dd8, TypeLD>, Enc_7eee72 {
9360 let Inst{12-5} = 0b00010000;
9361 let Inst{31-21} = 0b10011000101;
9362 let addrMode = PostInc;
9363 let accessSize = WordAccess;
9364 let mayLoad = 1;
9365 let Uses = [CS];
9366 let Constraints = "$Rx32 = $Rx32in";
9367 }
9368 def L2_loadbzw4_pi : HInst<
9369 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9370 (ins IntRegs:$Rx32in, s4_2Imm:$Ii),
9371 "$Rdd32 = memubh($Rx32++#$Ii)",
9372 tc_075c8dd8, TypeLD>, Enc_71f1b4 {
9373 let Inst{13-9} = 0b00000;
9374 let Inst{31-21} = 0b10011010101;
9375 let addrMode = PostInc;
9376 let accessSize = WordAccess;
9377 let mayLoad = 1;
9378 let Constraints = "$Rx32 = $Rx32in";
9379 }
9380 def L2_loadbzw4_pr : HInst<
9381 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9382 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9383 "$Rdd32 = memubh($Rx32++$Mu2)",
9384 tc_075c8dd8, TypeLD>, Enc_7eee72 {
9385 let Inst{12-5} = 0b00000000;
9386 let Inst{31-21} = 0b10011100101;
9387 let addrMode = PostInc;
9388 let accessSize = WordAccess;
9389 let mayLoad = 1;
9390 let Constraints = "$Rx32 = $Rx32in";
9391 }
9392 def L2_loadbzw4_zomap : HInst<
9393 (outs DoubleRegs:$Rdd32),
9394 (ins IntRegs:$Rs32),
9395 "$Rdd32 = memubh($Rs32)",
9396 tc_4222e6bf, TypeMAPPING> {
9397 let isPseudo = 1;
9398 let isCodeGenOnly = 1;
9399 }
9400 def L2_loadrb_io : HInst<
9401 (outs IntRegs:$Rd32),
9402 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
9403 "$Rd32 = memb($Rs32+#$Ii)",
9404 tc_4222e6bf, TypeLD>, Enc_211aaa, AddrModeRel, PostInc_BaseImm {
9405 let Inst{24-21} = 0b1000;
9406 let Inst{31-27} = 0b10010;
9407 let hasNewValue = 1;
9408 let opNewValue = 0;
9409 let addrMode = BaseImmOffset;
9410 let accessSize = ByteAccess;
9411 let mayLoad = 1;
9412 let BaseOpcode = "L2_loadrb_io";
9413 let CextOpcode = "L2_loadrb";
9414 let isPredicable = 1;
9415 let isExtendable = 1;
9416 let opExtendable = 2;
9417 let isExtentSigned = 1;
9418 let opExtentBits = 11;
9419 let opExtentAlign = 0;
9420 }
9421 def L2_loadrb_pbr : HInst<
9422 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9423 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9424 "$Rd32 = memb($Rx32++$Mu2:brev)",
9425 tc_075c8dd8, TypeLD>, Enc_74d4e5 {
9426 let Inst{12-5} = 0b00000000;
9427 let Inst{31-21} = 0b10011111000;
9428 let hasNewValue = 1;
9429 let opNewValue = 0;
9430 let addrMode = PostInc;
9431 let accessSize = ByteAccess;
9432 let mayLoad = 1;
9433 let Constraints = "$Rx32 = $Rx32in";
9434 }
9435 def L2_loadrb_pci : HInst<
9436 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9437 (ins IntRegs:$Rx32in, s4_0Imm:$Ii, ModRegs:$Mu2),
9438 "$Rd32 = memb($Rx32++#$Ii:circ($Mu2))",
9439 tc_5ceb2f9e, TypeLD>, Enc_e0a47a {
9440 let Inst{12-9} = 0b0000;
9441 let Inst{31-21} = 0b10011001000;
9442 let hasNewValue = 1;
9443 let opNewValue = 0;
9444 let addrMode = PostInc;
9445 let accessSize = ByteAccess;
9446 let mayLoad = 1;
9447 let Uses = [CS];
9448 let Constraints = "$Rx32 = $Rx32in";
9449 }
9450 def L2_loadrb_pcr : HInst<
9451 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9452 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9453 "$Rd32 = memb($Rx32++I:circ($Mu2))",
9454 tc_075c8dd8, TypeLD>, Enc_74d4e5 {
9455 let Inst{12-5} = 0b00010000;
9456 let Inst{31-21} = 0b10011001000;
9457 let hasNewValue = 1;
9458 let opNewValue = 0;
9459 let addrMode = PostInc;
9460 let accessSize = ByteAccess;
9461 let mayLoad = 1;
9462 let Uses = [CS];
9463 let Constraints = "$Rx32 = $Rx32in";
9464 }
9465 def L2_loadrb_pi : HInst<
9466 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9467 (ins IntRegs:$Rx32in, s4_0Imm:$Ii),
9468 "$Rd32 = memb($Rx32++#$Ii)",
9469 tc_075c8dd8, TypeLD>, Enc_222336, PredNewRel, PostInc_BaseImm {
9470 let Inst{13-9} = 0b00000;
9471 let Inst{31-21} = 0b10011011000;
9472 let hasNewValue = 1;
9473 let opNewValue = 0;
9474 let addrMode = PostInc;
9475 let accessSize = ByteAccess;
9476 let mayLoad = 1;
9477 let BaseOpcode = "L2_loadrb_pi";
9478 let CextOpcode = "L2_loadrb";
9479 let isPredicable = 1;
9480 let Constraints = "$Rx32 = $Rx32in";
9481 }
9482 def L2_loadrb_pr : HInst<
9483 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9484 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9485 "$Rd32 = memb($Rx32++$Mu2)",
9486 tc_075c8dd8, TypeLD>, Enc_74d4e5 {
9487 let Inst{12-5} = 0b00000000;
9488 let Inst{31-21} = 0b10011101000;
9489 let hasNewValue = 1;
9490 let opNewValue = 0;
9491 let addrMode = PostInc;
9492 let accessSize = ByteAccess;
9493 let mayLoad = 1;
9494 let Constraints = "$Rx32 = $Rx32in";
9495 }
9496 def L2_loadrb_zomap : HInst<
9497 (outs IntRegs:$Rd32),
9498 (ins IntRegs:$Rs32),
9499 "$Rd32 = memb($Rs32)",
9500 tc_4222e6bf, TypeMAPPING> {
9501 let hasNewValue = 1;
9502 let opNewValue = 0;
9503 let isPseudo = 1;
9504 let isCodeGenOnly = 1;
9505 }
9506 def L2_loadrbgp : HInst<
9507 (outs IntRegs:$Rd32),
9508 (ins u32_0Imm:$Ii),
9509 "$Rd32 = memb(gp+#$Ii)",
9510 tc_8a6d0d94, TypeV2LDST>, Enc_25bef0, AddrModeRel {
9511 let Inst{24-21} = 0b1000;
9512 let Inst{31-27} = 0b01001;
9513 let hasNewValue = 1;
9514 let opNewValue = 0;
9515 let accessSize = ByteAccess;
9516 let mayLoad = 1;
9517 let Uses = [GP];
9518 let BaseOpcode = "L4_loadrb_abs";
9519 let isPredicable = 1;
9520 let opExtendable = 1;
9521 let isExtentSigned = 0;
9522 let opExtentBits = 16;
9523 let opExtentAlign = 0;
9524 }
9525 def L2_loadrd_io : HInst<
9526 (outs DoubleRegs:$Rdd32),
9527 (ins IntRegs:$Rs32, s29_3Imm:$Ii),
9528 "$Rdd32 = memd($Rs32+#$Ii)",
9529 tc_4222e6bf, TypeLD>, Enc_fa3ba4, AddrModeRel, PostInc_BaseImm {
9530 let Inst{24-21} = 0b1110;
9531 let Inst{31-27} = 0b10010;
9532 let addrMode = BaseImmOffset;
9533 let accessSize = DoubleWordAccess;
9534 let mayLoad = 1;
9535 let BaseOpcode = "L2_loadrd_io";
9536 let CextOpcode = "L2_loadrd";
9537 let isPredicable = 1;
9538 let isExtendable = 1;
9539 let opExtendable = 2;
9540 let isExtentSigned = 1;
9541 let opExtentBits = 14;
9542 let opExtentAlign = 3;
9543 }
9544 def L2_loadrd_pbr : HInst<
9545 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9546 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9547 "$Rdd32 = memd($Rx32++$Mu2:brev)",
9548 tc_075c8dd8, TypeLD>, Enc_7eee72 {
9549 let Inst{12-5} = 0b00000000;
9550 let Inst{31-21} = 0b10011111110;
9551 let addrMode = PostInc;
9552 let accessSize = DoubleWordAccess;
9553 let mayLoad = 1;
9554 let Constraints = "$Rx32 = $Rx32in";
9555 }
9556 def L2_loadrd_pci : HInst<
9557 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9558 (ins IntRegs:$Rx32in, s4_3Imm:$Ii, ModRegs:$Mu2),
9559 "$Rdd32 = memd($Rx32++#$Ii:circ($Mu2))",
9560 tc_5ceb2f9e, TypeLD>, Enc_b05839 {
9561 let Inst{12-9} = 0b0000;
9562 let Inst{31-21} = 0b10011001110;
9563 let addrMode = PostInc;
9564 let accessSize = DoubleWordAccess;
9565 let mayLoad = 1;
9566 let Uses = [CS];
9567 let Constraints = "$Rx32 = $Rx32in";
9568 }
9569 def L2_loadrd_pcr : HInst<
9570 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9571 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9572 "$Rdd32 = memd($Rx32++I:circ($Mu2))",
9573 tc_075c8dd8, TypeLD>, Enc_7eee72 {
9574 let Inst{12-5} = 0b00010000;
9575 let Inst{31-21} = 0b10011001110;
9576 let addrMode = PostInc;
9577 let accessSize = DoubleWordAccess;
9578 let mayLoad = 1;
9579 let Uses = [CS];
9580 let Constraints = "$Rx32 = $Rx32in";
9581 }
9582 def L2_loadrd_pi : HInst<
9583 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9584 (ins IntRegs:$Rx32in, s4_3Imm:$Ii),
9585 "$Rdd32 = memd($Rx32++#$Ii)",
9586 tc_075c8dd8, TypeLD>, Enc_5bdd42, PredNewRel, PostInc_BaseImm {
9587 let Inst{13-9} = 0b00000;
9588 let Inst{31-21} = 0b10011011110;
9589 let addrMode = PostInc;
9590 let accessSize = DoubleWordAccess;
9591 let mayLoad = 1;
9592 let BaseOpcode = "L2_loadrd_pi";
9593 let CextOpcode = "L2_loadrd";
9594 let isPredicable = 1;
9595 let Constraints = "$Rx32 = $Rx32in";
9596 }
9597 def L2_loadrd_pr : HInst<
9598 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9599 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9600 "$Rdd32 = memd($Rx32++$Mu2)",
9601 tc_075c8dd8, TypeLD>, Enc_7eee72 {
9602 let Inst{12-5} = 0b00000000;
9603 let Inst{31-21} = 0b10011101110;
9604 let addrMode = PostInc;
9605 let accessSize = DoubleWordAccess;
9606 let mayLoad = 1;
9607 let Constraints = "$Rx32 = $Rx32in";
9608 }
9609 def L2_loadrd_zomap : HInst<
9610 (outs DoubleRegs:$Rdd32),
9611 (ins IntRegs:$Rs32),
9612 "$Rdd32 = memd($Rs32)",
9613 tc_4222e6bf, TypeMAPPING> {
9614 let isPseudo = 1;
9615 let isCodeGenOnly = 1;
9616 }
9617 def L2_loadrdgp : HInst<
9618 (outs DoubleRegs:$Rdd32),
9619 (ins u29_3Imm:$Ii),
9620 "$Rdd32 = memd(gp+#$Ii)",
9621 tc_8a6d0d94, TypeV2LDST>, Enc_509701, AddrModeRel {
9622 let Inst{24-21} = 0b1110;
9623 let Inst{31-27} = 0b01001;
9624 let accessSize = DoubleWordAccess;
9625 let mayLoad = 1;
9626 let Uses = [GP];
9627 let BaseOpcode = "L4_loadrd_abs";
9628 let isPredicable = 1;
9629 let opExtendable = 1;
9630 let isExtentSigned = 0;
9631 let opExtentBits = 19;
9632 let opExtentAlign = 3;
9633 }
9634 def L2_loadrh_io : HInst<
9635 (outs IntRegs:$Rd32),
9636 (ins IntRegs:$Rs32, s31_1Imm:$Ii),
9637 "$Rd32 = memh($Rs32+#$Ii)",
9638 tc_4222e6bf, TypeLD>, Enc_de0214, AddrModeRel, PostInc_BaseImm {
9639 let Inst{24-21} = 0b1010;
9640 let Inst{31-27} = 0b10010;
9641 let hasNewValue = 1;
9642 let opNewValue = 0;
9643 let addrMode = BaseImmOffset;
9644 let accessSize = HalfWordAccess;
9645 let mayLoad = 1;
9646 let BaseOpcode = "L2_loadrh_io";
9647 let CextOpcode = "L2_loadrh";
9648 let isPredicable = 1;
9649 let isExtendable = 1;
9650 let opExtendable = 2;
9651 let isExtentSigned = 1;
9652 let opExtentBits = 12;
9653 let opExtentAlign = 1;
9654 }
9655 def L2_loadrh_pbr : HInst<
9656 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9657 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9658 "$Rd32 = memh($Rx32++$Mu2:brev)",
9659 tc_075c8dd8, TypeLD>, Enc_74d4e5 {
9660 let Inst{12-5} = 0b00000000;
9661 let Inst{31-21} = 0b10011111010;
9662 let hasNewValue = 1;
9663 let opNewValue = 0;
9664 let addrMode = PostInc;
9665 let accessSize = HalfWordAccess;
9666 let mayLoad = 1;
9667 let Constraints = "$Rx32 = $Rx32in";
9668 }
9669 def L2_loadrh_pci : HInst<
9670 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9671 (ins IntRegs:$Rx32in, s4_1Imm:$Ii, ModRegs:$Mu2),
9672 "$Rd32 = memh($Rx32++#$Ii:circ($Mu2))",
9673 tc_5ceb2f9e, TypeLD>, Enc_e83554 {
9674 let Inst{12-9} = 0b0000;
9675 let Inst{31-21} = 0b10011001010;
9676 let hasNewValue = 1;
9677 let opNewValue = 0;
9678 let addrMode = PostInc;
9679 let accessSize = HalfWordAccess;
9680 let mayLoad = 1;
9681 let Uses = [CS];
9682 let Constraints = "$Rx32 = $Rx32in";
9683 }
9684 def L2_loadrh_pcr : HInst<
9685 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9686 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9687 "$Rd32 = memh($Rx32++I:circ($Mu2))",
9688 tc_075c8dd8, TypeLD>, Enc_74d4e5 {
9689 let Inst{12-5} = 0b00010000;
9690 let Inst{31-21} = 0b10011001010;
9691 let hasNewValue = 1;
9692 let opNewValue = 0;
9693 let addrMode = PostInc;
9694 let accessSize = HalfWordAccess;
9695 let mayLoad = 1;
9696 let Uses = [CS];
9697 let Constraints = "$Rx32 = $Rx32in";
9698 }
9699 def L2_loadrh_pi : HInst<
9700 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9701 (ins IntRegs:$Rx32in, s4_1Imm:$Ii),
9702 "$Rd32 = memh($Rx32++#$Ii)",
9703 tc_075c8dd8, TypeLD>, Enc_152467, PredNewRel, PostInc_BaseImm {
9704 let Inst{13-9} = 0b00000;
9705 let Inst{31-21} = 0b10011011010;
9706 let hasNewValue = 1;
9707 let opNewValue = 0;
9708 let addrMode = PostInc;
9709 let accessSize = HalfWordAccess;
9710 let mayLoad = 1;
9711 let BaseOpcode = "L2_loadrh_pi";
9712 let CextOpcode = "L2_loadrh";
9713 let isPredicable = 1;
9714 let Constraints = "$Rx32 = $Rx32in";
9715 }
9716 def L2_loadrh_pr : HInst<
9717 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9718 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9719 "$Rd32 = memh($Rx32++$Mu2)",
9720 tc_075c8dd8, TypeLD>, Enc_74d4e5 {
9721 let Inst{12-5} = 0b00000000;
9722 let Inst{31-21} = 0b10011101010;
9723 let hasNewValue = 1;
9724 let opNewValue = 0;
9725 let addrMode = PostInc;
9726 let accessSize = HalfWordAccess;
9727 let mayLoad = 1;
9728 let Constraints = "$Rx32 = $Rx32in";
9729 }
9730 def L2_loadrh_zomap : HInst<
9731 (outs IntRegs:$Rd32),
9732 (ins IntRegs:$Rs32),
9733 "$Rd32 = memh($Rs32)",
9734 tc_4222e6bf, TypeMAPPING> {
9735 let hasNewValue = 1;
9736 let opNewValue = 0;
9737 let isPseudo = 1;
9738 let isCodeGenOnly = 1;
9739 }
9740 def L2_loadrhgp : HInst<
9741 (outs IntRegs:$Rd32),
9742 (ins u31_1Imm:$Ii),
9743 "$Rd32 = memh(gp+#$Ii)",
9744 tc_8a6d0d94, TypeV2LDST>, Enc_8df4be, AddrModeRel {
9745 let Inst{24-21} = 0b1010;
9746 let Inst{31-27} = 0b01001;
9747 let hasNewValue = 1;
9748 let opNewValue = 0;
9749 let accessSize = HalfWordAccess;
9750 let mayLoad = 1;
9751 let Uses = [GP];
9752 let BaseOpcode = "L4_loadrh_abs";
9753 let isPredicable = 1;
9754 let opExtendable = 1;
9755 let isExtentSigned = 0;
9756 let opExtentBits = 17;
9757 let opExtentAlign = 1;
9758 }
9759 def L2_loadri_io : HInst<
9760 (outs IntRegs:$Rd32),
9761 (ins IntRegs:$Rs32, s30_2Imm:$Ii),
9762 "$Rd32 = memw($Rs32+#$Ii)",
9763 tc_4222e6bf, TypeLD>, Enc_2a3787, AddrModeRel, PostInc_BaseImm {
9764 let Inst{24-21} = 0b1100;
9765 let Inst{31-27} = 0b10010;
9766 let hasNewValue = 1;
9767 let opNewValue = 0;
9768 let addrMode = BaseImmOffset;
9769 let accessSize = WordAccess;
9770 let mayLoad = 1;
9771 let BaseOpcode = "L2_loadri_io";
9772 let CextOpcode = "L2_loadri";
9773 let isPredicable = 1;
9774 let isExtendable = 1;
9775 let opExtendable = 2;
9776 let isExtentSigned = 1;
9777 let opExtentBits = 13;
9778 let opExtentAlign = 2;
9779 }
9780 def L2_loadri_pbr : HInst<
9781 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9782 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9783 "$Rd32 = memw($Rx32++$Mu2:brev)",
9784 tc_075c8dd8, TypeLD>, Enc_74d4e5 {
9785 let Inst{12-5} = 0b00000000;
9786 let Inst{31-21} = 0b10011111100;
9787 let hasNewValue = 1;
9788 let opNewValue = 0;
9789 let addrMode = PostInc;
9790 let accessSize = WordAccess;
9791 let mayLoad = 1;
9792 let Constraints = "$Rx32 = $Rx32in";
9793 }
9794 def L2_loadri_pci : HInst<
9795 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9796 (ins IntRegs:$Rx32in, s4_2Imm:$Ii, ModRegs:$Mu2),
9797 "$Rd32 = memw($Rx32++#$Ii:circ($Mu2))",
9798 tc_5ceb2f9e, TypeLD>, Enc_27fd0e {
9799 let Inst{12-9} = 0b0000;
9800 let Inst{31-21} = 0b10011001100;
9801 let hasNewValue = 1;
9802 let opNewValue = 0;
9803 let addrMode = PostInc;
9804 let accessSize = WordAccess;
9805 let mayLoad = 1;
9806 let Uses = [CS];
9807 let Constraints = "$Rx32 = $Rx32in";
9808 }
9809 def L2_loadri_pcr : HInst<
9810 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9811 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9812 "$Rd32 = memw($Rx32++I:circ($Mu2))",
9813 tc_075c8dd8, TypeLD>, Enc_74d4e5 {
9814 let Inst{12-5} = 0b00010000;
9815 let Inst{31-21} = 0b10011001100;
9816 let hasNewValue = 1;
9817 let opNewValue = 0;
9818 let addrMode = PostInc;
9819 let accessSize = WordAccess;
9820 let mayLoad = 1;
9821 let Uses = [CS];
9822 let Constraints = "$Rx32 = $Rx32in";
9823 }
9824 def L2_loadri_pi : HInst<
9825 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9826 (ins IntRegs:$Rx32in, s4_2Imm:$Ii),
9827 "$Rd32 = memw($Rx32++#$Ii)",
9828 tc_075c8dd8, TypeLD>, Enc_3d920a, PredNewRel, PostInc_BaseImm {
9829 let Inst{13-9} = 0b00000;
9830 let Inst{31-21} = 0b10011011100;
9831 let hasNewValue = 1;
9832 let opNewValue = 0;
9833 let addrMode = PostInc;
9834 let accessSize = WordAccess;
9835 let mayLoad = 1;
9836 let BaseOpcode = "L2_loadri_pi";
9837 let CextOpcode = "L2_loadri";
9838 let isPredicable = 1;
9839 let Constraints = "$Rx32 = $Rx32in";
9840 }
9841 def L2_loadri_pr : HInst<
9842 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9843 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9844 "$Rd32 = memw($Rx32++$Mu2)",
9845 tc_075c8dd8, TypeLD>, Enc_74d4e5 {
9846 let Inst{12-5} = 0b00000000;
9847 let Inst{31-21} = 0b10011101100;
9848 let hasNewValue = 1;
9849 let opNewValue = 0;
9850 let addrMode = PostInc;
9851 let accessSize = WordAccess;
9852 let mayLoad = 1;
9853 let Constraints = "$Rx32 = $Rx32in";
9854 }
9855 def L2_loadri_zomap : HInst<
9856 (outs IntRegs:$Rd32),
9857 (ins IntRegs:$Rs32),
9858 "$Rd32 = memw($Rs32)",
9859 tc_4222e6bf, TypeMAPPING> {
9860 let hasNewValue = 1;
9861 let opNewValue = 0;
9862 let isPseudo = 1;
9863 let isCodeGenOnly = 1;
9864 }
9865 def L2_loadrigp : HInst<
9866 (outs IntRegs:$Rd32),
9867 (ins u30_2Imm:$Ii),
9868 "$Rd32 = memw(gp+#$Ii)",
9869 tc_8a6d0d94, TypeV2LDST>, Enc_4f4ed7, AddrModeRel {
9870 let Inst{24-21} = 0b1100;
9871 let Inst{31-27} = 0b01001;
9872 let hasNewValue = 1;
9873 let opNewValue = 0;
9874 let accessSize = WordAccess;
9875 let mayLoad = 1;
9876 let Uses = [GP];
9877 let BaseOpcode = "L4_loadri_abs";
9878 let isPredicable = 1;
9879 let opExtendable = 1;
9880 let isExtentSigned = 0;
9881 let opExtentBits = 18;
9882 let opExtentAlign = 2;
9883 }
9884 def L2_loadrub_io : HInst<
9885 (outs IntRegs:$Rd32),
9886 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
9887 "$Rd32 = memub($Rs32+#$Ii)",
9888 tc_4222e6bf, TypeLD>, Enc_211aaa, AddrModeRel, PostInc_BaseImm {
9889 let Inst{24-21} = 0b1001;
9890 let Inst{31-27} = 0b10010;
9891 let hasNewValue = 1;
9892 let opNewValue = 0;
9893 let addrMode = BaseImmOffset;
9894 let accessSize = ByteAccess;
9895 let mayLoad = 1;
9896 let BaseOpcode = "L2_loadrub_io";
9897 let CextOpcode = "L2_loadrub";
9898 let isPredicable = 1;
9899 let isExtendable = 1;
9900 let opExtendable = 2;
9901 let isExtentSigned = 1;
9902 let opExtentBits = 11;
9903 let opExtentAlign = 0;
9904 }
9905 def L2_loadrub_pbr : HInst<
9906 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9907 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9908 "$Rd32 = memub($Rx32++$Mu2:brev)",
9909 tc_075c8dd8, TypeLD>, Enc_74d4e5 {
9910 let Inst{12-5} = 0b00000000;
9911 let Inst{31-21} = 0b10011111001;
9912 let hasNewValue = 1;
9913 let opNewValue = 0;
9914 let addrMode = PostInc;
9915 let accessSize = ByteAccess;
9916 let mayLoad = 1;
9917 let Constraints = "$Rx32 = $Rx32in";
9918 }
9919 def L2_loadrub_pci : HInst<
9920 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9921 (ins IntRegs:$Rx32in, s4_0Imm:$Ii, ModRegs:$Mu2),
9922 "$Rd32 = memub($Rx32++#$Ii:circ($Mu2))",
9923 tc_5ceb2f9e, TypeLD>, Enc_e0a47a {
9924 let Inst{12-9} = 0b0000;
9925 let Inst{31-21} = 0b10011001001;
9926 let hasNewValue = 1;
9927 let opNewValue = 0;
9928 let addrMode = PostInc;
9929 let accessSize = ByteAccess;
9930 let mayLoad = 1;
9931 let Uses = [CS];
9932 let Constraints = "$Rx32 = $Rx32in";
9933 }
9934 def L2_loadrub_pcr : HInst<
9935 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9936 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9937 "$Rd32 = memub($Rx32++I:circ($Mu2))",
9938 tc_075c8dd8, TypeLD>, Enc_74d4e5 {
9939 let Inst{12-5} = 0b00010000;
9940 let Inst{31-21} = 0b10011001001;
9941 let hasNewValue = 1;
9942 let opNewValue = 0;
9943 let addrMode = PostInc;
9944 let accessSize = ByteAccess;
9945 let mayLoad = 1;
9946 let Uses = [CS];
9947 let Constraints = "$Rx32 = $Rx32in";
9948 }
9949 def L2_loadrub_pi : HInst<
9950 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9951 (ins IntRegs:$Rx32in, s4_0Imm:$Ii),
9952 "$Rd32 = memub($Rx32++#$Ii)",
9953 tc_075c8dd8, TypeLD>, Enc_222336, PredNewRel, PostInc_BaseImm {
9954 let Inst{13-9} = 0b00000;
9955 let Inst{31-21} = 0b10011011001;
9956 let hasNewValue = 1;
9957 let opNewValue = 0;
9958 let addrMode = PostInc;
9959 let accessSize = ByteAccess;
9960 let mayLoad = 1;
9961 let BaseOpcode = "L2_loadrub_pi";
9962 let CextOpcode = "L2_loadrub";
9963 let isPredicable = 1;
9964 let Constraints = "$Rx32 = $Rx32in";
9965 }
9966 def L2_loadrub_pr : HInst<
9967 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9968 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9969 "$Rd32 = memub($Rx32++$Mu2)",
9970 tc_075c8dd8, TypeLD>, Enc_74d4e5 {
9971 let Inst{12-5} = 0b00000000;
9972 let Inst{31-21} = 0b10011101001;
9973 let hasNewValue = 1;
9974 let opNewValue = 0;
9975 let addrMode = PostInc;
9976 let accessSize = ByteAccess;
9977 let mayLoad = 1;
9978 let Constraints = "$Rx32 = $Rx32in";
9979 }
9980 def L2_loadrub_zomap : HInst<
9981 (outs IntRegs:$Rd32),
9982 (ins IntRegs:$Rs32),
9983 "$Rd32 = memub($Rs32)",
9984 tc_4222e6bf, TypeMAPPING> {
9985 let hasNewValue = 1;
9986 let opNewValue = 0;
9987 let isPseudo = 1;
9988 let isCodeGenOnly = 1;
9989 }
9990 def L2_loadrubgp : HInst<
9991 (outs IntRegs:$Rd32),
9992 (ins u32_0Imm:$Ii),
9993 "$Rd32 = memub(gp+#$Ii)",
9994 tc_8a6d0d94, TypeV2LDST>, Enc_25bef0, AddrModeRel {
9995 let Inst{24-21} = 0b1001;
9996 let Inst{31-27} = 0b01001;
9997 let hasNewValue = 1;
9998 let opNewValue = 0;
9999 let accessSize = ByteAccess;
10000 let mayLoad = 1;
10001 let Uses = [GP];
10002 let BaseOpcode = "L4_loadrub_abs";
10003 let isPredicable = 1;
10004 let opExtendable = 1;
10005 let isExtentSigned = 0;
10006 let opExtentBits = 16;
10007 let opExtentAlign = 0;
10008 }
10009 def L2_loadruh_io : HInst<
10010 (outs IntRegs:$Rd32),
10011 (ins IntRegs:$Rs32, s31_1Imm:$Ii),
10012 "$Rd32 = memuh($Rs32+#$Ii)",
10013 tc_4222e6bf, TypeLD>, Enc_de0214, AddrModeRel, PostInc_BaseImm {
10014 let Inst{24-21} = 0b1011;
10015 let Inst{31-27} = 0b10010;
10016 let hasNewValue = 1;
10017 let opNewValue = 0;
10018 let addrMode = BaseImmOffset;
10019 let accessSize = HalfWordAccess;
10020 let mayLoad = 1;
10021 let BaseOpcode = "L2_loadruh_io";
10022 let CextOpcode = "L2_loadruh";
10023 let isPredicable = 1;
10024 let isExtendable = 1;
10025 let opExtendable = 2;
10026 let isExtentSigned = 1;
10027 let opExtentBits = 12;
10028 let opExtentAlign = 1;
10029 }
10030 def L2_loadruh_pbr : HInst<
10031 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10032 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
10033 "$Rd32 = memuh($Rx32++$Mu2:brev)",
10034 tc_075c8dd8, TypeLD>, Enc_74d4e5 {
10035 let Inst{12-5} = 0b00000000;
10036 let Inst{31-21} = 0b10011111011;
10037 let hasNewValue = 1;
10038 let opNewValue = 0;
10039 let addrMode = PostInc;
10040 let accessSize = HalfWordAccess;
10041 let mayLoad = 1;
10042 let Constraints = "$Rx32 = $Rx32in";
10043 }
10044 def L2_loadruh_pci : HInst<
10045 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10046 (ins IntRegs:$Rx32in, s4_1Imm:$Ii, ModRegs:$Mu2),
10047 "$Rd32 = memuh($Rx32++#$Ii:circ($Mu2))",
10048 tc_5ceb2f9e, TypeLD>, Enc_e83554 {
10049 let Inst{12-9} = 0b0000;
10050 let Inst{31-21} = 0b10011001011;
10051 let hasNewValue = 1;
10052 let opNewValue = 0;
10053 let addrMode = PostInc;
10054 let accessSize = HalfWordAccess;
10055 let mayLoad = 1;
10056 let Uses = [CS];
10057 let Constraints = "$Rx32 = $Rx32in";
10058 }
10059 def L2_loadruh_pcr : HInst<
10060 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10061 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
10062 "$Rd32 = memuh($Rx32++I:circ($Mu2))",
10063 tc_075c8dd8, TypeLD>, Enc_74d4e5 {
10064 let Inst{12-5} = 0b00010000;
10065 let Inst{31-21} = 0b10011001011;
10066 let hasNewValue = 1;
10067 let opNewValue = 0;
10068 let addrMode = PostInc;
10069 let accessSize = HalfWordAccess;
10070 let mayLoad = 1;
10071 let Uses = [CS];
10072 let Constraints = "$Rx32 = $Rx32in";
10073 }
10074 def L2_loadruh_pi : HInst<
10075 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10076 (ins IntRegs:$Rx32in, s4_1Imm:$Ii),
10077 "$Rd32 = memuh($Rx32++#$Ii)",
10078 tc_075c8dd8, TypeLD>, Enc_152467, PredNewRel, PostInc_BaseImm {
10079 let Inst{13-9} = 0b00000;
10080 let Inst{31-21} = 0b10011011011;
10081 let hasNewValue = 1;
10082 let opNewValue = 0;
10083 let addrMode = PostInc;
10084 let accessSize = HalfWordAccess;
10085 let mayLoad = 1;
10086 let BaseOpcode = "L2_loadruh_pi";
10087 let CextOpcode = "L2_loadruh";
10088 let isPredicable = 1;
10089 let Constraints = "$Rx32 = $Rx32in";
10090 }
10091 def L2_loadruh_pr : HInst<
10092 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10093 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
10094 "$Rd32 = memuh($Rx32++$Mu2)",
10095 tc_075c8dd8, TypeLD>, Enc_74d4e5 {
10096 let Inst{12-5} = 0b00000000;
10097 let Inst{31-21} = 0b10011101011;
10098 let hasNewValue = 1;
10099 let opNewValue = 0;
10100 let addrMode = PostInc;
10101 let accessSize = HalfWordAccess;
10102 let mayLoad = 1;
10103 let Constraints = "$Rx32 = $Rx32in";
10104 }
10105 def L2_loadruh_zomap : HInst<
10106 (outs IntRegs:$Rd32),
10107 (ins IntRegs:$Rs32),
10108 "$Rd32 = memuh($Rs32)",
10109 tc_4222e6bf, TypeMAPPING> {
10110 let hasNewValue = 1;
10111 let opNewValue = 0;
10112 let isPseudo = 1;
10113 let isCodeGenOnly = 1;
10114 }
10115 def L2_loadruhgp : HInst<
10116 (outs IntRegs:$Rd32),
10117 (ins u31_1Imm:$Ii),
10118 "$Rd32 = memuh(gp+#$Ii)",
10119 tc_8a6d0d94, TypeV2LDST>, Enc_8df4be, AddrModeRel {
10120 let Inst{24-21} = 0b1011;
10121 let Inst{31-27} = 0b01001;
10122 let hasNewValue = 1;
10123 let opNewValue = 0;
10124 let accessSize = HalfWordAccess;
10125 let mayLoad = 1;
10126 let Uses = [GP];
10127 let BaseOpcode = "L4_loadruh_abs";
10128 let isPredicable = 1;
10129 let opExtendable = 1;
10130 let isExtentSigned = 0;
10131 let opExtentBits = 17;
10132 let opExtentAlign = 1;
10133 }
10134 def L2_loadw_locked : HInst<
10135 (outs IntRegs:$Rd32),
10136 (ins IntRegs:$Rs32),
10137 "$Rd32 = memw_locked($Rs32)",
10138 tc_64b00d8a, TypeLD>, Enc_5e2823 {
10139 let Inst{13-5} = 0b000000000;
10140 let Inst{31-21} = 0b10010010000;
10141 let hasNewValue = 1;
10142 let opNewValue = 0;
10143 let accessSize = WordAccess;
10144 let mayLoad = 1;
10145 let isSoloAX = 1;
10146 }
10147 def L2_ploadrbf_io : HInst<
10148 (outs IntRegs:$Rd32),
10149 (ins PredRegs:$Pt4, IntRegs:$Rs32, u32_0Imm:$Ii),
10150 "if (!$Pt4) $Rd32 = memb($Rs32+#$Ii)",
10151 tc_fedb7e19, TypeV2LDST>, Enc_a21d47, AddrModeRel {
10152 let Inst{13-13} = 0b0;
10153 let Inst{31-21} = 0b01000101000;
10154 let isPredicated = 1;
10155 let isPredicatedFalse = 1;
10156 let hasNewValue = 1;
10157 let opNewValue = 0;
10158 let addrMode = BaseImmOffset;
10159 let accessSize = ByteAccess;
10160 let mayLoad = 1;
10161 let BaseOpcode = "L2_loadrb_io";
10162 let CextOpcode = "L2_loadrb";
10163 let isExtendable = 1;
10164 let opExtendable = 3;
10165 let isExtentSigned = 0;
10166 let opExtentBits = 6;
10167 let opExtentAlign = 0;
10168 }
10169 def L2_ploadrbf_pi : HInst<
10170 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10171 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_0Imm:$Ii),
10172 "if (!$Pt4) $Rd32 = memb($Rx32++#$Ii)",
10173 tc_1c7522a8, TypeLD>, Enc_f4413a, PredNewRel {
10174 let Inst{13-11} = 0b101;
10175 let Inst{31-21} = 0b10011011000;
10176 let isPredicated = 1;
10177 let isPredicatedFalse = 1;
10178 let hasNewValue = 1;
10179 let opNewValue = 0;
10180 let addrMode = PostInc;
10181 let accessSize = ByteAccess;
10182 let mayLoad = 1;
10183 let BaseOpcode = "L2_loadrb_pi";
10184 let Constraints = "$Rx32 = $Rx32in";
10185 }
10186 def L2_ploadrbf_zomap : HInst<
10187 (outs IntRegs:$Rd32),
10188 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10189 "if (!$Pt4) $Rd32 = memb($Rs32)",
10190 tc_fedb7e19, TypeMAPPING> {
10191 let hasNewValue = 1;
10192 let opNewValue = 0;
10193 let isPseudo = 1;
10194 let isCodeGenOnly = 1;
10195 }
10196 def L2_ploadrbfnew_io : HInst<
10197 (outs IntRegs:$Rd32),
10198 (ins PredRegs:$Pt4, IntRegs:$Rs32, u32_0Imm:$Ii),
10199 "if (!$Pt4.new) $Rd32 = memb($Rs32+#$Ii)",
10200 tc_075c8dd8, TypeV2LDST>, Enc_a21d47, AddrModeRel {
10201 let Inst{13-13} = 0b0;
10202 let Inst{31-21} = 0b01000111000;
10203 let isPredicated = 1;
10204 let isPredicatedFalse = 1;
10205 let hasNewValue = 1;
10206 let opNewValue = 0;
10207 let addrMode = BaseImmOffset;
10208 let accessSize = ByteAccess;
10209 let isPredicatedNew = 1;
10210 let mayLoad = 1;
10211 let BaseOpcode = "L2_loadrb_io";
10212 let CextOpcode = "L2_loadrb";
10213 let isExtendable = 1;
10214 let opExtendable = 3;
10215 let isExtentSigned = 0;
10216 let opExtentBits = 6;
10217 let opExtentAlign = 0;
10218 }
10219 def L2_ploadrbfnew_pi : HInst<
10220 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10221 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_0Imm:$Ii),
10222 "if (!$Pt4.new) $Rd32 = memb($Rx32++#$Ii)",
10223 tc_5f2afaf7, TypeLD>, Enc_f4413a, PredNewRel {
10224 let Inst{13-11} = 0b111;
10225 let Inst{31-21} = 0b10011011000;
10226 let isPredicated = 1;
10227 let isPredicatedFalse = 1;
10228 let hasNewValue = 1;
10229 let opNewValue = 0;
10230 let addrMode = PostInc;
10231 let accessSize = ByteAccess;
10232 let isPredicatedNew = 1;
10233 let mayLoad = 1;
10234 let BaseOpcode = "L2_loadrb_pi";
10235 let Constraints = "$Rx32 = $Rx32in";
10236 }
10237 def L2_ploadrbfnew_zomap : HInst<
10238 (outs IntRegs:$Rd32),
10239 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10240 "if (!$Pt4.new) $Rd32 = memb($Rs32)",
10241 tc_075c8dd8, TypeMAPPING> {
10242 let hasNewValue = 1;
10243 let opNewValue = 0;
10244 let isPseudo = 1;
10245 let isCodeGenOnly = 1;
10246 }
10247 def L2_ploadrbt_io : HInst<
10248 (outs IntRegs:$Rd32),
10249 (ins PredRegs:$Pt4, IntRegs:$Rs32, u32_0Imm:$Ii),
10250 "if ($Pt4) $Rd32 = memb($Rs32+#$Ii)",
10251 tc_fedb7e19, TypeV2LDST>, Enc_a21d47, AddrModeRel {
10252 let Inst{13-13} = 0b0;
10253 let Inst{31-21} = 0b01000001000;
10254 let isPredicated = 1;
10255 let hasNewValue = 1;
10256 let opNewValue = 0;
10257 let addrMode = BaseImmOffset;
10258 let accessSize = ByteAccess;
10259 let mayLoad = 1;
10260 let BaseOpcode = "L2_loadrb_io";
10261 let CextOpcode = "L2_loadrb";
10262 let isExtendable = 1;
10263 let opExtendable = 3;
10264 let isExtentSigned = 0;
10265 let opExtentBits = 6;
10266 let opExtentAlign = 0;
10267 }
10268 def L2_ploadrbt_pi : HInst<
10269 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10270 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_0Imm:$Ii),
10271 "if ($Pt4) $Rd32 = memb($Rx32++#$Ii)",
10272 tc_1c7522a8, TypeLD>, Enc_f4413a, PredNewRel {
10273 let Inst{13-11} = 0b100;
10274 let Inst{31-21} = 0b10011011000;
10275 let isPredicated = 1;
10276 let hasNewValue = 1;
10277 let opNewValue = 0;
10278 let addrMode = PostInc;
10279 let accessSize = ByteAccess;
10280 let mayLoad = 1;
10281 let BaseOpcode = "L2_loadrb_pi";
10282 let Constraints = "$Rx32 = $Rx32in";
10283 }
10284 def L2_ploadrbt_zomap : HInst<
10285 (outs IntRegs:$Rd32),
10286 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10287 "if ($Pt4) $Rd32 = memb($Rs32)",
10288 tc_fedb7e19, TypeMAPPING> {
10289 let hasNewValue = 1;
10290 let opNewValue = 0;
10291 let isPseudo = 1;
10292 let isCodeGenOnly = 1;
10293 }
10294 def L2_ploadrbtnew_io : HInst<
10295 (outs IntRegs:$Rd32),
10296 (ins PredRegs:$Pt4, IntRegs:$Rs32, u32_0Imm:$Ii),
10297 "if ($Pt4.new) $Rd32 = memb($Rs32+#$Ii)",
10298 tc_075c8dd8, TypeV2LDST>, Enc_a21d47, AddrModeRel {
10299 let Inst{13-13} = 0b0;
10300 let Inst{31-21} = 0b01000011000;
10301 let isPredicated = 1;
10302 let hasNewValue = 1;
10303 let opNewValue = 0;
10304 let addrMode = BaseImmOffset;
10305 let accessSize = ByteAccess;
10306 let isPredicatedNew = 1;
10307 let mayLoad = 1;
10308 let BaseOpcode = "L2_loadrb_io";
10309 let CextOpcode = "L2_loadrb";
10310 let isExtendable = 1;
10311 let opExtendable = 3;
10312 let isExtentSigned = 0;
10313 let opExtentBits = 6;
10314 let opExtentAlign = 0;
10315 }
10316 def L2_ploadrbtnew_pi : HInst<
10317 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10318 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_0Imm:$Ii),
10319 "if ($Pt4.new) $Rd32 = memb($Rx32++#$Ii)",
10320 tc_5f2afaf7, TypeLD>, Enc_f4413a, PredNewRel {
10321 let Inst{13-11} = 0b110;
10322 let Inst{31-21} = 0b10011011000;
10323 let isPredicated = 1;
10324 let hasNewValue = 1;
10325 let opNewValue = 0;
10326 let addrMode = PostInc;
10327 let accessSize = ByteAccess;
10328 let isPredicatedNew = 1;
10329 let mayLoad = 1;
10330 let BaseOpcode = "L2_loadrb_pi";
10331 let Constraints = "$Rx32 = $Rx32in";
10332 }
10333 def L2_ploadrbtnew_zomap : HInst<
10334 (outs IntRegs:$Rd32),
10335 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10336 "if ($Pt4.new) $Rd32 = memb($Rs32)",
10337 tc_075c8dd8, TypeMAPPING> {
10338 let hasNewValue = 1;
10339 let opNewValue = 0;
10340 let isPseudo = 1;
10341 let isCodeGenOnly = 1;
10342 }
10343 def L2_ploadrdf_io : HInst<
10344 (outs DoubleRegs:$Rdd32),
10345 (ins PredRegs:$Pt4, IntRegs:$Rs32, u29_3Imm:$Ii),
10346 "if (!$Pt4) $Rdd32 = memd($Rs32+#$Ii)",
10347 tc_fedb7e19, TypeV2LDST>, Enc_acd6ed, AddrModeRel {
10348 let Inst{13-13} = 0b0;
10349 let Inst{31-21} = 0b01000101110;
10350 let isPredicated = 1;
10351 let isPredicatedFalse = 1;
10352 let addrMode = BaseImmOffset;
10353 let accessSize = DoubleWordAccess;
10354 let mayLoad = 1;
10355 let BaseOpcode = "L2_loadrd_io";
10356 let CextOpcode = "L2_loadrd";
10357 let isExtendable = 1;
10358 let opExtendable = 3;
10359 let isExtentSigned = 0;
10360 let opExtentBits = 9;
10361 let opExtentAlign = 3;
10362 }
10363 def L2_ploadrdf_pi : HInst<
10364 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
10365 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_3Imm:$Ii),
10366 "if (!$Pt4) $Rdd32 = memd($Rx32++#$Ii)",
10367 tc_1c7522a8, TypeLD>, Enc_9d1247, PredNewRel {
10368 let Inst{13-11} = 0b101;
10369 let Inst{31-21} = 0b10011011110;
10370 let isPredicated = 1;
10371 let isPredicatedFalse = 1;
10372 let addrMode = PostInc;
10373 let accessSize = DoubleWordAccess;
10374 let mayLoad = 1;
10375 let BaseOpcode = "L2_loadrd_pi";
10376 let Constraints = "$Rx32 = $Rx32in";
10377 }
10378 def L2_ploadrdf_zomap : HInst<
10379 (outs DoubleRegs:$Rdd32),
10380 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10381 "if (!$Pt4) $Rdd32 = memd($Rs32)",
10382 tc_fedb7e19, TypeMAPPING> {
10383 let isPseudo = 1;
10384 let isCodeGenOnly = 1;
10385 }
10386 def L2_ploadrdfnew_io : HInst<
10387 (outs DoubleRegs:$Rdd32),
10388 (ins PredRegs:$Pt4, IntRegs:$Rs32, u29_3Imm:$Ii),
10389 "if (!$Pt4.new) $Rdd32 = memd($Rs32+#$Ii)",
10390 tc_075c8dd8, TypeV2LDST>, Enc_acd6ed, AddrModeRel {
10391 let Inst{13-13} = 0b0;
10392 let Inst{31-21} = 0b01000111110;
10393 let isPredicated = 1;
10394 let isPredicatedFalse = 1;
10395 let addrMode = BaseImmOffset;
10396 let accessSize = DoubleWordAccess;
10397 let isPredicatedNew = 1;
10398 let mayLoad = 1;
10399 let BaseOpcode = "L2_loadrd_io";
10400 let CextOpcode = "L2_loadrd";
10401 let isExtendable = 1;
10402 let opExtendable = 3;
10403 let isExtentSigned = 0;
10404 let opExtentBits = 9;
10405 let opExtentAlign = 3;
10406 }
10407 def L2_ploadrdfnew_pi : HInst<
10408 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
10409 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_3Imm:$Ii),
10410 "if (!$Pt4.new) $Rdd32 = memd($Rx32++#$Ii)",
10411 tc_5f2afaf7, TypeLD>, Enc_9d1247, PredNewRel {
10412 let Inst{13-11} = 0b111;
10413 let Inst{31-21} = 0b10011011110;
10414 let isPredicated = 1;
10415 let isPredicatedFalse = 1;
10416 let addrMode = PostInc;
10417 let accessSize = DoubleWordAccess;
10418 let isPredicatedNew = 1;
10419 let mayLoad = 1;
10420 let BaseOpcode = "L2_loadrd_pi";
10421 let Constraints = "$Rx32 = $Rx32in";
10422 }
10423 def L2_ploadrdfnew_zomap : HInst<
10424 (outs DoubleRegs:$Rdd32),
10425 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10426 "if (!$Pt4.new) $Rdd32 = memd($Rs32)",
10427 tc_075c8dd8, TypeMAPPING> {
10428 let isPseudo = 1;
10429 let isCodeGenOnly = 1;
10430 }
10431 def L2_ploadrdt_io : HInst<
10432 (outs DoubleRegs:$Rdd32),
10433 (ins PredRegs:$Pt4, IntRegs:$Rs32, u29_3Imm:$Ii),
10434 "if ($Pt4) $Rdd32 = memd($Rs32+#$Ii)",
10435 tc_fedb7e19, TypeV2LDST>, Enc_acd6ed, AddrModeRel {
10436 let Inst{13-13} = 0b0;
10437 let Inst{31-21} = 0b01000001110;
10438 let isPredicated = 1;
10439 let addrMode = BaseImmOffset;
10440 let accessSize = DoubleWordAccess;
10441 let mayLoad = 1;
10442 let BaseOpcode = "L2_loadrd_io";
10443 let CextOpcode = "L2_loadrd";
10444 let isExtendable = 1;
10445 let opExtendable = 3;
10446 let isExtentSigned = 0;
10447 let opExtentBits = 9;
10448 let opExtentAlign = 3;
10449 }
10450 def L2_ploadrdt_pi : HInst<
10451 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
10452 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_3Imm:$Ii),
10453 "if ($Pt4) $Rdd32 = memd($Rx32++#$Ii)",
10454 tc_1c7522a8, TypeLD>, Enc_9d1247, PredNewRel {
10455 let Inst{13-11} = 0b100;
10456 let Inst{31-21} = 0b10011011110;
10457 let isPredicated = 1;
10458 let addrMode = PostInc;
10459 let accessSize = DoubleWordAccess;
10460 let mayLoad = 1;
10461 let BaseOpcode = "L2_loadrd_pi";
10462 let Constraints = "$Rx32 = $Rx32in";
10463 }
10464 def L2_ploadrdt_zomap : HInst<
10465 (outs DoubleRegs:$Rdd32),
10466 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10467 "if ($Pt4) $Rdd32 = memd($Rs32)",
10468 tc_fedb7e19, TypeMAPPING> {
10469 let isPseudo = 1;
10470 let isCodeGenOnly = 1;
10471 }
10472 def L2_ploadrdtnew_io : HInst<
10473 (outs DoubleRegs:$Rdd32),
10474 (ins PredRegs:$Pt4, IntRegs:$Rs32, u29_3Imm:$Ii),
10475 "if ($Pt4.new) $Rdd32 = memd($Rs32+#$Ii)",
10476 tc_075c8dd8, TypeV2LDST>, Enc_acd6ed, AddrModeRel {
10477 let Inst{13-13} = 0b0;
10478 let Inst{31-21} = 0b01000011110;
10479 let isPredicated = 1;
10480 let addrMode = BaseImmOffset;
10481 let accessSize = DoubleWordAccess;
10482 let isPredicatedNew = 1;
10483 let mayLoad = 1;
10484 let BaseOpcode = "L2_loadrd_io";
10485 let CextOpcode = "L2_loadrd";
10486 let isExtendable = 1;
10487 let opExtendable = 3;
10488 let isExtentSigned = 0;
10489 let opExtentBits = 9;
10490 let opExtentAlign = 3;
10491 }
10492 def L2_ploadrdtnew_pi : HInst<
10493 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
10494 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_3Imm:$Ii),
10495 "if ($Pt4.new) $Rdd32 = memd($Rx32++#$Ii)",
10496 tc_5f2afaf7, TypeLD>, Enc_9d1247, PredNewRel {
10497 let Inst{13-11} = 0b110;
10498 let Inst{31-21} = 0b10011011110;
10499 let isPredicated = 1;
10500 let addrMode = PostInc;
10501 let accessSize = DoubleWordAccess;
10502 let isPredicatedNew = 1;
10503 let mayLoad = 1;
10504 let BaseOpcode = "L2_loadrd_pi";
10505 let Constraints = "$Rx32 = $Rx32in";
10506 }
10507 def L2_ploadrdtnew_zomap : HInst<
10508 (outs DoubleRegs:$Rdd32),
10509 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10510 "if ($Pt4.new) $Rdd32 = memd($Rs32)",
10511 tc_075c8dd8, TypeMAPPING> {
10512 let isPseudo = 1;
10513 let isCodeGenOnly = 1;
10514 }
10515 def L2_ploadrhf_io : HInst<
10516 (outs IntRegs:$Rd32),
10517 (ins PredRegs:$Pt4, IntRegs:$Rs32, u31_1Imm:$Ii),
10518 "if (!$Pt4) $Rd32 = memh($Rs32+#$Ii)",
10519 tc_fedb7e19, TypeV2LDST>, Enc_a198f6, AddrModeRel {
10520 let Inst{13-13} = 0b0;
10521 let Inst{31-21} = 0b01000101010;
10522 let isPredicated = 1;
10523 let isPredicatedFalse = 1;
10524 let hasNewValue = 1;
10525 let opNewValue = 0;
10526 let addrMode = BaseImmOffset;
10527 let accessSize = HalfWordAccess;
10528 let mayLoad = 1;
10529 let BaseOpcode = "L2_loadrh_io";
10530 let CextOpcode = "L2_loadrh";
10531 let isExtendable = 1;
10532 let opExtendable = 3;
10533 let isExtentSigned = 0;
10534 let opExtentBits = 7;
10535 let opExtentAlign = 1;
10536 }
10537 def L2_ploadrhf_pi : HInst<
10538 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10539 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_1Imm:$Ii),
10540 "if (!$Pt4) $Rd32 = memh($Rx32++#$Ii)",
10541 tc_1c7522a8, TypeLD>, Enc_733b27, PredNewRel {
10542 let Inst{13-11} = 0b101;
10543 let Inst{31-21} = 0b10011011010;
10544 let isPredicated = 1;
10545 let isPredicatedFalse = 1;
10546 let hasNewValue = 1;
10547 let opNewValue = 0;
10548 let addrMode = PostInc;
10549 let accessSize = HalfWordAccess;
10550 let mayLoad = 1;
10551 let BaseOpcode = "L2_loadrh_pi";
10552 let Constraints = "$Rx32 = $Rx32in";
10553 }
10554 def L2_ploadrhf_zomap : HInst<
10555 (outs IntRegs:$Rd32),
10556 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10557 "if (!$Pt4) $Rd32 = memh($Rs32)",
10558 tc_fedb7e19, TypeMAPPING> {
10559 let hasNewValue = 1;
10560 let opNewValue = 0;
10561 let isPseudo = 1;
10562 let isCodeGenOnly = 1;
10563 }
10564 def L2_ploadrhfnew_io : HInst<
10565 (outs IntRegs:$Rd32),
10566 (ins PredRegs:$Pt4, IntRegs:$Rs32, u31_1Imm:$Ii),
10567 "if (!$Pt4.new) $Rd32 = memh($Rs32+#$Ii)",
10568 tc_075c8dd8, TypeV2LDST>, Enc_a198f6, AddrModeRel {
10569 let Inst{13-13} = 0b0;
10570 let Inst{31-21} = 0b01000111010;
10571 let isPredicated = 1;
10572 let isPredicatedFalse = 1;
10573 let hasNewValue = 1;
10574 let opNewValue = 0;
10575 let addrMode = BaseImmOffset;
10576 let accessSize = HalfWordAccess;
10577 let isPredicatedNew = 1;
10578 let mayLoad = 1;
10579 let BaseOpcode = "L2_loadrh_io";
10580 let CextOpcode = "L2_loadrh";
10581 let isExtendable = 1;
10582 let opExtendable = 3;
10583 let isExtentSigned = 0;
10584 let opExtentBits = 7;
10585 let opExtentAlign = 1;
10586 }
10587 def L2_ploadrhfnew_pi : HInst<
10588 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10589 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_1Imm:$Ii),
10590 "if (!$Pt4.new) $Rd32 = memh($Rx32++#$Ii)",
10591 tc_5f2afaf7, TypeLD>, Enc_733b27, PredNewRel {
10592 let Inst{13-11} = 0b111;
10593 let Inst{31-21} = 0b10011011010;
10594 let isPredicated = 1;
10595 let isPredicatedFalse = 1;
10596 let hasNewValue = 1;
10597 let opNewValue = 0;
10598 let addrMode = PostInc;
10599 let accessSize = HalfWordAccess;
10600 let isPredicatedNew = 1;
10601 let mayLoad = 1;
10602 let BaseOpcode = "L2_loadrh_pi";
10603 let Constraints = "$Rx32 = $Rx32in";
10604 }
10605 def L2_ploadrhfnew_zomap : HInst<
10606 (outs IntRegs:$Rd32),
10607 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10608 "if (!$Pt4.new) $Rd32 = memh($Rs32)",
10609 tc_075c8dd8, TypeMAPPING> {
10610 let hasNewValue = 1;
10611 let opNewValue = 0;
10612 let isPseudo = 1;
10613 let isCodeGenOnly = 1;
10614 }
10615 def L2_ploadrht_io : HInst<
10616 (outs IntRegs:$Rd32),
10617 (ins PredRegs:$Pt4, IntRegs:$Rs32, u31_1Imm:$Ii),
10618 "if ($Pt4) $Rd32 = memh($Rs32+#$Ii)",
10619 tc_fedb7e19, TypeV2LDST>, Enc_a198f6, AddrModeRel {
10620 let Inst{13-13} = 0b0;
10621 let Inst{31-21} = 0b01000001010;
10622 let isPredicated = 1;
10623 let hasNewValue = 1;
10624 let opNewValue = 0;
10625 let addrMode = BaseImmOffset;
10626 let accessSize = HalfWordAccess;
10627 let mayLoad = 1;
10628 let BaseOpcode = "L2_loadrh_io";
10629 let CextOpcode = "L2_loadrh";
10630 let isExtendable = 1;
10631 let opExtendable = 3;
10632 let isExtentSigned = 0;
10633 let opExtentBits = 7;
10634 let opExtentAlign = 1;
10635 }
10636 def L2_ploadrht_pi : HInst<
10637 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10638 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_1Imm:$Ii),
10639 "if ($Pt4) $Rd32 = memh($Rx32++#$Ii)",
10640 tc_1c7522a8, TypeLD>, Enc_733b27, PredNewRel {
10641 let Inst{13-11} = 0b100;
10642 let Inst{31-21} = 0b10011011010;
10643 let isPredicated = 1;
10644 let hasNewValue = 1;
10645 let opNewValue = 0;
10646 let addrMode = PostInc;
10647 let accessSize = HalfWordAccess;
10648 let mayLoad = 1;
10649 let BaseOpcode = "L2_loadrh_pi";
10650 let Constraints = "$Rx32 = $Rx32in";
10651 }
10652 def L2_ploadrht_zomap : HInst<
10653 (outs IntRegs:$Rd32),
10654 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10655 "if ($Pt4) $Rd32 = memh($Rs32)",
10656 tc_fedb7e19, TypeMAPPING> {
10657 let hasNewValue = 1;
10658 let opNewValue = 0;
10659 let isPseudo = 1;
10660 let isCodeGenOnly = 1;
10661 }
10662 def L2_ploadrhtnew_io : HInst<
10663 (outs IntRegs:$Rd32),
10664 (ins PredRegs:$Pt4, IntRegs:$Rs32, u31_1Imm:$Ii),
10665 "if ($Pt4.new) $Rd32 = memh($Rs32+#$Ii)",
10666 tc_075c8dd8, TypeV2LDST>, Enc_a198f6, AddrModeRel {
10667 let Inst{13-13} = 0b0;
10668 let Inst{31-21} = 0b01000011010;
10669 let isPredicated = 1;
10670 let hasNewValue = 1;
10671 let opNewValue = 0;
10672 let addrMode = BaseImmOffset;
10673 let accessSize = HalfWordAccess;
10674 let isPredicatedNew = 1;
10675 let mayLoad = 1;
10676 let BaseOpcode = "L2_loadrh_io";
10677 let CextOpcode = "L2_loadrh";
10678 let isExtendable = 1;
10679 let opExtendable = 3;
10680 let isExtentSigned = 0;
10681 let opExtentBits = 7;
10682 let opExtentAlign = 1;
10683 }
10684 def L2_ploadrhtnew_pi : HInst<
10685 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10686 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_1Imm:$Ii),
10687 "if ($Pt4.new) $Rd32 = memh($Rx32++#$Ii)",
10688 tc_5f2afaf7, TypeLD>, Enc_733b27, PredNewRel {
10689 let Inst{13-11} = 0b110;
10690 let Inst{31-21} = 0b10011011010;
10691 let isPredicated = 1;
10692 let hasNewValue = 1;
10693 let opNewValue = 0;
10694 let addrMode = PostInc;
10695 let accessSize = HalfWordAccess;
10696 let isPredicatedNew = 1;
10697 let mayLoad = 1;
10698 let BaseOpcode = "L2_loadrh_pi";
10699 let Constraints = "$Rx32 = $Rx32in";
10700 }
10701 def L2_ploadrhtnew_zomap : HInst<
10702 (outs IntRegs:$Rd32),
10703 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10704 "if ($Pt4.new) $Rd32 = memh($Rs32)",
10705 tc_075c8dd8, TypeMAPPING> {
10706 let hasNewValue = 1;
10707 let opNewValue = 0;
10708 let isPseudo = 1;
10709 let isCodeGenOnly = 1;
10710 }
10711 def L2_ploadrif_io : HInst<
10712 (outs IntRegs:$Rd32),
10713 (ins PredRegs:$Pt4, IntRegs:$Rs32, u30_2Imm:$Ii),
10714 "if (!$Pt4) $Rd32 = memw($Rs32+#$Ii)",
10715 tc_fedb7e19, TypeV2LDST>, Enc_f82eaf, AddrModeRel {
10716 let Inst{13-13} = 0b0;
10717 let Inst{31-21} = 0b01000101100;
10718 let isPredicated = 1;
10719 let isPredicatedFalse = 1;
10720 let hasNewValue = 1;
10721 let opNewValue = 0;
10722 let addrMode = BaseImmOffset;
10723 let accessSize = WordAccess;
10724 let mayLoad = 1;
10725 let BaseOpcode = "L2_loadri_io";
10726 let CextOpcode = "L2_loadri";
10727 let isExtendable = 1;
10728 let opExtendable = 3;
10729 let isExtentSigned = 0;
10730 let opExtentBits = 8;
10731 let opExtentAlign = 2;
10732 }
10733 def L2_ploadrif_pi : HInst<
10734 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10735 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_2Imm:$Ii),
10736 "if (!$Pt4) $Rd32 = memw($Rx32++#$Ii)",
10737 tc_1c7522a8, TypeLD>, Enc_b97f71, PredNewRel {
10738 let Inst{13-11} = 0b101;
10739 let Inst{31-21} = 0b10011011100;
10740 let isPredicated = 1;
10741 let isPredicatedFalse = 1;
10742 let hasNewValue = 1;
10743 let opNewValue = 0;
10744 let addrMode = PostInc;
10745 let accessSize = WordAccess;
10746 let mayLoad = 1;
10747 let BaseOpcode = "L2_loadri_pi";
10748 let Constraints = "$Rx32 = $Rx32in";
10749 }
10750 def L2_ploadrif_zomap : HInst<
10751 (outs IntRegs:$Rd32),
10752 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10753 "if (!$Pt4) $Rd32 = memw($Rs32)",
10754 tc_fedb7e19, TypeMAPPING> {
10755 let hasNewValue = 1;
10756 let opNewValue = 0;
10757 let isPseudo = 1;
10758 let isCodeGenOnly = 1;
10759 }
10760 def L2_ploadrifnew_io : HInst<
10761 (outs IntRegs:$Rd32),
10762 (ins PredRegs:$Pt4, IntRegs:$Rs32, u30_2Imm:$Ii),
10763 "if (!$Pt4.new) $Rd32 = memw($Rs32+#$Ii)",
10764 tc_075c8dd8, TypeV2LDST>, Enc_f82eaf, AddrModeRel {
10765 let Inst{13-13} = 0b0;
10766 let Inst{31-21} = 0b01000111100;
10767 let isPredicated = 1;
10768 let isPredicatedFalse = 1;
10769 let hasNewValue = 1;
10770 let opNewValue = 0;
10771 let addrMode = BaseImmOffset;
10772 let accessSize = WordAccess;
10773 let isPredicatedNew = 1;
10774 let mayLoad = 1;
10775 let BaseOpcode = "L2_loadri_io";
10776 let CextOpcode = "L2_loadri";
10777 let isExtendable = 1;
10778 let opExtendable = 3;
10779 let isExtentSigned = 0;
10780 let opExtentBits = 8;
10781 let opExtentAlign = 2;
10782 }
10783 def L2_ploadrifnew_pi : HInst<
10784 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10785 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_2Imm:$Ii),
10786 "if (!$Pt4.new) $Rd32 = memw($Rx32++#$Ii)",
10787 tc_5f2afaf7, TypeLD>, Enc_b97f71, PredNewRel {
10788 let Inst{13-11} = 0b111;
10789 let Inst{31-21} = 0b10011011100;
10790 let isPredicated = 1;
10791 let isPredicatedFalse = 1;
10792 let hasNewValue = 1;
10793 let opNewValue = 0;
10794 let addrMode = PostInc;
10795 let accessSize = WordAccess;
10796 let isPredicatedNew = 1;
10797 let mayLoad = 1;
10798 let BaseOpcode = "L2_loadri_pi";
10799 let Constraints = "$Rx32 = $Rx32in";
10800 }
10801 def L2_ploadrifnew_zomap : HInst<
10802 (outs IntRegs:$Rd32),
10803 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10804 "if (!$Pt4.new) $Rd32 = memw($Rs32)",
10805 tc_075c8dd8, TypeMAPPING> {
10806 let hasNewValue = 1;
10807 let opNewValue = 0;
10808 let isPseudo = 1;
10809 let isCodeGenOnly = 1;
10810 }
10811 def L2_ploadrit_io : HInst<
10812 (outs IntRegs:$Rd32),
10813 (ins PredRegs:$Pt4, IntRegs:$Rs32, u30_2Imm:$Ii),
10814 "if ($Pt4) $Rd32 = memw($Rs32+#$Ii)",
10815 tc_fedb7e19, TypeV2LDST>, Enc_f82eaf, AddrModeRel {
10816 let Inst{13-13} = 0b0;
10817 let Inst{31-21} = 0b01000001100;
10818 let isPredicated = 1;
10819 let hasNewValue = 1;
10820 let opNewValue = 0;
10821 let addrMode = BaseImmOffset;
10822 let accessSize = WordAccess;
10823 let mayLoad = 1;
10824 let BaseOpcode = "L2_loadri_io";
10825 let CextOpcode = "L2_loadri";
10826 let isExtendable = 1;
10827 let opExtendable = 3;
10828 let isExtentSigned = 0;
10829 let opExtentBits = 8;
10830 let opExtentAlign = 2;
10831 }
10832 def L2_ploadrit_pi : HInst<
10833 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10834 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_2Imm:$Ii),
10835 "if ($Pt4) $Rd32 = memw($Rx32++#$Ii)",
10836 tc_1c7522a8, TypeLD>, Enc_b97f71, PredNewRel {
10837 let Inst{13-11} = 0b100;
10838 let Inst{31-21} = 0b10011011100;
10839 let isPredicated = 1;
10840 let hasNewValue = 1;
10841 let opNewValue = 0;
10842 let addrMode = PostInc;
10843 let accessSize = WordAccess;
10844 let mayLoad = 1;
10845 let BaseOpcode = "L2_loadri_pi";
10846 let Constraints = "$Rx32 = $Rx32in";
10847 }
10848 def L2_ploadrit_zomap : HInst<
10849 (outs IntRegs:$Rd32),
10850 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10851 "if ($Pt4) $Rd32 = memw($Rs32)",
10852 tc_fedb7e19, TypeMAPPING> {
10853 let hasNewValue = 1;
10854 let opNewValue = 0;
10855 let isPseudo = 1;
10856 let isCodeGenOnly = 1;
10857 }
10858 def L2_ploadritnew_io : HInst<
10859 (outs IntRegs:$Rd32),
10860 (ins PredRegs:$Pt4, IntRegs:$Rs32, u30_2Imm:$Ii),
10861 "if ($Pt4.new) $Rd32 = memw($Rs32+#$Ii)",
10862 tc_075c8dd8, TypeV2LDST>, Enc_f82eaf, AddrModeRel {
10863 let Inst{13-13} = 0b0;
10864 let Inst{31-21} = 0b01000011100;
10865 let isPredicated = 1;
10866 let hasNewValue = 1;
10867 let opNewValue = 0;
10868 let addrMode = BaseImmOffset;
10869 let accessSize = WordAccess;
10870 let isPredicatedNew = 1;
10871 let mayLoad = 1;
10872 let BaseOpcode = "L2_loadri_io";
10873 let CextOpcode = "L2_loadri";
10874 let isExtendable = 1;
10875 let opExtendable = 3;
10876 let isExtentSigned = 0;
10877 let opExtentBits = 8;
10878 let opExtentAlign = 2;
10879 }
10880 def L2_ploadritnew_pi : HInst<
10881 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10882 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_2Imm:$Ii),
10883 "if ($Pt4.new) $Rd32 = memw($Rx32++#$Ii)",
10884 tc_5f2afaf7, TypeLD>, Enc_b97f71, PredNewRel {
10885 let Inst{13-11} = 0b110;
10886 let Inst{31-21} = 0b10011011100;
10887 let isPredicated = 1;
10888 let hasNewValue = 1;
10889 let opNewValue = 0;
10890 let addrMode = PostInc;
10891 let accessSize = WordAccess;
10892 let isPredicatedNew = 1;
10893 let mayLoad = 1;
10894 let BaseOpcode = "L2_loadri_pi";
10895 let Constraints = "$Rx32 = $Rx32in";
10896 }
10897 def L2_ploadritnew_zomap : HInst<
10898 (outs IntRegs:$Rd32),
10899 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10900 "if ($Pt4.new) $Rd32 = memw($Rs32)",
10901 tc_075c8dd8, TypeMAPPING> {
10902 let hasNewValue = 1;
10903 let opNewValue = 0;
10904 let isPseudo = 1;
10905 let isCodeGenOnly = 1;
10906 }
10907 def L2_ploadrubf_io : HInst<
10908 (outs IntRegs:$Rd32),
10909 (ins PredRegs:$Pt4, IntRegs:$Rs32, u32_0Imm:$Ii),
10910 "if (!$Pt4) $Rd32 = memub($Rs32+#$Ii)",
10911 tc_fedb7e19, TypeV2LDST>, Enc_a21d47, AddrModeRel {
10912 let Inst{13-13} = 0b0;
10913 let Inst{31-21} = 0b01000101001;
10914 let isPredicated = 1;
10915 let isPredicatedFalse = 1;
10916 let hasNewValue = 1;
10917 let opNewValue = 0;
10918 let addrMode = BaseImmOffset;
10919 let accessSize = ByteAccess;
10920 let mayLoad = 1;
10921 let BaseOpcode = "L2_loadrub_io";
10922 let CextOpcode = "L2_loadrub";
10923 let isExtendable = 1;
10924 let opExtendable = 3;
10925 let isExtentSigned = 0;
10926 let opExtentBits = 6;
10927 let opExtentAlign = 0;
10928 }
10929 def L2_ploadrubf_pi : HInst<
10930 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10931 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_0Imm:$Ii),
10932 "if (!$Pt4) $Rd32 = memub($Rx32++#$Ii)",
10933 tc_1c7522a8, TypeLD>, Enc_f4413a, PredNewRel {
10934 let Inst{13-11} = 0b101;
10935 let Inst{31-21} = 0b10011011001;
10936 let isPredicated = 1;
10937 let isPredicatedFalse = 1;
10938 let hasNewValue = 1;
10939 let opNewValue = 0;
10940 let addrMode = PostInc;
10941 let accessSize = ByteAccess;
10942 let mayLoad = 1;
10943 let BaseOpcode = "L2_loadrub_pi";
10944 let Constraints = "$Rx32 = $Rx32in";
10945 }
10946 def L2_ploadrubf_zomap : HInst<
10947 (outs IntRegs:$Rd32),
10948 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10949 "if (!$Pt4) $Rd32 = memub($Rs32)",
10950 tc_fedb7e19, TypeMAPPING> {
10951 let hasNewValue = 1;
10952 let opNewValue = 0;
10953 let isPseudo = 1;
10954 let isCodeGenOnly = 1;
10955 }
10956 def L2_ploadrubfnew_io : HInst<
10957 (outs IntRegs:$Rd32),
10958 (ins PredRegs:$Pt4, IntRegs:$Rs32, u32_0Imm:$Ii),
10959 "if (!$Pt4.new) $Rd32 = memub($Rs32+#$Ii)",
10960 tc_075c8dd8, TypeV2LDST>, Enc_a21d47, AddrModeRel {
10961 let Inst{13-13} = 0b0;
10962 let Inst{31-21} = 0b01000111001;
10963 let isPredicated = 1;
10964 let isPredicatedFalse = 1;
10965 let hasNewValue = 1;
10966 let opNewValue = 0;
10967 let addrMode = BaseImmOffset;
10968 let accessSize = ByteAccess;
10969 let isPredicatedNew = 1;
10970 let mayLoad = 1;
10971 let BaseOpcode = "L2_loadrub_io";
10972 let CextOpcode = "L2_loadrub";
10973 let isExtendable = 1;
10974 let opExtendable = 3;
10975 let isExtentSigned = 0;
10976 let opExtentBits = 6;
10977 let opExtentAlign = 0;
10978 }
10979 def L2_ploadrubfnew_pi : HInst<
10980 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10981 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_0Imm:$Ii),
10982 "if (!$Pt4.new) $Rd32 = memub($Rx32++#$Ii)",
10983 tc_5f2afaf7, TypeLD>, Enc_f4413a, PredNewRel {
10984 let Inst{13-11} = 0b111;
10985 let Inst{31-21} = 0b10011011001;
10986 let isPredicated = 1;
10987 let isPredicatedFalse = 1;
10988 let hasNewValue = 1;
10989 let opNewValue = 0;
10990 let addrMode = PostInc;
10991 let accessSize = ByteAccess;
10992 let isPredicatedNew = 1;
10993 let mayLoad = 1;
10994 let BaseOpcode = "L2_loadrub_pi";
10995 let Constraints = "$Rx32 = $Rx32in";
10996 }
10997 def L2_ploadrubfnew_zomap : HInst<
10998 (outs IntRegs:$Rd32),
10999 (ins PredRegs:$Pt4, IntRegs:$Rs32),
11000 "if (!$Pt4.new) $Rd32 = memub($Rs32)",
11001 tc_075c8dd8, TypeMAPPING> {
11002 let hasNewValue = 1;
11003 let opNewValue = 0;
11004 let isPseudo = 1;
11005 let isCodeGenOnly = 1;
11006 }
11007 def L2_ploadrubt_io : HInst<
11008 (outs IntRegs:$Rd32),
11009 (ins PredRegs:$Pt4, IntRegs:$Rs32, u32_0Imm:$Ii),
11010 "if ($Pt4) $Rd32 = memub($Rs32+#$Ii)",
11011 tc_fedb7e19, TypeV2LDST>, Enc_a21d47, AddrModeRel {
11012 let Inst{13-13} = 0b0;
11013 let Inst{31-21} = 0b01000001001;
11014 let isPredicated = 1;
11015 let hasNewValue = 1;
11016 let opNewValue = 0;
11017 let addrMode = BaseImmOffset;
11018 let accessSize = ByteAccess;
11019 let mayLoad = 1;
11020 let BaseOpcode = "L2_loadrub_io";
11021 let CextOpcode = "L2_loadrub";
11022 let isExtendable = 1;
11023 let opExtendable = 3;
11024 let isExtentSigned = 0;
11025 let opExtentBits = 6;
11026 let opExtentAlign = 0;
11027 }
11028 def L2_ploadrubt_pi : HInst<
11029 (outs IntRegs:$Rd32, IntRegs:$Rx32),
11030 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_0Imm:$Ii),
11031 "if ($Pt4) $Rd32 = memub($Rx32++#$Ii)",
11032 tc_1c7522a8, TypeLD>, Enc_f4413a, PredNewRel {
11033 let Inst{13-11} = 0b100;
11034 let Inst{31-21} = 0b10011011001;
11035 let isPredicated = 1;
11036 let hasNewValue = 1;
11037 let opNewValue = 0;
11038 let addrMode = PostInc;
11039 let accessSize = ByteAccess;
11040 let mayLoad = 1;
11041 let BaseOpcode = "L2_loadrub_pi";
11042 let Constraints = "$Rx32 = $Rx32in";
11043 }
11044 def L2_ploadrubt_zomap : HInst<
11045 (outs IntRegs:$Rd32),
11046 (ins PredRegs:$Pt4, IntRegs:$Rs32),
11047 "if ($Pt4) $Rd32 = memub($Rs32)",
11048 tc_fedb7e19, TypeMAPPING> {
11049 let hasNewValue = 1;
11050 let opNewValue = 0;
11051 let isPseudo = 1;
11052 let isCodeGenOnly = 1;
11053 }
11054 def L2_ploadrubtnew_io : HInst<
11055 (outs IntRegs:$Rd32),
11056 (ins PredRegs:$Pt4, IntRegs:$Rs32, u32_0Imm:$Ii),
11057 "if ($Pt4.new) $Rd32 = memub($Rs32+#$Ii)",
11058 tc_075c8dd8, TypeV2LDST>, Enc_a21d47, AddrModeRel {
11059 let Inst{13-13} = 0b0;
11060 let Inst{31-21} = 0b01000011001;
11061 let isPredicated = 1;
11062 let hasNewValue = 1;
11063 let opNewValue = 0;
11064 let addrMode = BaseImmOffset;
11065 let accessSize = ByteAccess;
11066 let isPredicatedNew = 1;
11067 let mayLoad = 1;
11068 let BaseOpcode = "L2_loadrub_io";
11069 let CextOpcode = "L2_loadrub";
11070 let isExtendable = 1;
11071 let opExtendable = 3;
11072 let isExtentSigned = 0;
11073 let opExtentBits = 6;
11074 let opExtentAlign = 0;
11075 }
11076 def L2_ploadrubtnew_pi : HInst<
11077 (outs IntRegs:$Rd32, IntRegs:$Rx32),
11078 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_0Imm:$Ii),
11079 "if ($Pt4.new) $Rd32 = memub($Rx32++#$Ii)",
11080 tc_5f2afaf7, TypeLD>, Enc_f4413a, PredNewRel {
11081 let Inst{13-11} = 0b110;
11082 let Inst{31-21} = 0b10011011001;
11083 let isPredicated = 1;
11084 let hasNewValue = 1;
11085 let opNewValue = 0;
11086 let addrMode = PostInc;
11087 let accessSize = ByteAccess;
11088 let isPredicatedNew = 1;
11089 let mayLoad = 1;
11090 let BaseOpcode = "L2_loadrub_pi";
11091 let Constraints = "$Rx32 = $Rx32in";
11092 }
11093 def L2_ploadrubtnew_zomap : HInst<
11094 (outs IntRegs:$Rd32),
11095 (ins PredRegs:$Pt4, IntRegs:$Rs32),
11096 "if ($Pt4.new) $Rd32 = memub($Rs32)",
11097 tc_075c8dd8, TypeMAPPING> {
11098 let hasNewValue = 1;
11099 let opNewValue = 0;
11100 let isPseudo = 1;
11101 let isCodeGenOnly = 1;
11102 }
11103 def L2_ploadruhf_io : HInst<
11104 (outs IntRegs:$Rd32),
11105 (ins PredRegs:$Pt4, IntRegs:$Rs32, u31_1Imm:$Ii),
11106 "if (!$Pt4) $Rd32 = memuh($Rs32+#$Ii)",
11107 tc_fedb7e19, TypeV2LDST>, Enc_a198f6, AddrModeRel {
11108 let Inst{13-13} = 0b0;
11109 let Inst{31-21} = 0b01000101011;
11110 let isPredicated = 1;
11111 let isPredicatedFalse = 1;
11112 let hasNewValue = 1;
11113 let opNewValue = 0;
11114 let addrMode = BaseImmOffset;
11115 let accessSize = HalfWordAccess;
11116 let mayLoad = 1;
11117 let BaseOpcode = "L2_loadruh_io";
11118 let CextOpcode = "L2_loadruh";
11119 let isExtendable = 1;
11120 let opExtendable = 3;
11121 let isExtentSigned = 0;
11122 let opExtentBits = 7;
11123 let opExtentAlign = 1;
11124 }
11125 def L2_ploadruhf_pi : HInst<
11126 (outs IntRegs:$Rd32, IntRegs:$Rx32),
11127 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_1Imm:$Ii),
11128 "if (!$Pt4) $Rd32 = memuh($Rx32++#$Ii)",
11129 tc_1c7522a8, TypeLD>, Enc_733b27, PredNewRel {
11130 let Inst{13-11} = 0b101;
11131 let Inst{31-21} = 0b10011011011;
11132 let isPredicated = 1;
11133 let isPredicatedFalse = 1;
11134 let hasNewValue = 1;
11135 let opNewValue = 0;
11136 let addrMode = PostInc;
11137 let accessSize = HalfWordAccess;
11138 let mayLoad = 1;
11139 let BaseOpcode = "L2_loadruh_pi";
11140 let Constraints = "$Rx32 = $Rx32in";
11141 }
11142 def L2_ploadruhf_zomap : HInst<
11143 (outs IntRegs:$Rd32),
11144 (ins PredRegs:$Pt4, IntRegs:$Rs32),
11145 "if (!$Pt4) $Rd32 = memuh($Rs32)",
11146 tc_fedb7e19, TypeMAPPING> {
11147 let hasNewValue = 1;
11148 let opNewValue = 0;
11149 let isPseudo = 1;
11150 let isCodeGenOnly = 1;
11151 }
11152 def L2_ploadruhfnew_io : HInst<
11153 (outs IntRegs:$Rd32),
11154 (ins PredRegs:$Pt4, IntRegs:$Rs32, u31_1Imm:$Ii),
11155 "if (!$Pt4.new) $Rd32 = memuh($Rs32+#$Ii)",
11156 tc_075c8dd8, TypeV2LDST>, Enc_a198f6, AddrModeRel {
11157 let Inst{13-13} = 0b0;
11158 let Inst{31-21} = 0b01000111011;
11159 let isPredicated = 1;
11160 let isPredicatedFalse = 1;
11161 let hasNewValue = 1;
11162 let opNewValue = 0;
11163 let addrMode = BaseImmOffset;
11164 let accessSize = HalfWordAccess;
11165 let isPredicatedNew = 1;
11166 let mayLoad = 1;
11167 let BaseOpcode = "L2_loadruh_io";
11168 let CextOpcode = "L2_loadruh";
11169 let isExtendable = 1;
11170 let opExtendable = 3;
11171 let isExtentSigned = 0;
11172 let opExtentBits = 7;
11173 let opExtentAlign = 1;
11174 }
11175 def L2_ploadruhfnew_pi : HInst<
11176 (outs IntRegs:$Rd32, IntRegs:$Rx32),
11177 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_1Imm:$Ii),
11178 "if (!$Pt4.new) $Rd32 = memuh($Rx32++#$Ii)",
11179 tc_5f2afaf7, TypeLD>, Enc_733b27, PredNewRel {
11180 let Inst{13-11} = 0b111;
11181 let Inst{31-21} = 0b10011011011;
11182 let isPredicated = 1;
11183 let isPredicatedFalse = 1;
11184 let hasNewValue = 1;
11185 let opNewValue = 0;
11186 let addrMode = PostInc;
11187 let accessSize = HalfWordAccess;
11188 let isPredicatedNew = 1;
11189 let mayLoad = 1;
11190 let BaseOpcode = "L2_loadruh_pi";
11191 let Constraints = "$Rx32 = $Rx32in";
11192 }
11193 def L2_ploadruhfnew_zomap : HInst<
11194 (outs IntRegs:$Rd32),
11195 (ins PredRegs:$Pt4, IntRegs:$Rs32),
11196 "if (!$Pt4.new) $Rd32 = memuh($Rs32)",
11197 tc_075c8dd8, TypeMAPPING> {
11198 let hasNewValue = 1;
11199 let opNewValue = 0;
11200 let isPseudo = 1;
11201 let isCodeGenOnly = 1;
11202 }
11203 def L2_ploadruht_io : HInst<
11204 (outs IntRegs:$Rd32),
11205 (ins PredRegs:$Pt4, IntRegs:$Rs32, u31_1Imm:$Ii),
11206 "if ($Pt4) $Rd32 = memuh($Rs32+#$Ii)",
11207 tc_fedb7e19, TypeV2LDST>, Enc_a198f6, AddrModeRel {
11208 let Inst{13-13} = 0b0;
11209 let Inst{31-21} = 0b01000001011;
11210 let isPredicated = 1;
11211 let hasNewValue = 1;
11212 let opNewValue = 0;
11213 let addrMode = BaseImmOffset;
11214 let accessSize = HalfWordAccess;
11215 let mayLoad = 1;
11216 let BaseOpcode = "L2_loadruh_io";
11217 let CextOpcode = "L2_loadruh";
11218 let isExtendable = 1;
11219 let opExtendable = 3;
11220 let isExtentSigned = 0;
11221 let opExtentBits = 7;
11222 let opExtentAlign = 1;
11223 }
11224 def L2_ploadruht_pi : HInst<
11225 (outs IntRegs:$Rd32, IntRegs:$Rx32),
11226 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_1Imm:$Ii),
11227 "if ($Pt4) $Rd32 = memuh($Rx32++#$Ii)",
11228 tc_1c7522a8, TypeLD>, Enc_733b27, PredNewRel {
11229 let Inst{13-11} = 0b100;
11230 let Inst{31-21} = 0b10011011011;
11231 let isPredicated = 1;
11232 let hasNewValue = 1;
11233 let opNewValue = 0;
11234 let addrMode = PostInc;
11235 let accessSize = HalfWordAccess;
11236 let mayLoad = 1;
11237 let BaseOpcode = "L2_loadruh_pi";
11238 let Constraints = "$Rx32 = $Rx32in";
11239 }
11240 def L2_ploadruht_zomap : HInst<
11241 (outs IntRegs:$Rd32),
11242 (ins PredRegs:$Pt4, IntRegs:$Rs32),
11243 "if ($Pt4) $Rd32 = memuh($Rs32)",
11244 tc_fedb7e19, TypeMAPPING> {
11245 let hasNewValue = 1;
11246 let opNewValue = 0;
11247 let isPseudo = 1;
11248 let isCodeGenOnly = 1;
11249 }
11250 def L2_ploadruhtnew_io : HInst<
11251 (outs IntRegs:$Rd32),
11252 (ins PredRegs:$Pt4, IntRegs:$Rs32, u31_1Imm:$Ii),
11253 "if ($Pt4.new) $Rd32 = memuh($Rs32+#$Ii)",
11254 tc_075c8dd8, TypeV2LDST>, Enc_a198f6, AddrModeRel {
11255 let Inst{13-13} = 0b0;
11256 let Inst{31-21} = 0b01000011011;
11257 let isPredicated = 1;
11258 let hasNewValue = 1;
11259 let opNewValue = 0;
11260 let addrMode = BaseImmOffset;
11261 let accessSize = HalfWordAccess;
11262 let isPredicatedNew = 1;
11263 let mayLoad = 1;
11264 let BaseOpcode = "L2_loadruh_io";
11265 let CextOpcode = "L2_loadruh";
11266 let isExtendable = 1;
11267 let opExtendable = 3;
11268 let isExtentSigned = 0;
11269 let opExtentBits = 7;
11270 let opExtentAlign = 1;
11271 }
11272 def L2_ploadruhtnew_pi : HInst<
11273 (outs IntRegs:$Rd32, IntRegs:$Rx32),
11274 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_1Imm:$Ii),
11275 "if ($Pt4.new) $Rd32 = memuh($Rx32++#$Ii)",
11276 tc_5f2afaf7, TypeLD>, Enc_733b27, PredNewRel {
11277 let Inst{13-11} = 0b110;
11278 let Inst{31-21} = 0b10011011011;
11279 let isPredicated = 1;
11280 let hasNewValue = 1;
11281 let opNewValue = 0;
11282 let addrMode = PostInc;
11283 let accessSize = HalfWordAccess;
11284 let isPredicatedNew = 1;
11285 let mayLoad = 1;
11286 let BaseOpcode = "L2_loadruh_pi";
11287 let Constraints = "$Rx32 = $Rx32in";
11288 }
11289 def L2_ploadruhtnew_zomap : HInst<
11290 (outs IntRegs:$Rd32),
11291 (ins PredRegs:$Pt4, IntRegs:$Rs32),
11292 "if ($Pt4.new) $Rd32 = memuh($Rs32)",
11293 tc_075c8dd8, TypeMAPPING> {
11294 let hasNewValue = 1;
11295 let opNewValue = 0;
11296 let isPseudo = 1;
11297 let isCodeGenOnly = 1;
11298 }
11299 def L4_add_memopb_io : HInst<
11300 (outs),
11301 (ins IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Rt32),
11302 "memb($Rs32+#$Ii) += $Rt32",
11303 tc_9bcfb2ee, TypeV4LDST>, Enc_d44e31 {
11304 let Inst{6-5} = 0b00;
11305 let Inst{13-13} = 0b0;
11306 let Inst{31-21} = 0b00111110000;
11307 let addrMode = BaseImmOffset;
11308 let accessSize = ByteAccess;
11309 let mayLoad = 1;
11310 let isRestrictNoSlot1Store = 1;
11311 let mayStore = 1;
11312 let isExtendable = 1;
11313 let opExtendable = 1;
11314 let isExtentSigned = 0;
11315 let opExtentBits = 6;
11316 let opExtentAlign = 0;
11317 }
11318 def L4_add_memopb_zomap : HInst<
11319 (outs),
11320 (ins IntRegs:$Rs32, IntRegs:$Rt32),
11321 "memb($Rs32) += $Rt32",
11322 tc_9bcfb2ee, TypeMAPPING> {
11323 let isPseudo = 1;
11324 let isCodeGenOnly = 1;
11325 }
11326 def L4_add_memoph_io : HInst<
11327 (outs),
11328 (ins IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Rt32),
11329 "memh($Rs32+#$Ii) += $Rt32",
11330 tc_9bcfb2ee, TypeV4LDST>, Enc_163a3c {
11331 let Inst{6-5} = 0b00;
11332 let Inst{13-13} = 0b0;
11333 let Inst{31-21} = 0b00111110001;
11334 let addrMode = BaseImmOffset;
11335 let accessSize = HalfWordAccess;
11336 let mayLoad = 1;
11337 let isRestrictNoSlot1Store = 1;
11338 let mayStore = 1;
11339 let isExtendable = 1;
11340 let opExtendable = 1;
11341 let isExtentSigned = 0;
11342 let opExtentBits = 7;
11343 let opExtentAlign = 1;
11344 }
11345 def L4_add_memoph_zomap : HInst<
11346 (outs),
11347 (ins IntRegs:$Rs32, IntRegs:$Rt32),
11348 "memh($Rs32) += $Rt32",
11349 tc_9bcfb2ee, TypeMAPPING> {
11350 let isPseudo = 1;
11351 let isCodeGenOnly = 1;
11352 }
11353 def L4_add_memopw_io : HInst<
11354 (outs),
11355 (ins IntRegs:$Rs32, u30_2Imm:$Ii, IntRegs:$Rt32),
11356 "memw($Rs32+#$Ii) += $Rt32",
11357 tc_9bcfb2ee, TypeV4LDST>, Enc_226535 {
11358 let Inst{6-5} = 0b00;
11359 let Inst{13-13} = 0b0;
11360 let Inst{31-21} = 0b00111110010;
11361 let addrMode = BaseImmOffset;
11362 let accessSize = WordAccess;
11363 let mayLoad = 1;
11364 let isRestrictNoSlot1Store = 1;
11365 let mayStore = 1;
11366 let isExtendable = 1;
11367 let opExtendable = 1;
11368 let isExtentSigned = 0;
11369 let opExtentBits = 8;
11370 let opExtentAlign = 2;
11371 }
11372 def L4_add_memopw_zomap : HInst<
11373 (outs),
11374 (ins IntRegs:$Rs32, IntRegs:$Rt32),
11375 "memw($Rs32) += $Rt32",
11376 tc_9bcfb2ee, TypeMAPPING> {
11377 let isPseudo = 1;
11378 let isCodeGenOnly = 1;
11379 }
11380 def L4_and_memopb_io : HInst<
11381 (outs),
11382 (ins IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Rt32),
11383 "memb($Rs32+#$Ii) &= $Rt32",
11384 tc_9bcfb2ee, TypeV4LDST>, Enc_d44e31 {
11385 let Inst{6-5} = 0b10;
11386 let Inst{13-13} = 0b0;
11387 let Inst{31-21} = 0b00111110000;
11388 let addrMode = BaseImmOffset;
11389 let accessSize = ByteAccess;
11390 let mayLoad = 1;
11391 let isRestrictNoSlot1Store = 1;
11392 let mayStore = 1;
11393 let isExtendable = 1;
11394 let opExtendable = 1;
11395 let isExtentSigned = 0;
11396 let opExtentBits = 6;
11397 let opExtentAlign = 0;
11398 }
11399 def L4_and_memopb_zomap : HInst<
11400 (outs),
11401 (ins IntRegs:$Rs32, IntRegs:$Rt32),
11402 "memb($Rs32) &= $Rt32",
11403 tc_9bcfb2ee, TypeMAPPING> {
11404 let isPseudo = 1;
11405 let isCodeGenOnly = 1;
11406 }
11407 def L4_and_memoph_io : HInst<
11408 (outs),
11409 (ins IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Rt32),
11410 "memh($Rs32+#$Ii) &= $Rt32",
11411 tc_9bcfb2ee, TypeV4LDST>, Enc_163a3c {
11412 let Inst{6-5} = 0b10;
11413 let Inst{13-13} = 0b0;
11414 let Inst{31-21} = 0b00111110001;
11415 let addrMode = BaseImmOffset;
11416 let accessSize = HalfWordAccess;
11417 let mayLoad = 1;
11418 let isRestrictNoSlot1Store = 1;
11419 let mayStore = 1;
11420 let isExtendable = 1;
11421 let opExtendable = 1;
11422 let isExtentSigned = 0;
11423 let opExtentBits = 7;
11424 let opExtentAlign = 1;
11425 }
11426 def L4_and_memoph_zomap : HInst<
11427 (outs),
11428 (ins IntRegs:$Rs32, IntRegs:$Rt32),
11429 "memh($Rs32) &= $Rt32",
11430 tc_9bcfb2ee, TypeMAPPING> {
11431 let isPseudo = 1;
11432 let isCodeGenOnly = 1;
11433 }
11434 def L4_and_memopw_io : HInst<
11435 (outs),
11436 (ins IntRegs:$Rs32, u30_2Imm:$Ii, IntRegs:$Rt32),
11437 "memw($Rs32+#$Ii) &= $Rt32",
11438 tc_9bcfb2ee, TypeV4LDST>, Enc_226535 {
11439 let Inst{6-5} = 0b10;
11440 let Inst{13-13} = 0b0;
11441 let Inst{31-21} = 0b00111110010;
11442 let addrMode = BaseImmOffset;
11443 let accessSize = WordAccess;
11444 let mayLoad = 1;
11445 let isRestrictNoSlot1Store = 1;
11446 let mayStore = 1;
11447 let isExtendable = 1;
11448 let opExtendable = 1;
11449 let isExtentSigned = 0;
11450 let opExtentBits = 8;
11451 let opExtentAlign = 2;
11452 }
11453 def L4_and_memopw_zomap : HInst<
11454 (outs),
11455 (ins IntRegs:$Rs32, IntRegs:$Rt32),
11456 "memw($Rs32) &= $Rt32",
11457 tc_9bcfb2ee, TypeMAPPING> {
11458 let isPseudo = 1;
11459 let isCodeGenOnly = 1;
11460 }
11461 def L4_iadd_memopb_io : HInst<
11462 (outs),
11463 (ins IntRegs:$Rs32, u32_0Imm:$Ii, u5_0Imm:$II),
11464 "memb($Rs32+#$Ii) += #$II",
11465 tc_158aa3f7, TypeV4LDST>, Enc_46c951 {
11466 let Inst{6-5} = 0b00;
11467 let Inst{13-13} = 0b0;
11468 let Inst{31-21} = 0b00111111000;
11469 let addrMode = BaseImmOffset;
11470 let accessSize = ByteAccess;
11471 let mayLoad = 1;
11472 let isRestrictNoSlot1Store = 1;
11473 let mayStore = 1;
11474 let isExtendable = 1;
11475 let opExtendable = 1;
11476 let isExtentSigned = 0;
11477 let opExtentBits = 6;
11478 let opExtentAlign = 0;
11479 }
11480 def L4_iadd_memopb_zomap : HInst<
11481 (outs),
11482 (ins IntRegs:$Rs32, u5_0Imm:$II),
11483 "memb($Rs32) += #$II",
11484 tc_158aa3f7, TypeMAPPING> {
11485 let isPseudo = 1;
11486 let isCodeGenOnly = 1;
11487 }
11488 def L4_iadd_memoph_io : HInst<
11489 (outs),
11490 (ins IntRegs:$Rs32, u31_1Imm:$Ii, u5_0Imm:$II),
11491 "memh($Rs32+#$Ii) += #$II",
11492 tc_158aa3f7, TypeV4LDST>, Enc_e66a97 {
11493 let Inst{6-5} = 0b00;
11494 let Inst{13-13} = 0b0;
11495 let Inst{31-21} = 0b00111111001;
11496 let addrMode = BaseImmOffset;
11497 let accessSize = HalfWordAccess;
11498 let mayLoad = 1;
11499 let isRestrictNoSlot1Store = 1;
11500 let mayStore = 1;
11501 let isExtendable = 1;
11502 let opExtendable = 1;
11503 let isExtentSigned = 0;
11504 let opExtentBits = 7;
11505 let opExtentAlign = 1;
11506 }
11507 def L4_iadd_memoph_zomap : HInst<
11508 (outs),
11509 (ins IntRegs:$Rs32, u5_0Imm:$II),
11510 "memh($Rs32) += #$II",
11511 tc_158aa3f7, TypeMAPPING> {
11512 let isPseudo = 1;
11513 let isCodeGenOnly = 1;
11514 }
11515 def L4_iadd_memopw_io : HInst<
11516 (outs),
11517 (ins IntRegs:$Rs32, u30_2Imm:$Ii, u5_0Imm:$II),
11518 "memw($Rs32+#$Ii) += #$II",
11519 tc_158aa3f7, TypeV4LDST>, Enc_84b2cd {
11520 let Inst{6-5} = 0b00;
11521 let Inst{13-13} = 0b0;
11522 let Inst{31-21} = 0b00111111010;
11523 let addrMode = BaseImmOffset;
11524 let accessSize = WordAccess;
11525 let mayLoad = 1;
11526 let isRestrictNoSlot1Store = 1;
11527 let mayStore = 1;
11528 let isExtendable = 1;
11529 let opExtendable = 1;
11530 let isExtentSigned = 0;
11531 let opExtentBits = 8;
11532 let opExtentAlign = 2;
11533 }
11534 def L4_iadd_memopw_zomap : HInst<
11535 (outs),
11536 (ins IntRegs:$Rs32, u5_0Imm:$II),
11537 "memw($Rs32) += #$II",
11538 tc_158aa3f7, TypeMAPPING> {
11539 let isPseudo = 1;
11540 let isCodeGenOnly = 1;
11541 }
11542 def L4_iand_memopb_io : HInst<
11543 (outs),
11544 (ins IntRegs:$Rs32, u32_0Imm:$Ii, u5_0Imm:$II),
11545 "memb($Rs32+#$Ii) = clrbit(#$II)",
11546 tc_158aa3f7, TypeV4LDST>, Enc_46c951 {
11547 let Inst{6-5} = 0b10;
11548 let Inst{13-13} = 0b0;
11549 let Inst{31-21} = 0b00111111000;
11550 let addrMode = BaseImmOffset;
11551 let accessSize = ByteAccess;
11552 let mayLoad = 1;
11553 let isRestrictNoSlot1Store = 1;
11554 let mayStore = 1;
11555 let isExtendable = 1;
11556 let opExtendable = 1;
11557 let isExtentSigned = 0;
11558 let opExtentBits = 6;
11559 let opExtentAlign = 0;
11560 }
11561 def L4_iand_memopb_zomap : HInst<
11562 (outs),
11563 (ins IntRegs:$Rs32, u5_0Imm:$II),
11564 "memb($Rs32) = clrbit(#$II)",
11565 tc_158aa3f7, TypeMAPPING> {
11566 let isPseudo = 1;
11567 let isCodeGenOnly = 1;
11568 }
11569 def L4_iand_memoph_io : HInst<
11570 (outs),
11571 (ins IntRegs:$Rs32, u31_1Imm:$Ii, u5_0Imm:$II),
11572 "memh($Rs32+#$Ii) = clrbit(#$II)",
11573 tc_158aa3f7, TypeV4LDST>, Enc_e66a97 {
11574 let Inst{6-5} = 0b10;
11575 let Inst{13-13} = 0b0;
11576 let Inst{31-21} = 0b00111111001;
11577 let addrMode = BaseImmOffset;
11578 let accessSize = HalfWordAccess;
11579 let mayLoad = 1;
11580 let isRestrictNoSlot1Store = 1;
11581 let mayStore = 1;
11582 let isExtendable = 1;
11583 let opExtendable = 1;
11584 let isExtentSigned = 0;
11585 let opExtentBits = 7;
11586 let opExtentAlign = 1;
11587 }
11588 def L4_iand_memoph_zomap : HInst<
11589 (outs),
11590 (ins IntRegs:$Rs32, u5_0Imm:$II),
11591 "memh($Rs32) = clrbit(#$II)",
11592 tc_158aa3f7, TypeMAPPING> {
11593 let isPseudo = 1;
11594 let isCodeGenOnly = 1;
11595 }
11596 def L4_iand_memopw_io : HInst<
11597 (outs),
11598 (ins IntRegs:$Rs32, u30_2Imm:$Ii, u5_0Imm:$II),
11599 "memw($Rs32+#$Ii) = clrbit(#$II)",
11600 tc_158aa3f7, TypeV4LDST>, Enc_84b2cd {
11601 let Inst{6-5} = 0b10;
11602 let Inst{13-13} = 0b0;
11603 let Inst{31-21} = 0b00111111010;
11604 let addrMode = BaseImmOffset;
11605 let accessSize = WordAccess;
11606 let mayLoad = 1;
11607 let isRestrictNoSlot1Store = 1;
11608 let mayStore = 1;
11609 let isExtendable = 1;
11610 let opExtendable = 1;
11611 let isExtentSigned = 0;
11612 let opExtentBits = 8;
11613 let opExtentAlign = 2;
11614 }
11615 def L4_iand_memopw_zomap : HInst<
11616 (outs),
11617 (ins IntRegs:$Rs32, u5_0Imm:$II),
11618 "memw($Rs32) = clrbit(#$II)",
11619 tc_158aa3f7, TypeMAPPING> {
11620 let isPseudo = 1;
11621 let isCodeGenOnly = 1;
11622 }
11623 def L4_ior_memopb_io : HInst<
11624 (outs),
11625 (ins IntRegs:$Rs32, u32_0Imm:$Ii, u5_0Imm:$II),
11626 "memb($Rs32+#$Ii) = setbit(#$II)",
11627 tc_158aa3f7, TypeV4LDST>, Enc_46c951 {
11628 let Inst{6-5} = 0b11;
11629 let Inst{13-13} = 0b0;
11630 let Inst{31-21} = 0b00111111000;
11631 let addrMode = BaseImmOffset;
11632 let accessSize = ByteAccess;
11633 let mayLoad = 1;
11634 let isRestrictNoSlot1Store = 1;
11635 let mayStore = 1;
11636 let isExtendable = 1;
11637 let opExtendable = 1;
11638 let isExtentSigned = 0;
11639 let opExtentBits = 6;
11640 let opExtentAlign = 0;
11641 }
11642 def L4_ior_memopb_zomap : HInst<
11643 (outs),
11644 (ins IntRegs:$Rs32, u5_0Imm:$II),
11645 "memb($Rs32) = setbit(#$II)",
11646 tc_158aa3f7, TypeMAPPING> {
11647 let isPseudo = 1;
11648 let isCodeGenOnly = 1;
11649 }
11650 def L4_ior_memoph_io : HInst<
11651 (outs),
11652 (ins IntRegs:$Rs32, u31_1Imm:$Ii, u5_0Imm:$II),
11653 "memh($Rs32+#$Ii) = setbit(#$II)",
11654 tc_158aa3f7, TypeV4LDST>, Enc_e66a97 {
11655 let Inst{6-5} = 0b11;
11656 let Inst{13-13} = 0b0;
11657 let Inst{31-21} = 0b00111111001;
11658 let addrMode = BaseImmOffset;
11659 let accessSize = HalfWordAccess;
11660 let mayLoad = 1;
11661 let isRestrictNoSlot1Store = 1;
11662 let mayStore = 1;
11663 let isExtendable = 1;
11664 let opExtendable = 1;
11665 let isExtentSigned = 0;
11666 let opExtentBits = 7;
11667 let opExtentAlign = 1;
11668 }
11669 def L4_ior_memoph_zomap : HInst<
11670 (outs),
11671 (ins IntRegs:$Rs32, u5_0Imm:$II),
11672 "memh($Rs32) = setbit(#$II)",
11673 tc_158aa3f7, TypeMAPPING> {
11674 let isPseudo = 1;
11675 let isCodeGenOnly = 1;
11676 }
11677 def L4_ior_memopw_io : HInst<
11678 (outs),
11679 (ins IntRegs:$Rs32, u30_2Imm:$Ii, u5_0Imm:$II),
11680 "memw($Rs32+#$Ii) = setbit(#$II)",
11681 tc_158aa3f7, TypeV4LDST>, Enc_84b2cd {
11682 let Inst{6-5} = 0b11;
11683 let Inst{13-13} = 0b0;
11684 let Inst{31-21} = 0b00111111010;
11685 let addrMode = BaseImmOffset;
11686 let accessSize = WordAccess;
11687 let mayLoad = 1;
11688 let isRestrictNoSlot1Store = 1;
11689 let mayStore = 1;
11690 let isExtendable = 1;
11691 let opExtendable = 1;
11692 let isExtentSigned = 0;
11693 let opExtentBits = 8;
11694 let opExtentAlign = 2;
11695 }
11696 def L4_ior_memopw_zomap : HInst<
11697 (outs),
11698 (ins IntRegs:$Rs32, u5_0Imm:$II),
11699 "memw($Rs32) = setbit(#$II)",
11700 tc_158aa3f7, TypeMAPPING> {
11701 let isPseudo = 1;
11702 let isCodeGenOnly = 1;
11703 }
11704 def L4_isub_memopb_io : HInst<
11705 (outs),
11706 (ins IntRegs:$Rs32, u32_0Imm:$Ii, u5_0Imm:$II),
11707 "memb($Rs32+#$Ii) -= #$II",
11708 tc_158aa3f7, TypeV4LDST>, Enc_46c951 {
11709 let Inst{6-5} = 0b01;
11710 let Inst{13-13} = 0b0;
11711 let Inst{31-21} = 0b00111111000;
11712 let addrMode = BaseImmOffset;
11713 let accessSize = ByteAccess;
11714 let mayLoad = 1;
11715 let isRestrictNoSlot1Store = 1;
11716 let mayStore = 1;
11717 let isExtendable = 1;
11718 let opExtendable = 1;
11719 let isExtentSigned = 0;
11720 let opExtentBits = 6;
11721 let opExtentAlign = 0;
11722 }
11723 def L4_isub_memopb_zomap : HInst<
11724 (outs),
11725 (ins IntRegs:$Rs32, u5_0Imm:$II),
11726 "memb($Rs32) -= #$II",
11727 tc_158aa3f7, TypeMAPPING> {
11728 let isPseudo = 1;
11729 let isCodeGenOnly = 1;
11730 }
11731 def L4_isub_memoph_io : HInst<
11732 (outs),
11733 (ins IntRegs:$Rs32, u31_1Imm:$Ii, u5_0Imm:$II),
11734 "memh($Rs32+#$Ii) -= #$II",
11735 tc_158aa3f7, TypeV4LDST>, Enc_e66a97 {
11736 let Inst{6-5} = 0b01;
11737 let Inst{13-13} = 0b0;
11738 let Inst{31-21} = 0b00111111001;
11739 let addrMode = BaseImmOffset;
11740 let accessSize = HalfWordAccess;
11741 let mayLoad = 1;
11742 let isRestrictNoSlot1Store = 1;
11743 let mayStore = 1;
11744 let isExtendable = 1;
11745 let opExtendable = 1;
11746 let isExtentSigned = 0;
11747 let opExtentBits = 7;
11748 let opExtentAlign = 1;
11749 }
11750 def L4_isub_memoph_zomap : HInst<
11751 (outs),
11752 (ins IntRegs:$Rs32, u5_0Imm:$II),
11753 "memh($Rs32) -= #$II",
11754 tc_158aa3f7, TypeMAPPING> {
11755 let isPseudo = 1;
11756 let isCodeGenOnly = 1;
11757 }
11758 def L4_isub_memopw_io : HInst<
11759 (outs),
11760 (ins IntRegs:$Rs32, u30_2Imm:$Ii, u5_0Imm:$II),
11761 "memw($Rs32+#$Ii) -= #$II",
11762 tc_158aa3f7, TypeV4LDST>, Enc_84b2cd {
11763 let Inst{6-5} = 0b01;
11764 let Inst{13-13} = 0b0;
11765 let Inst{31-21} = 0b00111111010;
11766 let addrMode = BaseImmOffset;
11767 let accessSize = WordAccess;
11768 let mayLoad = 1;
11769 let isRestrictNoSlot1Store = 1;
11770 let mayStore = 1;
11771 let isExtendable = 1;
11772 let opExtendable = 1;
11773 let isExtentSigned = 0;
11774 let opExtentBits = 8;
11775 let opExtentAlign = 2;
11776 }
11777 def L4_isub_memopw_zomap : HInst<
11778 (outs),
11779 (ins IntRegs:$Rs32, u5_0Imm:$II),
11780 "memw($Rs32) -= #$II",
11781 tc_158aa3f7, TypeMAPPING> {
11782 let isPseudo = 1;
11783 let isCodeGenOnly = 1;
11784 }
11785 def L4_loadalignb_ap : HInst<
11786 (outs DoubleRegs:$Ryy32, IntRegs:$Re32),
11787 (ins DoubleRegs:$Ryy32in, u32_0Imm:$II),
11788 "$Ryy32 = memb_fifo($Re32=#$II)",
11789 tc_ac65613f, TypeLD>, Enc_f394d3 {
11790 let Inst{7-7} = 0b0;
11791 let Inst{13-12} = 0b01;
11792 let Inst{31-21} = 0b10011010100;
11793 let addrMode = AbsoluteSet;
11794 let accessSize = ByteAccess;
11795 let mayLoad = 1;
11796 let isExtended = 1;
11797 let DecoderNamespace = "MustExtend";
11798 let isExtendable = 1;
11799 let opExtendable = 3;
11800 let isExtentSigned = 0;
11801 let opExtentBits = 6;
11802 let opExtentAlign = 0;
11803 let Constraints = "$Ryy32 = $Ryy32in";
11804 }
11805 def L4_loadalignb_ur : HInst<
11806 (outs DoubleRegs:$Ryy32),
11807 (ins DoubleRegs:$Ryy32in, IntRegs:$Rt32, u2_0Imm:$Ii, u32_0Imm:$II),
11808 "$Ryy32 = memb_fifo($Rt32<<#$Ii+#$II)",
11809 tc_a32e03e7, TypeLD>, Enc_04c959 {
11810 let Inst{12-12} = 0b1;
11811 let Inst{31-21} = 0b10011100100;
11812 let addrMode = BaseLongOffset;
11813 let accessSize = ByteAccess;
11814 let mayLoad = 1;
11815 let isExtended = 1;
11816 let InputType = "imm";
11817 let DecoderNamespace = "MustExtend";
11818 let isExtendable = 1;
11819 let opExtendable = 4;
11820 let isExtentSigned = 0;
11821 let opExtentBits = 6;
11822 let opExtentAlign = 0;
11823 let Constraints = "$Ryy32 = $Ryy32in";
11824 }
11825 def L4_loadalignh_ap : HInst<
11826 (outs DoubleRegs:$Ryy32, IntRegs:$Re32),
11827 (ins DoubleRegs:$Ryy32in, u32_0Imm:$II),
11828 "$Ryy32 = memh_fifo($Re32=#$II)",
11829 tc_ac65613f, TypeLD>, Enc_f394d3 {
11830 let Inst{7-7} = 0b0;
11831 let Inst{13-12} = 0b01;
11832 let Inst{31-21} = 0b10011010010;
11833 let addrMode = AbsoluteSet;
11834 let accessSize = HalfWordAccess;
11835 let mayLoad = 1;
11836 let isExtended = 1;
11837 let DecoderNamespace = "MustExtend";
11838 let isExtendable = 1;
11839 let opExtendable = 3;
11840 let isExtentSigned = 0;
11841 let opExtentBits = 6;
11842 let opExtentAlign = 0;
11843 let Constraints = "$Ryy32 = $Ryy32in";
11844 }
11845 def L4_loadalignh_ur : HInst<
11846 (outs DoubleRegs:$Ryy32),
11847 (ins DoubleRegs:$Ryy32in, IntRegs:$Rt32, u2_0Imm:$Ii, u32_0Imm:$II),
11848 "$Ryy32 = memh_fifo($Rt32<<#$Ii+#$II)",
11849 tc_a32e03e7, TypeLD>, Enc_04c959 {
11850 let Inst{12-12} = 0b1;
11851 let Inst{31-21} = 0b10011100010;
11852 let addrMode = BaseLongOffset;
11853 let accessSize = HalfWordAccess;
11854 let mayLoad = 1;
11855 let isExtended = 1;
11856 let InputType = "imm";
11857 let DecoderNamespace = "MustExtend";
11858 let isExtendable = 1;
11859 let opExtendable = 4;
11860 let isExtentSigned = 0;
11861 let opExtentBits = 6;
11862 let opExtentAlign = 0;
11863 let Constraints = "$Ryy32 = $Ryy32in";
11864 }
11865 def L4_loadbsw2_ap : HInst<
11866 (outs IntRegs:$Rd32, IntRegs:$Re32),
11867 (ins u32_0Imm:$II),
11868 "$Rd32 = membh($Re32=#$II)",
11869 tc_822c3c68, TypeLD>, Enc_323f2d {
11870 let Inst{7-7} = 0b0;
11871 let Inst{13-12} = 0b01;
11872 let Inst{31-21} = 0b10011010001;
11873 let hasNewValue = 1;
11874 let opNewValue = 0;
11875 let addrMode = AbsoluteSet;
11876 let accessSize = HalfWordAccess;
11877 let mayLoad = 1;
11878 let isExtended = 1;
11879 let DecoderNamespace = "MustExtend";
11880 let isExtendable = 1;
11881 let opExtendable = 2;
11882 let isExtentSigned = 0;
11883 let opExtentBits = 6;
11884 let opExtentAlign = 0;
11885 }
11886 def L4_loadbsw2_ur : HInst<
11887 (outs IntRegs:$Rd32),
11888 (ins IntRegs:$Rt32, u2_0Imm:$Ii, u32_0Imm:$II),
11889 "$Rd32 = membh($Rt32<<#$Ii+#$II)",
11890 tc_abfd9a6d, TypeLD>, Enc_4f677b {
11891 let Inst{12-12} = 0b1;
11892 let Inst{31-21} = 0b10011100001;
11893 let hasNewValue = 1;
11894 let opNewValue = 0;
11895 let addrMode = BaseLongOffset;
11896 let accessSize = HalfWordAccess;
11897 let mayLoad = 1;
11898 let isExtended = 1;
11899 let InputType = "imm";
11900 let DecoderNamespace = "MustExtend";
11901 let isExtendable = 1;
11902 let opExtendable = 3;
11903 let isExtentSigned = 0;
11904 let opExtentBits = 6;
11905 let opExtentAlign = 0;
11906 }
11907 def L4_loadbsw4_ap : HInst<
11908 (outs DoubleRegs:$Rdd32, IntRegs:$Re32),
11909 (ins u32_0Imm:$II),
11910 "$Rdd32 = membh($Re32=#$II)",
11911 tc_822c3c68, TypeLD>, Enc_7fa7f6 {
11912 let Inst{7-7} = 0b0;
11913 let Inst{13-12} = 0b01;
11914 let Inst{31-21} = 0b10011010111;
11915 let addrMode = AbsoluteSet;
11916 let accessSize = WordAccess;
11917 let mayLoad = 1;
11918 let isExtended = 1;
11919 let DecoderNamespace = "MustExtend";
11920 let isExtendable = 1;
11921 let opExtendable = 2;
11922 let isExtentSigned = 0;
11923 let opExtentBits = 6;
11924 let opExtentAlign = 0;
11925 }
11926 def L4_loadbsw4_ur : HInst<
11927 (outs DoubleRegs:$Rdd32),
11928 (ins IntRegs:$Rt32, u2_0Imm:$Ii, u32_0Imm:$II),
11929 "$Rdd32 = membh($Rt32<<#$Ii+#$II)",
11930 tc_abfd9a6d, TypeLD>, Enc_6185fe {
11931 let Inst{12-12} = 0b1;
11932 let Inst{31-21} = 0b10011100111;
11933 let addrMode = BaseLongOffset;
11934 let accessSize = WordAccess;
11935 let mayLoad = 1;
11936 let isExtended = 1;
11937 let InputType = "imm";
11938 let DecoderNamespace = "MustExtend";
11939 let isExtendable = 1;
11940 let opExtendable = 3;
11941 let isExtentSigned = 0;
11942 let opExtentBits = 6;
11943 let opExtentAlign = 0;
11944 }
11945 def L4_loadbzw2_ap : HInst<
11946 (outs IntRegs:$Rd32, IntRegs:$Re32),
11947 (ins u32_0Imm:$II),
11948 "$Rd32 = memubh($Re32=#$II)",
11949 tc_822c3c68, TypeLD>, Enc_323f2d {
11950 let Inst{7-7} = 0b0;
11951 let Inst{13-12} = 0b01;
11952 let Inst{31-21} = 0b10011010011;
11953 let hasNewValue = 1;
11954 let opNewValue = 0;
11955 let addrMode = AbsoluteSet;
11956 let accessSize = HalfWordAccess;
11957 let mayLoad = 1;
11958 let isExtended = 1;
11959 let DecoderNamespace = "MustExtend";
11960 let isExtendable = 1;
11961 let opExtendable = 2;
11962 let isExtentSigned = 0;
11963 let opExtentBits = 6;
11964 let opExtentAlign = 0;
11965 }
11966 def L4_loadbzw2_ur : HInst<
11967 (outs IntRegs:$Rd32),
11968 (ins IntRegs:$Rt32, u2_0Imm:$Ii, u32_0Imm:$II),
11969 "$Rd32 = memubh($Rt32<<#$Ii+#$II)",
11970 tc_abfd9a6d, TypeLD>, Enc_4f677b {
11971 let Inst{12-12} = 0b1;
11972 let Inst{31-21} = 0b10011100011;
11973 let hasNewValue = 1;
11974 let opNewValue = 0;
11975 let addrMode = BaseLongOffset;
11976 let accessSize = HalfWordAccess;
11977 let mayLoad = 1;
11978 let isExtended = 1;
11979 let InputType = "imm";
11980 let DecoderNamespace = "MustExtend";
11981 let isExtendable = 1;
11982 let opExtendable = 3;
11983 let isExtentSigned = 0;
11984 let opExtentBits = 6;
11985 let opExtentAlign = 0;
11986 }
11987 def L4_loadbzw4_ap : HInst<
11988 (outs DoubleRegs:$Rdd32, IntRegs:$Re32),
11989 (ins u32_0Imm:$II),
11990 "$Rdd32 = memubh($Re32=#$II)",
11991 tc_822c3c68, TypeLD>, Enc_7fa7f6 {
11992 let Inst{7-7} = 0b0;
11993 let Inst{13-12} = 0b01;
11994 let Inst{31-21} = 0b10011010101;
11995 let addrMode = AbsoluteSet;
11996 let accessSize = WordAccess;
11997 let mayLoad = 1;
11998 let isExtended = 1;
11999 let DecoderNamespace = "MustExtend";
12000 let isExtendable = 1;
12001 let opExtendable = 2;
12002 let isExtentSigned = 0;
12003 let opExtentBits = 6;
12004 let opExtentAlign = 0;
12005 }
12006 def L4_loadbzw4_ur : HInst<
12007 (outs DoubleRegs:$Rdd32),
12008 (ins IntRegs:$Rt32, u2_0Imm:$Ii, u32_0Imm:$II),
12009 "$Rdd32 = memubh($Rt32<<#$Ii+#$II)",
12010 tc_abfd9a6d, TypeLD>, Enc_6185fe {
12011 let Inst{12-12} = 0b1;
12012 let Inst{31-21} = 0b10011100101;
12013 let addrMode = BaseLongOffset;
12014 let accessSize = WordAccess;
12015 let mayLoad = 1;
12016 let isExtended = 1;
12017 let InputType = "imm";
12018 let DecoderNamespace = "MustExtend";
12019 let isExtendable = 1;
12020 let opExtendable = 3;
12021 let isExtentSigned = 0;
12022 let opExtentBits = 6;
12023 let opExtentAlign = 0;
12024 }
12025 def L4_loadd_locked : HInst<
12026 (outs DoubleRegs:$Rdd32),
12027 (ins IntRegs:$Rs32),
12028 "$Rdd32 = memd_locked($Rs32)",
12029 tc_64b00d8a, TypeLD>, Enc_3a3d62 {
12030 let Inst{13-5} = 0b010000000;
12031 let Inst{31-21} = 0b10010010000;
12032 let accessSize = DoubleWordAccess;
12033 let mayLoad = 1;
12034 let isSoloAX = 1;
12035 }
12036 def L4_loadrb_ap : HInst<
12037 (outs IntRegs:$Rd32, IntRegs:$Re32),
12038 (ins u32_0Imm:$II),
12039 "$Rd32 = memb($Re32=#$II)",
12040 tc_822c3c68, TypeLD>, Enc_323f2d {
12041 let Inst{7-7} = 0b0;
12042 let Inst{13-12} = 0b01;
12043 let Inst{31-21} = 0b10011011000;
12044 let hasNewValue = 1;
12045 let opNewValue = 0;
12046 let addrMode = AbsoluteSet;
12047 let accessSize = ByteAccess;
12048 let mayLoad = 1;
12049 let isExtended = 1;
12050 let DecoderNamespace = "MustExtend";
12051 let isExtendable = 1;
12052 let opExtendable = 2;
12053 let isExtentSigned = 0;
12054 let opExtentBits = 6;
12055 let opExtentAlign = 0;
12056 }
12057 def L4_loadrb_rr : HInst<
12058 (outs IntRegs:$Rd32),
12059 (ins IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12060 "$Rd32 = memb($Rs32+$Rt32<<#$Ii)",
12061 tc_bf2ffc0f, TypeLD>, Enc_da664b, AddrModeRel, ImmRegShl {
12062 let Inst{6-5} = 0b00;
12063 let Inst{31-21} = 0b00111010000;
12064 let hasNewValue = 1;
12065 let opNewValue = 0;
12066 let addrMode = BaseRegOffset;
12067 let accessSize = ByteAccess;
12068 let mayLoad = 1;
12069 let BaseOpcode = "L4_loadrb_rr";
12070 let CextOpcode = "L2_loadrb";
12071 let InputType = "reg";
12072 let isPredicable = 1;
12073 }
12074 def L4_loadrb_ur : HInst<
12075 (outs IntRegs:$Rd32),
12076 (ins IntRegs:$Rt32, u2_0Imm:$Ii, u32_0Imm:$II),
12077 "$Rd32 = memb($Rt32<<#$Ii+#$II)",
12078 tc_abfd9a6d, TypeLD>, Enc_4f677b, AddrModeRel, ImmRegShl {
12079 let Inst{12-12} = 0b1;
12080 let Inst{31-21} = 0b10011101000;
12081 let hasNewValue = 1;
12082 let opNewValue = 0;
12083 let addrMode = BaseLongOffset;
12084 let accessSize = ByteAccess;
12085 let mayLoad = 1;
12086 let isExtended = 1;
12087 let CextOpcode = "L2_loadrb";
12088 let InputType = "imm";
12089 let DecoderNamespace = "MustExtend";
12090 let isExtendable = 1;
12091 let opExtendable = 3;
12092 let isExtentSigned = 0;
12093 let opExtentBits = 6;
12094 let opExtentAlign = 0;
12095 }
12096 def L4_loadrd_ap : HInst<
12097 (outs DoubleRegs:$Rdd32, IntRegs:$Re32),
12098 (ins u32_0Imm:$II),
12099 "$Rdd32 = memd($Re32=#$II)",
12100 tc_822c3c68, TypeLD>, Enc_7fa7f6 {
12101 let Inst{7-7} = 0b0;
12102 let Inst{13-12} = 0b01;
12103 let Inst{31-21} = 0b10011011110;
12104 let addrMode = AbsoluteSet;
12105 let accessSize = DoubleWordAccess;
12106 let mayLoad = 1;
12107 let isExtended = 1;
12108 let DecoderNamespace = "MustExtend";
12109 let isExtendable = 1;
12110 let opExtendable = 2;
12111 let isExtentSigned = 0;
12112 let opExtentBits = 6;
12113 let opExtentAlign = 0;
12114 }
12115 def L4_loadrd_rr : HInst<
12116 (outs DoubleRegs:$Rdd32),
12117 (ins IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12118 "$Rdd32 = memd($Rs32+$Rt32<<#$Ii)",
12119 tc_bf2ffc0f, TypeLD>, Enc_84bff1, AddrModeRel, ImmRegShl {
12120 let Inst{6-5} = 0b00;
12121 let Inst{31-21} = 0b00111010110;
12122 let addrMode = BaseRegOffset;
12123 let accessSize = DoubleWordAccess;
12124 let mayLoad = 1;
12125 let BaseOpcode = "L4_loadrd_rr";
12126 let CextOpcode = "L2_loadrd";
12127 let InputType = "reg";
12128 let isPredicable = 1;
12129 }
12130 def L4_loadrd_ur : HInst<
12131 (outs DoubleRegs:$Rdd32),
12132 (ins IntRegs:$Rt32, u2_0Imm:$Ii, u32_0Imm:$II),
12133 "$Rdd32 = memd($Rt32<<#$Ii+#$II)",
12134 tc_abfd9a6d, TypeLD>, Enc_6185fe, AddrModeRel, ImmRegShl {
12135 let Inst{12-12} = 0b1;
12136 let Inst{31-21} = 0b10011101110;
12137 let addrMode = BaseLongOffset;
12138 let accessSize = DoubleWordAccess;
12139 let mayLoad = 1;
12140 let isExtended = 1;
12141 let CextOpcode = "L2_loadrd";
12142 let InputType = "imm";
12143 let DecoderNamespace = "MustExtend";
12144 let isExtendable = 1;
12145 let opExtendable = 3;
12146 let isExtentSigned = 0;
12147 let opExtentBits = 6;
12148 let opExtentAlign = 0;
12149 }
12150 def L4_loadrh_ap : HInst<
12151 (outs IntRegs:$Rd32, IntRegs:$Re32),
12152 (ins u32_0Imm:$II),
12153 "$Rd32 = memh($Re32=#$II)",
12154 tc_822c3c68, TypeLD>, Enc_323f2d {
12155 let Inst{7-7} = 0b0;
12156 let Inst{13-12} = 0b01;
12157 let Inst{31-21} = 0b10011011010;
12158 let hasNewValue = 1;
12159 let opNewValue = 0;
12160 let addrMode = AbsoluteSet;
12161 let accessSize = HalfWordAccess;
12162 let mayLoad = 1;
12163 let isExtended = 1;
12164 let DecoderNamespace = "MustExtend";
12165 let isExtendable = 1;
12166 let opExtendable = 2;
12167 let isExtentSigned = 0;
12168 let opExtentBits = 6;
12169 let opExtentAlign = 0;
12170 }
12171 def L4_loadrh_rr : HInst<
12172 (outs IntRegs:$Rd32),
12173 (ins IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12174 "$Rd32 = memh($Rs32+$Rt32<<#$Ii)",
12175 tc_bf2ffc0f, TypeLD>, Enc_da664b, AddrModeRel, ImmRegShl {
12176 let Inst{6-5} = 0b00;
12177 let Inst{31-21} = 0b00111010010;
12178 let hasNewValue = 1;
12179 let opNewValue = 0;
12180 let addrMode = BaseRegOffset;
12181 let accessSize = HalfWordAccess;
12182 let mayLoad = 1;
12183 let BaseOpcode = "L4_loadrh_rr";
12184 let CextOpcode = "L2_loadrh";
12185 let InputType = "reg";
12186 let isPredicable = 1;
12187 }
12188 def L4_loadrh_ur : HInst<
12189 (outs IntRegs:$Rd32),
12190 (ins IntRegs:$Rt32, u2_0Imm:$Ii, u32_0Imm:$II),
12191 "$Rd32 = memh($Rt32<<#$Ii+#$II)",
12192 tc_abfd9a6d, TypeLD>, Enc_4f677b, AddrModeRel, ImmRegShl {
12193 let Inst{12-12} = 0b1;
12194 let Inst{31-21} = 0b10011101010;
12195 let hasNewValue = 1;
12196 let opNewValue = 0;
12197 let addrMode = BaseLongOffset;
12198 let accessSize = HalfWordAccess;
12199 let mayLoad = 1;
12200 let isExtended = 1;
12201 let CextOpcode = "L2_loadrh";
12202 let InputType = "imm";
12203 let DecoderNamespace = "MustExtend";
12204 let isExtendable = 1;
12205 let opExtendable = 3;
12206 let isExtentSigned = 0;
12207 let opExtentBits = 6;
12208 let opExtentAlign = 0;
12209 }
12210 def L4_loadri_ap : HInst<
12211 (outs IntRegs:$Rd32, IntRegs:$Re32),
12212 (ins u32_0Imm:$II),
12213 "$Rd32 = memw($Re32=#$II)",
12214 tc_822c3c68, TypeLD>, Enc_323f2d {
12215 let Inst{7-7} = 0b0;
12216 let Inst{13-12} = 0b01;
12217 let Inst{31-21} = 0b10011011100;
12218 let hasNewValue = 1;
12219 let opNewValue = 0;
12220 let addrMode = AbsoluteSet;
12221 let accessSize = WordAccess;
12222 let mayLoad = 1;
12223 let isExtended = 1;
12224 let DecoderNamespace = "MustExtend";
12225 let isExtendable = 1;
12226 let opExtendable = 2;
12227 let isExtentSigned = 0;
12228 let opExtentBits = 6;
12229 let opExtentAlign = 0;
12230 }
12231 def L4_loadri_rr : HInst<
12232 (outs IntRegs:$Rd32),
12233 (ins IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12234 "$Rd32 = memw($Rs32+$Rt32<<#$Ii)",
12235 tc_bf2ffc0f, TypeLD>, Enc_da664b, AddrModeRel, ImmRegShl {
12236 let Inst{6-5} = 0b00;
12237 let Inst{31-21} = 0b00111010100;
12238 let hasNewValue = 1;
12239 let opNewValue = 0;
12240 let addrMode = BaseRegOffset;
12241 let accessSize = WordAccess;
12242 let mayLoad = 1;
12243 let BaseOpcode = "L4_loadri_rr";
12244 let CextOpcode = "L2_loadri";
12245 let InputType = "reg";
12246 let isPredicable = 1;
12247 }
12248 def L4_loadri_ur : HInst<
12249 (outs IntRegs:$Rd32),
12250 (ins IntRegs:$Rt32, u2_0Imm:$Ii, u32_0Imm:$II),
12251 "$Rd32 = memw($Rt32<<#$Ii+#$II)",
12252 tc_abfd9a6d, TypeLD>, Enc_4f677b, AddrModeRel, ImmRegShl {
12253 let Inst{12-12} = 0b1;
12254 let Inst{31-21} = 0b10011101100;
12255 let hasNewValue = 1;
12256 let opNewValue = 0;
12257 let addrMode = BaseLongOffset;
12258 let accessSize = WordAccess;
12259 let mayLoad = 1;
12260 let isExtended = 1;
12261 let CextOpcode = "L2_loadri";
12262 let InputType = "imm";
12263 let DecoderNamespace = "MustExtend";
12264 let isExtendable = 1;
12265 let opExtendable = 3;
12266 let isExtentSigned = 0;
12267 let opExtentBits = 6;
12268 let opExtentAlign = 0;
12269 }
12270 def L4_loadrub_ap : HInst<
12271 (outs IntRegs:$Rd32, IntRegs:$Re32),
12272 (ins u32_0Imm:$II),
12273 "$Rd32 = memub($Re32=#$II)",
12274 tc_822c3c68, TypeLD>, Enc_323f2d {
12275 let Inst{7-7} = 0b0;
12276 let Inst{13-12} = 0b01;
12277 let Inst{31-21} = 0b10011011001;
12278 let hasNewValue = 1;
12279 let opNewValue = 0;
12280 let addrMode = AbsoluteSet;
12281 let accessSize = ByteAccess;
12282 let mayLoad = 1;
12283 let isExtended = 1;
12284 let DecoderNamespace = "MustExtend";
12285 let isExtendable = 1;
12286 let opExtendable = 2;
12287 let isExtentSigned = 0;
12288 let opExtentBits = 6;
12289 let opExtentAlign = 0;
12290 }
12291 def L4_loadrub_rr : HInst<
12292 (outs IntRegs:$Rd32),
12293 (ins IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12294 "$Rd32 = memub($Rs32+$Rt32<<#$Ii)",
12295 tc_bf2ffc0f, TypeLD>, Enc_da664b, AddrModeRel, ImmRegShl {
12296 let Inst{6-5} = 0b00;
12297 let Inst{31-21} = 0b00111010001;
12298 let hasNewValue = 1;
12299 let opNewValue = 0;
12300 let addrMode = BaseRegOffset;
12301 let accessSize = ByteAccess;
12302 let mayLoad = 1;
12303 let BaseOpcode = "L4_loadrub_rr";
12304 let CextOpcode = "L2_loadrub";
12305 let InputType = "reg";
12306 let isPredicable = 1;
12307 }
12308 def L4_loadrub_ur : HInst<
12309 (outs IntRegs:$Rd32),
12310 (ins IntRegs:$Rt32, u2_0Imm:$Ii, u32_0Imm:$II),
12311 "$Rd32 = memub($Rt32<<#$Ii+#$II)",
12312 tc_abfd9a6d, TypeLD>, Enc_4f677b, AddrModeRel, ImmRegShl {
12313 let Inst{12-12} = 0b1;
12314 let Inst{31-21} = 0b10011101001;
12315 let hasNewValue = 1;
12316 let opNewValue = 0;
12317 let addrMode = BaseLongOffset;
12318 let accessSize = ByteAccess;
12319 let mayLoad = 1;
12320 let isExtended = 1;
12321 let CextOpcode = "L2_loadrub";
12322 let InputType = "imm";
12323 let DecoderNamespace = "MustExtend";
12324 let isExtendable = 1;
12325 let opExtendable = 3;
12326 let isExtentSigned = 0;
12327 let opExtentBits = 6;
12328 let opExtentAlign = 0;
12329 }
12330 def L4_loadruh_ap : HInst<
12331 (outs IntRegs:$Rd32, IntRegs:$Re32),
12332 (ins u32_0Imm:$II),
12333 "$Rd32 = memuh($Re32=#$II)",
12334 tc_822c3c68, TypeLD>, Enc_323f2d {
12335 let Inst{7-7} = 0b0;
12336 let Inst{13-12} = 0b01;
12337 let Inst{31-21} = 0b10011011011;
12338 let hasNewValue = 1;
12339 let opNewValue = 0;
12340 let addrMode = AbsoluteSet;
12341 let accessSize = HalfWordAccess;
12342 let mayLoad = 1;
12343 let isExtended = 1;
12344 let DecoderNamespace = "MustExtend";
12345 let isExtendable = 1;
12346 let opExtendable = 2;
12347 let isExtentSigned = 0;
12348 let opExtentBits = 6;
12349 let opExtentAlign = 0;
12350 }
12351 def L4_loadruh_rr : HInst<
12352 (outs IntRegs:$Rd32),
12353 (ins IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12354 "$Rd32 = memuh($Rs32+$Rt32<<#$Ii)",
12355 tc_bf2ffc0f, TypeLD>, Enc_da664b, AddrModeRel, ImmRegShl {
12356 let Inst{6-5} = 0b00;
12357 let Inst{31-21} = 0b00111010011;
12358 let hasNewValue = 1;
12359 let opNewValue = 0;
12360 let addrMode = BaseRegOffset;
12361 let accessSize = HalfWordAccess;
12362 let mayLoad = 1;
12363 let BaseOpcode = "L4_loadruh_rr";
12364 let CextOpcode = "L2_loadruh";
12365 let InputType = "reg";
12366 let isPredicable = 1;
12367 }
12368 def L4_loadruh_ur : HInst<
12369 (outs IntRegs:$Rd32),
12370 (ins IntRegs:$Rt32, u2_0Imm:$Ii, u32_0Imm:$II),
12371 "$Rd32 = memuh($Rt32<<#$Ii+#$II)",
12372 tc_abfd9a6d, TypeLD>, Enc_4f677b, AddrModeRel, ImmRegShl {
12373 let Inst{12-12} = 0b1;
12374 let Inst{31-21} = 0b10011101011;
12375 let hasNewValue = 1;
12376 let opNewValue = 0;
12377 let addrMode = BaseLongOffset;
12378 let accessSize = HalfWordAccess;
12379 let mayLoad = 1;
12380 let isExtended = 1;
12381 let CextOpcode = "L2_loadruh";
12382 let InputType = "imm";
12383 let DecoderNamespace = "MustExtend";
12384 let isExtendable = 1;
12385 let opExtendable = 3;
12386 let isExtentSigned = 0;
12387 let opExtentBits = 6;
12388 let opExtentAlign = 0;
12389 }
12390 def L4_or_memopb_io : HInst<
12391 (outs),
12392 (ins IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Rt32),
12393 "memb($Rs32+#$Ii) |= $Rt32",
12394 tc_9bcfb2ee, TypeV4LDST>, Enc_d44e31 {
12395 let Inst{6-5} = 0b11;
12396 let Inst{13-13} = 0b0;
12397 let Inst{31-21} = 0b00111110000;
12398 let addrMode = BaseImmOffset;
12399 let accessSize = ByteAccess;
12400 let mayLoad = 1;
12401 let isRestrictNoSlot1Store = 1;
12402 let mayStore = 1;
12403 let isExtendable = 1;
12404 let opExtendable = 1;
12405 let isExtentSigned = 0;
12406 let opExtentBits = 6;
12407 let opExtentAlign = 0;
12408 }
12409 def L4_or_memopb_zomap : HInst<
12410 (outs),
12411 (ins IntRegs:$Rs32, IntRegs:$Rt32),
12412 "memb($Rs32) |= $Rt32",
12413 tc_9bcfb2ee, TypeMAPPING> {
12414 let isPseudo = 1;
12415 let isCodeGenOnly = 1;
12416 }
12417 def L4_or_memoph_io : HInst<
12418 (outs),
12419 (ins IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Rt32),
12420 "memh($Rs32+#$Ii) |= $Rt32",
12421 tc_9bcfb2ee, TypeV4LDST>, Enc_163a3c {
12422 let Inst{6-5} = 0b11;
12423 let Inst{13-13} = 0b0;
12424 let Inst{31-21} = 0b00111110001;
12425 let addrMode = BaseImmOffset;
12426 let accessSize = HalfWordAccess;
12427 let mayLoad = 1;
12428 let isRestrictNoSlot1Store = 1;
12429 let mayStore = 1;
12430 let isExtendable = 1;
12431 let opExtendable = 1;
12432 let isExtentSigned = 0;
12433 let opExtentBits = 7;
12434 let opExtentAlign = 1;
12435 }
12436 def L4_or_memoph_zomap : HInst<
12437 (outs),
12438 (ins IntRegs:$Rs32, IntRegs:$Rt32),
12439 "memh($Rs32) |= $Rt32",
12440 tc_9bcfb2ee, TypeMAPPING> {
12441 let isPseudo = 1;
12442 let isCodeGenOnly = 1;
12443 }
12444 def L4_or_memopw_io : HInst<
12445 (outs),
12446 (ins IntRegs:$Rs32, u30_2Imm:$Ii, IntRegs:$Rt32),
12447 "memw($Rs32+#$Ii) |= $Rt32",
12448 tc_9bcfb2ee, TypeV4LDST>, Enc_226535 {
12449 let Inst{6-5} = 0b11;
12450 let Inst{13-13} = 0b0;
12451 let Inst{31-21} = 0b00111110010;
12452 let addrMode = BaseImmOffset;
12453 let accessSize = WordAccess;
12454 let mayLoad = 1;
12455 let isRestrictNoSlot1Store = 1;
12456 let mayStore = 1;
12457 let isExtendable = 1;
12458 let opExtendable = 1;
12459 let isExtentSigned = 0;
12460 let opExtentBits = 8;
12461 let opExtentAlign = 2;
12462 }
12463 def L4_or_memopw_zomap : HInst<
12464 (outs),
12465 (ins IntRegs:$Rs32, IntRegs:$Rt32),
12466 "memw($Rs32) |= $Rt32",
12467 tc_9bcfb2ee, TypeMAPPING> {
12468 let isPseudo = 1;
12469 let isCodeGenOnly = 1;
12470 }
12471 def L4_ploadrbf_abs : HInst<
12472 (outs IntRegs:$Rd32),
12473 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12474 "if (!$Pt4) $Rd32 = memb(#$Ii)",
12475 tc_7c6d32e4, TypeLD>, Enc_2301d6, AddrModeRel {
12476 let Inst{7-5} = 0b100;
12477 let Inst{13-11} = 0b101;
12478 let Inst{31-21} = 0b10011111000;
12479 let isPredicated = 1;
12480 let isPredicatedFalse = 1;
12481 let hasNewValue = 1;
12482 let opNewValue = 0;
12483 let addrMode = Absolute;
12484 let accessSize = ByteAccess;
12485 let mayLoad = 1;
12486 let isExtended = 1;
12487 let BaseOpcode = "L4_loadrb_abs";
12488 let CextOpcode = "L2_loadrb";
12489 let DecoderNamespace = "MustExtend";
12490 let isExtendable = 1;
12491 let opExtendable = 2;
12492 let isExtentSigned = 0;
12493 let opExtentBits = 6;
12494 let opExtentAlign = 0;
12495 }
12496 def L4_ploadrbf_rr : HInst<
12497 (outs IntRegs:$Rd32),
12498 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12499 "if (!$Pv4) $Rd32 = memb($Rs32+$Rt32<<#$Ii)",
12500 tc_45791fb8, TypeLD>, Enc_2e1979, AddrModeRel {
12501 let Inst{31-21} = 0b00110001000;
12502 let isPredicated = 1;
12503 let isPredicatedFalse = 1;
12504 let hasNewValue = 1;
12505 let opNewValue = 0;
12506 let addrMode = BaseRegOffset;
12507 let accessSize = ByteAccess;
12508 let mayLoad = 1;
12509 let BaseOpcode = "L4_loadrb_rr";
12510 let CextOpcode = "L2_loadrb";
12511 let InputType = "reg";
12512 }
12513 def L4_ploadrbfnew_abs : HInst<
12514 (outs IntRegs:$Rd32),
12515 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12516 "if (!$Pt4.new) $Rd32 = memb(#$Ii)",
12517 tc_822c3c68, TypeLD>, Enc_2301d6, AddrModeRel {
12518 let Inst{7-5} = 0b100;
12519 let Inst{13-11} = 0b111;
12520 let Inst{31-21} = 0b10011111000;
12521 let isPredicated = 1;
12522 let isPredicatedFalse = 1;
12523 let hasNewValue = 1;
12524 let opNewValue = 0;
12525 let addrMode = Absolute;
12526 let accessSize = ByteAccess;
12527 let isPredicatedNew = 1;
12528 let mayLoad = 1;
12529 let isExtended = 1;
12530 let BaseOpcode = "L4_loadrb_abs";
12531 let CextOpcode = "L2_loadrb";
12532 let DecoderNamespace = "MustExtend";
12533 let isExtendable = 1;
12534 let opExtendable = 2;
12535 let isExtentSigned = 0;
12536 let opExtentBits = 6;
12537 let opExtentAlign = 0;
12538 }
12539 def L4_ploadrbfnew_rr : HInst<
12540 (outs IntRegs:$Rd32),
12541 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12542 "if (!$Pv4.new) $Rd32 = memb($Rs32+$Rt32<<#$Ii)",
12543 tc_b7c4062a, TypeLD>, Enc_2e1979, AddrModeRel {
12544 let Inst{31-21} = 0b00110011000;
12545 let isPredicated = 1;
12546 let isPredicatedFalse = 1;
12547 let hasNewValue = 1;
12548 let opNewValue = 0;
12549 let addrMode = BaseRegOffset;
12550 let accessSize = ByteAccess;
12551 let isPredicatedNew = 1;
12552 let mayLoad = 1;
12553 let BaseOpcode = "L4_loadrb_rr";
12554 let CextOpcode = "L2_loadrb";
12555 let InputType = "reg";
12556 }
12557 def L4_ploadrbt_abs : HInst<
12558 (outs IntRegs:$Rd32),
12559 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12560 "if ($Pt4) $Rd32 = memb(#$Ii)",
12561 tc_7c6d32e4, TypeLD>, Enc_2301d6, AddrModeRel {
12562 let Inst{7-5} = 0b100;
12563 let Inst{13-11} = 0b100;
12564 let Inst{31-21} = 0b10011111000;
12565 let isPredicated = 1;
12566 let hasNewValue = 1;
12567 let opNewValue = 0;
12568 let addrMode = Absolute;
12569 let accessSize = ByteAccess;
12570 let mayLoad = 1;
12571 let isExtended = 1;
12572 let BaseOpcode = "L4_loadrb_abs";
12573 let CextOpcode = "L2_loadrb";
12574 let DecoderNamespace = "MustExtend";
12575 let isExtendable = 1;
12576 let opExtendable = 2;
12577 let isExtentSigned = 0;
12578 let opExtentBits = 6;
12579 let opExtentAlign = 0;
12580 }
12581 def L4_ploadrbt_rr : HInst<
12582 (outs IntRegs:$Rd32),
12583 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12584 "if ($Pv4) $Rd32 = memb($Rs32+$Rt32<<#$Ii)",
12585 tc_45791fb8, TypeLD>, Enc_2e1979, AddrModeRel {
12586 let Inst{31-21} = 0b00110000000;
12587 let isPredicated = 1;
12588 let hasNewValue = 1;
12589 let opNewValue = 0;
12590 let addrMode = BaseRegOffset;
12591 let accessSize = ByteAccess;
12592 let mayLoad = 1;
12593 let BaseOpcode = "L4_loadrb_rr";
12594 let CextOpcode = "L2_loadrb";
12595 let InputType = "reg";
12596 }
12597 def L4_ploadrbtnew_abs : HInst<
12598 (outs IntRegs:$Rd32),
12599 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12600 "if ($Pt4.new) $Rd32 = memb(#$Ii)",
12601 tc_822c3c68, TypeLD>, Enc_2301d6, AddrModeRel {
12602 let Inst{7-5} = 0b100;
12603 let Inst{13-11} = 0b110;
12604 let Inst{31-21} = 0b10011111000;
12605 let isPredicated = 1;
12606 let hasNewValue = 1;
12607 let opNewValue = 0;
12608 let addrMode = Absolute;
12609 let accessSize = ByteAccess;
12610 let isPredicatedNew = 1;
12611 let mayLoad = 1;
12612 let isExtended = 1;
12613 let BaseOpcode = "L4_loadrb_abs";
12614 let CextOpcode = "L2_loadrb";
12615 let DecoderNamespace = "MustExtend";
12616 let isExtendable = 1;
12617 let opExtendable = 2;
12618 let isExtentSigned = 0;
12619 let opExtentBits = 6;
12620 let opExtentAlign = 0;
12621 }
12622 def L4_ploadrbtnew_rr : HInst<
12623 (outs IntRegs:$Rd32),
12624 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12625 "if ($Pv4.new) $Rd32 = memb($Rs32+$Rt32<<#$Ii)",
12626 tc_b7c4062a, TypeLD>, Enc_2e1979, AddrModeRel {
12627 let Inst{31-21} = 0b00110010000;
12628 let isPredicated = 1;
12629 let hasNewValue = 1;
12630 let opNewValue = 0;
12631 let addrMode = BaseRegOffset;
12632 let accessSize = ByteAccess;
12633 let isPredicatedNew = 1;
12634 let mayLoad = 1;
12635 let BaseOpcode = "L4_loadrb_rr";
12636 let CextOpcode = "L2_loadrb";
12637 let InputType = "reg";
12638 }
12639 def L4_ploadrdf_abs : HInst<
12640 (outs DoubleRegs:$Rdd32),
12641 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12642 "if (!$Pt4) $Rdd32 = memd(#$Ii)",
12643 tc_7c6d32e4, TypeLD>, Enc_2a7b91, AddrModeRel {
12644 let Inst{7-5} = 0b100;
12645 let Inst{13-11} = 0b101;
12646 let Inst{31-21} = 0b10011111110;
12647 let isPredicated = 1;
12648 let isPredicatedFalse = 1;
12649 let addrMode = Absolute;
12650 let accessSize = DoubleWordAccess;
12651 let mayLoad = 1;
12652 let isExtended = 1;
12653 let BaseOpcode = "L4_loadrd_abs";
12654 let CextOpcode = "L2_loadrd";
12655 let DecoderNamespace = "MustExtend";
12656 let isExtendable = 1;
12657 let opExtendable = 2;
12658 let isExtentSigned = 0;
12659 let opExtentBits = 6;
12660 let opExtentAlign = 0;
12661 }
12662 def L4_ploadrdf_rr : HInst<
12663 (outs DoubleRegs:$Rdd32),
12664 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12665 "if (!$Pv4) $Rdd32 = memd($Rs32+$Rt32<<#$Ii)",
12666 tc_45791fb8, TypeLD>, Enc_98c0b8, AddrModeRel {
12667 let Inst{31-21} = 0b00110001110;
12668 let isPredicated = 1;
12669 let isPredicatedFalse = 1;
12670 let addrMode = BaseRegOffset;
12671 let accessSize = DoubleWordAccess;
12672 let mayLoad = 1;
12673 let BaseOpcode = "L4_loadrd_rr";
12674 let CextOpcode = "L2_loadrd";
12675 let InputType = "reg";
12676 }
12677 def L4_ploadrdfnew_abs : HInst<
12678 (outs DoubleRegs:$Rdd32),
12679 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12680 "if (!$Pt4.new) $Rdd32 = memd(#$Ii)",
12681 tc_822c3c68, TypeLD>, Enc_2a7b91, AddrModeRel {
12682 let Inst{7-5} = 0b100;
12683 let Inst{13-11} = 0b111;
12684 let Inst{31-21} = 0b10011111110;
12685 let isPredicated = 1;
12686 let isPredicatedFalse = 1;
12687 let addrMode = Absolute;
12688 let accessSize = DoubleWordAccess;
12689 let isPredicatedNew = 1;
12690 let mayLoad = 1;
12691 let isExtended = 1;
12692 let BaseOpcode = "L4_loadrd_abs";
12693 let CextOpcode = "L2_loadrd";
12694 let DecoderNamespace = "MustExtend";
12695 let isExtendable = 1;
12696 let opExtendable = 2;
12697 let isExtentSigned = 0;
12698 let opExtentBits = 6;
12699 let opExtentAlign = 0;
12700 }
12701 def L4_ploadrdfnew_rr : HInst<
12702 (outs DoubleRegs:$Rdd32),
12703 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12704 "if (!$Pv4.new) $Rdd32 = memd($Rs32+$Rt32<<#$Ii)",
12705 tc_b7c4062a, TypeLD>, Enc_98c0b8, AddrModeRel {
12706 let Inst{31-21} = 0b00110011110;
12707 let isPredicated = 1;
12708 let isPredicatedFalse = 1;
12709 let addrMode = BaseRegOffset;
12710 let accessSize = DoubleWordAccess;
12711 let isPredicatedNew = 1;
12712 let mayLoad = 1;
12713 let BaseOpcode = "L4_loadrd_rr";
12714 let CextOpcode = "L2_loadrd";
12715 let InputType = "reg";
12716 }
12717 def L4_ploadrdt_abs : HInst<
12718 (outs DoubleRegs:$Rdd32),
12719 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12720 "if ($Pt4) $Rdd32 = memd(#$Ii)",
12721 tc_7c6d32e4, TypeLD>, Enc_2a7b91, AddrModeRel {
12722 let Inst{7-5} = 0b100;
12723 let Inst{13-11} = 0b100;
12724 let Inst{31-21} = 0b10011111110;
12725 let isPredicated = 1;
12726 let addrMode = Absolute;
12727 let accessSize = DoubleWordAccess;
12728 let mayLoad = 1;
12729 let isExtended = 1;
12730 let BaseOpcode = "L4_loadrd_abs";
12731 let CextOpcode = "L2_loadrd";
12732 let DecoderNamespace = "MustExtend";
12733 let isExtendable = 1;
12734 let opExtendable = 2;
12735 let isExtentSigned = 0;
12736 let opExtentBits = 6;
12737 let opExtentAlign = 0;
12738 }
12739 def L4_ploadrdt_rr : HInst<
12740 (outs DoubleRegs:$Rdd32),
12741 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12742 "if ($Pv4) $Rdd32 = memd($Rs32+$Rt32<<#$Ii)",
12743 tc_45791fb8, TypeLD>, Enc_98c0b8, AddrModeRel {
12744 let Inst{31-21} = 0b00110000110;
12745 let isPredicated = 1;
12746 let addrMode = BaseRegOffset;
12747 let accessSize = DoubleWordAccess;
12748 let mayLoad = 1;
12749 let BaseOpcode = "L4_loadrd_rr";
12750 let CextOpcode = "L2_loadrd";
12751 let InputType = "reg";
12752 }
12753 def L4_ploadrdtnew_abs : HInst<
12754 (outs DoubleRegs:$Rdd32),
12755 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12756 "if ($Pt4.new) $Rdd32 = memd(#$Ii)",
12757 tc_822c3c68, TypeLD>, Enc_2a7b91, AddrModeRel {
12758 let Inst{7-5} = 0b100;
12759 let Inst{13-11} = 0b110;
12760 let Inst{31-21} = 0b10011111110;
12761 let isPredicated = 1;
12762 let addrMode = Absolute;
12763 let accessSize = DoubleWordAccess;
12764 let isPredicatedNew = 1;
12765 let mayLoad = 1;
12766 let isExtended = 1;
12767 let BaseOpcode = "L4_loadrd_abs";
12768 let CextOpcode = "L2_loadrd";
12769 let DecoderNamespace = "MustExtend";
12770 let isExtendable = 1;
12771 let opExtendable = 2;
12772 let isExtentSigned = 0;
12773 let opExtentBits = 6;
12774 let opExtentAlign = 0;
12775 }
12776 def L4_ploadrdtnew_rr : HInst<
12777 (outs DoubleRegs:$Rdd32),
12778 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12779 "if ($Pv4.new) $Rdd32 = memd($Rs32+$Rt32<<#$Ii)",
12780 tc_b7c4062a, TypeLD>, Enc_98c0b8, AddrModeRel {
12781 let Inst{31-21} = 0b00110010110;
12782 let isPredicated = 1;
12783 let addrMode = BaseRegOffset;
12784 let accessSize = DoubleWordAccess;
12785 let isPredicatedNew = 1;
12786 let mayLoad = 1;
12787 let BaseOpcode = "L4_loadrd_rr";
12788 let CextOpcode = "L2_loadrd";
12789 let InputType = "reg";
12790 }
12791 def L4_ploadrhf_abs : HInst<
12792 (outs IntRegs:$Rd32),
12793 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12794 "if (!$Pt4) $Rd32 = memh(#$Ii)",
12795 tc_7c6d32e4, TypeLD>, Enc_2301d6, AddrModeRel {
12796 let Inst{7-5} = 0b100;
12797 let Inst{13-11} = 0b101;
12798 let Inst{31-21} = 0b10011111010;
12799 let isPredicated = 1;
12800 let isPredicatedFalse = 1;
12801 let hasNewValue = 1;
12802 let opNewValue = 0;
12803 let addrMode = Absolute;
12804 let accessSize = HalfWordAccess;
12805 let mayLoad = 1;
12806 let isExtended = 1;
12807 let BaseOpcode = "L4_loadrh_abs";
12808 let CextOpcode = "L2_loadrh";
12809 let DecoderNamespace = "MustExtend";
12810 let isExtendable = 1;
12811 let opExtendable = 2;
12812 let isExtentSigned = 0;
12813 let opExtentBits = 6;
12814 let opExtentAlign = 0;
12815 }
12816 def L4_ploadrhf_rr : HInst<
12817 (outs IntRegs:$Rd32),
12818 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12819 "if (!$Pv4) $Rd32 = memh($Rs32+$Rt32<<#$Ii)",
12820 tc_45791fb8, TypeLD>, Enc_2e1979, AddrModeRel {
12821 let Inst{31-21} = 0b00110001010;
12822 let isPredicated = 1;
12823 let isPredicatedFalse = 1;
12824 let hasNewValue = 1;
12825 let opNewValue = 0;
12826 let addrMode = BaseRegOffset;
12827 let accessSize = HalfWordAccess;
12828 let mayLoad = 1;
12829 let BaseOpcode = "L4_loadrh_rr";
12830 let CextOpcode = "L2_loadrh";
12831 let InputType = "reg";
12832 }
12833 def L4_ploadrhfnew_abs : HInst<
12834 (outs IntRegs:$Rd32),
12835 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12836 "if (!$Pt4.new) $Rd32 = memh(#$Ii)",
12837 tc_822c3c68, TypeLD>, Enc_2301d6, AddrModeRel {
12838 let Inst{7-5} = 0b100;
12839 let Inst{13-11} = 0b111;
12840 let Inst{31-21} = 0b10011111010;
12841 let isPredicated = 1;
12842 let isPredicatedFalse = 1;
12843 let hasNewValue = 1;
12844 let opNewValue = 0;
12845 let addrMode = Absolute;
12846 let accessSize = HalfWordAccess;
12847 let isPredicatedNew = 1;
12848 let mayLoad = 1;
12849 let isExtended = 1;
12850 let BaseOpcode = "L4_loadrh_abs";
12851 let CextOpcode = "L2_loadrh";
12852 let DecoderNamespace = "MustExtend";
12853 let isExtendable = 1;
12854 let opExtendable = 2;
12855 let isExtentSigned = 0;
12856 let opExtentBits = 6;
12857 let opExtentAlign = 0;
12858 }
12859 def L4_ploadrhfnew_rr : HInst<
12860 (outs IntRegs:$Rd32),
12861 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12862 "if (!$Pv4.new) $Rd32 = memh($Rs32+$Rt32<<#$Ii)",
12863 tc_b7c4062a, TypeLD>, Enc_2e1979, AddrModeRel {
12864 let Inst{31-21} = 0b00110011010;
12865 let isPredicated = 1;
12866 let isPredicatedFalse = 1;
12867 let hasNewValue = 1;
12868 let opNewValue = 0;
12869 let addrMode = BaseRegOffset;
12870 let accessSize = HalfWordAccess;
12871 let isPredicatedNew = 1;
12872 let mayLoad = 1;
12873 let BaseOpcode = "L4_loadrh_rr";
12874 let CextOpcode = "L2_loadrh";
12875 let InputType = "reg";
12876 }
12877 def L4_ploadrht_abs : HInst<
12878 (outs IntRegs:$Rd32),
12879 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12880 "if ($Pt4) $Rd32 = memh(#$Ii)",
12881 tc_7c6d32e4, TypeLD>, Enc_2301d6, AddrModeRel {
12882 let Inst{7-5} = 0b100;
12883 let Inst{13-11} = 0b100;
12884 let Inst{31-21} = 0b10011111010;
12885 let isPredicated = 1;
12886 let hasNewValue = 1;
12887 let opNewValue = 0;
12888 let addrMode = Absolute;
12889 let accessSize = HalfWordAccess;
12890 let mayLoad = 1;
12891 let isExtended = 1;
12892 let BaseOpcode = "L4_loadrh_abs";
12893 let CextOpcode = "L2_loadrh";
12894 let DecoderNamespace = "MustExtend";
12895 let isExtendable = 1;
12896 let opExtendable = 2;
12897 let isExtentSigned = 0;
12898 let opExtentBits = 6;
12899 let opExtentAlign = 0;
12900 }
12901 def L4_ploadrht_rr : HInst<
12902 (outs IntRegs:$Rd32),
12903 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12904 "if ($Pv4) $Rd32 = memh($Rs32+$Rt32<<#$Ii)",
12905 tc_45791fb8, TypeLD>, Enc_2e1979, AddrModeRel {
12906 let Inst{31-21} = 0b00110000010;
12907 let isPredicated = 1;
12908 let hasNewValue = 1;
12909 let opNewValue = 0;
12910 let addrMode = BaseRegOffset;
12911 let accessSize = HalfWordAccess;
12912 let mayLoad = 1;
12913 let BaseOpcode = "L4_loadrh_rr";
12914 let CextOpcode = "L2_loadrh";
12915 let InputType = "reg";
12916 }
12917 def L4_ploadrhtnew_abs : HInst<
12918 (outs IntRegs:$Rd32),
12919 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12920 "if ($Pt4.new) $Rd32 = memh(#$Ii)",
12921 tc_822c3c68, TypeLD>, Enc_2301d6, AddrModeRel {
12922 let Inst{7-5} = 0b100;
12923 let Inst{13-11} = 0b110;
12924 let Inst{31-21} = 0b10011111010;
12925 let isPredicated = 1;
12926 let hasNewValue = 1;
12927 let opNewValue = 0;
12928 let addrMode = Absolute;
12929 let accessSize = HalfWordAccess;
12930 let isPredicatedNew = 1;
12931 let mayLoad = 1;
12932 let isExtended = 1;
12933 let BaseOpcode = "L4_loadrh_abs";
12934 let CextOpcode = "L2_loadrh";
12935 let DecoderNamespace = "MustExtend";
12936 let isExtendable = 1;
12937 let opExtendable = 2;
12938 let isExtentSigned = 0;
12939 let opExtentBits = 6;
12940 let opExtentAlign = 0;
12941 }
12942 def L4_ploadrhtnew_rr : HInst<
12943 (outs IntRegs:$Rd32),
12944 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12945 "if ($Pv4.new) $Rd32 = memh($Rs32+$Rt32<<#$Ii)",
12946 tc_b7c4062a, TypeLD>, Enc_2e1979, AddrModeRel {
12947 let Inst{31-21} = 0b00110010010;
12948 let isPredicated = 1;
12949 let hasNewValue = 1;
12950 let opNewValue = 0;
12951 let addrMode = BaseRegOffset;
12952 let accessSize = HalfWordAccess;
12953 let isPredicatedNew = 1;
12954 let mayLoad = 1;
12955 let BaseOpcode = "L4_loadrh_rr";
12956 let CextOpcode = "L2_loadrh";
12957 let InputType = "reg";
12958 }
12959 def L4_ploadrif_abs : HInst<
12960 (outs IntRegs:$Rd32),
12961 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12962 "if (!$Pt4) $Rd32 = memw(#$Ii)",
12963 tc_7c6d32e4, TypeLD>, Enc_2301d6, AddrModeRel {
12964 let Inst{7-5} = 0b100;
12965 let Inst{13-11} = 0b101;
12966 let Inst{31-21} = 0b10011111100;
12967 let isPredicated = 1;
12968 let isPredicatedFalse = 1;
12969 let hasNewValue = 1;
12970 let opNewValue = 0;
12971 let addrMode = Absolute;
12972 let accessSize = WordAccess;
12973 let mayLoad = 1;
12974 let isExtended = 1;
12975 let BaseOpcode = "L4_loadri_abs";
12976 let CextOpcode = "L2_loadri";
12977 let DecoderNamespace = "MustExtend";
12978 let isExtendable = 1;
12979 let opExtendable = 2;
12980 let isExtentSigned = 0;
12981 let opExtentBits = 6;
12982 let opExtentAlign = 0;
12983 }
12984 def L4_ploadrif_rr : HInst<
12985 (outs IntRegs:$Rd32),
12986 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12987 "if (!$Pv4) $Rd32 = memw($Rs32+$Rt32<<#$Ii)",
12988 tc_45791fb8, TypeLD>, Enc_2e1979, AddrModeRel {
12989 let Inst{31-21} = 0b00110001100;
12990 let isPredicated = 1;
12991 let isPredicatedFalse = 1;
12992 let hasNewValue = 1;
12993 let opNewValue = 0;
12994 let addrMode = BaseRegOffset;
12995 let accessSize = WordAccess;
12996 let mayLoad = 1;
12997 let BaseOpcode = "L4_loadri_rr";
12998 let CextOpcode = "L2_loadri";
12999 let InputType = "reg";
13000 }
13001 def L4_ploadrifnew_abs : HInst<
13002 (outs IntRegs:$Rd32),
13003 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
13004 "if (!$Pt4.new) $Rd32 = memw(#$Ii)",
13005 tc_822c3c68, TypeLD>, Enc_2301d6, AddrModeRel {
13006 let Inst{7-5} = 0b100;
13007 let Inst{13-11} = 0b111;
13008 let Inst{31-21} = 0b10011111100;
13009 let isPredicated = 1;
13010 let isPredicatedFalse = 1;
13011 let hasNewValue = 1;
13012 let opNewValue = 0;
13013 let addrMode = Absolute;
13014 let accessSize = WordAccess;
13015 let isPredicatedNew = 1;
13016 let mayLoad = 1;
13017 let isExtended = 1;
13018 let BaseOpcode = "L4_loadri_abs";
13019 let CextOpcode = "L2_loadri";
13020 let DecoderNamespace = "MustExtend";
13021 let isExtendable = 1;
13022 let opExtendable = 2;
13023 let isExtentSigned = 0;
13024 let opExtentBits = 6;
13025 let opExtentAlign = 0;
13026 }
13027 def L4_ploadrifnew_rr : HInst<
13028 (outs IntRegs:$Rd32),
13029 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
13030 "if (!$Pv4.new) $Rd32 = memw($Rs32+$Rt32<<#$Ii)",
13031 tc_b7c4062a, TypeLD>, Enc_2e1979, AddrModeRel {
13032 let Inst{31-21} = 0b00110011100;
13033 let isPredicated = 1;
13034 let isPredicatedFalse = 1;
13035 let hasNewValue = 1;
13036 let opNewValue = 0;
13037 let addrMode = BaseRegOffset;
13038 let accessSize = WordAccess;
13039 let isPredicatedNew = 1;
13040 let mayLoad = 1;
13041 let BaseOpcode = "L4_loadri_rr";
13042 let CextOpcode = "L2_loadri";
13043 let InputType = "reg";
13044 }
13045 def L4_ploadrit_abs : HInst<
13046 (outs IntRegs:$Rd32),
13047 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
13048 "if ($Pt4) $Rd32 = memw(#$Ii)",
13049 tc_7c6d32e4, TypeLD>, Enc_2301d6, AddrModeRel {
13050 let Inst{7-5} = 0b100;
13051 let Inst{13-11} = 0b100;
13052 let Inst{31-21} = 0b10011111100;
13053 let isPredicated = 1;
13054 let hasNewValue = 1;
13055 let opNewValue = 0;
13056 let addrMode = Absolute;
13057 let accessSize = WordAccess;
13058 let mayLoad = 1;
13059 let isExtended = 1;
13060 let BaseOpcode = "L4_loadri_abs";
13061 let CextOpcode = "L2_loadri";
13062 let DecoderNamespace = "MustExtend";
13063 let isExtendable = 1;
13064 let opExtendable = 2;
13065 let isExtentSigned = 0;
13066 let opExtentBits = 6;
13067 let opExtentAlign = 0;
13068 }
13069 def L4_ploadrit_rr : HInst<
13070 (outs IntRegs:$Rd32),
13071 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
13072 "if ($Pv4) $Rd32 = memw($Rs32+$Rt32<<#$Ii)",
13073 tc_45791fb8, TypeLD>, Enc_2e1979, AddrModeRel {
13074 let Inst{31-21} = 0b00110000100;
13075 let isPredicated = 1;
13076 let hasNewValue = 1;
13077 let opNewValue = 0;
13078 let addrMode = BaseRegOffset;
13079 let accessSize = WordAccess;
13080 let mayLoad = 1;
13081 let BaseOpcode = "L4_loadri_rr";
13082 let CextOpcode = "L2_loadri";
13083 let InputType = "reg";
13084 }
13085 def L4_ploadritnew_abs : HInst<
13086 (outs IntRegs:$Rd32),
13087 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
13088 "if ($Pt4.new) $Rd32 = memw(#$Ii)",
13089 tc_822c3c68, TypeLD>, Enc_2301d6, AddrModeRel {
13090 let Inst{7-5} = 0b100;
13091 let Inst{13-11} = 0b110;
13092 let Inst{31-21} = 0b10011111100;
13093 let isPredicated = 1;
13094 let hasNewValue = 1;
13095 let opNewValue = 0;
13096 let addrMode = Absolute;
13097 let accessSize = WordAccess;
13098 let isPredicatedNew = 1;
13099 let mayLoad = 1;
13100 let isExtended = 1;
13101 let BaseOpcode = "L4_loadri_abs";
13102 let CextOpcode = "L2_loadri";
13103 let DecoderNamespace = "MustExtend";
13104 let isExtendable = 1;
13105 let opExtendable = 2;
13106 let isExtentSigned = 0;
13107 let opExtentBits = 6;
13108 let opExtentAlign = 0;
13109 }
13110 def L4_ploadritnew_rr : HInst<
13111 (outs IntRegs:$Rd32),
13112 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
13113 "if ($Pv4.new) $Rd32 = memw($Rs32+$Rt32<<#$Ii)",
13114 tc_b7c4062a, TypeLD>, Enc_2e1979, AddrModeRel {
13115 let Inst{31-21} = 0b00110010100;
13116 let isPredicated = 1;
13117 let hasNewValue = 1;
13118 let opNewValue = 0;
13119 let addrMode = BaseRegOffset;
13120 let accessSize = WordAccess;
13121 let isPredicatedNew = 1;
13122 let mayLoad = 1;
13123 let BaseOpcode = "L4_loadri_rr";
13124 let CextOpcode = "L2_loadri";
13125 let InputType = "reg";
13126 }
13127 def L4_ploadrubf_abs : HInst<
13128 (outs IntRegs:$Rd32),
13129 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
13130 "if (!$Pt4) $Rd32 = memub(#$Ii)",
13131 tc_7c6d32e4, TypeLD>, Enc_2301d6, AddrModeRel {
13132 let Inst{7-5} = 0b100;
13133 let Inst{13-11} = 0b101;
13134 let Inst{31-21} = 0b10011111001;
13135 let isPredicated = 1;
13136 let isPredicatedFalse = 1;
13137 let hasNewValue = 1;
13138 let opNewValue = 0;
13139 let addrMode = Absolute;
13140 let accessSize = ByteAccess;
13141 let mayLoad = 1;
13142 let isExtended = 1;
13143 let BaseOpcode = "L4_loadrub_abs";
13144 let CextOpcode = "L2_loadrub";
13145 let DecoderNamespace = "MustExtend";
13146 let isExtendable = 1;
13147 let opExtendable = 2;
13148 let isExtentSigned = 0;
13149 let opExtentBits = 6;
13150 let opExtentAlign = 0;
13151 }
13152 def L4_ploadrubf_rr : HInst<
13153 (outs IntRegs:$Rd32),
13154 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
13155 "if (!$Pv4) $Rd32 = memub($Rs32+$Rt32<<#$Ii)",
13156 tc_45791fb8, TypeLD>, Enc_2e1979, AddrModeRel {
13157 let Inst{31-21} = 0b00110001001;
13158 let isPredicated = 1;
13159 let isPredicatedFalse = 1;
13160 let hasNewValue = 1;
13161 let opNewValue = 0;
13162 let addrMode = BaseRegOffset;
13163 let accessSize = ByteAccess;
13164 let mayLoad = 1;
13165 let BaseOpcode = "L4_loadrub_rr";
13166 let CextOpcode = "L2_loadrub";
13167 let InputType = "reg";
13168 }
13169 def L4_ploadrubfnew_abs : HInst<
13170 (outs IntRegs:$Rd32),
13171 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
13172 "if (!$Pt4.new) $Rd32 = memub(#$Ii)",
13173 tc_822c3c68, TypeLD>, Enc_2301d6, AddrModeRel {
13174 let Inst{7-5} = 0b100;
13175 let Inst{13-11} = 0b111;
13176 let Inst{31-21} = 0b10011111001;
13177 let isPredicated = 1;
13178 let isPredicatedFalse = 1;
13179 let hasNewValue = 1;
13180 let opNewValue = 0;
13181 let addrMode = Absolute;
13182 let accessSize = ByteAccess;
13183 let isPredicatedNew = 1;
13184 let mayLoad = 1;
13185 let isExtended = 1;
13186 let BaseOpcode = "L4_loadrub_abs";
13187 let CextOpcode = "L2_loadrub";
13188 let DecoderNamespace = "MustExtend";
13189 let isExtendable = 1;
13190 let opExtendable = 2;
13191 let isExtentSigned = 0;
13192 let opExtentBits = 6;
13193 let opExtentAlign = 0;
13194 }
13195 def L4_ploadrubfnew_rr : HInst<
13196 (outs IntRegs:$Rd32),
13197 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
13198 "if (!$Pv4.new) $Rd32 = memub($Rs32+$Rt32<<#$Ii)",
13199 tc_b7c4062a, TypeLD>, Enc_2e1979, AddrModeRel {
13200 let Inst{31-21} = 0b00110011001;
13201 let isPredicated = 1;
13202 let isPredicatedFalse = 1;
13203 let hasNewValue = 1;
13204 let opNewValue = 0;
13205 let addrMode = BaseRegOffset;
13206 let accessSize = ByteAccess;
13207 let isPredicatedNew = 1;
13208 let mayLoad = 1;
13209 let BaseOpcode = "L4_loadrub_rr";
13210 let CextOpcode = "L2_loadrub";
13211 let InputType = "reg";
13212 }
13213 def L4_ploadrubt_abs : HInst<
13214 (outs IntRegs:$Rd32),
13215 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
13216 "if ($Pt4) $Rd32 = memub(#$Ii)",
13217 tc_7c6d32e4, TypeLD>, Enc_2301d6, AddrModeRel {
13218 let Inst{7-5} = 0b100;
13219 let Inst{13-11} = 0b100;
13220 let Inst{31-21} = 0b10011111001;
13221 let isPredicated = 1;
13222 let hasNewValue = 1;
13223 let opNewValue = 0;
13224 let addrMode = Absolute;
13225 let accessSize = ByteAccess;
13226 let mayLoad = 1;
13227 let isExtended = 1;
13228 let BaseOpcode = "L4_loadrub_abs";
13229 let CextOpcode = "L2_loadrub";
13230 let DecoderNamespace = "MustExtend";
13231 let isExtendable = 1;
13232 let opExtendable = 2;
13233 let isExtentSigned = 0;
13234 let opExtentBits = 6;
13235 let opExtentAlign = 0;
13236 }
13237 def L4_ploadrubt_rr : HInst<
13238 (outs IntRegs:$Rd32),
13239 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
13240 "if ($Pv4) $Rd32 = memub($Rs32+$Rt32<<#$Ii)",
13241 tc_45791fb8, TypeLD>, Enc_2e1979, AddrModeRel {
13242 let Inst{31-21} = 0b00110000001;
13243 let isPredicated = 1;
13244 let hasNewValue = 1;
13245 let opNewValue = 0;
13246 let addrMode = BaseRegOffset;
13247 let accessSize = ByteAccess;
13248 let mayLoad = 1;
13249 let BaseOpcode = "L4_loadrub_rr";
13250 let CextOpcode = "L2_loadrub";
13251 let InputType = "reg";
13252 }
13253 def L4_ploadrubtnew_abs : HInst<
13254 (outs IntRegs:$Rd32),
13255 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
13256 "if ($Pt4.new) $Rd32 = memub(#$Ii)",
13257 tc_822c3c68, TypeLD>, Enc_2301d6, AddrModeRel {
13258 let Inst{7-5} = 0b100;
13259 let Inst{13-11} = 0b110;
13260 let Inst{31-21} = 0b10011111001;
13261 let isPredicated = 1;
13262 let hasNewValue = 1;
13263 let opNewValue = 0;
13264 let addrMode = Absolute;
13265 let accessSize = ByteAccess;
13266 let isPredicatedNew = 1;
13267 let mayLoad = 1;
13268 let isExtended = 1;
13269 let BaseOpcode = "L4_loadrub_abs";
13270 let CextOpcode = "L2_loadrub";
13271 let DecoderNamespace = "MustExtend";
13272 let isExtendable = 1;
13273 let opExtendable = 2;
13274 let isExtentSigned = 0;
13275 let opExtentBits = 6;
13276 let opExtentAlign = 0;
13277 }
13278 def L4_ploadrubtnew_rr : HInst<
13279 (outs IntRegs:$Rd32),
13280 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
13281 "if ($Pv4.new) $Rd32 = memub($Rs32+$Rt32<<#$Ii)",
13282 tc_b7c4062a, TypeLD>, Enc_2e1979, AddrModeRel {
13283 let Inst{31-21} = 0b00110010001;
13284 let isPredicated = 1;
13285 let hasNewValue = 1;
13286 let opNewValue = 0;
13287 let addrMode = BaseRegOffset;
13288 let accessSize = ByteAccess;
13289 let isPredicatedNew = 1;
13290 let mayLoad = 1;
13291 let BaseOpcode = "L4_loadrub_rr";
13292 let CextOpcode = "L2_loadrub";
13293 let InputType = "reg";
13294 }
13295 def L4_ploadruhf_abs : HInst<
13296 (outs IntRegs:$Rd32),
13297 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
13298 "if (!$Pt4) $Rd32 = memuh(#$Ii)",
13299 tc_7c6d32e4, TypeLD>, Enc_2301d6, AddrModeRel {
13300 let Inst{7-5} = 0b100;
13301 let Inst{13-11} = 0b101;
13302 let Inst{31-21} = 0b10011111011;
13303 let isPredicated = 1;
13304 let isPredicatedFalse = 1;
13305 let hasNewValue = 1;
13306 let opNewValue = 0;
13307 let addrMode = Absolute;
13308 let accessSize = HalfWordAccess;
13309 let mayLoad = 1;
13310 let isExtended = 1;
13311 let BaseOpcode = "L4_loadruh_abs";
13312 let CextOpcode = "L2_loadruh";
13313 let DecoderNamespace = "MustExtend";
13314 let isExtendable = 1;
13315 let opExtendable = 2;
13316 let isExtentSigned = 0;
13317 let opExtentBits = 6;
13318 let opExtentAlign = 0;
13319 }
13320 def L4_ploadruhf_rr : HInst<
13321 (outs IntRegs:$Rd32),
13322 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
13323 "if (!$Pv4) $Rd32 = memuh($Rs32+$Rt32<<#$Ii)",
13324 tc_45791fb8, TypeLD>, Enc_2e1979, AddrModeRel {
13325 let Inst{31-21} = 0b00110001011;
13326 let isPredicated = 1;
13327 let isPredicatedFalse = 1;
13328 let hasNewValue = 1;
13329 let opNewValue = 0;
13330 let addrMode = BaseRegOffset;
13331 let accessSize = HalfWordAccess;
13332 let mayLoad = 1;
13333 let BaseOpcode = "L4_loadruh_rr";
13334 let CextOpcode = "L2_loadruh";
13335 let InputType = "reg";
13336 }
13337 def L4_ploadruhfnew_abs : HInst<
13338 (outs IntRegs:$Rd32),
13339 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
13340 "if (!$Pt4.new) $Rd32 = memuh(#$Ii)",
13341 tc_822c3c68, TypeLD>, Enc_2301d6, AddrModeRel {
13342 let Inst{7-5} = 0b100;
13343 let Inst{13-11} = 0b111;
13344 let Inst{31-21} = 0b10011111011;
13345 let isPredicated = 1;
13346 let isPredicatedFalse = 1;
13347 let hasNewValue = 1;
13348 let opNewValue = 0;
13349 let addrMode = Absolute;
13350 let accessSize = HalfWordAccess;
13351 let isPredicatedNew = 1;
13352 let mayLoad = 1;
13353 let isExtended = 1;
13354 let BaseOpcode = "L4_loadruh_abs";
13355 let CextOpcode = "L2_loadruh";
13356 let DecoderNamespace = "MustExtend";
13357 let isExtendable = 1;
13358 let opExtendable = 2;
13359 let isExtentSigned = 0;
13360 let opExtentBits = 6;
13361 let opExtentAlign = 0;
13362 }
13363 def L4_ploadruhfnew_rr : HInst<
13364 (outs IntRegs:$Rd32),
13365 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
13366 "if (!$Pv4.new) $Rd32 = memuh($Rs32+$Rt32<<#$Ii)",
13367 tc_b7c4062a, TypeLD>, Enc_2e1979, AddrModeRel {
13368 let Inst{31-21} = 0b00110011011;
13369 let isPredicated = 1;
13370 let isPredicatedFalse = 1;
13371 let hasNewValue = 1;
13372 let opNewValue = 0;
13373 let addrMode = BaseRegOffset;
13374 let accessSize = HalfWordAccess;
13375 let isPredicatedNew = 1;
13376 let mayLoad = 1;
13377 let BaseOpcode = "L4_loadruh_rr";
13378 let CextOpcode = "L2_loadruh";
13379 let InputType = "reg";
13380 }
13381 def L4_ploadruht_abs : HInst<
13382 (outs IntRegs:$Rd32),
13383 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
13384 "if ($Pt4) $Rd32 = memuh(#$Ii)",
13385 tc_7c6d32e4, TypeLD>, Enc_2301d6, AddrModeRel {
13386 let Inst{7-5} = 0b100;
13387 let Inst{13-11} = 0b100;
13388 let Inst{31-21} = 0b10011111011;
13389 let isPredicated = 1;
13390 let hasNewValue = 1;
13391 let opNewValue = 0;
13392 let addrMode = Absolute;
13393 let accessSize = HalfWordAccess;
13394 let mayLoad = 1;
13395 let isExtended = 1;
13396 let BaseOpcode = "L4_loadruh_abs";
13397 let CextOpcode = "L2_loadruh";
13398 let DecoderNamespace = "MustExtend";
13399 let isExtendable = 1;
13400 let opExtendable = 2;
13401 let isExtentSigned = 0;
13402 let opExtentBits = 6;
13403 let opExtentAlign = 0;
13404 }
13405 def L4_ploadruht_rr : HInst<
13406 (outs IntRegs:$Rd32),
13407 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
13408 "if ($Pv4) $Rd32 = memuh($Rs32+$Rt32<<#$Ii)",
13409 tc_45791fb8, TypeLD>, Enc_2e1979, AddrModeRel {
13410 let Inst{31-21} = 0b00110000011;
13411 let isPredicated = 1;
13412 let hasNewValue = 1;
13413 let opNewValue = 0;
13414 let addrMode = BaseRegOffset;
13415 let accessSize = HalfWordAccess;
13416 let mayLoad = 1;
13417 let BaseOpcode = "L4_loadruh_rr";
13418 let CextOpcode = "L2_loadruh";
13419 let InputType = "reg";
13420 }
13421 def L4_ploadruhtnew_abs : HInst<
13422 (outs IntRegs:$Rd32),
13423 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
13424 "if ($Pt4.new) $Rd32 = memuh(#$Ii)",
13425 tc_822c3c68, TypeLD>, Enc_2301d6, AddrModeRel {
13426 let Inst{7-5} = 0b100;
13427 let Inst{13-11} = 0b110;
13428 let Inst{31-21} = 0b10011111011;
13429 let isPredicated = 1;
13430 let hasNewValue = 1;
13431 let opNewValue = 0;
13432 let addrMode = Absolute;
13433 let accessSize = HalfWordAccess;
13434 let isPredicatedNew = 1;
13435 let mayLoad = 1;
13436 let isExtended = 1;
13437 let BaseOpcode = "L4_loadruh_abs";
13438 let CextOpcode = "L2_loadruh";
13439 let DecoderNamespace = "MustExtend";
13440 let isExtendable = 1;
13441 let opExtendable = 2;
13442 let isExtentSigned = 0;
13443 let opExtentBits = 6;
13444 let opExtentAlign = 0;
13445 }
13446 def L4_ploadruhtnew_rr : HInst<
13447 (outs IntRegs:$Rd32),
13448 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
13449 "if ($Pv4.new) $Rd32 = memuh($Rs32+$Rt32<<#$Ii)",
13450 tc_b7c4062a, TypeLD>, Enc_2e1979, AddrModeRel {
13451 let Inst{31-21} = 0b00110010011;
13452 let isPredicated = 1;
13453 let hasNewValue = 1;
13454 let opNewValue = 0;
13455 let addrMode = BaseRegOffset;
13456 let accessSize = HalfWordAccess;
13457 let isPredicatedNew = 1;
13458 let mayLoad = 1;
13459 let BaseOpcode = "L4_loadruh_rr";
13460 let CextOpcode = "L2_loadruh";
13461 let InputType = "reg";
13462 }
13463 def L4_return : HInst<
13464 (outs DoubleRegs:$Rdd32),
13465 (ins IntRegs:$Rs32),
13466 "$Rdd32 = dealloc_return($Rs32):raw",
13467 tc_40d64c94, TypeLD>, Enc_3a3d62, PredNewRel {
13468 let Inst{13-5} = 0b000000000;
13469 let Inst{31-21} = 0b10010110000;
13470 let isTerminator = 1;
13471 let isIndirectBranch = 1;
13472 let accessSize = DoubleWordAccess;
13473 let mayLoad = 1;
13474 let cofMax1 = 1;
13475 let isRestrictNoSlot1Store = 1;
13476 let isReturn = 1;
13477 let Uses = [FRAMEKEY];
13478 let Defs = [PC, R29];
13479 let BaseOpcode = "L4_return";
13480 let isBarrier = 1;
13481 let isPredicable = 1;
13482 let isTaken = 1;
13483 }
13484 def L4_return_f : HInst<
13485 (outs DoubleRegs:$Rdd32),
13486 (ins PredRegs:$Pv4, IntRegs:$Rs32),
13487 "if (!$Pv4) $Rdd32 = dealloc_return($Rs32):raw",
13488 tc_df5d53f9, TypeLD>, Enc_b7fad3, PredNewRel {
13489 let Inst{7-5} = 0b000;
13490 let Inst{13-10} = 0b1100;
13491 let Inst{31-21} = 0b10010110000;
13492 let isPredicated = 1;
13493 let isPredicatedFalse = 1;
13494 let isTerminator = 1;
13495 let isIndirectBranch = 1;
13496 let accessSize = DoubleWordAccess;
13497 let mayLoad = 1;
13498 let cofMax1 = 1;
13499 let isRestrictNoSlot1Store = 1;
13500 let isReturn = 1;
13501 let Uses = [FRAMEKEY];
13502 let Defs = [PC, R29];
13503 let BaseOpcode = "L4_return";
13504 let isTaken = Inst{12};
13505 }
13506 def L4_return_fnew_pnt : HInst<
13507 (outs DoubleRegs:$Rdd32),
13508 (ins PredRegs:$Pv4, IntRegs:$Rs32),
13509 "if (!$Pv4.new) $Rdd32 = dealloc_return($Rs32):nt:raw",
13510 tc_14ab4f41, TypeLD>, Enc_b7fad3, PredNewRel {
13511 let Inst{7-5} = 0b000;
13512 let Inst{13-10} = 0b1010;
13513 let Inst{31-21} = 0b10010110000;
13514 let isPredicated = 1;
13515 let isPredicatedFalse = 1;
13516 let isTerminator = 1;
13517 let isIndirectBranch = 1;
13518 let accessSize = DoubleWordAccess;
13519 let isPredicatedNew = 1;
13520 let mayLoad = 1;
13521 let cofMax1 = 1;
13522 let isRestrictNoSlot1Store = 1;
13523 let isReturn = 1;
13524 let Uses = [FRAMEKEY];
13525 let Defs = [PC, R29];
13526 let BaseOpcode = "L4_return";
13527 let isTaken = Inst{12};
13528 }
13529 def L4_return_fnew_pt : HInst<
13530 (outs DoubleRegs:$Rdd32),
13531 (ins PredRegs:$Pv4, IntRegs:$Rs32),
13532 "if (!$Pv4.new) $Rdd32 = dealloc_return($Rs32):t:raw",
13533 tc_14ab4f41, TypeLD>, Enc_b7fad3, PredNewRel {
13534 let Inst{7-5} = 0b000;
13535 let Inst{13-10} = 0b1110;
13536 let Inst{31-21} = 0b10010110000;
13537 let isPredicated = 1;
13538 let isPredicatedFalse = 1;
13539 let isTerminator = 1;
13540 let isIndirectBranch = 1;
13541 let accessSize = DoubleWordAccess;
13542 let isPredicatedNew = 1;
13543 let mayLoad = 1;
13544 let cofMax1 = 1;
13545 let isRestrictNoSlot1Store = 1;
13546 let isReturn = 1;
13547 let Uses = [FRAMEKEY];
13548 let Defs = [PC, R29];
13549 let BaseOpcode = "L4_return";
13550 let isTaken = Inst{12};
13551 }
13552 def L4_return_map_to_raw_f : HInst<
13553 (outs),
13554 (ins PredRegs:$Pv4),
13555 "if (!$Pv4) dealloc_return",
13556 tc_df5d53f9, TypeMAPPING>, Requires<[HasV65]> {
13557 let isPseudo = 1;
13558 let isCodeGenOnly = 1;
13559 }
13560 def L4_return_map_to_raw_fnew_pnt : HInst<
13561 (outs),
13562 (ins PredRegs:$Pv4),
13563 "if (!$Pv4.new) dealloc_return:nt",
13564 tc_14ab4f41, TypeMAPPING>, Requires<[HasV65]> {
13565 let isPseudo = 1;
13566 let isCodeGenOnly = 1;
13567 }
13568 def L4_return_map_to_raw_fnew_pt : HInst<
13569 (outs),
13570 (ins PredRegs:$Pv4),
13571 "if (!$Pv4.new) dealloc_return:t",
13572 tc_14ab4f41, TypeMAPPING>, Requires<[HasV65]> {
13573 let isPseudo = 1;
13574 let isCodeGenOnly = 1;
13575 }
13576 def L4_return_map_to_raw_t : HInst<
13577 (outs),
13578 (ins PredRegs:$Pv4),
13579 "if ($Pv4) dealloc_return",
13580 tc_f38f92e1, TypeMAPPING>, Requires<[HasV65]> {
13581 let isPseudo = 1;
13582 let isCodeGenOnly = 1;
13583 }
13584 def L4_return_map_to_raw_tnew_pnt : HInst<
13585 (outs),
13586 (ins PredRegs:$Pv4),
13587 "if ($Pv4.new) dealloc_return:nt",
13588 tc_1981450d, TypeMAPPING>, Requires<[HasV65]> {
13589 let isPseudo = 1;
13590 let isCodeGenOnly = 1;
13591 }
13592 def L4_return_map_to_raw_tnew_pt : HInst<
13593 (outs),
13594 (ins PredRegs:$Pv4),
13595 "if ($Pv4.new) dealloc_return:t",
13596 tc_1981450d, TypeMAPPING>, Requires<[HasV65]> {
13597 let isPseudo = 1;
13598 let isCodeGenOnly = 1;
13599 }
13600 def L4_return_t : HInst<
13601 (outs DoubleRegs:$Rdd32),
13602 (ins PredRegs:$Pv4, IntRegs:$Rs32),
13603 "if ($Pv4) $Rdd32 = dealloc_return($Rs32):raw",
13604 tc_df5d53f9, TypeLD>, Enc_b7fad3, PredNewRel {
13605 let Inst{7-5} = 0b000;
13606 let Inst{13-10} = 0b0100;
13607 let Inst{31-21} = 0b10010110000;
13608 let isPredicated = 1;
13609 let isTerminator = 1;
13610 let isIndirectBranch = 1;
13611 let accessSize = DoubleWordAccess;
13612 let mayLoad = 1;
13613 let cofMax1 = 1;
13614 let isRestrictNoSlot1Store = 1;
13615 let isReturn = 1;
13616 let Uses = [FRAMEKEY];
13617 let Defs = [PC, R29];
13618 let BaseOpcode = "L4_return";
13619 let isTaken = Inst{12};
13620 }
13621 def L4_return_tnew_pnt : HInst<
13622 (outs DoubleRegs:$Rdd32),
13623 (ins PredRegs:$Pv4, IntRegs:$Rs32),
13624 "if ($Pv4.new) $Rdd32 = dealloc_return($Rs32):nt:raw",
13625 tc_14ab4f41, TypeLD>, Enc_b7fad3, PredNewRel {
13626 let Inst{7-5} = 0b000;
13627 let Inst{13-10} = 0b0010;
13628 let Inst{31-21} = 0b10010110000;
13629 let isPredicated = 1;
13630 let isTerminator = 1;
13631 let isIndirectBranch = 1;
13632 let accessSize = DoubleWordAccess;
13633 let isPredicatedNew = 1;
13634 let mayLoad = 1;
13635 let cofMax1 = 1;
13636 let isRestrictNoSlot1Store = 1;
13637 let isReturn = 1;
13638 let Uses = [FRAMEKEY];
13639 let Defs = [PC, R29];
13640 let BaseOpcode = "L4_return";
13641 let isTaken = Inst{12};
13642 }
13643 def L4_return_tnew_pt : HInst<
13644 (outs DoubleRegs:$Rdd32),
13645 (ins PredRegs:$Pv4, IntRegs:$Rs32),
13646 "if ($Pv4.new) $Rdd32 = dealloc_return($Rs32):t:raw",
13647 tc_14ab4f41, TypeLD>, Enc_b7fad3, PredNewRel {
13648 let Inst{7-5} = 0b000;
13649 let Inst{13-10} = 0b0110;
13650 let Inst{31-21} = 0b10010110000;
13651 let isPredicated = 1;
13652 let isTerminator = 1;
13653 let isIndirectBranch = 1;
13654 let accessSize = DoubleWordAccess;
13655 let isPredicatedNew = 1;
13656 let mayLoad = 1;
13657 let cofMax1 = 1;
13658 let isRestrictNoSlot1Store = 1;
13659 let isReturn = 1;
13660 let Uses = [FRAMEKEY];
13661 let Defs = [PC, R29];
13662 let BaseOpcode = "L4_return";
13663 let isTaken = Inst{12};
13664 }
13665 def L4_sub_memopb_io : HInst<
13666 (outs),
13667 (ins IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Rt32),
13668 "memb($Rs32+#$Ii) -= $Rt32",
13669 tc_9bcfb2ee, TypeV4LDST>, Enc_d44e31 {
13670 let Inst{6-5} = 0b01;
13671 let Inst{13-13} = 0b0;
13672 let Inst{31-21} = 0b00111110000;
13673 let addrMode = BaseImmOffset;
13674 let accessSize = ByteAccess;
13675 let mayLoad = 1;
13676 let isRestrictNoSlot1Store = 1;
13677 let mayStore = 1;
13678 let isExtendable = 1;
13679 let opExtendable = 1;
13680 let isExtentSigned = 0;
13681 let opExtentBits = 6;
13682 let opExtentAlign = 0;
13683 }
13684 def L4_sub_memopb_zomap : HInst<
13685 (outs),
13686 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13687 "memb($Rs32) -= $Rt32",
13688 tc_9bcfb2ee, TypeMAPPING> {
13689 let isPseudo = 1;
13690 let isCodeGenOnly = 1;
13691 }
13692 def L4_sub_memoph_io : HInst<
13693 (outs),
13694 (ins IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Rt32),
13695 "memh($Rs32+#$Ii) -= $Rt32",
13696 tc_9bcfb2ee, TypeV4LDST>, Enc_163a3c {
13697 let Inst{6-5} = 0b01;
13698 let Inst{13-13} = 0b0;
13699 let Inst{31-21} = 0b00111110001;
13700 let addrMode = BaseImmOffset;
13701 let accessSize = HalfWordAccess;
13702 let mayLoad = 1;
13703 let isRestrictNoSlot1Store = 1;
13704 let mayStore = 1;
13705 let isExtendable = 1;
13706 let opExtendable = 1;
13707 let isExtentSigned = 0;
13708 let opExtentBits = 7;
13709 let opExtentAlign = 1;
13710 }
13711 def L4_sub_memoph_zomap : HInst<
13712 (outs),
13713 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13714 "memh($Rs32) -= $Rt32",
13715 tc_9bcfb2ee, TypeMAPPING> {
13716 let isPseudo = 1;
13717 let isCodeGenOnly = 1;
13718 }
13719 def L4_sub_memopw_io : HInst<
13720 (outs),
13721 (ins IntRegs:$Rs32, u30_2Imm:$Ii, IntRegs:$Rt32),
13722 "memw($Rs32+#$Ii) -= $Rt32",
13723 tc_9bcfb2ee, TypeV4LDST>, Enc_226535 {
13724 let Inst{6-5} = 0b01;
13725 let Inst{13-13} = 0b0;
13726 let Inst{31-21} = 0b00111110010;
13727 let addrMode = BaseImmOffset;
13728 let accessSize = WordAccess;
13729 let mayLoad = 1;
13730 let isRestrictNoSlot1Store = 1;
13731 let mayStore = 1;
13732 let isExtendable = 1;
13733 let opExtendable = 1;
13734 let isExtentSigned = 0;
13735 let opExtentBits = 8;
13736 let opExtentAlign = 2;
13737 }
13738 def L4_sub_memopw_zomap : HInst<
13739 (outs),
13740 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13741 "memw($Rs32) -= $Rt32",
13742 tc_9bcfb2ee, TypeMAPPING> {
13743 let isPseudo = 1;
13744 let isCodeGenOnly = 1;
13745 }
13746 def L6_deallocframe_map_to_raw : HInst<
13747 (outs),
13748 (ins),
13749 "deallocframe",
13750 tc_e9170fb7, TypeMAPPING>, Requires<[HasV65]> {
13751 let isPseudo = 1;
13752 let isCodeGenOnly = 1;
13753 }
13754 def L6_memcpy : HInst<
13755 (outs),
13756 (ins IntRegs:$Rs32, IntRegs:$Rt32, ModRegs:$Mu2),
13757 "memcpy($Rs32,$Rt32,$Mu2)",
13758 tc_5944960d, TypeLD>, Enc_a75aa6, Requires<[HasV66]> {
13759 let Inst{7-0} = 0b01000000;
13760 let Inst{31-21} = 0b10010010000;
13761 let mayLoad = 1;
13762 let isSolo = 1;
13763 let mayStore = 1;
13764 }
13765 def L6_return_map_to_raw : HInst<
13766 (outs),
13767 (ins),
13768 "dealloc_return",
13769 tc_40d64c94, TypeMAPPING>, Requires<[HasV65]> {
13770 let isPseudo = 1;
13771 let isCodeGenOnly = 1;
13772 }
13773 def M2_acci : HInst<
13774 (outs IntRegs:$Rx32),
13775 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13776 "$Rx32 += add($Rs32,$Rt32)",
13777 tc_2c13e7f5, TypeM>, Enc_2ae154, ImmRegRel {
13778 let Inst{7-5} = 0b001;
13779 let Inst{13-13} = 0b0;
13780 let Inst{31-21} = 0b11101111000;
13781 let hasNewValue = 1;
13782 let opNewValue = 0;
13783 let prefersSlot3 = 1;
13784 let CextOpcode = "M2_acci";
13785 let InputType = "reg";
13786 let Constraints = "$Rx32 = $Rx32in";
13787 }
13788 def M2_accii : HInst<
13789 (outs IntRegs:$Rx32),
13790 (ins IntRegs:$Rx32in, IntRegs:$Rs32, s32_0Imm:$Ii),
13791 "$Rx32 += add($Rs32,#$Ii)",
13792 tc_2c13e7f5, TypeM>, Enc_c90aca, ImmRegRel {
13793 let Inst{13-13} = 0b0;
13794 let Inst{31-21} = 0b11100010000;
13795 let hasNewValue = 1;
13796 let opNewValue = 0;
13797 let prefersSlot3 = 1;
13798 let CextOpcode = "M2_acci";
13799 let InputType = "imm";
13800 let isExtendable = 1;
13801 let opExtendable = 3;
13802 let isExtentSigned = 1;
13803 let opExtentBits = 8;
13804 let opExtentAlign = 0;
13805 let Constraints = "$Rx32 = $Rx32in";
13806 }
13807 def M2_cmaci_s0 : HInst<
13808 (outs DoubleRegs:$Rxx32),
13809 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13810 "$Rxx32 += cmpyi($Rs32,$Rt32)",
13811 tc_7f8ae742, TypeM>, Enc_61f0b0 {
13812 let Inst{7-5} = 0b001;
13813 let Inst{13-13} = 0b0;
13814 let Inst{31-21} = 0b11100111000;
13815 let prefersSlot3 = 1;
13816 let Constraints = "$Rxx32 = $Rxx32in";
13817 }
13818 def M2_cmacr_s0 : HInst<
13819 (outs DoubleRegs:$Rxx32),
13820 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13821 "$Rxx32 += cmpyr($Rs32,$Rt32)",
13822 tc_7f8ae742, TypeM>, Enc_61f0b0 {
13823 let Inst{7-5} = 0b010;
13824 let Inst{13-13} = 0b0;
13825 let Inst{31-21} = 0b11100111000;
13826 let prefersSlot3 = 1;
13827 let Constraints = "$Rxx32 = $Rxx32in";
13828 }
13829 def M2_cmacs_s0 : HInst<
13830 (outs DoubleRegs:$Rxx32),
13831 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13832 "$Rxx32 += cmpy($Rs32,$Rt32):sat",
13833 tc_7f8ae742, TypeM>, Enc_61f0b0 {
13834 let Inst{7-5} = 0b110;
13835 let Inst{13-13} = 0b0;
13836 let Inst{31-21} = 0b11100111000;
13837 let prefersSlot3 = 1;
13838 let Defs = [USR_OVF];
13839 let Constraints = "$Rxx32 = $Rxx32in";
13840 }
13841 def M2_cmacs_s1 : HInst<
13842 (outs DoubleRegs:$Rxx32),
13843 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13844 "$Rxx32 += cmpy($Rs32,$Rt32):<<1:sat",
13845 tc_7f8ae742, TypeM>, Enc_61f0b0 {
13846 let Inst{7-5} = 0b110;
13847 let Inst{13-13} = 0b0;
13848 let Inst{31-21} = 0b11100111100;
13849 let prefersSlot3 = 1;
13850 let Defs = [USR_OVF];
13851 let Constraints = "$Rxx32 = $Rxx32in";
13852 }
13853 def M2_cmacsc_s0 : HInst<
13854 (outs DoubleRegs:$Rxx32),
13855 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13856 "$Rxx32 += cmpy($Rs32,$Rt32*):sat",
13857 tc_7f8ae742, TypeM>, Enc_61f0b0 {
13858 let Inst{7-5} = 0b110;
13859 let Inst{13-13} = 0b0;
13860 let Inst{31-21} = 0b11100111010;
13861 let prefersSlot3 = 1;
13862 let Defs = [USR_OVF];
13863 let Constraints = "$Rxx32 = $Rxx32in";
13864 }
13865 def M2_cmacsc_s1 : HInst<
13866 (outs DoubleRegs:$Rxx32),
13867 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13868 "$Rxx32 += cmpy($Rs32,$Rt32*):<<1:sat",
13869 tc_7f8ae742, TypeM>, Enc_61f0b0 {
13870 let Inst{7-5} = 0b110;
13871 let Inst{13-13} = 0b0;
13872 let Inst{31-21} = 0b11100111110;
13873 let prefersSlot3 = 1;
13874 let Defs = [USR_OVF];
13875 let Constraints = "$Rxx32 = $Rxx32in";
13876 }
13877 def M2_cmpyi_s0 : HInst<
13878 (outs DoubleRegs:$Rdd32),
13879 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13880 "$Rdd32 = cmpyi($Rs32,$Rt32)",
13881 tc_c21d7447, TypeM>, Enc_be32a5 {
13882 let Inst{7-5} = 0b001;
13883 let Inst{13-13} = 0b0;
13884 let Inst{31-21} = 0b11100101000;
13885 let prefersSlot3 = 1;
13886 }
13887 def M2_cmpyr_s0 : HInst<
13888 (outs DoubleRegs:$Rdd32),
13889 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13890 "$Rdd32 = cmpyr($Rs32,$Rt32)",
13891 tc_c21d7447, TypeM>, Enc_be32a5 {
13892 let Inst{7-5} = 0b010;
13893 let Inst{13-13} = 0b0;
13894 let Inst{31-21} = 0b11100101000;
13895 let prefersSlot3 = 1;
13896 }
13897 def M2_cmpyrs_s0 : HInst<
13898 (outs IntRegs:$Rd32),
13899 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13900 "$Rd32 = cmpy($Rs32,$Rt32):rnd:sat",
13901 tc_c21d7447, TypeM>, Enc_5ab2be {
13902 let Inst{7-5} = 0b110;
13903 let Inst{13-13} = 0b0;
13904 let Inst{31-21} = 0b11101101001;
13905 let hasNewValue = 1;
13906 let opNewValue = 0;
13907 let prefersSlot3 = 1;
13908 let Defs = [USR_OVF];
13909 }
13910 def M2_cmpyrs_s1 : HInst<
13911 (outs IntRegs:$Rd32),
13912 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13913 "$Rd32 = cmpy($Rs32,$Rt32):<<1:rnd:sat",
13914 tc_c21d7447, TypeM>, Enc_5ab2be {
13915 let Inst{7-5} = 0b110;
13916 let Inst{13-13} = 0b0;
13917 let Inst{31-21} = 0b11101101101;
13918 let hasNewValue = 1;
13919 let opNewValue = 0;
13920 let prefersSlot3 = 1;
13921 let Defs = [USR_OVF];
13922 }
13923 def M2_cmpyrsc_s0 : HInst<
13924 (outs IntRegs:$Rd32),
13925 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13926 "$Rd32 = cmpy($Rs32,$Rt32*):rnd:sat",
13927 tc_c21d7447, TypeM>, Enc_5ab2be {
13928 let Inst{7-5} = 0b110;
13929 let Inst{13-13} = 0b0;
13930 let Inst{31-21} = 0b11101101011;
13931 let hasNewValue = 1;
13932 let opNewValue = 0;
13933 let prefersSlot3 = 1;
13934 let Defs = [USR_OVF];
13935 }
13936 def M2_cmpyrsc_s1 : HInst<
13937 (outs IntRegs:$Rd32),
13938 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13939 "$Rd32 = cmpy($Rs32,$Rt32*):<<1:rnd:sat",
13940 tc_c21d7447, TypeM>, Enc_5ab2be {
13941 let Inst{7-5} = 0b110;
13942 let Inst{13-13} = 0b0;
13943 let Inst{31-21} = 0b11101101111;
13944 let hasNewValue = 1;
13945 let opNewValue = 0;
13946 let prefersSlot3 = 1;
13947 let Defs = [USR_OVF];
13948 }
13949 def M2_cmpys_s0 : HInst<
13950 (outs DoubleRegs:$Rdd32),
13951 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13952 "$Rdd32 = cmpy($Rs32,$Rt32):sat",
13953 tc_c21d7447, TypeM>, Enc_be32a5 {
13954 let Inst{7-5} = 0b110;
13955 let Inst{13-13} = 0b0;
13956 let Inst{31-21} = 0b11100101000;
13957 let prefersSlot3 = 1;
13958 let Defs = [USR_OVF];
13959 }
13960 def M2_cmpys_s1 : HInst<
13961 (outs DoubleRegs:$Rdd32),
13962 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13963 "$Rdd32 = cmpy($Rs32,$Rt32):<<1:sat",
13964 tc_c21d7447, TypeM>, Enc_be32a5 {
13965 let Inst{7-5} = 0b110;
13966 let Inst{13-13} = 0b0;
13967 let Inst{31-21} = 0b11100101100;
13968 let prefersSlot3 = 1;
13969 let Defs = [USR_OVF];
13970 }
13971 def M2_cmpysc_s0 : HInst<
13972 (outs DoubleRegs:$Rdd32),
13973 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13974 "$Rdd32 = cmpy($Rs32,$Rt32*):sat",
13975 tc_c21d7447, TypeM>, Enc_be32a5 {
13976 let Inst{7-5} = 0b110;
13977 let Inst{13-13} = 0b0;
13978 let Inst{31-21} = 0b11100101010;
13979 let prefersSlot3 = 1;
13980 let Defs = [USR_OVF];
13981 }
13982 def M2_cmpysc_s1 : HInst<
13983 (outs DoubleRegs:$Rdd32),
13984 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13985 "$Rdd32 = cmpy($Rs32,$Rt32*):<<1:sat",
13986 tc_c21d7447, TypeM>, Enc_be32a5 {
13987 let Inst{7-5} = 0b110;
13988 let Inst{13-13} = 0b0;
13989 let Inst{31-21} = 0b11100101110;
13990 let prefersSlot3 = 1;
13991 let Defs = [USR_OVF];
13992 }
13993 def M2_cnacs_s0 : HInst<
13994 (outs DoubleRegs:$Rxx32),
13995 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13996 "$Rxx32 -= cmpy($Rs32,$Rt32):sat",
13997 tc_7f8ae742, TypeM>, Enc_61f0b0 {
13998 let Inst{7-5} = 0b111;
13999 let Inst{13-13} = 0b0;
14000 let Inst{31-21} = 0b11100111000;
14001 let prefersSlot3 = 1;
14002 let Defs = [USR_OVF];
14003 let Constraints = "$Rxx32 = $Rxx32in";
14004 }
14005 def M2_cnacs_s1 : HInst<
14006 (outs DoubleRegs:$Rxx32),
14007 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14008 "$Rxx32 -= cmpy($Rs32,$Rt32):<<1:sat",
14009 tc_7f8ae742, TypeM>, Enc_61f0b0 {
14010 let Inst{7-5} = 0b111;
14011 let Inst{13-13} = 0b0;
14012 let Inst{31-21} = 0b11100111100;
14013 let prefersSlot3 = 1;
14014 let Defs = [USR_OVF];
14015 let Constraints = "$Rxx32 = $Rxx32in";
14016 }
14017 def M2_cnacsc_s0 : HInst<
14018 (outs DoubleRegs:$Rxx32),
14019 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14020 "$Rxx32 -= cmpy($Rs32,$Rt32*):sat",
14021 tc_7f8ae742, TypeM>, Enc_61f0b0 {
14022 let Inst{7-5} = 0b111;
14023 let Inst{13-13} = 0b0;
14024 let Inst{31-21} = 0b11100111010;
14025 let prefersSlot3 = 1;
14026 let Defs = [USR_OVF];
14027 let Constraints = "$Rxx32 = $Rxx32in";
14028 }
14029 def M2_cnacsc_s1 : HInst<
14030 (outs DoubleRegs:$Rxx32),
14031 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14032 "$Rxx32 -= cmpy($Rs32,$Rt32*):<<1:sat",
14033 tc_7f8ae742, TypeM>, Enc_61f0b0 {
14034 let Inst{7-5} = 0b111;
14035 let Inst{13-13} = 0b0;
14036 let Inst{31-21} = 0b11100111110;
14037 let prefersSlot3 = 1;
14038 let Defs = [USR_OVF];
14039 let Constraints = "$Rxx32 = $Rxx32in";
14040 }
14041 def M2_dpmpyss_acc_s0 : HInst<
14042 (outs DoubleRegs:$Rxx32),
14043 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14044 "$Rxx32 += mpy($Rs32,$Rt32)",
14045 tc_7f8ae742, TypeM>, Enc_61f0b0 {
14046 let Inst{7-5} = 0b000;
14047 let Inst{13-13} = 0b0;
14048 let Inst{31-21} = 0b11100111000;
14049 let prefersSlot3 = 1;
14050 let Constraints = "$Rxx32 = $Rxx32in";
14051 }
14052 def M2_dpmpyss_nac_s0 : HInst<
14053 (outs DoubleRegs:$Rxx32),
14054 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14055 "$Rxx32 -= mpy($Rs32,$Rt32)",
14056 tc_7f8ae742, TypeM>, Enc_61f0b0 {
14057 let Inst{7-5} = 0b000;
14058 let Inst{13-13} = 0b0;
14059 let Inst{31-21} = 0b11100111001;
14060 let prefersSlot3 = 1;
14061 let Constraints = "$Rxx32 = $Rxx32in";
14062 }
14063 def M2_dpmpyss_rnd_s0 : HInst<
14064 (outs IntRegs:$Rd32),
14065 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14066 "$Rd32 = mpy($Rs32,$Rt32):rnd",
14067 tc_c21d7447, TypeM>, Enc_5ab2be {
14068 let Inst{7-5} = 0b001;
14069 let Inst{13-13} = 0b0;
14070 let Inst{31-21} = 0b11101101001;
14071 let hasNewValue = 1;
14072 let opNewValue = 0;
14073 let prefersSlot3 = 1;
14074 }
14075 def M2_dpmpyss_s0 : HInst<
14076 (outs DoubleRegs:$Rdd32),
14077 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14078 "$Rdd32 = mpy($Rs32,$Rt32)",
14079 tc_c21d7447, TypeM>, Enc_be32a5 {
14080 let Inst{7-5} = 0b000;
14081 let Inst{13-13} = 0b0;
14082 let Inst{31-21} = 0b11100101000;
14083 let prefersSlot3 = 1;
14084 }
14085 def M2_dpmpyuu_acc_s0 : HInst<
14086 (outs DoubleRegs:$Rxx32),
14087 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14088 "$Rxx32 += mpyu($Rs32,$Rt32)",
14089 tc_7f8ae742, TypeM>, Enc_61f0b0 {
14090 let Inst{7-5} = 0b000;
14091 let Inst{13-13} = 0b0;
14092 let Inst{31-21} = 0b11100111010;
14093 let prefersSlot3 = 1;
14094 let Constraints = "$Rxx32 = $Rxx32in";
14095 }
14096 def M2_dpmpyuu_nac_s0 : HInst<
14097 (outs DoubleRegs:$Rxx32),
14098 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14099 "$Rxx32 -= mpyu($Rs32,$Rt32)",
14100 tc_7f8ae742, TypeM>, Enc_61f0b0 {
14101 let Inst{7-5} = 0b000;
14102 let Inst{13-13} = 0b0;
14103 let Inst{31-21} = 0b11100111011;
14104 let prefersSlot3 = 1;
14105 let Constraints = "$Rxx32 = $Rxx32in";
14106 }
14107 def M2_dpmpyuu_s0 : HInst<
14108 (outs DoubleRegs:$Rdd32),
14109 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14110 "$Rdd32 = mpyu($Rs32,$Rt32)",
14111 tc_c21d7447, TypeM>, Enc_be32a5 {
14112 let Inst{7-5} = 0b000;
14113 let Inst{13-13} = 0b0;
14114 let Inst{31-21} = 0b11100101010;
14115 let prefersSlot3 = 1;
14116 }
14117 def M2_hmmpyh_rs1 : HInst<
14118 (outs IntRegs:$Rd32),
14119 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14120 "$Rd32 = mpy($Rs32,$Rt32.h):<<1:rnd:sat",
14121 tc_c21d7447, TypeM>, Enc_5ab2be {
14122 let Inst{7-5} = 0b100;
14123 let Inst{13-13} = 0b0;
14124 let Inst{31-21} = 0b11101101101;
14125 let hasNewValue = 1;
14126 let opNewValue = 0;
14127 let prefersSlot3 = 1;
14128 let Defs = [USR_OVF];
14129 }
14130 def M2_hmmpyh_s1 : HInst<
14131 (outs IntRegs:$Rd32),
14132 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14133 "$Rd32 = mpy($Rs32,$Rt32.h):<<1:sat",
14134 tc_c21d7447, TypeM>, Enc_5ab2be {
14135 let Inst{7-5} = 0b000;
14136 let Inst{13-13} = 0b0;
14137 let Inst{31-21} = 0b11101101101;
14138 let hasNewValue = 1;
14139 let opNewValue = 0;
14140 let prefersSlot3 = 1;
14141 let Defs = [USR_OVF];
14142 }
14143 def M2_hmmpyl_rs1 : HInst<
14144 (outs IntRegs:$Rd32),
14145 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14146 "$Rd32 = mpy($Rs32,$Rt32.l):<<1:rnd:sat",
14147 tc_c21d7447, TypeM>, Enc_5ab2be {
14148 let Inst{7-5} = 0b100;
14149 let Inst{13-13} = 0b0;
14150 let Inst{31-21} = 0b11101101111;
14151 let hasNewValue = 1;
14152 let opNewValue = 0;
14153 let prefersSlot3 = 1;
14154 let Defs = [USR_OVF];
14155 }
14156 def M2_hmmpyl_s1 : HInst<
14157 (outs IntRegs:$Rd32),
14158 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14159 "$Rd32 = mpy($Rs32,$Rt32.l):<<1:sat",
14160 tc_c21d7447, TypeM>, Enc_5ab2be {
14161 let Inst{7-5} = 0b001;
14162 let Inst{13-13} = 0b0;
14163 let Inst{31-21} = 0b11101101101;
14164 let hasNewValue = 1;
14165 let opNewValue = 0;
14166 let prefersSlot3 = 1;
14167 let Defs = [USR_OVF];
14168 }
14169 def M2_maci : HInst<
14170 (outs IntRegs:$Rx32),
14171 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14172 "$Rx32 += mpyi($Rs32,$Rt32)",
14173 tc_7f8ae742, TypeM>, Enc_2ae154, ImmRegRel {
14174 let Inst{7-5} = 0b000;
14175 let Inst{13-13} = 0b0;
14176 let Inst{31-21} = 0b11101111000;
14177 let hasNewValue = 1;
14178 let opNewValue = 0;
14179 let prefersSlot3 = 1;
14180 let CextOpcode = "M2_maci";
14181 let InputType = "reg";
14182 let Constraints = "$Rx32 = $Rx32in";
14183 }
14184 def M2_macsin : HInst<
14185 (outs IntRegs:$Rx32),
14186 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u32_0Imm:$Ii),
14187 "$Rx32 -= mpyi($Rs32,#$Ii)",
14188 tc_a154b476, TypeM>, Enc_c90aca {
14189 let Inst{13-13} = 0b0;
14190 let Inst{31-21} = 0b11100001100;
14191 let hasNewValue = 1;
14192 let opNewValue = 0;
14193 let prefersSlot3 = 1;
14194 let InputType = "imm";
14195 let isExtendable = 1;
14196 let opExtendable = 3;
14197 let isExtentSigned = 0;
14198 let opExtentBits = 8;
14199 let opExtentAlign = 0;
14200 let Constraints = "$Rx32 = $Rx32in";
14201 }
14202 def M2_macsip : HInst<
14203 (outs IntRegs:$Rx32),
14204 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u32_0Imm:$Ii),
14205 "$Rx32 += mpyi($Rs32,#$Ii)",
14206 tc_a154b476, TypeM>, Enc_c90aca, ImmRegRel {
14207 let Inst{13-13} = 0b0;
14208 let Inst{31-21} = 0b11100001000;
14209 let hasNewValue = 1;
14210 let opNewValue = 0;
14211 let prefersSlot3 = 1;
14212 let CextOpcode = "M2_maci";
14213 let InputType = "imm";
14214 let isExtendable = 1;
14215 let opExtendable = 3;
14216 let isExtentSigned = 0;
14217 let opExtentBits = 8;
14218 let opExtentAlign = 0;
14219 let Constraints = "$Rx32 = $Rx32in";
14220 }
14221 def M2_mmachs_rs0 : HInst<
14222 (outs DoubleRegs:$Rxx32),
14223 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14224 "$Rxx32 += vmpywoh($Rss32,$Rtt32):rnd:sat",
14225 tc_7f8ae742, TypeM>, Enc_88c16c {
14226 let Inst{7-5} = 0b111;
14227 let Inst{13-13} = 0b0;
14228 let Inst{31-21} = 0b11101010001;
14229 let prefersSlot3 = 1;
14230 let Defs = [USR_OVF];
14231 let Constraints = "$Rxx32 = $Rxx32in";
14232 }
14233 def M2_mmachs_rs1 : HInst<
14234 (outs DoubleRegs:$Rxx32),
14235 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14236 "$Rxx32 += vmpywoh($Rss32,$Rtt32):<<1:rnd:sat",
14237 tc_7f8ae742, TypeM>, Enc_88c16c {
14238 let Inst{7-5} = 0b111;
14239 let Inst{13-13} = 0b0;
14240 let Inst{31-21} = 0b11101010101;
14241 let prefersSlot3 = 1;
14242 let Defs = [USR_OVF];
14243 let Constraints = "$Rxx32 = $Rxx32in";
14244 }
14245 def M2_mmachs_s0 : HInst<
14246 (outs DoubleRegs:$Rxx32),
14247 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14248 "$Rxx32 += vmpywoh($Rss32,$Rtt32):sat",
14249 tc_7f8ae742, TypeM>, Enc_88c16c {
14250 let Inst{7-5} = 0b111;
14251 let Inst{13-13} = 0b0;
14252 let Inst{31-21} = 0b11101010000;
14253 let prefersSlot3 = 1;
14254 let Defs = [USR_OVF];
14255 let Constraints = "$Rxx32 = $Rxx32in";
14256 }
14257 def M2_mmachs_s1 : HInst<
14258 (outs DoubleRegs:$Rxx32),
14259 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14260 "$Rxx32 += vmpywoh($Rss32,$Rtt32):<<1:sat",
14261 tc_7f8ae742, TypeM>, Enc_88c16c {
14262 let Inst{7-5} = 0b111;
14263 let Inst{13-13} = 0b0;
14264 let Inst{31-21} = 0b11101010100;
14265 let prefersSlot3 = 1;
14266 let Defs = [USR_OVF];
14267 let Constraints = "$Rxx32 = $Rxx32in";
14268 }
14269 def M2_mmacls_rs0 : HInst<
14270 (outs DoubleRegs:$Rxx32),
14271 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14272 "$Rxx32 += vmpyweh($Rss32,$Rtt32):rnd:sat",
14273 tc_7f8ae742, TypeM>, Enc_88c16c {
14274 let Inst{7-5} = 0b101;
14275 let Inst{13-13} = 0b0;
14276 let Inst{31-21} = 0b11101010001;
14277 let prefersSlot3 = 1;
14278 let Defs = [USR_OVF];
14279 let Constraints = "$Rxx32 = $Rxx32in";
14280 }
14281 def M2_mmacls_rs1 : HInst<
14282 (outs DoubleRegs:$Rxx32),
14283 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14284 "$Rxx32 += vmpyweh($Rss32,$Rtt32):<<1:rnd:sat",
14285 tc_7f8ae742, TypeM>, Enc_88c16c {
14286 let Inst{7-5} = 0b101;
14287 let Inst{13-13} = 0b0;
14288 let Inst{31-21} = 0b11101010101;
14289 let prefersSlot3 = 1;
14290 let Defs = [USR_OVF];
14291 let Constraints = "$Rxx32 = $Rxx32in";
14292 }
14293 def M2_mmacls_s0 : HInst<
14294 (outs DoubleRegs:$Rxx32),
14295 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14296 "$Rxx32 += vmpyweh($Rss32,$Rtt32):sat",
14297 tc_7f8ae742, TypeM>, Enc_88c16c {
14298 let Inst{7-5} = 0b101;
14299 let Inst{13-13} = 0b0;
14300 let Inst{31-21} = 0b11101010000;
14301 let prefersSlot3 = 1;
14302 let Defs = [USR_OVF];
14303 let Constraints = "$Rxx32 = $Rxx32in";
14304 }
14305 def M2_mmacls_s1 : HInst<
14306 (outs DoubleRegs:$Rxx32),
14307 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14308 "$Rxx32 += vmpyweh($Rss32,$Rtt32):<<1:sat",
14309 tc_7f8ae742, TypeM>, Enc_88c16c {
14310 let Inst{7-5} = 0b101;
14311 let Inst{13-13} = 0b0;
14312 let Inst{31-21} = 0b11101010100;
14313 let prefersSlot3 = 1;
14314 let Defs = [USR_OVF];
14315 let Constraints = "$Rxx32 = $Rxx32in";
14316 }
14317 def M2_mmacuhs_rs0 : HInst<
14318 (outs DoubleRegs:$Rxx32),
14319 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14320 "$Rxx32 += vmpywouh($Rss32,$Rtt32):rnd:sat",
14321 tc_7f8ae742, TypeM>, Enc_88c16c {
14322 let Inst{7-5} = 0b111;
14323 let Inst{13-13} = 0b0;
14324 let Inst{31-21} = 0b11101010011;
14325 let prefersSlot3 = 1;
14326 let Defs = [USR_OVF];
14327 let Constraints = "$Rxx32 = $Rxx32in";
14328 }
14329 def M2_mmacuhs_rs1 : HInst<
14330 (outs DoubleRegs:$Rxx32),
14331 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14332 "$Rxx32 += vmpywouh($Rss32,$Rtt32):<<1:rnd:sat",
14333 tc_7f8ae742, TypeM>, Enc_88c16c {
14334 let Inst{7-5} = 0b111;
14335 let Inst{13-13} = 0b0;
14336 let Inst{31-21} = 0b11101010111;
14337 let prefersSlot3 = 1;
14338 let Defs = [USR_OVF];
14339 let Constraints = "$Rxx32 = $Rxx32in";
14340 }
14341 def M2_mmacuhs_s0 : HInst<
14342 (outs DoubleRegs:$Rxx32),
14343 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14344 "$Rxx32 += vmpywouh($Rss32,$Rtt32):sat",
14345 tc_7f8ae742, TypeM>, Enc_88c16c {
14346 let Inst{7-5} = 0b111;
14347 let Inst{13-13} = 0b0;
14348 let Inst{31-21} = 0b11101010010;
14349 let prefersSlot3 = 1;
14350 let Defs = [USR_OVF];
14351 let Constraints = "$Rxx32 = $Rxx32in";
14352 }
14353 def M2_mmacuhs_s1 : HInst<
14354 (outs DoubleRegs:$Rxx32),
14355 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14356 "$Rxx32 += vmpywouh($Rss32,$Rtt32):<<1:sat",
14357 tc_7f8ae742, TypeM>, Enc_88c16c {
14358 let Inst{7-5} = 0b111;
14359 let Inst{13-13} = 0b0;
14360 let Inst{31-21} = 0b11101010110;
14361 let prefersSlot3 = 1;
14362 let Defs = [USR_OVF];
14363 let Constraints = "$Rxx32 = $Rxx32in";
14364 }
14365 def M2_mmaculs_rs0 : HInst<
14366 (outs DoubleRegs:$Rxx32),
14367 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14368 "$Rxx32 += vmpyweuh($Rss32,$Rtt32):rnd:sat",
14369 tc_7f8ae742, TypeM>, Enc_88c16c {
14370 let Inst{7-5} = 0b101;
14371 let Inst{13-13} = 0b0;
14372 let Inst{31-21} = 0b11101010011;
14373 let prefersSlot3 = 1;
14374 let Defs = [USR_OVF];
14375 let Constraints = "$Rxx32 = $Rxx32in";
14376 }
14377 def M2_mmaculs_rs1 : HInst<
14378 (outs DoubleRegs:$Rxx32),
14379 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14380 "$Rxx32 += vmpyweuh($Rss32,$Rtt32):<<1:rnd:sat",
14381 tc_7f8ae742, TypeM>, Enc_88c16c {
14382 let Inst{7-5} = 0b101;
14383 let Inst{13-13} = 0b0;
14384 let Inst{31-21} = 0b11101010111;
14385 let prefersSlot3 = 1;
14386 let Defs = [USR_OVF];
14387 let Constraints = "$Rxx32 = $Rxx32in";
14388 }
14389 def M2_mmaculs_s0 : HInst<
14390 (outs DoubleRegs:$Rxx32),
14391 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14392 "$Rxx32 += vmpyweuh($Rss32,$Rtt32):sat",
14393 tc_7f8ae742, TypeM>, Enc_88c16c {
14394 let Inst{7-5} = 0b101;
14395 let Inst{13-13} = 0b0;
14396 let Inst{31-21} = 0b11101010010;
14397 let prefersSlot3 = 1;
14398 let Defs = [USR_OVF];
14399 let Constraints = "$Rxx32 = $Rxx32in";
14400 }
14401 def M2_mmaculs_s1 : HInst<
14402 (outs DoubleRegs:$Rxx32),
14403 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14404 "$Rxx32 += vmpyweuh($Rss32,$Rtt32):<<1:sat",
14405 tc_7f8ae742, TypeM>, Enc_88c16c {
14406 let Inst{7-5} = 0b101;
14407 let Inst{13-13} = 0b0;
14408 let Inst{31-21} = 0b11101010110;
14409 let prefersSlot3 = 1;
14410 let Defs = [USR_OVF];
14411 let Constraints = "$Rxx32 = $Rxx32in";
14412 }
14413 def M2_mmpyh_rs0 : HInst<
14414 (outs DoubleRegs:$Rdd32),
14415 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14416 "$Rdd32 = vmpywoh($Rss32,$Rtt32):rnd:sat",
14417 tc_c21d7447, TypeM>, Enc_a56825 {
14418 let Inst{7-5} = 0b111;
14419 let Inst{13-13} = 0b0;
14420 let Inst{31-21} = 0b11101000001;
14421 let prefersSlot3 = 1;
14422 let Defs = [USR_OVF];
14423 }
14424 def M2_mmpyh_rs1 : HInst<
14425 (outs DoubleRegs:$Rdd32),
14426 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14427 "$Rdd32 = vmpywoh($Rss32,$Rtt32):<<1:rnd:sat",
14428 tc_c21d7447, TypeM>, Enc_a56825 {
14429 let Inst{7-5} = 0b111;
14430 let Inst{13-13} = 0b0;
14431 let Inst{31-21} = 0b11101000101;
14432 let prefersSlot3 = 1;
14433 let Defs = [USR_OVF];
14434 }
14435 def M2_mmpyh_s0 : HInst<
14436 (outs DoubleRegs:$Rdd32),
14437 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14438 "$Rdd32 = vmpywoh($Rss32,$Rtt32):sat",
14439 tc_c21d7447, TypeM>, Enc_a56825 {
14440 let Inst{7-5} = 0b111;
14441 let Inst{13-13} = 0b0;
14442 let Inst{31-21} = 0b11101000000;
14443 let prefersSlot3 = 1;
14444 let Defs = [USR_OVF];
14445 }
14446 def M2_mmpyh_s1 : HInst<
14447 (outs DoubleRegs:$Rdd32),
14448 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14449 "$Rdd32 = vmpywoh($Rss32,$Rtt32):<<1:sat",
14450 tc_c21d7447, TypeM>, Enc_a56825 {
14451 let Inst{7-5} = 0b111;
14452 let Inst{13-13} = 0b0;
14453 let Inst{31-21} = 0b11101000100;
14454 let prefersSlot3 = 1;
14455 let Defs = [USR_OVF];
14456 }
14457 def M2_mmpyl_rs0 : HInst<
14458 (outs DoubleRegs:$Rdd32),
14459 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14460 "$Rdd32 = vmpyweh($Rss32,$Rtt32):rnd:sat",
14461 tc_c21d7447, TypeM>, Enc_a56825 {
14462 let Inst{7-5} = 0b101;
14463 let Inst{13-13} = 0b0;
14464 let Inst{31-21} = 0b11101000001;
14465 let prefersSlot3 = 1;
14466 let Defs = [USR_OVF];
14467 }
14468 def M2_mmpyl_rs1 : HInst<
14469 (outs DoubleRegs:$Rdd32),
14470 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14471 "$Rdd32 = vmpyweh($Rss32,$Rtt32):<<1:rnd:sat",
14472 tc_c21d7447, TypeM>, Enc_a56825 {
14473 let Inst{7-5} = 0b101;
14474 let Inst{13-13} = 0b0;
14475 let Inst{31-21} = 0b11101000101;
14476 let prefersSlot3 = 1;
14477 let Defs = [USR_OVF];
14478 }
14479 def M2_mmpyl_s0 : HInst<
14480 (outs DoubleRegs:$Rdd32),
14481 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14482 "$Rdd32 = vmpyweh($Rss32,$Rtt32):sat",
14483 tc_c21d7447, TypeM>, Enc_a56825 {
14484 let Inst{7-5} = 0b101;
14485 let Inst{13-13} = 0b0;
14486 let Inst{31-21} = 0b11101000000;
14487 let prefersSlot3 = 1;
14488 let Defs = [USR_OVF];
14489 }
14490 def M2_mmpyl_s1 : HInst<
14491 (outs DoubleRegs:$Rdd32),
14492 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14493 "$Rdd32 = vmpyweh($Rss32,$Rtt32):<<1:sat",
14494 tc_c21d7447, TypeM>, Enc_a56825 {
14495 let Inst{7-5} = 0b101;
14496 let Inst{13-13} = 0b0;
14497 let Inst{31-21} = 0b11101000100;
14498 let prefersSlot3 = 1;
14499 let Defs = [USR_OVF];
14500 }
14501 def M2_mmpyuh_rs0 : HInst<
14502 (outs DoubleRegs:$Rdd32),
14503 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14504 "$Rdd32 = vmpywouh($Rss32,$Rtt32):rnd:sat",
14505 tc_c21d7447, TypeM>, Enc_a56825 {
14506 let Inst{7-5} = 0b111;
14507 let Inst{13-13} = 0b0;
14508 let Inst{31-21} = 0b11101000011;
14509 let prefersSlot3 = 1;
14510 let Defs = [USR_OVF];
14511 }
14512 def M2_mmpyuh_rs1 : HInst<
14513 (outs DoubleRegs:$Rdd32),
14514 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14515 "$Rdd32 = vmpywouh($Rss32,$Rtt32):<<1:rnd:sat",
14516 tc_c21d7447, TypeM>, Enc_a56825 {
14517 let Inst{7-5} = 0b111;
14518 let Inst{13-13} = 0b0;
14519 let Inst{31-21} = 0b11101000111;
14520 let prefersSlot3 = 1;
14521 let Defs = [USR_OVF];
14522 }
14523 def M2_mmpyuh_s0 : HInst<
14524 (outs DoubleRegs:$Rdd32),
14525 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14526 "$Rdd32 = vmpywouh($Rss32,$Rtt32):sat",
14527 tc_c21d7447, TypeM>, Enc_a56825 {
14528 let Inst{7-5} = 0b111;
14529 let Inst{13-13} = 0b0;
14530 let Inst{31-21} = 0b11101000010;
14531 let prefersSlot3 = 1;
14532 let Defs = [USR_OVF];
14533 }
14534 def M2_mmpyuh_s1 : HInst<
14535 (outs DoubleRegs:$Rdd32),
14536 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14537 "$Rdd32 = vmpywouh($Rss32,$Rtt32):<<1:sat",
14538 tc_c21d7447, TypeM>, Enc_a56825 {
14539 let Inst{7-5} = 0b111;
14540 let Inst{13-13} = 0b0;
14541 let Inst{31-21} = 0b11101000110;
14542 let prefersSlot3 = 1;
14543 let Defs = [USR_OVF];
14544 }
14545 def M2_mmpyul_rs0 : HInst<
14546 (outs DoubleRegs:$Rdd32),
14547 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14548 "$Rdd32 = vmpyweuh($Rss32,$Rtt32):rnd:sat",
14549 tc_c21d7447, TypeM>, Enc_a56825 {
14550 let Inst{7-5} = 0b101;
14551 let Inst{13-13} = 0b0;
14552 let Inst{31-21} = 0b11101000011;
14553 let prefersSlot3 = 1;
14554 let Defs = [USR_OVF];
14555 }
14556 def M2_mmpyul_rs1 : HInst<
14557 (outs DoubleRegs:$Rdd32),
14558 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14559 "$Rdd32 = vmpyweuh($Rss32,$Rtt32):<<1:rnd:sat",
14560 tc_c21d7447, TypeM>, Enc_a56825 {
14561 let Inst{7-5} = 0b101;
14562 let Inst{13-13} = 0b0;
14563 let Inst{31-21} = 0b11101000111;
14564 let prefersSlot3 = 1;
14565 let Defs = [USR_OVF];
14566 }
14567 def M2_mmpyul_s0 : HInst<
14568 (outs DoubleRegs:$Rdd32),
14569 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14570 "$Rdd32 = vmpyweuh($Rss32,$Rtt32):sat",
14571 tc_c21d7447, TypeM>, Enc_a56825 {
14572 let Inst{7-5} = 0b101;
14573 let Inst{13-13} = 0b0;
14574 let Inst{31-21} = 0b11101000010;
14575 let prefersSlot3 = 1;
14576 let Defs = [USR_OVF];
14577 }
14578 def M2_mmpyul_s1 : HInst<
14579 (outs DoubleRegs:$Rdd32),
14580 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14581 "$Rdd32 = vmpyweuh($Rss32,$Rtt32):<<1:sat",
14582 tc_c21d7447, TypeM>, Enc_a56825 {
14583 let Inst{7-5} = 0b101;
14584 let Inst{13-13} = 0b0;
14585 let Inst{31-21} = 0b11101000110;
14586 let prefersSlot3 = 1;
14587 let Defs = [USR_OVF];
14588 }
14589 def M2_mnaci : HInst<
14590 (outs IntRegs:$Rx32),
14591 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14592 "$Rx32 -= mpyi($Rs32,$Rt32)",
14593 tc_01e1be3b, TypeM>, Enc_2ae154, Requires<[HasV66]> {
14594 let Inst{7-5} = 0b000;
14595 let Inst{13-13} = 0b0;
14596 let Inst{31-21} = 0b11101111100;
14597 let hasNewValue = 1;
14598 let opNewValue = 0;
14599 let prefersSlot3 = 1;
14600 let Constraints = "$Rx32 = $Rx32in";
14601 }
14602 def M2_mpy_acc_hh_s0 : HInst<
14603 (outs IntRegs:$Rx32),
14604 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14605 "$Rx32 += mpy($Rs32.h,$Rt32.h)",
14606 tc_7f8ae742, TypeM>, Enc_2ae154 {
14607 let Inst{7-5} = 0b011;
14608 let Inst{13-13} = 0b0;
14609 let Inst{31-21} = 0b11101110000;
14610 let hasNewValue = 1;
14611 let opNewValue = 0;
14612 let prefersSlot3 = 1;
14613 let Constraints = "$Rx32 = $Rx32in";
14614 }
14615 def M2_mpy_acc_hh_s1 : HInst<
14616 (outs IntRegs:$Rx32),
14617 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14618 "$Rx32 += mpy($Rs32.h,$Rt32.h):<<1",
14619 tc_7f8ae742, TypeM>, Enc_2ae154 {
14620 let Inst{7-5} = 0b011;
14621 let Inst{13-13} = 0b0;
14622 let Inst{31-21} = 0b11101110100;
14623 let hasNewValue = 1;
14624 let opNewValue = 0;
14625 let prefersSlot3 = 1;
14626 let Constraints = "$Rx32 = $Rx32in";
14627 }
14628 def M2_mpy_acc_hl_s0 : HInst<
14629 (outs IntRegs:$Rx32),
14630 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14631 "$Rx32 += mpy($Rs32.h,$Rt32.l)",
14632 tc_7f8ae742, TypeM>, Enc_2ae154 {
14633 let Inst{7-5} = 0b010;
14634 let Inst{13-13} = 0b0;
14635 let Inst{31-21} = 0b11101110000;
14636 let hasNewValue = 1;
14637 let opNewValue = 0;
14638 let prefersSlot3 = 1;
14639 let Constraints = "$Rx32 = $Rx32in";
14640 }
14641 def M2_mpy_acc_hl_s1 : HInst<
14642 (outs IntRegs:$Rx32),
14643 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14644 "$Rx32 += mpy($Rs32.h,$Rt32.l):<<1",
14645 tc_7f8ae742, TypeM>, Enc_2ae154 {
14646 let Inst{7-5} = 0b010;
14647 let Inst{13-13} = 0b0;
14648 let Inst{31-21} = 0b11101110100;
14649 let hasNewValue = 1;
14650 let opNewValue = 0;
14651 let prefersSlot3 = 1;
14652 let Constraints = "$Rx32 = $Rx32in";
14653 }
14654 def M2_mpy_acc_lh_s0 : HInst<
14655 (outs IntRegs:$Rx32),
14656 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14657 "$Rx32 += mpy($Rs32.l,$Rt32.h)",
14658 tc_7f8ae742, TypeM>, Enc_2ae154 {
14659 let Inst{7-5} = 0b001;
14660 let Inst{13-13} = 0b0;
14661 let Inst{31-21} = 0b11101110000;
14662 let hasNewValue = 1;
14663 let opNewValue = 0;
14664 let prefersSlot3 = 1;
14665 let Constraints = "$Rx32 = $Rx32in";
14666 }
14667 def M2_mpy_acc_lh_s1 : HInst<
14668 (outs IntRegs:$Rx32),
14669 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14670 "$Rx32 += mpy($Rs32.l,$Rt32.h):<<1",
14671 tc_7f8ae742, TypeM>, Enc_2ae154 {
14672 let Inst{7-5} = 0b001;
14673 let Inst{13-13} = 0b0;
14674 let Inst{31-21} = 0b11101110100;
14675 let hasNewValue = 1;
14676 let opNewValue = 0;
14677 let prefersSlot3 = 1;
14678 let Constraints = "$Rx32 = $Rx32in";
14679 }
14680 def M2_mpy_acc_ll_s0 : HInst<
14681 (outs IntRegs:$Rx32),
14682 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14683 "$Rx32 += mpy($Rs32.l,$Rt32.l)",
14684 tc_7f8ae742, TypeM>, Enc_2ae154 {
14685 let Inst{7-5} = 0b000;
14686 let Inst{13-13} = 0b0;
14687 let Inst{31-21} = 0b11101110000;
14688 let hasNewValue = 1;
14689 let opNewValue = 0;
14690 let prefersSlot3 = 1;
14691 let Constraints = "$Rx32 = $Rx32in";
14692 }
14693 def M2_mpy_acc_ll_s1 : HInst<
14694 (outs IntRegs:$Rx32),
14695 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14696 "$Rx32 += mpy($Rs32.l,$Rt32.l):<<1",
14697 tc_7f8ae742, TypeM>, Enc_2ae154 {
14698 let Inst{7-5} = 0b000;
14699 let Inst{13-13} = 0b0;
14700 let Inst{31-21} = 0b11101110100;
14701 let hasNewValue = 1;
14702 let opNewValue = 0;
14703 let prefersSlot3 = 1;
14704 let Constraints = "$Rx32 = $Rx32in";
14705 }
14706 def M2_mpy_acc_sat_hh_s0 : HInst<
14707 (outs IntRegs:$Rx32),
14708 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14709 "$Rx32 += mpy($Rs32.h,$Rt32.h):sat",
14710 tc_7f8ae742, TypeM>, Enc_2ae154 {
14711 let Inst{7-5} = 0b111;
14712 let Inst{13-13} = 0b0;
14713 let Inst{31-21} = 0b11101110000;
14714 let hasNewValue = 1;
14715 let opNewValue = 0;
14716 let prefersSlot3 = 1;
14717 let Defs = [USR_OVF];
14718 let Constraints = "$Rx32 = $Rx32in";
14719 }
14720 def M2_mpy_acc_sat_hh_s1 : HInst<
14721 (outs IntRegs:$Rx32),
14722 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14723 "$Rx32 += mpy($Rs32.h,$Rt32.h):<<1:sat",
14724 tc_7f8ae742, TypeM>, Enc_2ae154 {
14725 let Inst{7-5} = 0b111;
14726 let Inst{13-13} = 0b0;
14727 let Inst{31-21} = 0b11101110100;
14728 let hasNewValue = 1;
14729 let opNewValue = 0;
14730 let prefersSlot3 = 1;
14731 let Defs = [USR_OVF];
14732 let Constraints = "$Rx32 = $Rx32in";
14733 }
14734 def M2_mpy_acc_sat_hl_s0 : HInst<
14735 (outs IntRegs:$Rx32),
14736 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14737 "$Rx32 += mpy($Rs32.h,$Rt32.l):sat",
14738 tc_7f8ae742, TypeM>, Enc_2ae154 {
14739 let Inst{7-5} = 0b110;
14740 let Inst{13-13} = 0b0;
14741 let Inst{31-21} = 0b11101110000;
14742 let hasNewValue = 1;
14743 let opNewValue = 0;
14744 let prefersSlot3 = 1;
14745 let Defs = [USR_OVF];
14746 let Constraints = "$Rx32 = $Rx32in";
14747 }
14748 def M2_mpy_acc_sat_hl_s1 : HInst<
14749 (outs IntRegs:$Rx32),
14750 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14751 "$Rx32 += mpy($Rs32.h,$Rt32.l):<<1:sat",
14752 tc_7f8ae742, TypeM>, Enc_2ae154 {
14753 let Inst{7-5} = 0b110;
14754 let Inst{13-13} = 0b0;
14755 let Inst{31-21} = 0b11101110100;
14756 let hasNewValue = 1;
14757 let opNewValue = 0;
14758 let prefersSlot3 = 1;
14759 let Defs = [USR_OVF];
14760 let Constraints = "$Rx32 = $Rx32in";
14761 }
14762 def M2_mpy_acc_sat_lh_s0 : HInst<
14763 (outs IntRegs:$Rx32),
14764 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14765 "$Rx32 += mpy($Rs32.l,$Rt32.h):sat",
14766 tc_7f8ae742, TypeM>, Enc_2ae154 {
14767 let Inst{7-5} = 0b101;
14768 let Inst{13-13} = 0b0;
14769 let Inst{31-21} = 0b11101110000;
14770 let hasNewValue = 1;
14771 let opNewValue = 0;
14772 let prefersSlot3 = 1;
14773 let Defs = [USR_OVF];
14774 let Constraints = "$Rx32 = $Rx32in";
14775 }
14776 def M2_mpy_acc_sat_lh_s1 : HInst<
14777 (outs IntRegs:$Rx32),
14778 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14779 "$Rx32 += mpy($Rs32.l,$Rt32.h):<<1:sat",
14780 tc_7f8ae742, TypeM>, Enc_2ae154 {
14781 let Inst{7-5} = 0b101;
14782 let Inst{13-13} = 0b0;
14783 let Inst{31-21} = 0b11101110100;
14784 let hasNewValue = 1;
14785 let opNewValue = 0;
14786 let prefersSlot3 = 1;
14787 let Defs = [USR_OVF];
14788 let Constraints = "$Rx32 = $Rx32in";
14789 }
14790 def M2_mpy_acc_sat_ll_s0 : HInst<
14791 (outs IntRegs:$Rx32),
14792 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14793 "$Rx32 += mpy($Rs32.l,$Rt32.l):sat",
14794 tc_7f8ae742, TypeM>, Enc_2ae154 {
14795 let Inst{7-5} = 0b100;
14796 let Inst{13-13} = 0b0;
14797 let Inst{31-21} = 0b11101110000;
14798 let hasNewValue = 1;
14799 let opNewValue = 0;
14800 let prefersSlot3 = 1;
14801 let Defs = [USR_OVF];
14802 let Constraints = "$Rx32 = $Rx32in";
14803 }
14804 def M2_mpy_acc_sat_ll_s1 : HInst<
14805 (outs IntRegs:$Rx32),
14806 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14807 "$Rx32 += mpy($Rs32.l,$Rt32.l):<<1:sat",
14808 tc_7f8ae742, TypeM>, Enc_2ae154 {
14809 let Inst{7-5} = 0b100;
14810 let Inst{13-13} = 0b0;
14811 let Inst{31-21} = 0b11101110100;
14812 let hasNewValue = 1;
14813 let opNewValue = 0;
14814 let prefersSlot3 = 1;
14815 let Defs = [USR_OVF];
14816 let Constraints = "$Rx32 = $Rx32in";
14817 }
14818 def M2_mpy_hh_s0 : HInst<
14819 (outs IntRegs:$Rd32),
14820 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14821 "$Rd32 = mpy($Rs32.h,$Rt32.h)",
14822 tc_c21d7447, TypeM>, Enc_5ab2be {
14823 let Inst{7-5} = 0b011;
14824 let Inst{13-13} = 0b0;
14825 let Inst{31-21} = 0b11101100000;
14826 let hasNewValue = 1;
14827 let opNewValue = 0;
14828 let prefersSlot3 = 1;
14829 }
14830 def M2_mpy_hh_s1 : HInst<
14831 (outs IntRegs:$Rd32),
14832 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14833 "$Rd32 = mpy($Rs32.h,$Rt32.h):<<1",
14834 tc_c21d7447, TypeM>, Enc_5ab2be {
14835 let Inst{7-5} = 0b011;
14836 let Inst{13-13} = 0b0;
14837 let Inst{31-21} = 0b11101100100;
14838 let hasNewValue = 1;
14839 let opNewValue = 0;
14840 let prefersSlot3 = 1;
14841 }
14842 def M2_mpy_hl_s0 : HInst<
14843 (outs IntRegs:$Rd32),
14844 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14845 "$Rd32 = mpy($Rs32.h,$Rt32.l)",
14846 tc_c21d7447, TypeM>, Enc_5ab2be {
14847 let Inst{7-5} = 0b010;
14848 let Inst{13-13} = 0b0;
14849 let Inst{31-21} = 0b11101100000;
14850 let hasNewValue = 1;
14851 let opNewValue = 0;
14852 let prefersSlot3 = 1;
14853 }
14854 def M2_mpy_hl_s1 : HInst<
14855 (outs IntRegs:$Rd32),
14856 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14857 "$Rd32 = mpy($Rs32.h,$Rt32.l):<<1",
14858 tc_c21d7447, TypeM>, Enc_5ab2be {
14859 let Inst{7-5} = 0b010;
14860 let Inst{13-13} = 0b0;
14861 let Inst{31-21} = 0b11101100100;
14862 let hasNewValue = 1;
14863 let opNewValue = 0;
14864 let prefersSlot3 = 1;
14865 }
14866 def M2_mpy_lh_s0 : HInst<
14867 (outs IntRegs:$Rd32),
14868 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14869 "$Rd32 = mpy($Rs32.l,$Rt32.h)",
14870 tc_c21d7447, TypeM>, Enc_5ab2be {
14871 let Inst{7-5} = 0b001;
14872 let Inst{13-13} = 0b0;
14873 let Inst{31-21} = 0b11101100000;
14874 let hasNewValue = 1;
14875 let opNewValue = 0;
14876 let prefersSlot3 = 1;
14877 }
14878 def M2_mpy_lh_s1 : HInst<
14879 (outs IntRegs:$Rd32),
14880 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14881 "$Rd32 = mpy($Rs32.l,$Rt32.h):<<1",
14882 tc_c21d7447, TypeM>, Enc_5ab2be {
14883 let Inst{7-5} = 0b001;
14884 let Inst{13-13} = 0b0;
14885 let Inst{31-21} = 0b11101100100;
14886 let hasNewValue = 1;
14887 let opNewValue = 0;
14888 let prefersSlot3 = 1;
14889 }
14890 def M2_mpy_ll_s0 : HInst<
14891 (outs IntRegs:$Rd32),
14892 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14893 "$Rd32 = mpy($Rs32.l,$Rt32.l)",
14894 tc_c21d7447, TypeM>, Enc_5ab2be {
14895 let Inst{7-5} = 0b000;
14896 let Inst{13-13} = 0b0;
14897 let Inst{31-21} = 0b11101100000;
14898 let hasNewValue = 1;
14899 let opNewValue = 0;
14900 let prefersSlot3 = 1;
14901 }
14902 def M2_mpy_ll_s1 : HInst<
14903 (outs IntRegs:$Rd32),
14904 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14905 "$Rd32 = mpy($Rs32.l,$Rt32.l):<<1",
14906 tc_c21d7447, TypeM>, Enc_5ab2be {
14907 let Inst{7-5} = 0b000;
14908 let Inst{13-13} = 0b0;
14909 let Inst{31-21} = 0b11101100100;
14910 let hasNewValue = 1;
14911 let opNewValue = 0;
14912 let prefersSlot3 = 1;
14913 }
14914 def M2_mpy_nac_hh_s0 : HInst<
14915 (outs IntRegs:$Rx32),
14916 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14917 "$Rx32 -= mpy($Rs32.h,$Rt32.h)",
14918 tc_7f8ae742, TypeM>, Enc_2ae154 {
14919 let Inst{7-5} = 0b011;
14920 let Inst{13-13} = 0b0;
14921 let Inst{31-21} = 0b11101110001;
14922 let hasNewValue = 1;
14923 let opNewValue = 0;
14924 let prefersSlot3 = 1;
14925 let Constraints = "$Rx32 = $Rx32in";
14926 }
14927 def M2_mpy_nac_hh_s1 : HInst<
14928 (outs IntRegs:$Rx32),
14929 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14930 "$Rx32 -= mpy($Rs32.h,$Rt32.h):<<1",
14931 tc_7f8ae742, TypeM>, Enc_2ae154 {
14932 let Inst{7-5} = 0b011;
14933 let Inst{13-13} = 0b0;
14934 let Inst{31-21} = 0b11101110101;
14935 let hasNewValue = 1;
14936 let opNewValue = 0;
14937 let prefersSlot3 = 1;
14938 let Constraints = "$Rx32 = $Rx32in";
14939 }
14940 def M2_mpy_nac_hl_s0 : HInst<
14941 (outs IntRegs:$Rx32),
14942 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14943 "$Rx32 -= mpy($Rs32.h,$Rt32.l)",
14944 tc_7f8ae742, TypeM>, Enc_2ae154 {
14945 let Inst{7-5} = 0b010;
14946 let Inst{13-13} = 0b0;
14947 let Inst{31-21} = 0b11101110001;
14948 let hasNewValue = 1;
14949 let opNewValue = 0;
14950 let prefersSlot3 = 1;
14951 let Constraints = "$Rx32 = $Rx32in";
14952 }
14953 def M2_mpy_nac_hl_s1 : HInst<
14954 (outs IntRegs:$Rx32),
14955 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14956 "$Rx32 -= mpy($Rs32.h,$Rt32.l):<<1",
14957 tc_7f8ae742, TypeM>, Enc_2ae154 {
14958 let Inst{7-5} = 0b010;
14959 let Inst{13-13} = 0b0;
14960 let Inst{31-21} = 0b11101110101;
14961 let hasNewValue = 1;
14962 let opNewValue = 0;
14963 let prefersSlot3 = 1;
14964 let Constraints = "$Rx32 = $Rx32in";
14965 }
14966 def M2_mpy_nac_lh_s0 : HInst<
14967 (outs IntRegs:$Rx32),
14968 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14969 "$Rx32 -= mpy($Rs32.l,$Rt32.h)",
14970 tc_7f8ae742, TypeM>, Enc_2ae154 {
14971 let Inst{7-5} = 0b001;
14972 let Inst{13-13} = 0b0;
14973 let Inst{31-21} = 0b11101110001;
14974 let hasNewValue = 1;
14975 let opNewValue = 0;
14976 let prefersSlot3 = 1;
14977 let Constraints = "$Rx32 = $Rx32in";
14978 }
14979 def M2_mpy_nac_lh_s1 : HInst<
14980 (outs IntRegs:$Rx32),
14981 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14982 "$Rx32 -= mpy($Rs32.l,$Rt32.h):<<1",
14983 tc_7f8ae742, TypeM>, Enc_2ae154 {
14984 let Inst{7-5} = 0b001;
14985 let Inst{13-13} = 0b0;
14986 let Inst{31-21} = 0b11101110101;
14987 let hasNewValue = 1;
14988 let opNewValue = 0;
14989 let prefersSlot3 = 1;
14990 let Constraints = "$Rx32 = $Rx32in";
14991 }
14992 def M2_mpy_nac_ll_s0 : HInst<
14993 (outs IntRegs:$Rx32),
14994 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14995 "$Rx32 -= mpy($Rs32.l,$Rt32.l)",
14996 tc_7f8ae742, TypeM>, Enc_2ae154 {
14997 let Inst{7-5} = 0b000;
14998 let Inst{13-13} = 0b0;
14999 let Inst{31-21} = 0b11101110001;
15000 let hasNewValue = 1;
15001 let opNewValue = 0;
15002 let prefersSlot3 = 1;
15003 let Constraints = "$Rx32 = $Rx32in";
15004 }
15005 def M2_mpy_nac_ll_s1 : HInst<
15006 (outs IntRegs:$Rx32),
15007 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15008 "$Rx32 -= mpy($Rs32.l,$Rt32.l):<<1",
15009 tc_7f8ae742, TypeM>, Enc_2ae154 {
15010 let Inst{7-5} = 0b000;
15011 let Inst{13-13} = 0b0;
15012 let Inst{31-21} = 0b11101110101;
15013 let hasNewValue = 1;
15014 let opNewValue = 0;
15015 let prefersSlot3 = 1;
15016 let Constraints = "$Rx32 = $Rx32in";
15017 }
15018 def M2_mpy_nac_sat_hh_s0 : HInst<
15019 (outs IntRegs:$Rx32),
15020 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15021 "$Rx32 -= mpy($Rs32.h,$Rt32.h):sat",
15022 tc_7f8ae742, TypeM>, Enc_2ae154 {
15023 let Inst{7-5} = 0b111;
15024 let Inst{13-13} = 0b0;
15025 let Inst{31-21} = 0b11101110001;
15026 let hasNewValue = 1;
15027 let opNewValue = 0;
15028 let prefersSlot3 = 1;
15029 let Defs = [USR_OVF];
15030 let Constraints = "$Rx32 = $Rx32in";
15031 }
15032 def M2_mpy_nac_sat_hh_s1 : HInst<
15033 (outs IntRegs:$Rx32),
15034 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15035 "$Rx32 -= mpy($Rs32.h,$Rt32.h):<<1:sat",
15036 tc_7f8ae742, TypeM>, Enc_2ae154 {
15037 let Inst{7-5} = 0b111;
15038 let Inst{13-13} = 0b0;
15039 let Inst{31-21} = 0b11101110101;
15040 let hasNewValue = 1;
15041 let opNewValue = 0;
15042 let prefersSlot3 = 1;
15043 let Defs = [USR_OVF];
15044 let Constraints = "$Rx32 = $Rx32in";
15045 }
15046 def M2_mpy_nac_sat_hl_s0 : HInst<
15047 (outs IntRegs:$Rx32),
15048 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15049 "$Rx32 -= mpy($Rs32.h,$Rt32.l):sat",
15050 tc_7f8ae742, TypeM>, Enc_2ae154 {
15051 let Inst{7-5} = 0b110;
15052 let Inst{13-13} = 0b0;
15053 let Inst{31-21} = 0b11101110001;
15054 let hasNewValue = 1;
15055 let opNewValue = 0;
15056 let prefersSlot3 = 1;
15057 let Defs = [USR_OVF];
15058 let Constraints = "$Rx32 = $Rx32in";
15059 }
15060 def M2_mpy_nac_sat_hl_s1 : HInst<
15061 (outs IntRegs:$Rx32),
15062 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15063 "$Rx32 -= mpy($Rs32.h,$Rt32.l):<<1:sat",
15064 tc_7f8ae742, TypeM>, Enc_2ae154 {
15065 let Inst{7-5} = 0b110;
15066 let Inst{13-13} = 0b0;
15067 let Inst{31-21} = 0b11101110101;
15068 let hasNewValue = 1;
15069 let opNewValue = 0;
15070 let prefersSlot3 = 1;
15071 let Defs = [USR_OVF];
15072 let Constraints = "$Rx32 = $Rx32in";
15073 }
15074 def M2_mpy_nac_sat_lh_s0 : HInst<
15075 (outs IntRegs:$Rx32),
15076 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15077 "$Rx32 -= mpy($Rs32.l,$Rt32.h):sat",
15078 tc_7f8ae742, TypeM>, Enc_2ae154 {
15079 let Inst{7-5} = 0b101;
15080 let Inst{13-13} = 0b0;
15081 let Inst{31-21} = 0b11101110001;
15082 let hasNewValue = 1;
15083 let opNewValue = 0;
15084 let prefersSlot3 = 1;
15085 let Defs = [USR_OVF];
15086 let Constraints = "$Rx32 = $Rx32in";
15087 }
15088 def M2_mpy_nac_sat_lh_s1 : HInst<
15089 (outs IntRegs:$Rx32),
15090 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15091 "$Rx32 -= mpy($Rs32.l,$Rt32.h):<<1:sat",
15092 tc_7f8ae742, TypeM>, Enc_2ae154 {
15093 let Inst{7-5} = 0b101;
15094 let Inst{13-13} = 0b0;
15095 let Inst{31-21} = 0b11101110101;
15096 let hasNewValue = 1;
15097 let opNewValue = 0;
15098 let prefersSlot3 = 1;
15099 let Defs = [USR_OVF];
15100 let Constraints = "$Rx32 = $Rx32in";
15101 }
15102 def M2_mpy_nac_sat_ll_s0 : HInst<
15103 (outs IntRegs:$Rx32),
15104 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15105 "$Rx32 -= mpy($Rs32.l,$Rt32.l):sat",
15106 tc_7f8ae742, TypeM>, Enc_2ae154 {
15107 let Inst{7-5} = 0b100;
15108 let Inst{13-13} = 0b0;
15109 let Inst{31-21} = 0b11101110001;
15110 let hasNewValue = 1;
15111 let opNewValue = 0;
15112 let prefersSlot3 = 1;
15113 let Defs = [USR_OVF];
15114 let Constraints = "$Rx32 = $Rx32in";
15115 }
15116 def M2_mpy_nac_sat_ll_s1 : HInst<
15117 (outs IntRegs:$Rx32),
15118 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15119 "$Rx32 -= mpy($Rs32.l,$Rt32.l):<<1:sat",
15120 tc_7f8ae742, TypeM>, Enc_2ae154 {
15121 let Inst{7-5} = 0b100;
15122 let Inst{13-13} = 0b0;
15123 let Inst{31-21} = 0b11101110101;
15124 let hasNewValue = 1;
15125 let opNewValue = 0;
15126 let prefersSlot3 = 1;
15127 let Defs = [USR_OVF];
15128 let Constraints = "$Rx32 = $Rx32in";
15129 }
15130 def M2_mpy_rnd_hh_s0 : HInst<
15131 (outs IntRegs:$Rd32),
15132 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15133 "$Rd32 = mpy($Rs32.h,$Rt32.h):rnd",
15134 tc_c21d7447, TypeM>, Enc_5ab2be {
15135 let Inst{7-5} = 0b011;
15136 let Inst{13-13} = 0b0;
15137 let Inst{31-21} = 0b11101100001;
15138 let hasNewValue = 1;
15139 let opNewValue = 0;
15140 let prefersSlot3 = 1;
15141 }
15142 def M2_mpy_rnd_hh_s1 : HInst<
15143 (outs IntRegs:$Rd32),
15144 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15145 "$Rd32 = mpy($Rs32.h,$Rt32.h):<<1:rnd",
15146 tc_c21d7447, TypeM>, Enc_5ab2be {
15147 let Inst{7-5} = 0b011;
15148 let Inst{13-13} = 0b0;
15149 let Inst{31-21} = 0b11101100101;
15150 let hasNewValue = 1;
15151 let opNewValue = 0;
15152 let prefersSlot3 = 1;
15153 }
15154 def M2_mpy_rnd_hl_s0 : HInst<
15155 (outs IntRegs:$Rd32),
15156 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15157 "$Rd32 = mpy($Rs32.h,$Rt32.l):rnd",
15158 tc_c21d7447, TypeM>, Enc_5ab2be {
15159 let Inst{7-5} = 0b010;
15160 let Inst{13-13} = 0b0;
15161 let Inst{31-21} = 0b11101100001;
15162 let hasNewValue = 1;
15163 let opNewValue = 0;
15164 let prefersSlot3 = 1;
15165 }
15166 def M2_mpy_rnd_hl_s1 : HInst<
15167 (outs IntRegs:$Rd32),
15168 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15169 "$Rd32 = mpy($Rs32.h,$Rt32.l):<<1:rnd",
15170 tc_c21d7447, TypeM>, Enc_5ab2be {
15171 let Inst{7-5} = 0b010;
15172 let Inst{13-13} = 0b0;
15173 let Inst{31-21} = 0b11101100101;
15174 let hasNewValue = 1;
15175 let opNewValue = 0;
15176 let prefersSlot3 = 1;
15177 }
15178 def M2_mpy_rnd_lh_s0 : HInst<
15179 (outs IntRegs:$Rd32),
15180 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15181 "$Rd32 = mpy($Rs32.l,$Rt32.h):rnd",
15182 tc_c21d7447, TypeM>, Enc_5ab2be {
15183 let Inst{7-5} = 0b001;
15184 let Inst{13-13} = 0b0;
15185 let Inst{31-21} = 0b11101100001;
15186 let hasNewValue = 1;
15187 let opNewValue = 0;
15188 let prefersSlot3 = 1;
15189 }
15190 def M2_mpy_rnd_lh_s1 : HInst<
15191 (outs IntRegs:$Rd32),
15192 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15193 "$Rd32 = mpy($Rs32.l,$Rt32.h):<<1:rnd",
15194 tc_c21d7447, TypeM>, Enc_5ab2be {
15195 let Inst{7-5} = 0b001;
15196 let Inst{13-13} = 0b0;
15197 let Inst{31-21} = 0b11101100101;
15198 let hasNewValue = 1;
15199 let opNewValue = 0;
15200 let prefersSlot3 = 1;
15201 }
15202 def M2_mpy_rnd_ll_s0 : HInst<
15203 (outs IntRegs:$Rd32),
15204 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15205 "$Rd32 = mpy($Rs32.l,$Rt32.l):rnd",
15206 tc_c21d7447, TypeM>, Enc_5ab2be {
15207 let Inst{7-5} = 0b000;
15208 let Inst{13-13} = 0b0;
15209 let Inst{31-21} = 0b11101100001;
15210 let hasNewValue = 1;
15211 let opNewValue = 0;
15212 let prefersSlot3 = 1;
15213 }
15214 def M2_mpy_rnd_ll_s1 : HInst<
15215 (outs IntRegs:$Rd32),
15216 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15217 "$Rd32 = mpy($Rs32.l,$Rt32.l):<<1:rnd",
15218 tc_c21d7447, TypeM>, Enc_5ab2be {
15219 let Inst{7-5} = 0b000;
15220 let Inst{13-13} = 0b0;
15221 let Inst{31-21} = 0b11101100101;
15222 let hasNewValue = 1;
15223 let opNewValue = 0;
15224 let prefersSlot3 = 1;
15225 }
15226 def M2_mpy_sat_hh_s0 : HInst<
15227 (outs IntRegs:$Rd32),
15228 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15229 "$Rd32 = mpy($Rs32.h,$Rt32.h):sat",
15230 tc_c21d7447, TypeM>, Enc_5ab2be {
15231 let Inst{7-5} = 0b111;
15232 let Inst{13-13} = 0b0;
15233 let Inst{31-21} = 0b11101100000;
15234 let hasNewValue = 1;
15235 let opNewValue = 0;
15236 let prefersSlot3 = 1;
15237 let Defs = [USR_OVF];
15238 }
15239 def M2_mpy_sat_hh_s1 : HInst<
15240 (outs IntRegs:$Rd32),
15241 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15242 "$Rd32 = mpy($Rs32.h,$Rt32.h):<<1:sat",
15243 tc_c21d7447, TypeM>, Enc_5ab2be {
15244 let Inst{7-5} = 0b111;
15245 let Inst{13-13} = 0b0;
15246 let Inst{31-21} = 0b11101100100;
15247 let hasNewValue = 1;
15248 let opNewValue = 0;
15249 let prefersSlot3 = 1;
15250 let Defs = [USR_OVF];
15251 }
15252 def M2_mpy_sat_hl_s0 : HInst<
15253 (outs IntRegs:$Rd32),
15254 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15255 "$Rd32 = mpy($Rs32.h,$Rt32.l):sat",
15256 tc_c21d7447, TypeM>, Enc_5ab2be {
15257 let Inst{7-5} = 0b110;
15258 let Inst{13-13} = 0b0;
15259 let Inst{31-21} = 0b11101100000;
15260 let hasNewValue = 1;
15261 let opNewValue = 0;
15262 let prefersSlot3 = 1;
15263 let Defs = [USR_OVF];
15264 }
15265 def M2_mpy_sat_hl_s1 : HInst<
15266 (outs IntRegs:$Rd32),
15267 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15268 "$Rd32 = mpy($Rs32.h,$Rt32.l):<<1:sat",
15269 tc_c21d7447, TypeM>, Enc_5ab2be {
15270 let Inst{7-5} = 0b110;
15271 let Inst{13-13} = 0b0;
15272 let Inst{31-21} = 0b11101100100;
15273 let hasNewValue = 1;
15274 let opNewValue = 0;
15275 let prefersSlot3 = 1;
15276 let Defs = [USR_OVF];
15277 }
15278 def M2_mpy_sat_lh_s0 : HInst<
15279 (outs IntRegs:$Rd32),
15280 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15281 "$Rd32 = mpy($Rs32.l,$Rt32.h):sat",
15282 tc_c21d7447, TypeM>, Enc_5ab2be {
15283 let Inst{7-5} = 0b101;
15284 let Inst{13-13} = 0b0;
15285 let Inst{31-21} = 0b11101100000;
15286 let hasNewValue = 1;
15287 let opNewValue = 0;
15288 let prefersSlot3 = 1;
15289 let Defs = [USR_OVF];
15290 }
15291 def M2_mpy_sat_lh_s1 : HInst<
15292 (outs IntRegs:$Rd32),
15293 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15294 "$Rd32 = mpy($Rs32.l,$Rt32.h):<<1:sat",
15295 tc_c21d7447, TypeM>, Enc_5ab2be {
15296 let Inst{7-5} = 0b101;
15297 let Inst{13-13} = 0b0;
15298 let Inst{31-21} = 0b11101100100;
15299 let hasNewValue = 1;
15300 let opNewValue = 0;
15301 let prefersSlot3 = 1;
15302 let Defs = [USR_OVF];
15303 }
15304 def M2_mpy_sat_ll_s0 : HInst<
15305 (outs IntRegs:$Rd32),
15306 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15307 "$Rd32 = mpy($Rs32.l,$Rt32.l):sat",
15308 tc_c21d7447, TypeM>, Enc_5ab2be {
15309 let Inst{7-5} = 0b100;
15310 let Inst{13-13} = 0b0;
15311 let Inst{31-21} = 0b11101100000;
15312 let hasNewValue = 1;
15313 let opNewValue = 0;
15314 let prefersSlot3 = 1;
15315 let Defs = [USR_OVF];
15316 }
15317 def M2_mpy_sat_ll_s1 : HInst<
15318 (outs IntRegs:$Rd32),
15319 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15320 "$Rd32 = mpy($Rs32.l,$Rt32.l):<<1:sat",
15321 tc_c21d7447, TypeM>, Enc_5ab2be {
15322 let Inst{7-5} = 0b100;
15323 let Inst{13-13} = 0b0;
15324 let Inst{31-21} = 0b11101100100;
15325 let hasNewValue = 1;
15326 let opNewValue = 0;
15327 let prefersSlot3 = 1;
15328 let Defs = [USR_OVF];
15329 }
15330 def M2_mpy_sat_rnd_hh_s0 : HInst<
15331 (outs IntRegs:$Rd32),
15332 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15333 "$Rd32 = mpy($Rs32.h,$Rt32.h):rnd:sat",
15334 tc_c21d7447, TypeM>, Enc_5ab2be {
15335 let Inst{7-5} = 0b111;
15336 let Inst{13-13} = 0b0;
15337 let Inst{31-21} = 0b11101100001;
15338 let hasNewValue = 1;
15339 let opNewValue = 0;
15340 let prefersSlot3 = 1;
15341 let Defs = [USR_OVF];
15342 }
15343 def M2_mpy_sat_rnd_hh_s1 : HInst<
15344 (outs IntRegs:$Rd32),
15345 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15346 "$Rd32 = mpy($Rs32.h,$Rt32.h):<<1:rnd:sat",
15347 tc_c21d7447, TypeM>, Enc_5ab2be {
15348 let Inst{7-5} = 0b111;
15349 let Inst{13-13} = 0b0;
15350 let Inst{31-21} = 0b11101100101;
15351 let hasNewValue = 1;
15352 let opNewValue = 0;
15353 let prefersSlot3 = 1;
15354 let Defs = [USR_OVF];
15355 }
15356 def M2_mpy_sat_rnd_hl_s0 : HInst<
15357 (outs IntRegs:$Rd32),
15358 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15359 "$Rd32 = mpy($Rs32.h,$Rt32.l):rnd:sat",
15360 tc_c21d7447, TypeM>, Enc_5ab2be {
15361 let Inst{7-5} = 0b110;
15362 let Inst{13-13} = 0b0;
15363 let Inst{31-21} = 0b11101100001;
15364 let hasNewValue = 1;
15365 let opNewValue = 0;
15366 let prefersSlot3 = 1;
15367 let Defs = [USR_OVF];
15368 }
15369 def M2_mpy_sat_rnd_hl_s1 : HInst<
15370 (outs IntRegs:$Rd32),
15371 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15372 "$Rd32 = mpy($Rs32.h,$Rt32.l):<<1:rnd:sat",
15373 tc_c21d7447, TypeM>, Enc_5ab2be {
15374 let Inst{7-5} = 0b110;
15375 let Inst{13-13} = 0b0;
15376 let Inst{31-21} = 0b11101100101;
15377 let hasNewValue = 1;
15378 let opNewValue = 0;
15379 let prefersSlot3 = 1;
15380 let Defs = [USR_OVF];
15381 }
15382 def M2_mpy_sat_rnd_lh_s0 : HInst<
15383 (outs IntRegs:$Rd32),
15384 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15385 "$Rd32 = mpy($Rs32.l,$Rt32.h):rnd:sat",
15386 tc_c21d7447, TypeM>, Enc_5ab2be {
15387 let Inst{7-5} = 0b101;
15388 let Inst{13-13} = 0b0;
15389 let Inst{31-21} = 0b11101100001;
15390 let hasNewValue = 1;
15391 let opNewValue = 0;
15392 let prefersSlot3 = 1;
15393 let Defs = [USR_OVF];
15394 }
15395 def M2_mpy_sat_rnd_lh_s1 : HInst<
15396 (outs IntRegs:$Rd32),
15397 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15398 "$Rd32 = mpy($Rs32.l,$Rt32.h):<<1:rnd:sat",
15399 tc_c21d7447, TypeM>, Enc_5ab2be {
15400 let Inst{7-5} = 0b101;
15401 let Inst{13-13} = 0b0;
15402 let Inst{31-21} = 0b11101100101;
15403 let hasNewValue = 1;
15404 let opNewValue = 0;
15405 let prefersSlot3 = 1;
15406 let Defs = [USR_OVF];
15407 }
15408 def M2_mpy_sat_rnd_ll_s0 : HInst<
15409 (outs IntRegs:$Rd32),
15410 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15411 "$Rd32 = mpy($Rs32.l,$Rt32.l):rnd:sat",
15412 tc_c21d7447, TypeM>, Enc_5ab2be {
15413 let Inst{7-5} = 0b100;
15414 let Inst{13-13} = 0b0;
15415 let Inst{31-21} = 0b11101100001;
15416 let hasNewValue = 1;
15417 let opNewValue = 0;
15418 let prefersSlot3 = 1;
15419 let Defs = [USR_OVF];
15420 }
15421 def M2_mpy_sat_rnd_ll_s1 : HInst<
15422 (outs IntRegs:$Rd32),
15423 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15424 "$Rd32 = mpy($Rs32.l,$Rt32.l):<<1:rnd:sat",
15425 tc_c21d7447, TypeM>, Enc_5ab2be {
15426 let Inst{7-5} = 0b100;
15427 let Inst{13-13} = 0b0;
15428 let Inst{31-21} = 0b11101100101;
15429 let hasNewValue = 1;
15430 let opNewValue = 0;
15431 let prefersSlot3 = 1;
15432 let Defs = [USR_OVF];
15433 }
15434 def M2_mpy_up : HInst<
15435 (outs IntRegs:$Rd32),
15436 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15437 "$Rd32 = mpy($Rs32,$Rt32)",
15438 tc_c21d7447, TypeM>, Enc_5ab2be {
15439 let Inst{7-5} = 0b001;
15440 let Inst{13-13} = 0b0;
15441 let Inst{31-21} = 0b11101101000;
15442 let hasNewValue = 1;
15443 let opNewValue = 0;
15444 let prefersSlot3 = 1;
15445 }
15446 def M2_mpy_up_s1 : HInst<
15447 (outs IntRegs:$Rd32),
15448 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15449 "$Rd32 = mpy($Rs32,$Rt32):<<1",
15450 tc_c21d7447, TypeM>, Enc_5ab2be {
15451 let Inst{7-5} = 0b010;
15452 let Inst{13-13} = 0b0;
15453 let Inst{31-21} = 0b11101101101;
15454 let hasNewValue = 1;
15455 let opNewValue = 0;
15456 let prefersSlot3 = 1;
15457 }
15458 def M2_mpy_up_s1_sat : HInst<
15459 (outs IntRegs:$Rd32),
15460 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15461 "$Rd32 = mpy($Rs32,$Rt32):<<1:sat",
15462 tc_c21d7447, TypeM>, Enc_5ab2be {
15463 let Inst{7-5} = 0b000;
15464 let Inst{13-13} = 0b0;
15465 let Inst{31-21} = 0b11101101111;
15466 let hasNewValue = 1;
15467 let opNewValue = 0;
15468 let prefersSlot3 = 1;
15469 let Defs = [USR_OVF];
15470 }
15471 def M2_mpyd_acc_hh_s0 : HInst<
15472 (outs DoubleRegs:$Rxx32),
15473 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15474 "$Rxx32 += mpy($Rs32.h,$Rt32.h)",
15475 tc_7f8ae742, TypeM>, Enc_61f0b0 {
15476 let Inst{7-5} = 0b011;
15477 let Inst{13-13} = 0b0;
15478 let Inst{31-21} = 0b11100110000;
15479 let prefersSlot3 = 1;
15480 let Constraints = "$Rxx32 = $Rxx32in";
15481 }
15482 def M2_mpyd_acc_hh_s1 : HInst<
15483 (outs DoubleRegs:$Rxx32),
15484 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15485 "$Rxx32 += mpy($Rs32.h,$Rt32.h):<<1",
15486 tc_7f8ae742, TypeM>, Enc_61f0b0 {
15487 let Inst{7-5} = 0b011;
15488 let Inst{13-13} = 0b0;
15489 let Inst{31-21} = 0b11100110100;
15490 let prefersSlot3 = 1;
15491 let Constraints = "$Rxx32 = $Rxx32in";
15492 }
15493 def M2_mpyd_acc_hl_s0 : HInst<
15494 (outs DoubleRegs:$Rxx32),
15495 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15496 "$Rxx32 += mpy($Rs32.h,$Rt32.l)",
15497 tc_7f8ae742, TypeM>, Enc_61f0b0 {
15498 let Inst{7-5} = 0b010;
15499 let Inst{13-13} = 0b0;
15500 let Inst{31-21} = 0b11100110000;
15501 let prefersSlot3 = 1;
15502 let Constraints = "$Rxx32 = $Rxx32in";
15503 }
15504 def M2_mpyd_acc_hl_s1 : HInst<
15505 (outs DoubleRegs:$Rxx32),
15506 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15507 "$Rxx32 += mpy($Rs32.h,$Rt32.l):<<1",
15508 tc_7f8ae742, TypeM>, Enc_61f0b0 {
15509 let Inst{7-5} = 0b010;
15510 let Inst{13-13} = 0b0;
15511 let Inst{31-21} = 0b11100110100;
15512 let prefersSlot3 = 1;
15513 let Constraints = "$Rxx32 = $Rxx32in";
15514 }
15515 def M2_mpyd_acc_lh_s0 : HInst<
15516 (outs DoubleRegs:$Rxx32),
15517 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15518 "$Rxx32 += mpy($Rs32.l,$Rt32.h)",
15519 tc_7f8ae742, TypeM>, Enc_61f0b0 {
15520 let Inst{7-5} = 0b001;
15521 let Inst{13-13} = 0b0;
15522 let Inst{31-21} = 0b11100110000;
15523 let prefersSlot3 = 1;
15524 let Constraints = "$Rxx32 = $Rxx32in";
15525 }
15526 def M2_mpyd_acc_lh_s1 : HInst<
15527 (outs DoubleRegs:$Rxx32),
15528 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15529 "$Rxx32 += mpy($Rs32.l,$Rt32.h):<<1",
15530 tc_7f8ae742, TypeM>, Enc_61f0b0 {
15531 let Inst{7-5} = 0b001;
15532 let Inst{13-13} = 0b0;
15533 let Inst{31-21} = 0b11100110100;
15534 let prefersSlot3 = 1;
15535 let Constraints = "$Rxx32 = $Rxx32in";
15536 }
15537 def M2_mpyd_acc_ll_s0 : HInst<
15538 (outs DoubleRegs:$Rxx32),
15539 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15540 "$Rxx32 += mpy($Rs32.l,$Rt32.l)",
15541 tc_7f8ae742, TypeM>, Enc_61f0b0 {
15542 let Inst{7-5} = 0b000;
15543 let Inst{13-13} = 0b0;
15544 let Inst{31-21} = 0b11100110000;
15545 let prefersSlot3 = 1;
15546 let Constraints = "$Rxx32 = $Rxx32in";
15547 }
15548 def M2_mpyd_acc_ll_s1 : HInst<
15549 (outs DoubleRegs:$Rxx32),
15550 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15551 "$Rxx32 += mpy($Rs32.l,$Rt32.l):<<1",
15552 tc_7f8ae742, TypeM>, Enc_61f0b0 {
15553 let Inst{7-5} = 0b000;
15554 let Inst{13-13} = 0b0;
15555 let Inst{31-21} = 0b11100110100;
15556 let prefersSlot3 = 1;
15557 let Constraints = "$Rxx32 = $Rxx32in";
15558 }
15559 def M2_mpyd_hh_s0 : HInst<
15560 (outs DoubleRegs:$Rdd32),
15561 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15562 "$Rdd32 = mpy($Rs32.h,$Rt32.h)",
15563 tc_c21d7447, TypeM>, Enc_be32a5 {
15564 let Inst{7-5} = 0b011;
15565 let Inst{13-13} = 0b0;
15566 let Inst{31-21} = 0b11100100000;
15567 let prefersSlot3 = 1;
15568 }
15569 def M2_mpyd_hh_s1 : HInst<
15570 (outs DoubleRegs:$Rdd32),
15571 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15572 "$Rdd32 = mpy($Rs32.h,$Rt32.h):<<1",
15573 tc_c21d7447, TypeM>, Enc_be32a5 {
15574 let Inst{7-5} = 0b011;
15575 let Inst{13-13} = 0b0;
15576 let Inst{31-21} = 0b11100100100;
15577 let prefersSlot3 = 1;
15578 }
15579 def M2_mpyd_hl_s0 : HInst<
15580 (outs DoubleRegs:$Rdd32),
15581 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15582 "$Rdd32 = mpy($Rs32.h,$Rt32.l)",
15583 tc_c21d7447, TypeM>, Enc_be32a5 {
15584 let Inst{7-5} = 0b010;
15585 let Inst{13-13} = 0b0;
15586 let Inst{31-21} = 0b11100100000;
15587 let prefersSlot3 = 1;
15588 }
15589 def M2_mpyd_hl_s1 : HInst<
15590 (outs DoubleRegs:$Rdd32),
15591 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15592 "$Rdd32 = mpy($Rs32.h,$Rt32.l):<<1",
15593 tc_c21d7447, TypeM>, Enc_be32a5 {
15594 let Inst{7-5} = 0b010;
15595 let Inst{13-13} = 0b0;
15596 let Inst{31-21} = 0b11100100100;
15597 let prefersSlot3 = 1;
15598 }
15599 def M2_mpyd_lh_s0 : HInst<
15600 (outs DoubleRegs:$Rdd32),
15601 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15602 "$Rdd32 = mpy($Rs32.l,$Rt32.h)",
15603 tc_c21d7447, TypeM>, Enc_be32a5 {
15604 let Inst{7-5} = 0b001;
15605 let Inst{13-13} = 0b0;
15606 let Inst{31-21} = 0b11100100000;
15607 let prefersSlot3 = 1;
15608 }
15609 def M2_mpyd_lh_s1 : HInst<
15610 (outs DoubleRegs:$Rdd32),
15611 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15612 "$Rdd32 = mpy($Rs32.l,$Rt32.h):<<1",
15613 tc_c21d7447, TypeM>, Enc_be32a5 {
15614 let Inst{7-5} = 0b001;
15615 let Inst{13-13} = 0b0;
15616 let Inst{31-21} = 0b11100100100;
15617 let prefersSlot3 = 1;
15618 }
15619 def M2_mpyd_ll_s0 : HInst<
15620 (outs DoubleRegs:$Rdd32),
15621 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15622 "$Rdd32 = mpy($Rs32.l,$Rt32.l)",
15623 tc_c21d7447, TypeM>, Enc_be32a5 {
15624 let Inst{7-5} = 0b000;
15625 let Inst{13-13} = 0b0;
15626 let Inst{31-21} = 0b11100100000;
15627 let prefersSlot3 = 1;
15628 }
15629 def M2_mpyd_ll_s1 : HInst<
15630 (outs DoubleRegs:$Rdd32),
15631 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15632 "$Rdd32 = mpy($Rs32.l,$Rt32.l):<<1",
15633 tc_c21d7447, TypeM>, Enc_be32a5 {
15634 let Inst{7-5} = 0b000;
15635 let Inst{13-13} = 0b0;
15636 let Inst{31-21} = 0b11100100100;
15637 let prefersSlot3 = 1;
15638 }
15639 def M2_mpyd_nac_hh_s0 : HInst<
15640 (outs DoubleRegs:$Rxx32),
15641 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15642 "$Rxx32 -= mpy($Rs32.h,$Rt32.h)",
15643 tc_7f8ae742, TypeM>, Enc_61f0b0 {
15644 let Inst{7-5} = 0b011;
15645 let Inst{13-13} = 0b0;
15646 let Inst{31-21} = 0b11100110001;
15647 let prefersSlot3 = 1;
15648 let Constraints = "$Rxx32 = $Rxx32in";
15649 }
15650 def M2_mpyd_nac_hh_s1 : HInst<
15651 (outs DoubleRegs:$Rxx32),
15652 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15653 "$Rxx32 -= mpy($Rs32.h,$Rt32.h):<<1",
15654 tc_7f8ae742, TypeM>, Enc_61f0b0 {
15655 let Inst{7-5} = 0b011;
15656 let Inst{13-13} = 0b0;
15657 let Inst{31-21} = 0b11100110101;
15658 let prefersSlot3 = 1;
15659 let Constraints = "$Rxx32 = $Rxx32in";
15660 }
15661 def M2_mpyd_nac_hl_s0 : HInst<
15662 (outs DoubleRegs:$Rxx32),
15663 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15664 "$Rxx32 -= mpy($Rs32.h,$Rt32.l)",
15665 tc_7f8ae742, TypeM>, Enc_61f0b0 {
15666 let Inst{7-5} = 0b010;
15667 let Inst{13-13} = 0b0;
15668 let Inst{31-21} = 0b11100110001;
15669 let prefersSlot3 = 1;
15670 let Constraints = "$Rxx32 = $Rxx32in";
15671 }
15672 def M2_mpyd_nac_hl_s1 : HInst<
15673 (outs DoubleRegs:$Rxx32),
15674 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15675 "$Rxx32 -= mpy($Rs32.h,$Rt32.l):<<1",
15676 tc_7f8ae742, TypeM>, Enc_61f0b0 {
15677 let Inst{7-5} = 0b010;
15678 let Inst{13-13} = 0b0;
15679 let Inst{31-21} = 0b11100110101;
15680 let prefersSlot3 = 1;
15681 let Constraints = "$Rxx32 = $Rxx32in";
15682 }
15683 def M2_mpyd_nac_lh_s0 : HInst<
15684 (outs DoubleRegs:$Rxx32),
15685 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15686 "$Rxx32 -= mpy($Rs32.l,$Rt32.h)",
15687 tc_7f8ae742, TypeM>, Enc_61f0b0 {
15688 let Inst{7-5} = 0b001;
15689 let Inst{13-13} = 0b0;
15690 let Inst{31-21} = 0b11100110001;
15691 let prefersSlot3 = 1;
15692 let Constraints = "$Rxx32 = $Rxx32in";
15693 }
15694 def M2_mpyd_nac_lh_s1 : HInst<
15695 (outs DoubleRegs:$Rxx32),
15696 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15697 "$Rxx32 -= mpy($Rs32.l,$Rt32.h):<<1",
15698 tc_7f8ae742, TypeM>, Enc_61f0b0 {
15699 let Inst{7-5} = 0b001;
15700 let Inst{13-13} = 0b0;
15701 let Inst{31-21} = 0b11100110101;
15702 let prefersSlot3 = 1;
15703 let Constraints = "$Rxx32 = $Rxx32in";
15704 }
15705 def M2_mpyd_nac_ll_s0 : HInst<
15706 (outs DoubleRegs:$Rxx32),
15707 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15708 "$Rxx32 -= mpy($Rs32.l,$Rt32.l)",
15709 tc_7f8ae742, TypeM>, Enc_61f0b0 {
15710 let Inst{7-5} = 0b000;
15711 let Inst{13-13} = 0b0;
15712 let Inst{31-21} = 0b11100110001;
15713 let prefersSlot3 = 1;
15714 let Constraints = "$Rxx32 = $Rxx32in";
15715 }
15716 def M2_mpyd_nac_ll_s1 : HInst<
15717 (outs DoubleRegs:$Rxx32),
15718 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15719 "$Rxx32 -= mpy($Rs32.l,$Rt32.l):<<1",
15720 tc_7f8ae742, TypeM>, Enc_61f0b0 {
15721 let Inst{7-5} = 0b000;
15722 let Inst{13-13} = 0b0;
15723 let Inst{31-21} = 0b11100110101;
15724 let prefersSlot3 = 1;
15725 let Constraints = "$Rxx32 = $Rxx32in";
15726 }
15727 def M2_mpyd_rnd_hh_s0 : HInst<
15728 (outs DoubleRegs:$Rdd32),
15729 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15730 "$Rdd32 = mpy($Rs32.h,$Rt32.h):rnd",
15731 tc_c21d7447, TypeM>, Enc_be32a5 {
15732 let Inst{7-5} = 0b011;
15733 let Inst{13-13} = 0b0;
15734 let Inst{31-21} = 0b11100100001;
15735 let prefersSlot3 = 1;
15736 }
15737 def M2_mpyd_rnd_hh_s1 : HInst<
15738 (outs DoubleRegs:$Rdd32),
15739 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15740 "$Rdd32 = mpy($Rs32.h,$Rt32.h):<<1:rnd",
15741 tc_c21d7447, TypeM>, Enc_be32a5 {
15742 let Inst{7-5} = 0b011;
15743 let Inst{13-13} = 0b0;
15744 let Inst{31-21} = 0b11100100101;
15745 let prefersSlot3 = 1;
15746 }
15747 def M2_mpyd_rnd_hl_s0 : HInst<
15748 (outs DoubleRegs:$Rdd32),
15749 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15750 "$Rdd32 = mpy($Rs32.h,$Rt32.l):rnd",
15751 tc_c21d7447, TypeM>, Enc_be32a5 {
15752 let Inst{7-5} = 0b010;
15753 let Inst{13-13} = 0b0;
15754 let Inst{31-21} = 0b11100100001;
15755 let prefersSlot3 = 1;
15756 }
15757 def M2_mpyd_rnd_hl_s1 : HInst<
15758 (outs DoubleRegs:$Rdd32),
15759 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15760 "$Rdd32 = mpy($Rs32.h,$Rt32.l):<<1:rnd",
15761 tc_c21d7447, TypeM>, Enc_be32a5 {
15762 let Inst{7-5} = 0b010;
15763 let Inst{13-13} = 0b0;
15764 let Inst{31-21} = 0b11100100101;
15765 let prefersSlot3 = 1;
15766 }
15767 def M2_mpyd_rnd_lh_s0 : HInst<
15768 (outs DoubleRegs:$Rdd32),
15769 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15770 "$Rdd32 = mpy($Rs32.l,$Rt32.h):rnd",
15771 tc_c21d7447, TypeM>, Enc_be32a5 {
15772 let Inst{7-5} = 0b001;
15773 let Inst{13-13} = 0b0;
15774 let Inst{31-21} = 0b11100100001;
15775 let prefersSlot3 = 1;
15776 }
15777 def M2_mpyd_rnd_lh_s1 : HInst<
15778 (outs DoubleRegs:$Rdd32),
15779 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15780 "$Rdd32 = mpy($Rs32.l,$Rt32.h):<<1:rnd",
15781 tc_c21d7447, TypeM>, Enc_be32a5 {
15782 let Inst{7-5} = 0b001;
15783 let Inst{13-13} = 0b0;
15784 let Inst{31-21} = 0b11100100101;
15785 let prefersSlot3 = 1;
15786 }
15787 def M2_mpyd_rnd_ll_s0 : HInst<
15788 (outs DoubleRegs:$Rdd32),
15789 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15790 "$Rdd32 = mpy($Rs32.l,$Rt32.l):rnd",
15791 tc_c21d7447, TypeM>, Enc_be32a5 {
15792 let Inst{7-5} = 0b000;
15793 let Inst{13-13} = 0b0;
15794 let Inst{31-21} = 0b11100100001;
15795 let prefersSlot3 = 1;
15796 }
15797 def M2_mpyd_rnd_ll_s1 : HInst<
15798 (outs DoubleRegs:$Rdd32),
15799 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15800 "$Rdd32 = mpy($Rs32.l,$Rt32.l):<<1:rnd",
15801 tc_c21d7447, TypeM>, Enc_be32a5 {
15802 let Inst{7-5} = 0b000;
15803 let Inst{13-13} = 0b0;
15804 let Inst{31-21} = 0b11100100101;
15805 let prefersSlot3 = 1;
15806 }
15807 def M2_mpyi : HInst<
15808 (outs IntRegs:$Rd32),
15809 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15810 "$Rd32 = mpyi($Rs32,$Rt32)",
15811 tc_c21d7447, TypeM>, Enc_5ab2be, ImmRegRel {
15812 let Inst{7-5} = 0b000;
15813 let Inst{13-13} = 0b0;
15814 let Inst{31-21} = 0b11101101000;
15815 let hasNewValue = 1;
15816 let opNewValue = 0;
15817 let prefersSlot3 = 1;
15818 let CextOpcode = "M2_mpyi";
15819 let InputType = "reg";
15820 }
15821 def M2_mpysin : HInst<
15822 (outs IntRegs:$Rd32),
15823 (ins IntRegs:$Rs32, u8_0Imm:$Ii),
15824 "$Rd32 = -mpyi($Rs32,#$Ii)",
15825 tc_38382228, TypeM>, Enc_b8c967 {
15826 let Inst{13-13} = 0b0;
15827 let Inst{31-21} = 0b11100000100;
15828 let hasNewValue = 1;
15829 let opNewValue = 0;
15830 let prefersSlot3 = 1;
15831 }
15832 def M2_mpysip : HInst<
15833 (outs IntRegs:$Rd32),
15834 (ins IntRegs:$Rs32, u32_0Imm:$Ii),
15835 "$Rd32 = +mpyi($Rs32,#$Ii)",
15836 tc_38382228, TypeM>, Enc_b8c967 {
15837 let Inst{13-13} = 0b0;
15838 let Inst{31-21} = 0b11100000000;
15839 let hasNewValue = 1;
15840 let opNewValue = 0;
15841 let prefersSlot3 = 1;
15842 let isExtendable = 1;
15843 let opExtendable = 2;
15844 let isExtentSigned = 0;
15845 let opExtentBits = 8;
15846 let opExtentAlign = 0;
15847 }
15848 def M2_mpysmi : HInst<
15849 (outs IntRegs:$Rd32),
15850 (ins IntRegs:$Rs32, m32_0Imm:$Ii),
15851 "$Rd32 = mpyi($Rs32,#$Ii)",
15852 tc_38382228, TypeM>, ImmRegRel {
15853 let hasNewValue = 1;
15854 let opNewValue = 0;
15855 let CextOpcode = "M2_mpyi";
15856 let InputType = "imm";
15857 let isPseudo = 1;
15858 let isExtendable = 1;
15859 let opExtendable = 2;
15860 let isExtentSigned = 1;
15861 let opExtentBits = 9;
15862 let opExtentAlign = 0;
15863 }
15864 def M2_mpysu_up : HInst<
15865 (outs IntRegs:$Rd32),
15866 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15867 "$Rd32 = mpysu($Rs32,$Rt32)",
15868 tc_c21d7447, TypeM>, Enc_5ab2be {
15869 let Inst{7-5} = 0b001;
15870 let Inst{13-13} = 0b0;
15871 let Inst{31-21} = 0b11101101011;
15872 let hasNewValue = 1;
15873 let opNewValue = 0;
15874 let prefersSlot3 = 1;
15875 }
15876 def M2_mpyu_acc_hh_s0 : HInst<
15877 (outs IntRegs:$Rx32),
15878 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15879 "$Rx32 += mpyu($Rs32.h,$Rt32.h)",
15880 tc_7f8ae742, TypeM>, Enc_2ae154 {
15881 let Inst{7-5} = 0b011;
15882 let Inst{13-13} = 0b0;
15883 let Inst{31-21} = 0b11101110010;
15884 let hasNewValue = 1;
15885 let opNewValue = 0;
15886 let prefersSlot3 = 1;
15887 let Constraints = "$Rx32 = $Rx32in";
15888 }
15889 def M2_mpyu_acc_hh_s1 : HInst<
15890 (outs IntRegs:$Rx32),
15891 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15892 "$Rx32 += mpyu($Rs32.h,$Rt32.h):<<1",
15893 tc_7f8ae742, TypeM>, Enc_2ae154 {
15894 let Inst{7-5} = 0b011;
15895 let Inst{13-13} = 0b0;
15896 let Inst{31-21} = 0b11101110110;
15897 let hasNewValue = 1;
15898 let opNewValue = 0;
15899 let prefersSlot3 = 1;
15900 let Constraints = "$Rx32 = $Rx32in";
15901 }
15902 def M2_mpyu_acc_hl_s0 : HInst<
15903 (outs IntRegs:$Rx32),
15904 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15905 "$Rx32 += mpyu($Rs32.h,$Rt32.l)",
15906 tc_7f8ae742, TypeM>, Enc_2ae154 {
15907 let Inst{7-5} = 0b010;
15908 let Inst{13-13} = 0b0;
15909 let Inst{31-21} = 0b11101110010;
15910 let hasNewValue = 1;
15911 let opNewValue = 0;
15912 let prefersSlot3 = 1;
15913 let Constraints = "$Rx32 = $Rx32in";
15914 }
15915 def M2_mpyu_acc_hl_s1 : HInst<
15916 (outs IntRegs:$Rx32),
15917 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15918 "$Rx32 += mpyu($Rs32.h,$Rt32.l):<<1",
15919 tc_7f8ae742, TypeM>, Enc_2ae154 {
15920 let Inst{7-5} = 0b010;
15921 let Inst{13-13} = 0b0;
15922 let Inst{31-21} = 0b11101110110;
15923 let hasNewValue = 1;
15924 let opNewValue = 0;
15925 let prefersSlot3 = 1;
15926 let Constraints = "$Rx32 = $Rx32in";
15927 }
15928 def M2_mpyu_acc_lh_s0 : HInst<
15929 (outs IntRegs:$Rx32),
15930 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15931 "$Rx32 += mpyu($Rs32.l,$Rt32.h)",
15932 tc_7f8ae742, TypeM>, Enc_2ae154 {
15933 let Inst{7-5} = 0b001;
15934 let Inst{13-13} = 0b0;
15935 let Inst{31-21} = 0b11101110010;
15936 let hasNewValue = 1;
15937 let opNewValue = 0;
15938 let prefersSlot3 = 1;
15939 let Constraints = "$Rx32 = $Rx32in";
15940 }
15941 def M2_mpyu_acc_lh_s1 : HInst<
15942 (outs IntRegs:$Rx32),
15943 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15944 "$Rx32 += mpyu($Rs32.l,$Rt32.h):<<1",
15945 tc_7f8ae742, TypeM>, Enc_2ae154 {
15946 let Inst{7-5} = 0b001;
15947 let Inst{13-13} = 0b0;
15948 let Inst{31-21} = 0b11101110110;
15949 let hasNewValue = 1;
15950 let opNewValue = 0;
15951 let prefersSlot3 = 1;
15952 let Constraints = "$Rx32 = $Rx32in";
15953 }
15954 def M2_mpyu_acc_ll_s0 : HInst<
15955 (outs IntRegs:$Rx32),
15956 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15957 "$Rx32 += mpyu($Rs32.l,$Rt32.l)",
15958 tc_7f8ae742, TypeM>, Enc_2ae154 {
15959 let Inst{7-5} = 0b000;
15960 let Inst{13-13} = 0b0;
15961 let Inst{31-21} = 0b11101110010;
15962 let hasNewValue = 1;
15963 let opNewValue = 0;
15964 let prefersSlot3 = 1;
15965 let Constraints = "$Rx32 = $Rx32in";
15966 }
15967 def M2_mpyu_acc_ll_s1 : HInst<
15968 (outs IntRegs:$Rx32),
15969 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15970 "$Rx32 += mpyu($Rs32.l,$Rt32.l):<<1",
15971 tc_7f8ae742, TypeM>, Enc_2ae154 {
15972 let Inst{7-5} = 0b000;
15973 let Inst{13-13} = 0b0;
15974 let Inst{31-21} = 0b11101110110;
15975 let hasNewValue = 1;
15976 let opNewValue = 0;
15977 let prefersSlot3 = 1;
15978 let Constraints = "$Rx32 = $Rx32in";
15979 }
15980 def M2_mpyu_hh_s0 : HInst<
15981 (outs IntRegs:$Rd32),
15982 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15983 "$Rd32 = mpyu($Rs32.h,$Rt32.h)",
15984 tc_c21d7447, TypeM>, Enc_5ab2be {
15985 let Inst{7-5} = 0b011;
15986 let Inst{13-13} = 0b0;
15987 let Inst{31-21} = 0b11101100010;
15988 let hasNewValue = 1;
15989 let opNewValue = 0;
15990 let prefersSlot3 = 1;
15991 }
15992 def M2_mpyu_hh_s1 : HInst<
15993 (outs IntRegs:$Rd32),
15994 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15995 "$Rd32 = mpyu($Rs32.h,$Rt32.h):<<1",
15996 tc_c21d7447, TypeM>, Enc_5ab2be {
15997 let Inst{7-5} = 0b011;
15998 let Inst{13-13} = 0b0;
15999 let Inst{31-21} = 0b11101100110;
16000 let hasNewValue = 1;
16001 let opNewValue = 0;
16002 let prefersSlot3 = 1;
16003 }
16004 def M2_mpyu_hl_s0 : HInst<
16005 (outs IntRegs:$Rd32),
16006 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16007 "$Rd32 = mpyu($Rs32.h,$Rt32.l)",
16008 tc_c21d7447, TypeM>, Enc_5ab2be {
16009 let Inst{7-5} = 0b010;
16010 let Inst{13-13} = 0b0;
16011 let Inst{31-21} = 0b11101100010;
16012 let hasNewValue = 1;
16013 let opNewValue = 0;
16014 let prefersSlot3 = 1;
16015 }
16016 def M2_mpyu_hl_s1 : HInst<
16017 (outs IntRegs:$Rd32),
16018 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16019 "$Rd32 = mpyu($Rs32.h,$Rt32.l):<<1",
16020 tc_c21d7447, TypeM>, Enc_5ab2be {
16021 let Inst{7-5} = 0b010;
16022 let Inst{13-13} = 0b0;
16023 let Inst{31-21} = 0b11101100110;
16024 let hasNewValue = 1;
16025 let opNewValue = 0;
16026 let prefersSlot3 = 1;
16027 }
16028 def M2_mpyu_lh_s0 : HInst<
16029 (outs IntRegs:$Rd32),
16030 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16031 "$Rd32 = mpyu($Rs32.l,$Rt32.h)",
16032 tc_c21d7447, TypeM>, Enc_5ab2be {
16033 let Inst{7-5} = 0b001;
16034 let Inst{13-13} = 0b0;
16035 let Inst{31-21} = 0b11101100010;
16036 let hasNewValue = 1;
16037 let opNewValue = 0;
16038 let prefersSlot3 = 1;
16039 }
16040 def M2_mpyu_lh_s1 : HInst<
16041 (outs IntRegs:$Rd32),
16042 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16043 "$Rd32 = mpyu($Rs32.l,$Rt32.h):<<1",
16044 tc_c21d7447, TypeM>, Enc_5ab2be {
16045 let Inst{7-5} = 0b001;
16046 let Inst{13-13} = 0b0;
16047 let Inst{31-21} = 0b11101100110;
16048 let hasNewValue = 1;
16049 let opNewValue = 0;
16050 let prefersSlot3 = 1;
16051 }
16052 def M2_mpyu_ll_s0 : HInst<
16053 (outs IntRegs:$Rd32),
16054 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16055 "$Rd32 = mpyu($Rs32.l,$Rt32.l)",
16056 tc_c21d7447, TypeM>, Enc_5ab2be {
16057 let Inst{7-5} = 0b000;
16058 let Inst{13-13} = 0b0;
16059 let Inst{31-21} = 0b11101100010;
16060 let hasNewValue = 1;
16061 let opNewValue = 0;
16062 let prefersSlot3 = 1;
16063 }
16064 def M2_mpyu_ll_s1 : HInst<
16065 (outs IntRegs:$Rd32),
16066 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16067 "$Rd32 = mpyu($Rs32.l,$Rt32.l):<<1",
16068 tc_c21d7447, TypeM>, Enc_5ab2be {
16069 let Inst{7-5} = 0b000;
16070 let Inst{13-13} = 0b0;
16071 let Inst{31-21} = 0b11101100110;
16072 let hasNewValue = 1;
16073 let opNewValue = 0;
16074 let prefersSlot3 = 1;
16075 }
16076 def M2_mpyu_nac_hh_s0 : HInst<
16077 (outs IntRegs:$Rx32),
16078 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16079 "$Rx32 -= mpyu($Rs32.h,$Rt32.h)",
16080 tc_7f8ae742, TypeM>, Enc_2ae154 {
16081 let Inst{7-5} = 0b011;
16082 let Inst{13-13} = 0b0;
16083 let Inst{31-21} = 0b11101110011;
16084 let hasNewValue = 1;
16085 let opNewValue = 0;
16086 let prefersSlot3 = 1;
16087 let Constraints = "$Rx32 = $Rx32in";
16088 }
16089 def M2_mpyu_nac_hh_s1 : HInst<
16090 (outs IntRegs:$Rx32),
16091 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16092 "$Rx32 -= mpyu($Rs32.h,$Rt32.h):<<1",
16093 tc_7f8ae742, TypeM>, Enc_2ae154 {
16094 let Inst{7-5} = 0b011;
16095 let Inst{13-13} = 0b0;
16096 let Inst{31-21} = 0b11101110111;
16097 let hasNewValue = 1;
16098 let opNewValue = 0;
16099 let prefersSlot3 = 1;
16100 let Constraints = "$Rx32 = $Rx32in";
16101 }
16102 def M2_mpyu_nac_hl_s0 : HInst<
16103 (outs IntRegs:$Rx32),
16104 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16105 "$Rx32 -= mpyu($Rs32.h,$Rt32.l)",
16106 tc_7f8ae742, TypeM>, Enc_2ae154 {
16107 let Inst{7-5} = 0b010;
16108 let Inst{13-13} = 0b0;
16109 let Inst{31-21} = 0b11101110011;
16110 let hasNewValue = 1;
16111 let opNewValue = 0;
16112 let prefersSlot3 = 1;
16113 let Constraints = "$Rx32 = $Rx32in";
16114 }
16115 def M2_mpyu_nac_hl_s1 : HInst<
16116 (outs IntRegs:$Rx32),
16117 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16118 "$Rx32 -= mpyu($Rs32.h,$Rt32.l):<<1",
16119 tc_7f8ae742, TypeM>, Enc_2ae154 {
16120 let Inst{7-5} = 0b010;
16121 let Inst{13-13} = 0b0;
16122 let Inst{31-21} = 0b11101110111;
16123 let hasNewValue = 1;
16124 let opNewValue = 0;
16125 let prefersSlot3 = 1;
16126 let Constraints = "$Rx32 = $Rx32in";
16127 }
16128 def M2_mpyu_nac_lh_s0 : HInst<
16129 (outs IntRegs:$Rx32),
16130 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16131 "$Rx32 -= mpyu($Rs32.l,$Rt32.h)",
16132 tc_7f8ae742, TypeM>, Enc_2ae154 {
16133 let Inst{7-5} = 0b001;
16134 let Inst{13-13} = 0b0;
16135 let Inst{31-21} = 0b11101110011;
16136 let hasNewValue = 1;
16137 let opNewValue = 0;
16138 let prefersSlot3 = 1;
16139 let Constraints = "$Rx32 = $Rx32in";
16140 }
16141 def M2_mpyu_nac_lh_s1 : HInst<
16142 (outs IntRegs:$Rx32),
16143 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16144 "$Rx32 -= mpyu($Rs32.l,$Rt32.h):<<1",
16145 tc_7f8ae742, TypeM>, Enc_2ae154 {
16146 let Inst{7-5} = 0b001;
16147 let Inst{13-13} = 0b0;
16148 let Inst{31-21} = 0b11101110111;
16149 let hasNewValue = 1;
16150 let opNewValue = 0;
16151 let prefersSlot3 = 1;
16152 let Constraints = "$Rx32 = $Rx32in";
16153 }
16154 def M2_mpyu_nac_ll_s0 : HInst<
16155 (outs IntRegs:$Rx32),
16156 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16157 "$Rx32 -= mpyu($Rs32.l,$Rt32.l)",
16158 tc_7f8ae742, TypeM>, Enc_2ae154 {
16159 let Inst{7-5} = 0b000;
16160 let Inst{13-13} = 0b0;
16161 let Inst{31-21} = 0b11101110011;
16162 let hasNewValue = 1;
16163 let opNewValue = 0;
16164 let prefersSlot3 = 1;
16165 let Constraints = "$Rx32 = $Rx32in";
16166 }
16167 def M2_mpyu_nac_ll_s1 : HInst<
16168 (outs IntRegs:$Rx32),
16169 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16170 "$Rx32 -= mpyu($Rs32.l,$Rt32.l):<<1",
16171 tc_7f8ae742, TypeM>, Enc_2ae154 {
16172 let Inst{7-5} = 0b000;
16173 let Inst{13-13} = 0b0;
16174 let Inst{31-21} = 0b11101110111;
16175 let hasNewValue = 1;
16176 let opNewValue = 0;
16177 let prefersSlot3 = 1;
16178 let Constraints = "$Rx32 = $Rx32in";
16179 }
16180 def M2_mpyu_up : HInst<
16181 (outs IntRegs:$Rd32),
16182 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16183 "$Rd32 = mpyu($Rs32,$Rt32)",
16184 tc_c21d7447, TypeM>, Enc_5ab2be {
16185 let Inst{7-5} = 0b001;
16186 let Inst{13-13} = 0b0;
16187 let Inst{31-21} = 0b11101101010;
16188 let hasNewValue = 1;
16189 let opNewValue = 0;
16190 let prefersSlot3 = 1;
16191 }
16192 def M2_mpyud_acc_hh_s0 : HInst<
16193 (outs DoubleRegs:$Rxx32),
16194 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16195 "$Rxx32 += mpyu($Rs32.h,$Rt32.h)",
16196 tc_7f8ae742, TypeM>, Enc_61f0b0 {
16197 let Inst{7-5} = 0b011;
16198 let Inst{13-13} = 0b0;
16199 let Inst{31-21} = 0b11100110010;
16200 let prefersSlot3 = 1;
16201 let Constraints = "$Rxx32 = $Rxx32in";
16202 }
16203 def M2_mpyud_acc_hh_s1 : HInst<
16204 (outs DoubleRegs:$Rxx32),
16205 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16206 "$Rxx32 += mpyu($Rs32.h,$Rt32.h):<<1",
16207 tc_7f8ae742, TypeM>, Enc_61f0b0 {
16208 let Inst{7-5} = 0b011;
16209 let Inst{13-13} = 0b0;
16210 let Inst{31-21} = 0b11100110110;
16211 let prefersSlot3 = 1;
16212 let Constraints = "$Rxx32 = $Rxx32in";
16213 }
16214 def M2_mpyud_acc_hl_s0 : HInst<
16215 (outs DoubleRegs:$Rxx32),
16216 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16217 "$Rxx32 += mpyu($Rs32.h,$Rt32.l)",
16218 tc_7f8ae742, TypeM>, Enc_61f0b0 {
16219 let Inst{7-5} = 0b010;
16220 let Inst{13-13} = 0b0;
16221 let Inst{31-21} = 0b11100110010;
16222 let prefersSlot3 = 1;
16223 let Constraints = "$Rxx32 = $Rxx32in";
16224 }
16225 def M2_mpyud_acc_hl_s1 : HInst<
16226 (outs DoubleRegs:$Rxx32),
16227 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16228 "$Rxx32 += mpyu($Rs32.h,$Rt32.l):<<1",
16229 tc_7f8ae742, TypeM>, Enc_61f0b0 {
16230 let Inst{7-5} = 0b010;
16231 let Inst{13-13} = 0b0;
16232 let Inst{31-21} = 0b11100110110;
16233 let prefersSlot3 = 1;
16234 let Constraints = "$Rxx32 = $Rxx32in";
16235 }
16236 def M2_mpyud_acc_lh_s0 : HInst<
16237 (outs DoubleRegs:$Rxx32),
16238 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16239 "$Rxx32 += mpyu($Rs32.l,$Rt32.h)",
16240 tc_7f8ae742, TypeM>, Enc_61f0b0 {
16241 let Inst{7-5} = 0b001;
16242 let Inst{13-13} = 0b0;
16243 let Inst{31-21} = 0b11100110010;
16244 let prefersSlot3 = 1;
16245 let Constraints = "$Rxx32 = $Rxx32in";
16246 }
16247 def M2_mpyud_acc_lh_s1 : HInst<
16248 (outs DoubleRegs:$Rxx32),
16249 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16250 "$Rxx32 += mpyu($Rs32.l,$Rt32.h):<<1",
16251 tc_7f8ae742, TypeM>, Enc_61f0b0 {
16252 let Inst{7-5} = 0b001;
16253 let Inst{13-13} = 0b0;
16254 let Inst{31-21} = 0b11100110110;
16255 let prefersSlot3 = 1;
16256 let Constraints = "$Rxx32 = $Rxx32in";
16257 }
16258 def M2_mpyud_acc_ll_s0 : HInst<
16259 (outs DoubleRegs:$Rxx32),
16260 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16261 "$Rxx32 += mpyu($Rs32.l,$Rt32.l)",
16262 tc_7f8ae742, TypeM>, Enc_61f0b0 {
16263 let Inst{7-5} = 0b000;
16264 let Inst{13-13} = 0b0;
16265 let Inst{31-21} = 0b11100110010;
16266 let prefersSlot3 = 1;
16267 let Constraints = "$Rxx32 = $Rxx32in";
16268 }
16269 def M2_mpyud_acc_ll_s1 : HInst<
16270 (outs DoubleRegs:$Rxx32),
16271 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16272 "$Rxx32 += mpyu($Rs32.l,$Rt32.l):<<1",
16273 tc_7f8ae742, TypeM>, Enc_61f0b0 {
16274 let Inst{7-5} = 0b000;
16275 let Inst{13-13} = 0b0;
16276 let Inst{31-21} = 0b11100110110;
16277 let prefersSlot3 = 1;
16278 let Constraints = "$Rxx32 = $Rxx32in";
16279 }
16280 def M2_mpyud_hh_s0 : HInst<
16281 (outs DoubleRegs:$Rdd32),
16282 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16283 "$Rdd32 = mpyu($Rs32.h,$Rt32.h)",
16284 tc_c21d7447, TypeM>, Enc_be32a5 {
16285 let Inst{7-5} = 0b011;
16286 let Inst{13-13} = 0b0;
16287 let Inst{31-21} = 0b11100100010;
16288 let prefersSlot3 = 1;
16289 }
16290 def M2_mpyud_hh_s1 : HInst<
16291 (outs DoubleRegs:$Rdd32),
16292 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16293 "$Rdd32 = mpyu($Rs32.h,$Rt32.h):<<1",
16294 tc_c21d7447, TypeM>, Enc_be32a5 {
16295 let Inst{7-5} = 0b011;
16296 let Inst{13-13} = 0b0;
16297 let Inst{31-21} = 0b11100100110;
16298 let prefersSlot3 = 1;
16299 }
16300 def M2_mpyud_hl_s0 : HInst<
16301 (outs DoubleRegs:$Rdd32),
16302 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16303 "$Rdd32 = mpyu($Rs32.h,$Rt32.l)",
16304 tc_c21d7447, TypeM>, Enc_be32a5 {
16305 let Inst{7-5} = 0b010;
16306 let Inst{13-13} = 0b0;
16307 let Inst{31-21} = 0b11100100010;
16308 let prefersSlot3 = 1;
16309 }
16310 def M2_mpyud_hl_s1 : HInst<
16311 (outs DoubleRegs:$Rdd32),
16312 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16313 "$Rdd32 = mpyu($Rs32.h,$Rt32.l):<<1",
16314 tc_c21d7447, TypeM>, Enc_be32a5 {
16315 let Inst{7-5} = 0b010;
16316 let Inst{13-13} = 0b0;
16317 let Inst{31-21} = 0b11100100110;
16318 let prefersSlot3 = 1;
16319 }
16320 def M2_mpyud_lh_s0 : HInst<
16321 (outs DoubleRegs:$Rdd32),
16322 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16323 "$Rdd32 = mpyu($Rs32.l,$Rt32.h)",
16324 tc_c21d7447, TypeM>, Enc_be32a5 {
16325 let Inst{7-5} = 0b001;
16326 let Inst{13-13} = 0b0;
16327 let Inst{31-21} = 0b11100100010;
16328 let prefersSlot3 = 1;
16329 }
16330 def M2_mpyud_lh_s1 : HInst<
16331 (outs DoubleRegs:$Rdd32),
16332 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16333 "$Rdd32 = mpyu($Rs32.l,$Rt32.h):<<1",
16334 tc_c21d7447, TypeM>, Enc_be32a5 {
16335 let Inst{7-5} = 0b001;
16336 let Inst{13-13} = 0b0;
16337 let Inst{31-21} = 0b11100100110;
16338 let prefersSlot3 = 1;
16339 }
16340 def M2_mpyud_ll_s0 : HInst<
16341 (outs DoubleRegs:$Rdd32),
16342 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16343 "$Rdd32 = mpyu($Rs32.l,$Rt32.l)",
16344 tc_c21d7447, TypeM>, Enc_be32a5 {
16345 let Inst{7-5} = 0b000;
16346 let Inst{13-13} = 0b0;
16347 let Inst{31-21} = 0b11100100010;
16348 let prefersSlot3 = 1;
16349 }
16350 def M2_mpyud_ll_s1 : HInst<
16351 (outs DoubleRegs:$Rdd32),
16352 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16353 "$Rdd32 = mpyu($Rs32.l,$Rt32.l):<<1",
16354 tc_c21d7447, TypeM>, Enc_be32a5 {
16355 let Inst{7-5} = 0b000;
16356 let Inst{13-13} = 0b0;
16357 let Inst{31-21} = 0b11100100110;
16358 let prefersSlot3 = 1;
16359 }
16360 def M2_mpyud_nac_hh_s0 : HInst<
16361 (outs DoubleRegs:$Rxx32),
16362 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16363 "$Rxx32 -= mpyu($Rs32.h,$Rt32.h)",
16364 tc_7f8ae742, TypeM>, Enc_61f0b0 {
16365 let Inst{7-5} = 0b011;
16366 let Inst{13-13} = 0b0;
16367 let Inst{31-21} = 0b11100110011;
16368 let prefersSlot3 = 1;
16369 let Constraints = "$Rxx32 = $Rxx32in";
16370 }
16371 def M2_mpyud_nac_hh_s1 : HInst<
16372 (outs DoubleRegs:$Rxx32),
16373 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16374 "$Rxx32 -= mpyu($Rs32.h,$Rt32.h):<<1",
16375 tc_7f8ae742, TypeM>, Enc_61f0b0 {
16376 let Inst{7-5} = 0b011;
16377 let Inst{13-13} = 0b0;
16378 let Inst{31-21} = 0b11100110111;
16379 let prefersSlot3 = 1;
16380 let Constraints = "$Rxx32 = $Rxx32in";
16381 }
16382 def M2_mpyud_nac_hl_s0 : HInst<
16383 (outs DoubleRegs:$Rxx32),
16384 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16385 "$Rxx32 -= mpyu($Rs32.h,$Rt32.l)",
16386 tc_7f8ae742, TypeM>, Enc_61f0b0 {
16387 let Inst{7-5} = 0b010;
16388 let Inst{13-13} = 0b0;
16389 let Inst{31-21} = 0b11100110011;
16390 let prefersSlot3 = 1;
16391 let Constraints = "$Rxx32 = $Rxx32in";
16392 }
16393 def M2_mpyud_nac_hl_s1 : HInst<
16394 (outs DoubleRegs:$Rxx32),
16395 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16396 "$Rxx32 -= mpyu($Rs32.h,$Rt32.l):<<1",
16397 tc_7f8ae742, TypeM>, Enc_61f0b0 {
16398 let Inst{7-5} = 0b010;
16399 let Inst{13-13} = 0b0;
16400 let Inst{31-21} = 0b11100110111;
16401 let prefersSlot3 = 1;
16402 let Constraints = "$Rxx32 = $Rxx32in";
16403 }
16404 def M2_mpyud_nac_lh_s0 : HInst<
16405 (outs DoubleRegs:$Rxx32),
16406 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16407 "$Rxx32 -= mpyu($Rs32.l,$Rt32.h)",
16408 tc_7f8ae742, TypeM>, Enc_61f0b0 {
16409 let Inst{7-5} = 0b001;
16410 let Inst{13-13} = 0b0;
16411 let Inst{31-21} = 0b11100110011;
16412 let prefersSlot3 = 1;
16413 let Constraints = "$Rxx32 = $Rxx32in";
16414 }
16415 def M2_mpyud_nac_lh_s1 : HInst<
16416 (outs DoubleRegs:$Rxx32),
16417 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16418 "$Rxx32 -= mpyu($Rs32.l,$Rt32.h):<<1",
16419 tc_7f8ae742, TypeM>, Enc_61f0b0 {
16420 let Inst{7-5} = 0b001;
16421 let Inst{13-13} = 0b0;
16422 let Inst{31-21} = 0b11100110111;
16423 let prefersSlot3 = 1;
16424 let Constraints = "$Rxx32 = $Rxx32in";
16425 }
16426 def M2_mpyud_nac_ll_s0 : HInst<
16427 (outs DoubleRegs:$Rxx32),
16428 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16429 "$Rxx32 -= mpyu($Rs32.l,$Rt32.l)",
16430 tc_7f8ae742, TypeM>, Enc_61f0b0 {
16431 let Inst{7-5} = 0b000;
16432 let Inst{13-13} = 0b0;
16433 let Inst{31-21} = 0b11100110011;
16434 let prefersSlot3 = 1;
16435 let Constraints = "$Rxx32 = $Rxx32in";
16436 }
16437 def M2_mpyud_nac_ll_s1 : HInst<
16438 (outs DoubleRegs:$Rxx32),
16439 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16440 "$Rxx32 -= mpyu($Rs32.l,$Rt32.l):<<1",
16441 tc_7f8ae742, TypeM>, Enc_61f0b0 {
16442 let Inst{7-5} = 0b000;
16443 let Inst{13-13} = 0b0;
16444 let Inst{31-21} = 0b11100110111;
16445 let prefersSlot3 = 1;
16446 let Constraints = "$Rxx32 = $Rxx32in";
16447 }
16448 def M2_mpyui : HInst<
16449 (outs IntRegs:$Rd32),
16450 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16451 "$Rd32 = mpyui($Rs32,$Rt32)",
16452 tc_c21d7447, TypeM> {
16453 let hasNewValue = 1;
16454 let opNewValue = 0;
16455 let isPseudo = 1;
16456 let isCodeGenOnly = 1;
16457 }
16458 def M2_nacci : HInst<
16459 (outs IntRegs:$Rx32),
16460 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16461 "$Rx32 -= add($Rs32,$Rt32)",
16462 tc_2c13e7f5, TypeM>, Enc_2ae154 {
16463 let Inst{7-5} = 0b001;
16464 let Inst{13-13} = 0b0;
16465 let Inst{31-21} = 0b11101111100;
16466 let hasNewValue = 1;
16467 let opNewValue = 0;
16468 let prefersSlot3 = 1;
16469 let InputType = "reg";
16470 let Constraints = "$Rx32 = $Rx32in";
16471 }
16472 def M2_naccii : HInst<
16473 (outs IntRegs:$Rx32),
16474 (ins IntRegs:$Rx32in, IntRegs:$Rs32, s32_0Imm:$Ii),
16475 "$Rx32 -= add($Rs32,#$Ii)",
16476 tc_2c13e7f5, TypeM>, Enc_c90aca {
16477 let Inst{13-13} = 0b0;
16478 let Inst{31-21} = 0b11100010100;
16479 let hasNewValue = 1;
16480 let opNewValue = 0;
16481 let prefersSlot3 = 1;
16482 let InputType = "imm";
16483 let isExtendable = 1;
16484 let opExtendable = 3;
16485 let isExtentSigned = 1;
16486 let opExtentBits = 8;
16487 let opExtentAlign = 0;
16488 let Constraints = "$Rx32 = $Rx32in";
16489 }
16490 def M2_subacc : HInst<
16491 (outs IntRegs:$Rx32),
16492 (ins IntRegs:$Rx32in, IntRegs:$Rt32, IntRegs:$Rs32),
16493 "$Rx32 += sub($Rt32,$Rs32)",
16494 tc_2c13e7f5, TypeM>, Enc_a568d4 {
16495 let Inst{7-5} = 0b011;
16496 let Inst{13-13} = 0b0;
16497 let Inst{31-21} = 0b11101111000;
16498 let hasNewValue = 1;
16499 let opNewValue = 0;
16500 let prefersSlot3 = 1;
16501 let InputType = "reg";
16502 let Constraints = "$Rx32 = $Rx32in";
16503 }
16504 def M2_vabsdiffh : HInst<
16505 (outs DoubleRegs:$Rdd32),
16506 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
16507 "$Rdd32 = vabsdiffh($Rtt32,$Rss32)",
16508 tc_0dfac0a7, TypeM>, Enc_ea23e4 {
16509 let Inst{7-5} = 0b000;
16510 let Inst{13-13} = 0b0;
16511 let Inst{31-21} = 0b11101000011;
16512 let prefersSlot3 = 1;
16513 }
16514 def M2_vabsdiffw : HInst<
16515 (outs DoubleRegs:$Rdd32),
16516 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
16517 "$Rdd32 = vabsdiffw($Rtt32,$Rss32)",
16518 tc_0dfac0a7, TypeM>, Enc_ea23e4 {
16519 let Inst{7-5} = 0b000;
16520 let Inst{13-13} = 0b0;
16521 let Inst{31-21} = 0b11101000001;
16522 let prefersSlot3 = 1;
16523 }
16524 def M2_vcmac_s0_sat_i : HInst<
16525 (outs DoubleRegs:$Rxx32),
16526 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16527 "$Rxx32 += vcmpyi($Rss32,$Rtt32):sat",
16528 tc_7f8ae742, TypeM>, Enc_88c16c {
16529 let Inst{7-5} = 0b100;
16530 let Inst{13-13} = 0b0;
16531 let Inst{31-21} = 0b11101010010;
16532 let prefersSlot3 = 1;
16533 let Defs = [USR_OVF];
16534 let Constraints = "$Rxx32 = $Rxx32in";
16535 }
16536 def M2_vcmac_s0_sat_r : HInst<
16537 (outs DoubleRegs:$Rxx32),
16538 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16539 "$Rxx32 += vcmpyr($Rss32,$Rtt32):sat",
16540 tc_7f8ae742, TypeM>, Enc_88c16c {
16541 let Inst{7-5} = 0b100;
16542 let Inst{13-13} = 0b0;
16543 let Inst{31-21} = 0b11101010001;
16544 let prefersSlot3 = 1;
16545 let Defs = [USR_OVF];
16546 let Constraints = "$Rxx32 = $Rxx32in";
16547 }
16548 def M2_vcmpy_s0_sat_i : HInst<
16549 (outs DoubleRegs:$Rdd32),
16550 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16551 "$Rdd32 = vcmpyi($Rss32,$Rtt32):sat",
16552 tc_c21d7447, TypeM>, Enc_a56825 {
16553 let Inst{7-5} = 0b110;
16554 let Inst{13-13} = 0b0;
16555 let Inst{31-21} = 0b11101000010;
16556 let prefersSlot3 = 1;
16557 let Defs = [USR_OVF];
16558 }
16559 def M2_vcmpy_s0_sat_r : HInst<
16560 (outs DoubleRegs:$Rdd32),
16561 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16562 "$Rdd32 = vcmpyr($Rss32,$Rtt32):sat",
16563 tc_c21d7447, TypeM>, Enc_a56825 {
16564 let Inst{7-5} = 0b110;
16565 let Inst{13-13} = 0b0;
16566 let Inst{31-21} = 0b11101000001;
16567 let prefersSlot3 = 1;
16568 let Defs = [USR_OVF];
16569 }
16570 def M2_vcmpy_s1_sat_i : HInst<
16571 (outs DoubleRegs:$Rdd32),
16572 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16573 "$Rdd32 = vcmpyi($Rss32,$Rtt32):<<1:sat",
16574 tc_c21d7447, TypeM>, Enc_a56825 {
16575 let Inst{7-5} = 0b110;
16576 let Inst{13-13} = 0b0;
16577 let Inst{31-21} = 0b11101000110;
16578 let prefersSlot3 = 1;
16579 let Defs = [USR_OVF];
16580 }
16581 def M2_vcmpy_s1_sat_r : HInst<
16582 (outs DoubleRegs:$Rdd32),
16583 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16584 "$Rdd32 = vcmpyr($Rss32,$Rtt32):<<1:sat",
16585 tc_c21d7447, TypeM>, Enc_a56825 {
16586 let Inst{7-5} = 0b110;
16587 let Inst{13-13} = 0b0;
16588 let Inst{31-21} = 0b11101000101;
16589 let prefersSlot3 = 1;
16590 let Defs = [USR_OVF];
16591 }
16592 def M2_vdmacs_s0 : HInst<
16593 (outs DoubleRegs:$Rxx32),
16594 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16595 "$Rxx32 += vdmpy($Rss32,$Rtt32):sat",
16596 tc_7f8ae742, TypeM>, Enc_88c16c {
16597 let Inst{7-5} = 0b100;
16598 let Inst{13-13} = 0b0;
16599 let Inst{31-21} = 0b11101010000;
16600 let prefersSlot3 = 1;
16601 let Defs = [USR_OVF];
16602 let Constraints = "$Rxx32 = $Rxx32in";
16603 }
16604 def M2_vdmacs_s1 : HInst<
16605 (outs DoubleRegs:$Rxx32),
16606 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16607 "$Rxx32 += vdmpy($Rss32,$Rtt32):<<1:sat",
16608 tc_7f8ae742, TypeM>, Enc_88c16c {
16609 let Inst{7-5} = 0b100;
16610 let Inst{13-13} = 0b0;
16611 let Inst{31-21} = 0b11101010100;
16612 let prefersSlot3 = 1;
16613 let Defs = [USR_OVF];
16614 let Constraints = "$Rxx32 = $Rxx32in";
16615 }
16616 def M2_vdmpyrs_s0 : HInst<
16617 (outs IntRegs:$Rd32),
16618 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16619 "$Rd32 = vdmpy($Rss32,$Rtt32):rnd:sat",
16620 tc_c21d7447, TypeM>, Enc_d2216a {
16621 let Inst{7-5} = 0b000;
16622 let Inst{13-13} = 0b0;
16623 let Inst{31-21} = 0b11101001000;
16624 let hasNewValue = 1;
16625 let opNewValue = 0;
16626 let prefersSlot3 = 1;
16627 let Defs = [USR_OVF];
16628 }
16629 def M2_vdmpyrs_s1 : HInst<
16630 (outs IntRegs:$Rd32),
16631 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16632 "$Rd32 = vdmpy($Rss32,$Rtt32):<<1:rnd:sat",
16633 tc_c21d7447, TypeM>, Enc_d2216a {
16634 let Inst{7-5} = 0b000;
16635 let Inst{13-13} = 0b0;
16636 let Inst{31-21} = 0b11101001100;
16637 let hasNewValue = 1;
16638 let opNewValue = 0;
16639 let prefersSlot3 = 1;
16640 let Defs = [USR_OVF];
16641 }
16642 def M2_vdmpys_s0 : HInst<
16643 (outs DoubleRegs:$Rdd32),
16644 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16645 "$Rdd32 = vdmpy($Rss32,$Rtt32):sat",
16646 tc_c21d7447, TypeM>, Enc_a56825 {
16647 let Inst{7-5} = 0b100;
16648 let Inst{13-13} = 0b0;
16649 let Inst{31-21} = 0b11101000000;
16650 let prefersSlot3 = 1;
16651 let Defs = [USR_OVF];
16652 }
16653 def M2_vdmpys_s1 : HInst<
16654 (outs DoubleRegs:$Rdd32),
16655 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16656 "$Rdd32 = vdmpy($Rss32,$Rtt32):<<1:sat",
16657 tc_c21d7447, TypeM>, Enc_a56825 {
16658 let Inst{7-5} = 0b100;
16659 let Inst{13-13} = 0b0;
16660 let Inst{31-21} = 0b11101000100;
16661 let prefersSlot3 = 1;
16662 let Defs = [USR_OVF];
16663 }
16664 def M2_vmac2 : HInst<
16665 (outs DoubleRegs:$Rxx32),
16666 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16667 "$Rxx32 += vmpyh($Rs32,$Rt32)",
16668 tc_7f8ae742, TypeM>, Enc_61f0b0 {
16669 let Inst{7-5} = 0b001;
16670 let Inst{13-13} = 0b0;
16671 let Inst{31-21} = 0b11100111001;
16672 let prefersSlot3 = 1;
16673 let Constraints = "$Rxx32 = $Rxx32in";
16674 }
16675 def M2_vmac2es : HInst<
16676 (outs DoubleRegs:$Rxx32),
16677 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16678 "$Rxx32 += vmpyeh($Rss32,$Rtt32)",
16679 tc_7f8ae742, TypeM>, Enc_88c16c {
16680 let Inst{7-5} = 0b010;
16681 let Inst{13-13} = 0b0;
16682 let Inst{31-21} = 0b11101010001;
16683 let prefersSlot3 = 1;
16684 let Constraints = "$Rxx32 = $Rxx32in";
16685 }
16686 def M2_vmac2es_s0 : HInst<
16687 (outs DoubleRegs:$Rxx32),
16688 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16689 "$Rxx32 += vmpyeh($Rss32,$Rtt32):sat",
16690 tc_7f8ae742, TypeM>, Enc_88c16c {
16691 let Inst{7-5} = 0b110;
16692 let Inst{13-13} = 0b0;
16693 let Inst{31-21} = 0b11101010000;
16694 let prefersSlot3 = 1;
16695 let Defs = [USR_OVF];
16696 let Constraints = "$Rxx32 = $Rxx32in";
16697 }
16698 def M2_vmac2es_s1 : HInst<
16699 (outs DoubleRegs:$Rxx32),
16700 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16701 "$Rxx32 += vmpyeh($Rss32,$Rtt32):<<1:sat",
16702 tc_7f8ae742, TypeM>, Enc_88c16c {
16703 let Inst{7-5} = 0b110;
16704 let Inst{13-13} = 0b0;
16705 let Inst{31-21} = 0b11101010100;
16706 let prefersSlot3 = 1;
16707 let Defs = [USR_OVF];
16708 let Constraints = "$Rxx32 = $Rxx32in";
16709 }
16710 def M2_vmac2s_s0 : HInst<
16711 (outs DoubleRegs:$Rxx32),
16712 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16713 "$Rxx32 += vmpyh($Rs32,$Rt32):sat",
16714 tc_7f8ae742, TypeM>, Enc_61f0b0 {
16715 let Inst{7-5} = 0b101;
16716 let Inst{13-13} = 0b0;
16717 let Inst{31-21} = 0b11100111000;
16718 let prefersSlot3 = 1;
16719 let Defs = [USR_OVF];
16720 let Constraints = "$Rxx32 = $Rxx32in";
16721 }
16722 def M2_vmac2s_s1 : HInst<
16723 (outs DoubleRegs:$Rxx32),
16724 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16725 "$Rxx32 += vmpyh($Rs32,$Rt32):<<1:sat",
16726 tc_7f8ae742, TypeM>, Enc_61f0b0 {
16727 let Inst{7-5} = 0b101;
16728 let Inst{13-13} = 0b0;
16729 let Inst{31-21} = 0b11100111100;
16730 let prefersSlot3 = 1;
16731 let Defs = [USR_OVF];
16732 let Constraints = "$Rxx32 = $Rxx32in";
16733 }
16734 def M2_vmac2su_s0 : HInst<
16735 (outs DoubleRegs:$Rxx32),
16736 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16737 "$Rxx32 += vmpyhsu($Rs32,$Rt32):sat",
16738 tc_7f8ae742, TypeM>, Enc_61f0b0 {
16739 let Inst{7-5} = 0b101;
16740 let Inst{13-13} = 0b0;
16741 let Inst{31-21} = 0b11100111011;
16742 let prefersSlot3 = 1;
16743 let Defs = [USR_OVF];
16744 let Constraints = "$Rxx32 = $Rxx32in";
16745 }
16746 def M2_vmac2su_s1 : HInst<
16747 (outs DoubleRegs:$Rxx32),
16748 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16749 "$Rxx32 += vmpyhsu($Rs32,$Rt32):<<1:sat",
16750 tc_7f8ae742, TypeM>, Enc_61f0b0 {
16751 let Inst{7-5} = 0b101;
16752 let Inst{13-13} = 0b0;
16753 let Inst{31-21} = 0b11100111111;
16754 let prefersSlot3 = 1;
16755 let Defs = [USR_OVF];
16756 let Constraints = "$Rxx32 = $Rxx32in";
16757 }
16758 def M2_vmpy2es_s0 : HInst<
16759 (outs DoubleRegs:$Rdd32),
16760 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16761 "$Rdd32 = vmpyeh($Rss32,$Rtt32):sat",
16762 tc_c21d7447, TypeM>, Enc_a56825 {
16763 let Inst{7-5} = 0b110;
16764 let Inst{13-13} = 0b0;
16765 let Inst{31-21} = 0b11101000000;
16766 let prefersSlot3 = 1;
16767 let Defs = [USR_OVF];
16768 }
16769 def M2_vmpy2es_s1 : HInst<
16770 (outs DoubleRegs:$Rdd32),
16771 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16772 "$Rdd32 = vmpyeh($Rss32,$Rtt32):<<1:sat",
16773 tc_c21d7447, TypeM>, Enc_a56825 {
16774 let Inst{7-5} = 0b110;
16775 let Inst{13-13} = 0b0;
16776 let Inst{31-21} = 0b11101000100;
16777 let prefersSlot3 = 1;
16778 let Defs = [USR_OVF];
16779 }
16780 def M2_vmpy2s_s0 : HInst<
16781 (outs DoubleRegs:$Rdd32),
16782 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16783 "$Rdd32 = vmpyh($Rs32,$Rt32):sat",
16784 tc_c21d7447, TypeM>, Enc_be32a5 {
16785 let Inst{7-5} = 0b101;
16786 let Inst{13-13} = 0b0;
16787 let Inst{31-21} = 0b11100101000;
16788 let prefersSlot3 = 1;
16789 let Defs = [USR_OVF];
16790 }
16791 def M2_vmpy2s_s0pack : HInst<
16792 (outs IntRegs:$Rd32),
16793 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16794 "$Rd32 = vmpyh($Rs32,$Rt32):rnd:sat",
16795 tc_c21d7447, TypeM>, Enc_5ab2be {
16796 let Inst{7-5} = 0b111;
16797 let Inst{13-13} = 0b0;
16798 let Inst{31-21} = 0b11101101001;
16799 let hasNewValue = 1;
16800 let opNewValue = 0;
16801 let prefersSlot3 = 1;
16802 let Defs = [USR_OVF];
16803 }
16804 def M2_vmpy2s_s1 : HInst<
16805 (outs DoubleRegs:$Rdd32),
16806 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16807 "$Rdd32 = vmpyh($Rs32,$Rt32):<<1:sat",
16808 tc_c21d7447, TypeM>, Enc_be32a5 {
16809 let Inst{7-5} = 0b101;
16810 let Inst{13-13} = 0b0;
16811 let Inst{31-21} = 0b11100101100;
16812 let prefersSlot3 = 1;
16813 let Defs = [USR_OVF];
16814 }
16815 def M2_vmpy2s_s1pack : HInst<
16816 (outs IntRegs:$Rd32),
16817 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16818 "$Rd32 = vmpyh($Rs32,$Rt32):<<1:rnd:sat",
16819 tc_c21d7447, TypeM>, Enc_5ab2be {
16820 let Inst{7-5} = 0b111;
16821 let Inst{13-13} = 0b0;
16822 let Inst{31-21} = 0b11101101101;
16823 let hasNewValue = 1;
16824 let opNewValue = 0;
16825 let prefersSlot3 = 1;
16826 let Defs = [USR_OVF];
16827 }
16828 def M2_vmpy2su_s0 : HInst<
16829 (outs DoubleRegs:$Rdd32),
16830 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16831 "$Rdd32 = vmpyhsu($Rs32,$Rt32):sat",
16832 tc_c21d7447, TypeM>, Enc_be32a5 {
16833 let Inst{7-5} = 0b111;
16834 let Inst{13-13} = 0b0;
16835 let Inst{31-21} = 0b11100101000;
16836 let prefersSlot3 = 1;
16837 let Defs = [USR_OVF];
16838 }
16839 def M2_vmpy2su_s1 : HInst<
16840 (outs DoubleRegs:$Rdd32),
16841 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16842 "$Rdd32 = vmpyhsu($Rs32,$Rt32):<<1:sat",
16843 tc_c21d7447, TypeM>, Enc_be32a5 {
16844 let Inst{7-5} = 0b111;
16845 let Inst{13-13} = 0b0;
16846 let Inst{31-21} = 0b11100101100;
16847 let prefersSlot3 = 1;
16848 let Defs = [USR_OVF];
16849 }
16850 def M2_vraddh : HInst<
16851 (outs IntRegs:$Rd32),
16852 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16853 "$Rd32 = vraddh($Rss32,$Rtt32)",
16854 tc_c21d7447, TypeM>, Enc_d2216a {
16855 let Inst{7-5} = 0b111;
16856 let Inst{13-13} = 0b0;
16857 let Inst{31-21} = 0b11101001001;
16858 let hasNewValue = 1;
16859 let opNewValue = 0;
16860 let prefersSlot3 = 1;
16861 }
16862 def M2_vradduh : HInst<
16863 (outs IntRegs:$Rd32),
16864 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16865 "$Rd32 = vradduh($Rss32,$Rtt32)",
16866 tc_c21d7447, TypeM>, Enc_d2216a {
16867 let Inst{7-5} = 0b001;
16868 let Inst{13-13} = 0b0;
16869 let Inst{31-21} = 0b11101001000;
16870 let hasNewValue = 1;
16871 let opNewValue = 0;
16872 let prefersSlot3 = 1;
16873 }
16874 def M2_vrcmaci_s0 : HInst<
16875 (outs DoubleRegs:$Rxx32),
16876 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16877 "$Rxx32 += vrcmpyi($Rss32,$Rtt32)",
16878 tc_7f8ae742, TypeM>, Enc_88c16c {
16879 let Inst{7-5} = 0b000;
16880 let Inst{13-13} = 0b0;
16881 let Inst{31-21} = 0b11101010000;
16882 let prefersSlot3 = 1;
16883 let Constraints = "$Rxx32 = $Rxx32in";
16884 }
16885 def M2_vrcmaci_s0c : HInst<
16886 (outs DoubleRegs:$Rxx32),
16887 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16888 "$Rxx32 += vrcmpyi($Rss32,$Rtt32*)",
16889 tc_7f8ae742, TypeM>, Enc_88c16c {
16890 let Inst{7-5} = 0b000;
16891 let Inst{13-13} = 0b0;
16892 let Inst{31-21} = 0b11101010010;
16893 let prefersSlot3 = 1;
16894 let Constraints = "$Rxx32 = $Rxx32in";
16895 }
16896 def M2_vrcmacr_s0 : HInst<
16897 (outs DoubleRegs:$Rxx32),
16898 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16899 "$Rxx32 += vrcmpyr($Rss32,$Rtt32)",
16900 tc_7f8ae742, TypeM>, Enc_88c16c {
16901 let Inst{7-5} = 0b001;
16902 let Inst{13-13} = 0b0;
16903 let Inst{31-21} = 0b11101010000;
16904 let prefersSlot3 = 1;
16905 let Constraints = "$Rxx32 = $Rxx32in";
16906 }
16907 def M2_vrcmacr_s0c : HInst<
16908 (outs DoubleRegs:$Rxx32),
16909 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16910 "$Rxx32 += vrcmpyr($Rss32,$Rtt32*)",
16911 tc_7f8ae742, TypeM>, Enc_88c16c {
16912 let Inst{7-5} = 0b001;
16913 let Inst{13-13} = 0b0;
16914 let Inst{31-21} = 0b11101010011;
16915 let prefersSlot3 = 1;
16916 let Constraints = "$Rxx32 = $Rxx32in";
16917 }
16918 def M2_vrcmpyi_s0 : HInst<
16919 (outs DoubleRegs:$Rdd32),
16920 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16921 "$Rdd32 = vrcmpyi($Rss32,$Rtt32)",
16922 tc_c21d7447, TypeM>, Enc_a56825 {
16923 let Inst{7-5} = 0b000;
16924 let Inst{13-13} = 0b0;
16925 let Inst{31-21} = 0b11101000000;
16926 let prefersSlot3 = 1;
16927 }
16928 def M2_vrcmpyi_s0c : HInst<
16929 (outs DoubleRegs:$Rdd32),
16930 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16931 "$Rdd32 = vrcmpyi($Rss32,$Rtt32*)",
16932 tc_c21d7447, TypeM>, Enc_a56825 {
16933 let Inst{7-5} = 0b000;
16934 let Inst{13-13} = 0b0;
16935 let Inst{31-21} = 0b11101000010;
16936 let prefersSlot3 = 1;
16937 }
16938 def M2_vrcmpyr_s0 : HInst<
16939 (outs DoubleRegs:$Rdd32),
16940 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16941 "$Rdd32 = vrcmpyr($Rss32,$Rtt32)",
16942 tc_c21d7447, TypeM>, Enc_a56825 {
16943 let Inst{7-5} = 0b001;
16944 let Inst{13-13} = 0b0;
16945 let Inst{31-21} = 0b11101000000;
16946 let prefersSlot3 = 1;
16947 }
16948 def M2_vrcmpyr_s0c : HInst<
16949 (outs DoubleRegs:$Rdd32),
16950 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16951 "$Rdd32 = vrcmpyr($Rss32,$Rtt32*)",
16952 tc_c21d7447, TypeM>, Enc_a56825 {
16953 let Inst{7-5} = 0b001;
16954 let Inst{13-13} = 0b0;
16955 let Inst{31-21} = 0b11101000011;
16956 let prefersSlot3 = 1;
16957 }
16958 def M2_vrcmpys_acc_s1 : HInst<
16959 (outs DoubleRegs:$Rxx32),
16960 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
16961 "$Rxx32 += vrcmpys($Rss32,$Rt32):<<1:sat",
16962 tc_7f8ae742, TypeM> {
16963 let isPseudo = 1;
16964 let Constraints = "$Rxx32 = $Rxx32in";
16965 }
16966 def M2_vrcmpys_acc_s1_h : HInst<
16967 (outs DoubleRegs:$Rxx32),
16968 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16969 "$Rxx32 += vrcmpys($Rss32,$Rtt32):<<1:sat:raw:hi",
16970 tc_7f8ae742, TypeM>, Enc_88c16c {
16971 let Inst{7-5} = 0b100;
16972 let Inst{13-13} = 0b0;
16973 let Inst{31-21} = 0b11101010101;
16974 let prefersSlot3 = 1;
16975 let Defs = [USR_OVF];
16976 let Constraints = "$Rxx32 = $Rxx32in";
16977 }
16978 def M2_vrcmpys_acc_s1_l : HInst<
16979 (outs DoubleRegs:$Rxx32),
16980 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16981 "$Rxx32 += vrcmpys($Rss32,$Rtt32):<<1:sat:raw:lo",
16982 tc_7f8ae742, TypeM>, Enc_88c16c {
16983 let Inst{7-5} = 0b100;
16984 let Inst{13-13} = 0b0;
16985 let Inst{31-21} = 0b11101010111;
16986 let prefersSlot3 = 1;
16987 let Defs = [USR_OVF];
16988 let Constraints = "$Rxx32 = $Rxx32in";
16989 }
16990 def M2_vrcmpys_s1 : HInst<
16991 (outs DoubleRegs:$Rdd32),
16992 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
16993 "$Rdd32 = vrcmpys($Rss32,$Rt32):<<1:sat",
16994 tc_c21d7447, TypeM> {
16995 let isPseudo = 1;
16996 }
16997 def M2_vrcmpys_s1_h : HInst<
16998 (outs DoubleRegs:$Rdd32),
16999 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17000 "$Rdd32 = vrcmpys($Rss32,$Rtt32):<<1:sat:raw:hi",
17001 tc_c21d7447, TypeM>, Enc_a56825 {
17002 let Inst{7-5} = 0b100;
17003 let Inst{13-13} = 0b0;
17004 let Inst{31-21} = 0b11101000101;
17005 let prefersSlot3 = 1;
17006 let Defs = [USR_OVF];
17007 }
17008 def M2_vrcmpys_s1_l : HInst<
17009 (outs DoubleRegs:$Rdd32),
17010 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17011 "$Rdd32 = vrcmpys($Rss32,$Rtt32):<<1:sat:raw:lo",
17012 tc_c21d7447, TypeM>, Enc_a56825 {
17013 let Inst{7-5} = 0b100;
17014 let Inst{13-13} = 0b0;
17015 let Inst{31-21} = 0b11101000111;
17016 let prefersSlot3 = 1;
17017 let Defs = [USR_OVF];
17018 }
17019 def M2_vrcmpys_s1rp : HInst<
17020 (outs IntRegs:$Rd32),
17021 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
17022 "$Rd32 = vrcmpys($Rss32,$Rt32):<<1:rnd:sat",
17023 tc_c21d7447, TypeM> {
17024 let hasNewValue = 1;
17025 let opNewValue = 0;
17026 let isPseudo = 1;
17027 }
17028 def M2_vrcmpys_s1rp_h : HInst<
17029 (outs IntRegs:$Rd32),
17030 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17031 "$Rd32 = vrcmpys($Rss32,$Rtt32):<<1:rnd:sat:raw:hi",
17032 tc_c21d7447, TypeM>, Enc_d2216a {
17033 let Inst{7-5} = 0b110;
17034 let Inst{13-13} = 0b0;
17035 let Inst{31-21} = 0b11101001101;
17036 let hasNewValue = 1;
17037 let opNewValue = 0;
17038 let prefersSlot3 = 1;
17039 let Defs = [USR_OVF];
17040 }
17041 def M2_vrcmpys_s1rp_l : HInst<
17042 (outs IntRegs:$Rd32),
17043 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17044 "$Rd32 = vrcmpys($Rss32,$Rtt32):<<1:rnd:sat:raw:lo",
17045 tc_c21d7447, TypeM>, Enc_d2216a {
17046 let Inst{7-5} = 0b111;
17047 let Inst{13-13} = 0b0;
17048 let Inst{31-21} = 0b11101001101;
17049 let hasNewValue = 1;
17050 let opNewValue = 0;
17051 let prefersSlot3 = 1;
17052 let Defs = [USR_OVF];
17053 }
17054 def M2_vrmac_s0 : HInst<
17055 (outs DoubleRegs:$Rxx32),
17056 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17057 "$Rxx32 += vrmpyh($Rss32,$Rtt32)",
17058 tc_7f8ae742, TypeM>, Enc_88c16c {
17059 let Inst{7-5} = 0b010;
17060 let Inst{13-13} = 0b0;
17061 let Inst{31-21} = 0b11101010000;
17062 let prefersSlot3 = 1;
17063 let Constraints = "$Rxx32 = $Rxx32in";
17064 }
17065 def M2_vrmpy_s0 : HInst<
17066 (outs DoubleRegs:$Rdd32),
17067 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17068 "$Rdd32 = vrmpyh($Rss32,$Rtt32)",
17069 tc_c21d7447, TypeM>, Enc_a56825 {
17070 let Inst{7-5} = 0b010;
17071 let Inst{13-13} = 0b0;
17072 let Inst{31-21} = 0b11101000000;
17073 let prefersSlot3 = 1;
17074 }
17075 def M2_xor_xacc : HInst<
17076 (outs IntRegs:$Rx32),
17077 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17078 "$Rx32 ^= xor($Rs32,$Rt32)",
17079 tc_a4e22bbd, TypeM>, Enc_2ae154 {
17080 let Inst{7-5} = 0b011;
17081 let Inst{13-13} = 0b0;
17082 let Inst{31-21} = 0b11101111100;
17083 let hasNewValue = 1;
17084 let opNewValue = 0;
17085 let prefersSlot3 = 1;
17086 let InputType = "reg";
17087 let Constraints = "$Rx32 = $Rx32in";
17088 }
17089 def M4_and_and : HInst<
17090 (outs IntRegs:$Rx32),
17091 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17092 "$Rx32 &= and($Rs32,$Rt32)",
17093 tc_a4e22bbd, TypeM>, Enc_2ae154 {
17094 let Inst{7-5} = 0b000;
17095 let Inst{13-13} = 0b0;
17096 let Inst{31-21} = 0b11101111010;
17097 let hasNewValue = 1;
17098 let opNewValue = 0;
17099 let prefersSlot3 = 1;
17100 let InputType = "reg";
17101 let Constraints = "$Rx32 = $Rx32in";
17102 }
17103 def M4_and_andn : HInst<
17104 (outs IntRegs:$Rx32),
17105 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17106 "$Rx32 &= and($Rs32,~$Rt32)",
17107 tc_a4e22bbd, TypeM>, Enc_2ae154 {
17108 let Inst{7-5} = 0b001;
17109 let Inst{13-13} = 0b0;
17110 let Inst{31-21} = 0b11101111001;
17111 let hasNewValue = 1;
17112 let opNewValue = 0;
17113 let prefersSlot3 = 1;
17114 let InputType = "reg";
17115 let Constraints = "$Rx32 = $Rx32in";
17116 }
17117 def M4_and_or : HInst<
17118 (outs IntRegs:$Rx32),
17119 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17120 "$Rx32 &= or($Rs32,$Rt32)",
17121 tc_a4e22bbd, TypeM>, Enc_2ae154 {
17122 let Inst{7-5} = 0b001;
17123 let Inst{13-13} = 0b0;
17124 let Inst{31-21} = 0b11101111010;
17125 let hasNewValue = 1;
17126 let opNewValue = 0;
17127 let prefersSlot3 = 1;
17128 let InputType = "reg";
17129 let Constraints = "$Rx32 = $Rx32in";
17130 }
17131 def M4_and_xor : HInst<
17132 (outs IntRegs:$Rx32),
17133 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17134 "$Rx32 &= xor($Rs32,$Rt32)",
17135 tc_a4e22bbd, TypeM>, Enc_2ae154 {
17136 let Inst{7-5} = 0b010;
17137 let Inst{13-13} = 0b0;
17138 let Inst{31-21} = 0b11101111010;
17139 let hasNewValue = 1;
17140 let opNewValue = 0;
17141 let prefersSlot3 = 1;
17142 let InputType = "reg";
17143 let Constraints = "$Rx32 = $Rx32in";
17144 }
17145 def M4_cmpyi_wh : HInst<
17146 (outs IntRegs:$Rd32),
17147 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
17148 "$Rd32 = cmpyiwh($Rss32,$Rt32):<<1:rnd:sat",
17149 tc_c21d7447, TypeS_3op>, Enc_3d5b28 {
17150 let Inst{7-5} = 0b100;
17151 let Inst{13-13} = 0b0;
17152 let Inst{31-21} = 0b11000101000;
17153 let hasNewValue = 1;
17154 let opNewValue = 0;
17155 let prefersSlot3 = 1;
17156 let Defs = [USR_OVF];
17157 }
17158 def M4_cmpyi_whc : HInst<
17159 (outs IntRegs:$Rd32),
17160 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
17161 "$Rd32 = cmpyiwh($Rss32,$Rt32*):<<1:rnd:sat",
17162 tc_c21d7447, TypeS_3op>, Enc_3d5b28 {
17163 let Inst{7-5} = 0b101;
17164 let Inst{13-13} = 0b0;
17165 let Inst{31-21} = 0b11000101000;
17166 let hasNewValue = 1;
17167 let opNewValue = 0;
17168 let prefersSlot3 = 1;
17169 let Defs = [USR_OVF];
17170 }
17171 def M4_cmpyr_wh : HInst<
17172 (outs IntRegs:$Rd32),
17173 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
17174 "$Rd32 = cmpyrwh($Rss32,$Rt32):<<1:rnd:sat",
17175 tc_c21d7447, TypeS_3op>, Enc_3d5b28 {
17176 let Inst{7-5} = 0b110;
17177 let Inst{13-13} = 0b0;
17178 let Inst{31-21} = 0b11000101000;
17179 let hasNewValue = 1;
17180 let opNewValue = 0;
17181 let prefersSlot3 = 1;
17182 let Defs = [USR_OVF];
17183 }
17184 def M4_cmpyr_whc : HInst<
17185 (outs IntRegs:$Rd32),
17186 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
17187 "$Rd32 = cmpyrwh($Rss32,$Rt32*):<<1:rnd:sat",
17188 tc_c21d7447, TypeS_3op>, Enc_3d5b28 {
17189 let Inst{7-5} = 0b111;
17190 let Inst{13-13} = 0b0;
17191 let Inst{31-21} = 0b11000101000;
17192 let hasNewValue = 1;
17193 let opNewValue = 0;
17194 let prefersSlot3 = 1;
17195 let Defs = [USR_OVF];
17196 }
17197 def M4_mac_up_s1_sat : HInst<
17198 (outs IntRegs:$Rx32),
17199 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17200 "$Rx32 += mpy($Rs32,$Rt32):<<1:sat",
17201 tc_7f8ae742, TypeM>, Enc_2ae154 {
17202 let Inst{7-5} = 0b000;
17203 let Inst{13-13} = 0b0;
17204 let Inst{31-21} = 0b11101111011;
17205 let hasNewValue = 1;
17206 let opNewValue = 0;
17207 let prefersSlot3 = 1;
17208 let Defs = [USR_OVF];
17209 let InputType = "reg";
17210 let Constraints = "$Rx32 = $Rx32in";
17211 }
17212 def M4_mpyri_addi : HInst<
17213 (outs IntRegs:$Rd32),
17214 (ins u32_0Imm:$Ii, IntRegs:$Rs32, u6_0Imm:$II),
17215 "$Rd32 = add(#$Ii,mpyi($Rs32,#$II))",
17216 tc_a154b476, TypeALU64>, Enc_322e1b, Requires<[UseCompound]>, ImmRegRel {
17217 let Inst{31-24} = 0b11011000;
17218 let hasNewValue = 1;
17219 let opNewValue = 0;
17220 let prefersSlot3 = 1;
17221 let CextOpcode = "M4_mpyri_addr";
17222 let isExtendable = 1;
17223 let opExtendable = 1;
17224 let isExtentSigned = 0;
17225 let opExtentBits = 6;
17226 let opExtentAlign = 0;
17227 }
17228 def M4_mpyri_addr : HInst<
17229 (outs IntRegs:$Rd32),
17230 (ins IntRegs:$Ru32, IntRegs:$Rs32, u32_0Imm:$Ii),
17231 "$Rd32 = add($Ru32,mpyi($Rs32,#$Ii))",
17232 tc_a154b476, TypeALU64>, Enc_420cf3, Requires<[UseCompound]>, ImmRegRel {
17233 let Inst{31-23} = 0b110111111;
17234 let hasNewValue = 1;
17235 let opNewValue = 0;
17236 let prefersSlot3 = 1;
17237 let CextOpcode = "M4_mpyri_addr";
17238 let InputType = "imm";
17239 let isExtendable = 1;
17240 let opExtendable = 3;
17241 let isExtentSigned = 0;
17242 let opExtentBits = 6;
17243 let opExtentAlign = 0;
17244 }
17245 def M4_mpyri_addr_u2 : HInst<
17246 (outs IntRegs:$Rd32),
17247 (ins IntRegs:$Ru32, u6_2Imm:$Ii, IntRegs:$Rs32),
17248 "$Rd32 = add($Ru32,mpyi(#$Ii,$Rs32))",
17249 tc_503ce0f3, TypeALU64>, Enc_277737, Requires<[UseCompound]> {
17250 let Inst{31-23} = 0b110111110;
17251 let hasNewValue = 1;
17252 let opNewValue = 0;
17253 let prefersSlot3 = 1;
17254 }
17255 def M4_mpyrr_addi : HInst<
17256 (outs IntRegs:$Rd32),
17257 (ins u32_0Imm:$Ii, IntRegs:$Rs32, IntRegs:$Rt32),
17258 "$Rd32 = add(#$Ii,mpyi($Rs32,$Rt32))",
17259 tc_7f8ae742, TypeALU64>, Enc_a7b8e8, Requires<[UseCompound]>, ImmRegRel {
17260 let Inst{31-23} = 0b110101110;
17261 let hasNewValue = 1;
17262 let opNewValue = 0;
17263 let prefersSlot3 = 1;
17264 let CextOpcode = "M4_mpyrr_addr";
17265 let InputType = "imm";
17266 let isExtendable = 1;
17267 let opExtendable = 1;
17268 let isExtentSigned = 0;
17269 let opExtentBits = 6;
17270 let opExtentAlign = 0;
17271 }
17272 def M4_mpyrr_addr : HInst<
17273 (outs IntRegs:$Ry32),
17274 (ins IntRegs:$Ru32, IntRegs:$Ry32in, IntRegs:$Rs32),
17275 "$Ry32 = add($Ru32,mpyi($Ry32in,$Rs32))",
17276 tc_7f8ae742, TypeM>, Enc_7f1a05, Requires<[UseCompound]>, ImmRegRel {
17277 let Inst{7-5} = 0b000;
17278 let Inst{13-13} = 0b0;
17279 let Inst{31-21} = 0b11100011000;
17280 let hasNewValue = 1;
17281 let opNewValue = 0;
17282 let prefersSlot3 = 1;
17283 let CextOpcode = "M4_mpyrr_addr";
17284 let InputType = "reg";
17285 let Constraints = "$Ry32 = $Ry32in";
17286 }
17287 def M4_nac_up_s1_sat : HInst<
17288 (outs IntRegs:$Rx32),
17289 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17290 "$Rx32 -= mpy($Rs32,$Rt32):<<1:sat",
17291 tc_7f8ae742, TypeM>, Enc_2ae154 {
17292 let Inst{7-5} = 0b001;
17293 let Inst{13-13} = 0b0;
17294 let Inst{31-21} = 0b11101111011;
17295 let hasNewValue = 1;
17296 let opNewValue = 0;
17297 let prefersSlot3 = 1;
17298 let Defs = [USR_OVF];
17299 let InputType = "reg";
17300 let Constraints = "$Rx32 = $Rx32in";
17301 }
17302 def M4_or_and : HInst<
17303 (outs IntRegs:$Rx32),
17304 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17305 "$Rx32 |= and($Rs32,$Rt32)",
17306 tc_a4e22bbd, TypeM>, Enc_2ae154 {
17307 let Inst{7-5} = 0b011;
17308 let Inst{13-13} = 0b0;
17309 let Inst{31-21} = 0b11101111010;
17310 let hasNewValue = 1;
17311 let opNewValue = 0;
17312 let prefersSlot3 = 1;
17313 let InputType = "reg";
17314 let Constraints = "$Rx32 = $Rx32in";
17315 }
17316 def M4_or_andn : HInst<
17317 (outs IntRegs:$Rx32),
17318 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17319 "$Rx32 |= and($Rs32,~$Rt32)",
17320 tc_a4e22bbd, TypeM>, Enc_2ae154 {
17321 let Inst{7-5} = 0b000;
17322 let Inst{13-13} = 0b0;
17323 let Inst{31-21} = 0b11101111001;
17324 let hasNewValue = 1;
17325 let opNewValue = 0;
17326 let prefersSlot3 = 1;
17327 let InputType = "reg";
17328 let Constraints = "$Rx32 = $Rx32in";
17329 }
17330 def M4_or_or : HInst<
17331 (outs IntRegs:$Rx32),
17332 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17333 "$Rx32 |= or($Rs32,$Rt32)",
17334 tc_a4e22bbd, TypeM>, Enc_2ae154 {
17335 let Inst{7-5} = 0b000;
17336 let Inst{13-13} = 0b0;
17337 let Inst{31-21} = 0b11101111110;
17338 let hasNewValue = 1;
17339 let opNewValue = 0;
17340 let prefersSlot3 = 1;
17341 let InputType = "reg";
17342 let Constraints = "$Rx32 = $Rx32in";
17343 }
17344 def M4_or_xor : HInst<
17345 (outs IntRegs:$Rx32),
17346 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17347 "$Rx32 |= xor($Rs32,$Rt32)",
17348 tc_a4e22bbd, TypeM>, Enc_2ae154 {
17349 let Inst{7-5} = 0b001;
17350 let Inst{13-13} = 0b0;
17351 let Inst{31-21} = 0b11101111110;
17352 let hasNewValue = 1;
17353 let opNewValue = 0;
17354 let prefersSlot3 = 1;
17355 let InputType = "reg";
17356 let Constraints = "$Rx32 = $Rx32in";
17357 }
17358 def M4_pmpyw : HInst<
17359 (outs DoubleRegs:$Rdd32),
17360 (ins IntRegs:$Rs32, IntRegs:$Rt32),
17361 "$Rdd32 = pmpyw($Rs32,$Rt32)",
17362 tc_c21d7447, TypeM>, Enc_be32a5 {
17363 let Inst{7-5} = 0b111;
17364 let Inst{13-13} = 0b0;
17365 let Inst{31-21} = 0b11100101010;
17366 let prefersSlot3 = 1;
17367 }
17368 def M4_pmpyw_acc : HInst<
17369 (outs DoubleRegs:$Rxx32),
17370 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17371 "$Rxx32 ^= pmpyw($Rs32,$Rt32)",
17372 tc_7f8ae742, TypeM>, Enc_61f0b0 {
17373 let Inst{7-5} = 0b111;
17374 let Inst{13-13} = 0b0;
17375 let Inst{31-21} = 0b11100111001;
17376 let prefersSlot3 = 1;
17377 let Constraints = "$Rxx32 = $Rxx32in";
17378 }
17379 def M4_vpmpyh : HInst<
17380 (outs DoubleRegs:$Rdd32),
17381 (ins IntRegs:$Rs32, IntRegs:$Rt32),
17382 "$Rdd32 = vpmpyh($Rs32,$Rt32)",
17383 tc_c21d7447, TypeM>, Enc_be32a5 {
17384 let Inst{7-5} = 0b111;
17385 let Inst{13-13} = 0b0;
17386 let Inst{31-21} = 0b11100101110;
17387 let prefersSlot3 = 1;
17388 }
17389 def M4_vpmpyh_acc : HInst<
17390 (outs DoubleRegs:$Rxx32),
17391 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17392 "$Rxx32 ^= vpmpyh($Rs32,$Rt32)",
17393 tc_7f8ae742, TypeM>, Enc_61f0b0 {
17394 let Inst{7-5} = 0b111;
17395 let Inst{13-13} = 0b0;
17396 let Inst{31-21} = 0b11100111101;
17397 let prefersSlot3 = 1;
17398 let Constraints = "$Rxx32 = $Rxx32in";
17399 }
17400 def M4_vrmpyeh_acc_s0 : HInst<
17401 (outs DoubleRegs:$Rxx32),
17402 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17403 "$Rxx32 += vrmpyweh($Rss32,$Rtt32)",
17404 tc_7f8ae742, TypeM>, Enc_88c16c {
17405 let Inst{7-5} = 0b110;
17406 let Inst{13-13} = 0b0;
17407 let Inst{31-21} = 0b11101010001;
17408 let prefersSlot3 = 1;
17409 let Constraints = "$Rxx32 = $Rxx32in";
17410 }
17411 def M4_vrmpyeh_acc_s1 : HInst<
17412 (outs DoubleRegs:$Rxx32),
17413 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17414 "$Rxx32 += vrmpyweh($Rss32,$Rtt32):<<1",
17415 tc_7f8ae742, TypeM>, Enc_88c16c {
17416 let Inst{7-5} = 0b110;
17417 let Inst{13-13} = 0b0;
17418 let Inst{31-21} = 0b11101010101;
17419 let prefersSlot3 = 1;
17420 let Constraints = "$Rxx32 = $Rxx32in";
17421 }
17422 def M4_vrmpyeh_s0 : HInst<
17423 (outs DoubleRegs:$Rdd32),
17424 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17425 "$Rdd32 = vrmpyweh($Rss32,$Rtt32)",
17426 tc_c21d7447, TypeM>, Enc_a56825 {
17427 let Inst{7-5} = 0b100;
17428 let Inst{13-13} = 0b0;
17429 let Inst{31-21} = 0b11101000010;
17430 let prefersSlot3 = 1;
17431 }
17432 def M4_vrmpyeh_s1 : HInst<
17433 (outs DoubleRegs:$Rdd32),
17434 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17435 "$Rdd32 = vrmpyweh($Rss32,$Rtt32):<<1",
17436 tc_c21d7447, TypeM>, Enc_a56825 {
17437 let Inst{7-5} = 0b100;
17438 let Inst{13-13} = 0b0;
17439 let Inst{31-21} = 0b11101000110;
17440 let prefersSlot3 = 1;
17441 }
17442 def M4_vrmpyoh_acc_s0 : HInst<
17443 (outs DoubleRegs:$Rxx32),
17444 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17445 "$Rxx32 += vrmpywoh($Rss32,$Rtt32)",
17446 tc_7f8ae742, TypeM>, Enc_88c16c {
17447 let Inst{7-5} = 0b110;
17448 let Inst{13-13} = 0b0;
17449 let Inst{31-21} = 0b11101010011;
17450 let prefersSlot3 = 1;
17451 let Constraints = "$Rxx32 = $Rxx32in";
17452 }
17453 def M4_vrmpyoh_acc_s1 : HInst<
17454 (outs DoubleRegs:$Rxx32),
17455 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17456 "$Rxx32 += vrmpywoh($Rss32,$Rtt32):<<1",
17457 tc_7f8ae742, TypeM>, Enc_88c16c {
17458 let Inst{7-5} = 0b110;
17459 let Inst{13-13} = 0b0;
17460 let Inst{31-21} = 0b11101010111;
17461 let prefersSlot3 = 1;
17462 let Constraints = "$Rxx32 = $Rxx32in";
17463 }
17464 def M4_vrmpyoh_s0 : HInst<
17465 (outs DoubleRegs:$Rdd32),
17466 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17467 "$Rdd32 = vrmpywoh($Rss32,$Rtt32)",
17468 tc_c21d7447, TypeM>, Enc_a56825 {
17469 let Inst{7-5} = 0b010;
17470 let Inst{13-13} = 0b0;
17471 let Inst{31-21} = 0b11101000001;
17472 let prefersSlot3 = 1;
17473 }
17474 def M4_vrmpyoh_s1 : HInst<
17475 (outs DoubleRegs:$Rdd32),
17476 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17477 "$Rdd32 = vrmpywoh($Rss32,$Rtt32):<<1",
17478 tc_c21d7447, TypeM>, Enc_a56825 {
17479 let Inst{7-5} = 0b010;
17480 let Inst{13-13} = 0b0;
17481 let Inst{31-21} = 0b11101000101;
17482 let prefersSlot3 = 1;
17483 }
17484 def M4_xor_and : HInst<
17485 (outs IntRegs:$Rx32),
17486 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17487 "$Rx32 ^= and($Rs32,$Rt32)",
17488 tc_a4e22bbd, TypeM>, Enc_2ae154 {
17489 let Inst{7-5} = 0b010;
17490 let Inst{13-13} = 0b0;
17491 let Inst{31-21} = 0b11101111110;
17492 let hasNewValue = 1;
17493 let opNewValue = 0;
17494 let prefersSlot3 = 1;
17495 let InputType = "reg";
17496 let Constraints = "$Rx32 = $Rx32in";
17497 }
17498 def M4_xor_andn : HInst<
17499 (outs IntRegs:$Rx32),
17500 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17501 "$Rx32 ^= and($Rs32,~$Rt32)",
17502 tc_a4e22bbd, TypeM>, Enc_2ae154 {
17503 let Inst{7-5} = 0b010;
17504 let Inst{13-13} = 0b0;
17505 let Inst{31-21} = 0b11101111001;
17506 let hasNewValue = 1;
17507 let opNewValue = 0;
17508 let prefersSlot3 = 1;
17509 let InputType = "reg";
17510 let Constraints = "$Rx32 = $Rx32in";
17511 }
17512 def M4_xor_or : HInst<
17513 (outs IntRegs:$Rx32),
17514 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17515 "$Rx32 ^= or($Rs32,$Rt32)",
17516 tc_a4e22bbd, TypeM>, Enc_2ae154 {
17517 let Inst{7-5} = 0b011;
17518 let Inst{13-13} = 0b0;
17519 let Inst{31-21} = 0b11101111110;
17520 let hasNewValue = 1;
17521 let opNewValue = 0;
17522 let prefersSlot3 = 1;
17523 let InputType = "reg";
17524 let Constraints = "$Rx32 = $Rx32in";
17525 }
17526 def M4_xor_xacc : HInst<
17527 (outs DoubleRegs:$Rxx32),
17528 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17529 "$Rxx32 ^= xor($Rss32,$Rtt32)",
17530 tc_a4e22bbd, TypeS_3op>, Enc_88c16c {
17531 let Inst{7-5} = 0b000;
17532 let Inst{13-13} = 0b0;
17533 let Inst{31-21} = 0b11001010100;
17534 let prefersSlot3 = 1;
17535 let Constraints = "$Rxx32 = $Rxx32in";
17536 }
17537 def M5_vdmacbsu : HInst<
17538 (outs DoubleRegs:$Rxx32),
17539 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17540 "$Rxx32 += vdmpybsu($Rss32,$Rtt32):sat",
17541 tc_7f8ae742, TypeM>, Enc_88c16c {
17542 let Inst{7-5} = 0b001;
17543 let Inst{13-13} = 0b0;
17544 let Inst{31-21} = 0b11101010001;
17545 let prefersSlot3 = 1;
17546 let Defs = [USR_OVF];
17547 let Constraints = "$Rxx32 = $Rxx32in";
17548 }
17549 def M5_vdmpybsu : HInst<
17550 (outs DoubleRegs:$Rdd32),
17551 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17552 "$Rdd32 = vdmpybsu($Rss32,$Rtt32):sat",
17553 tc_c21d7447, TypeM>, Enc_a56825 {
17554 let Inst{7-5} = 0b001;
17555 let Inst{13-13} = 0b0;
17556 let Inst{31-21} = 0b11101000101;
17557 let prefersSlot3 = 1;
17558 let Defs = [USR_OVF];
17559 }
17560 def M5_vmacbsu : HInst<
17561 (outs DoubleRegs:$Rxx32),
17562 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17563 "$Rxx32 += vmpybsu($Rs32,$Rt32)",
17564 tc_7f8ae742, TypeM>, Enc_61f0b0 {
17565 let Inst{7-5} = 0b001;
17566 let Inst{13-13} = 0b0;
17567 let Inst{31-21} = 0b11100111110;
17568 let prefersSlot3 = 1;
17569 let Constraints = "$Rxx32 = $Rxx32in";
17570 }
17571 def M5_vmacbuu : HInst<
17572 (outs DoubleRegs:$Rxx32),
17573 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17574 "$Rxx32 += vmpybu($Rs32,$Rt32)",
17575 tc_7f8ae742, TypeM>, Enc_61f0b0 {
17576 let Inst{7-5} = 0b001;
17577 let Inst{13-13} = 0b0;
17578 let Inst{31-21} = 0b11100111100;
17579 let prefersSlot3 = 1;
17580 let Constraints = "$Rxx32 = $Rxx32in";
17581 }
17582 def M5_vmpybsu : HInst<
17583 (outs DoubleRegs:$Rdd32),
17584 (ins IntRegs:$Rs32, IntRegs:$Rt32),
17585 "$Rdd32 = vmpybsu($Rs32,$Rt32)",
17586 tc_c21d7447, TypeM>, Enc_be32a5 {
17587 let Inst{7-5} = 0b001;
17588 let Inst{13-13} = 0b0;
17589 let Inst{31-21} = 0b11100101010;
17590 let prefersSlot3 = 1;
17591 }
17592 def M5_vmpybuu : HInst<
17593 (outs DoubleRegs:$Rdd32),
17594 (ins IntRegs:$Rs32, IntRegs:$Rt32),
17595 "$Rdd32 = vmpybu($Rs32,$Rt32)",
17596 tc_c21d7447, TypeM>, Enc_be32a5 {
17597 let Inst{7-5} = 0b001;
17598 let Inst{13-13} = 0b0;
17599 let Inst{31-21} = 0b11100101100;
17600 let prefersSlot3 = 1;
17601 }
17602 def M5_vrmacbsu : HInst<
17603 (outs DoubleRegs:$Rxx32),
17604 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17605 "$Rxx32 += vrmpybsu($Rss32,$Rtt32)",
17606 tc_7f8ae742, TypeM>, Enc_88c16c {
17607 let Inst{7-5} = 0b001;
17608 let Inst{13-13} = 0b0;
17609 let Inst{31-21} = 0b11101010110;
17610 let prefersSlot3 = 1;
17611 let Constraints = "$Rxx32 = $Rxx32in";
17612 }
17613 def M5_vrmacbuu : HInst<
17614 (outs DoubleRegs:$Rxx32),
17615 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17616 "$Rxx32 += vrmpybu($Rss32,$Rtt32)",
17617 tc_7f8ae742, TypeM>, Enc_88c16c {
17618 let Inst{7-5} = 0b001;
17619 let Inst{13-13} = 0b0;
17620 let Inst{31-21} = 0b11101010100;
17621 let prefersSlot3 = 1;
17622 let Constraints = "$Rxx32 = $Rxx32in";
17623 }
17624 def M5_vrmpybsu : HInst<
17625 (outs DoubleRegs:$Rdd32),
17626 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17627 "$Rdd32 = vrmpybsu($Rss32,$Rtt32)",
17628 tc_c21d7447, TypeM>, Enc_a56825 {
17629 let Inst{7-5} = 0b001;
17630 let Inst{13-13} = 0b0;
17631 let Inst{31-21} = 0b11101000110;
17632 let prefersSlot3 = 1;
17633 }
17634 def M5_vrmpybuu : HInst<
17635 (outs DoubleRegs:$Rdd32),
17636 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17637 "$Rdd32 = vrmpybu($Rss32,$Rtt32)",
17638 tc_c21d7447, TypeM>, Enc_a56825 {
17639 let Inst{7-5} = 0b001;
17640 let Inst{13-13} = 0b0;
17641 let Inst{31-21} = 0b11101000100;
17642 let prefersSlot3 = 1;
17643 }
17644 def M6_vabsdiffb : HInst<
17645 (outs DoubleRegs:$Rdd32),
17646 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
17647 "$Rdd32 = vabsdiffb($Rtt32,$Rss32)",
17648 tc_9b3c0462, TypeM>, Enc_ea23e4, Requires<[HasV62]> {
17649 let Inst{7-5} = 0b000;
17650 let Inst{13-13} = 0b0;
17651 let Inst{31-21} = 0b11101000111;
17652 let prefersSlot3 = 1;
17653 }
17654 def M6_vabsdiffub : HInst<
17655 (outs DoubleRegs:$Rdd32),
17656 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
17657 "$Rdd32 = vabsdiffub($Rtt32,$Rss32)",
17658 tc_9b3c0462, TypeM>, Enc_ea23e4, Requires<[HasV62]> {
17659 let Inst{7-5} = 0b000;
17660 let Inst{13-13} = 0b0;
17661 let Inst{31-21} = 0b11101000101;
17662 let prefersSlot3 = 1;
17663 }
17664 def M7_dcmpyiw : HInst<
17665 (outs DoubleRegs:$Rdd32),
17666 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17667 "$Rdd32 = cmpyiw($Rss32,$Rtt32)",
17668 tc_5a4b5e58, TypeM>, Enc_a56825, Requires<[HasV67,UseAudio]> {
17669 let Inst{7-5} = 0b010;
17670 let Inst{13-13} = 0b0;
17671 let Inst{31-21} = 0b11101000011;
17672 let prefersSlot3 = 1;
17673 }
17674 def M7_dcmpyiw_acc : HInst<
17675 (outs DoubleRegs:$Rxx32),
17676 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17677 "$Rxx32 += cmpyiw($Rss32,$Rtt32)",
17678 tc_197dce51, TypeM>, Enc_88c16c, Requires<[HasV67,UseAudio]> {
17679 let Inst{7-5} = 0b010;
17680 let Inst{13-13} = 0b0;
17681 let Inst{31-21} = 0b11101010011;
17682 let prefersSlot3 = 1;
17683 let Constraints = "$Rxx32 = $Rxx32in";
17684 }
17685 def M7_dcmpyiwc : HInst<
17686 (outs DoubleRegs:$Rdd32),
17687 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17688 "$Rdd32 = cmpyiw($Rss32,$Rtt32*)",
17689 tc_5a4b5e58, TypeM>, Enc_a56825, Requires<[HasV67,UseAudio]> {
17690 let Inst{7-5} = 0b010;
17691 let Inst{13-13} = 0b0;
17692 let Inst{31-21} = 0b11101000111;
17693 let prefersSlot3 = 1;
17694 }
17695 def M7_dcmpyiwc_acc : HInst<
17696 (outs DoubleRegs:$Rxx32),
17697 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17698 "$Rxx32 += cmpyiw($Rss32,$Rtt32*)",
17699 tc_197dce51, TypeM>, Enc_88c16c, Requires<[HasV67,UseAudio]> {
17700 let Inst{7-5} = 0b110;
17701 let Inst{13-13} = 0b0;
17702 let Inst{31-21} = 0b11101010010;
17703 let prefersSlot3 = 1;
17704 let Constraints = "$Rxx32 = $Rxx32in";
17705 }
17706 def M7_dcmpyrw : HInst<
17707 (outs DoubleRegs:$Rdd32),
17708 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17709 "$Rdd32 = cmpyrw($Rss32,$Rtt32)",
17710 tc_5a4b5e58, TypeM>, Enc_a56825, Requires<[HasV67,UseAudio]> {
17711 let Inst{7-5} = 0b010;
17712 let Inst{13-13} = 0b0;
17713 let Inst{31-21} = 0b11101000100;
17714 let prefersSlot3 = 1;
17715 }
17716 def M7_dcmpyrw_acc : HInst<
17717 (outs DoubleRegs:$Rxx32),
17718 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17719 "$Rxx32 += cmpyrw($Rss32,$Rtt32)",
17720 tc_197dce51, TypeM>, Enc_88c16c, Requires<[HasV67,UseAudio]> {
17721 let Inst{7-5} = 0b010;
17722 let Inst{13-13} = 0b0;
17723 let Inst{31-21} = 0b11101010100;
17724 let prefersSlot3 = 1;
17725 let Constraints = "$Rxx32 = $Rxx32in";
17726 }
17727 def M7_dcmpyrwc : HInst<
17728 (outs DoubleRegs:$Rdd32),
17729 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17730 "$Rdd32 = cmpyrw($Rss32,$Rtt32*)",
17731 tc_5a4b5e58, TypeM>, Enc_a56825, Requires<[HasV67,UseAudio]> {
17732 let Inst{7-5} = 0b010;
17733 let Inst{13-13} = 0b0;
17734 let Inst{31-21} = 0b11101000110;
17735 let prefersSlot3 = 1;
17736 }
17737 def M7_dcmpyrwc_acc : HInst<
17738 (outs DoubleRegs:$Rxx32),
17739 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17740 "$Rxx32 += cmpyrw($Rss32,$Rtt32*)",
17741 tc_197dce51, TypeM>, Enc_88c16c, Requires<[HasV67,UseAudio]> {
17742 let Inst{7-5} = 0b010;
17743 let Inst{13-13} = 0b0;
17744 let Inst{31-21} = 0b11101010110;
17745 let prefersSlot3 = 1;
17746 let Constraints = "$Rxx32 = $Rxx32in";
17747 }
17748 def M7_vdmpy : HInst<
17749 (outs DoubleRegs:$Rdd32),
17750 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17751 "$Rdd32 = vdmpyw($Rss32,$Rtt32)",
17752 tc_5a4b5e58, TypeM>, Requires<[HasV67]> {
17753 let isPseudo = 1;
17754 let isCodeGenOnly = 1;
17755 }
17756 def M7_vdmpy_acc : HInst<
17757 (outs DoubleRegs:$Rxx32),
17758 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17759 "$Rxx32 += vdmpyw($Rss32,$Rtt32)",
17760 tc_197dce51, TypeM>, Requires<[HasV67]> {
17761 let isPseudo = 1;
17762 let isCodeGenOnly = 1;
17763 let Constraints = "$Rxx32 = $Rxx32in";
17764 }
17765 def M7_wcmpyiw : HInst<
17766 (outs IntRegs:$Rd32),
17767 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17768 "$Rd32 = cmpyiw($Rss32,$Rtt32):<<1:sat",
17769 tc_5a4b5e58, TypeM>, Enc_d2216a, Requires<[HasV67,UseAudio]> {
17770 let Inst{7-5} = 0b000;
17771 let Inst{13-13} = 0b0;
17772 let Inst{31-21} = 0b11101001001;
17773 let hasNewValue = 1;
17774 let opNewValue = 0;
17775 let prefersSlot3 = 1;
17776 let Defs = [USR_OVF];
17777 }
17778 def M7_wcmpyiw_rnd : HInst<
17779 (outs IntRegs:$Rd32),
17780 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17781 "$Rd32 = cmpyiw($Rss32,$Rtt32):<<1:rnd:sat",
17782 tc_5a4b5e58, TypeM>, Enc_d2216a, Requires<[HasV67,UseAudio]> {
17783 let Inst{7-5} = 0b000;
17784 let Inst{13-13} = 0b0;
17785 let Inst{31-21} = 0b11101001101;
17786 let hasNewValue = 1;
17787 let opNewValue = 0;
17788 let prefersSlot3 = 1;
17789 let Defs = [USR_OVF];
17790 }
17791 def M7_wcmpyiwc : HInst<
17792 (outs IntRegs:$Rd32),
17793 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17794 "$Rd32 = cmpyiw($Rss32,$Rtt32*):<<1:sat",
17795 tc_5a4b5e58, TypeM>, Enc_d2216a, Requires<[HasV67,UseAudio]> {
17796 let Inst{7-5} = 0b100;
17797 let Inst{13-13} = 0b0;
17798 let Inst{31-21} = 0b11101001000;
17799 let hasNewValue = 1;
17800 let opNewValue = 0;
17801 let prefersSlot3 = 1;
17802 let Defs = [USR_OVF];
17803 }
17804 def M7_wcmpyiwc_rnd : HInst<
17805 (outs IntRegs:$Rd32),
17806 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17807 "$Rd32 = cmpyiw($Rss32,$Rtt32*):<<1:rnd:sat",
17808 tc_5a4b5e58, TypeM>, Enc_d2216a, Requires<[HasV67,UseAudio]> {
17809 let Inst{7-5} = 0b100;
17810 let Inst{13-13} = 0b0;
17811 let Inst{31-21} = 0b11101001100;
17812 let hasNewValue = 1;
17813 let opNewValue = 0;
17814 let prefersSlot3 = 1;
17815 let Defs = [USR_OVF];
17816 }
17817 def M7_wcmpyrw : HInst<
17818 (outs IntRegs:$Rd32),
17819 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17820 "$Rd32 = cmpyrw($Rss32,$Rtt32):<<1:sat",
17821 tc_5a4b5e58, TypeM>, Enc_d2216a, Requires<[HasV67,UseAudio]> {
17822 let Inst{7-5} = 0b000;
17823 let Inst{13-13} = 0b0;
17824 let Inst{31-21} = 0b11101001010;
17825 let hasNewValue = 1;
17826 let opNewValue = 0;
17827 let prefersSlot3 = 1;
17828 let Defs = [USR_OVF];
17829 }
17830 def M7_wcmpyrw_rnd : HInst<
17831 (outs IntRegs:$Rd32),
17832 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17833 "$Rd32 = cmpyrw($Rss32,$Rtt32):<<1:rnd:sat",
17834 tc_5a4b5e58, TypeM>, Enc_d2216a, Requires<[HasV67,UseAudio]> {
17835 let Inst{7-5} = 0b000;
17836 let Inst{13-13} = 0b0;
17837 let Inst{31-21} = 0b11101001110;
17838 let hasNewValue = 1;
17839 let opNewValue = 0;
17840 let prefersSlot3 = 1;
17841 let Defs = [USR_OVF];
17842 }
17843 def M7_wcmpyrwc : HInst<
17844 (outs IntRegs:$Rd32),
17845 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17846 "$Rd32 = cmpyrw($Rss32,$Rtt32*):<<1:sat",
17847 tc_5a4b5e58, TypeM>, Enc_d2216a, Requires<[HasV67,UseAudio]> {
17848 let Inst{7-5} = 0b000;
17849 let Inst{13-13} = 0b0;
17850 let Inst{31-21} = 0b11101001011;
17851 let hasNewValue = 1;
17852 let opNewValue = 0;
17853 let prefersSlot3 = 1;
17854 let Defs = [USR_OVF];
17855 }
17856 def M7_wcmpyrwc_rnd : HInst<
17857 (outs IntRegs:$Rd32),
17858 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17859 "$Rd32 = cmpyrw($Rss32,$Rtt32*):<<1:rnd:sat",
17860 tc_5a4b5e58, TypeM>, Enc_d2216a, Requires<[HasV67,UseAudio]> {
17861 let Inst{7-5} = 0b000;
17862 let Inst{13-13} = 0b0;
17863 let Inst{31-21} = 0b11101001111;
17864 let hasNewValue = 1;
17865 let opNewValue = 0;
17866 let prefersSlot3 = 1;
17867 let Defs = [USR_OVF];
17868 }
17869 def PS_loadrbabs : HInst<
17870 (outs IntRegs:$Rd32),
17871 (ins u32_0Imm:$Ii),
17872 "$Rd32 = memb(#$Ii)",
17873 tc_8a6d0d94, TypeV2LDST>, Enc_25bef0, AddrModeRel {
17874 let Inst{24-21} = 0b1000;
17875 let Inst{31-27} = 0b01001;
17876 let hasNewValue = 1;
17877 let opNewValue = 0;
17878 let addrMode = Absolute;
17879 let accessSize = ByteAccess;
17880 let mayLoad = 1;
17881 let isExtended = 1;
17882 let BaseOpcode = "L4_loadrb_abs";
17883 let CextOpcode = "L2_loadrb";
17884 let isPredicable = 1;
17885 let DecoderNamespace = "MustExtend";
17886 let isExtended = 1;
17887 let opExtendable = 1;
17888 let isExtentSigned = 0;
17889 let opExtentBits = 16;
17890 let opExtentAlign = 0;
17891 }
17892 def PS_loadrdabs : HInst<
17893 (outs DoubleRegs:$Rdd32),
17894 (ins u29_3Imm:$Ii),
17895 "$Rdd32 = memd(#$Ii)",
17896 tc_8a6d0d94, TypeV2LDST>, Enc_509701, AddrModeRel {
17897 let Inst{24-21} = 0b1110;
17898 let Inst{31-27} = 0b01001;
17899 let addrMode = Absolute;
17900 let accessSize = DoubleWordAccess;
17901 let mayLoad = 1;
17902 let isExtended = 1;
17903 let BaseOpcode = "L4_loadrd_abs";
17904 let CextOpcode = "L2_loadrd";
17905 let isPredicable = 1;
17906 let DecoderNamespace = "MustExtend";
17907 let isExtended = 1;
17908 let opExtendable = 1;
17909 let isExtentSigned = 0;
17910 let opExtentBits = 19;
17911 let opExtentAlign = 3;
17912 }
17913 def PS_loadrhabs : HInst<
17914 (outs IntRegs:$Rd32),
17915 (ins u31_1Imm:$Ii),
17916 "$Rd32 = memh(#$Ii)",
17917 tc_8a6d0d94, TypeV2LDST>, Enc_8df4be, AddrModeRel {
17918 let Inst{24-21} = 0b1010;
17919 let Inst{31-27} = 0b01001;
17920 let hasNewValue = 1;
17921 let opNewValue = 0;
17922 let addrMode = Absolute;
17923 let accessSize = HalfWordAccess;
17924 let mayLoad = 1;
17925 let isExtended = 1;
17926 let BaseOpcode = "L4_loadrh_abs";
17927 let CextOpcode = "L2_loadrh";
17928 let isPredicable = 1;
17929 let DecoderNamespace = "MustExtend";
17930 let isExtended = 1;
17931 let opExtendable = 1;
17932 let isExtentSigned = 0;
17933 let opExtentBits = 17;
17934 let opExtentAlign = 1;
17935 }
17936 def PS_loadriabs : HInst<
17937 (outs IntRegs:$Rd32),
17938 (ins u30_2Imm:$Ii),
17939 "$Rd32 = memw(#$Ii)",
17940 tc_8a6d0d94, TypeV2LDST>, Enc_4f4ed7, AddrModeRel {
17941 let Inst{24-21} = 0b1100;
17942 let Inst{31-27} = 0b01001;
17943 let hasNewValue = 1;
17944 let opNewValue = 0;
17945 let addrMode = Absolute;
17946 let accessSize = WordAccess;
17947 let mayLoad = 1;
17948 let isExtended = 1;
17949 let BaseOpcode = "L4_loadri_abs";
17950 let CextOpcode = "L2_loadri";
17951 let isPredicable = 1;
17952 let DecoderNamespace = "MustExtend";
17953 let isExtended = 1;
17954 let opExtendable = 1;
17955 let isExtentSigned = 0;
17956 let opExtentBits = 18;
17957 let opExtentAlign = 2;
17958 }
17959 def PS_loadrubabs : HInst<
17960 (outs IntRegs:$Rd32),
17961 (ins u32_0Imm:$Ii),
17962 "$Rd32 = memub(#$Ii)",
17963 tc_8a6d0d94, TypeV2LDST>, Enc_25bef0, AddrModeRel {
17964 let Inst{24-21} = 0b1001;
17965 let Inst{31-27} = 0b01001;
17966 let hasNewValue = 1;
17967 let opNewValue = 0;
17968 let addrMode = Absolute;
17969 let accessSize = ByteAccess;
17970 let mayLoad = 1;
17971 let isExtended = 1;
17972 let BaseOpcode = "L4_loadrub_abs";
17973 let CextOpcode = "L2_loadrub";
17974 let isPredicable = 1;
17975 let DecoderNamespace = "MustExtend";
17976 let isExtended = 1;
17977 let opExtendable = 1;
17978 let isExtentSigned = 0;
17979 let opExtentBits = 16;
17980 let opExtentAlign = 0;
17981 }
17982 def PS_loadruhabs : HInst<
17983 (outs IntRegs:$Rd32),
17984 (ins u31_1Imm:$Ii),
17985 "$Rd32 = memuh(#$Ii)",
17986 tc_8a6d0d94, TypeV2LDST>, Enc_8df4be, AddrModeRel {
17987 let Inst{24-21} = 0b1011;
17988 let Inst{31-27} = 0b01001;
17989 let hasNewValue = 1;
17990 let opNewValue = 0;
17991 let addrMode = Absolute;
17992 let accessSize = HalfWordAccess;
17993 let mayLoad = 1;
17994 let isExtended = 1;
17995 let BaseOpcode = "L4_loadruh_abs";
17996 let CextOpcode = "L2_loadruh";
17997 let isPredicable = 1;
17998 let DecoderNamespace = "MustExtend";
17999 let isExtended = 1;
18000 let opExtendable = 1;
18001 let isExtentSigned = 0;
18002 let opExtentBits = 17;
18003 let opExtentAlign = 1;
18004 }
18005 def PS_storerbabs : HInst<
18006 (outs),
18007 (ins u32_0Imm:$Ii, IntRegs:$Rt32),
18008 "memb(#$Ii) = $Rt32",
18009 tc_0655b949, TypeV2LDST>, Enc_1b64fb, AddrModeRel {
18010 let Inst{24-21} = 0b0000;
18011 let Inst{31-27} = 0b01001;
18012 let addrMode = Absolute;
18013 let accessSize = ByteAccess;
18014 let isExtended = 1;
18015 let mayStore = 1;
18016 let BaseOpcode = "S2_storerbabs";
18017 let CextOpcode = "S2_storerb";
18018 let isPredicable = 1;
18019 let isNVStorable = 1;
18020 let DecoderNamespace = "MustExtend";
18021 let isExtended = 1;
18022 let opExtendable = 0;
18023 let isExtentSigned = 0;
18024 let opExtentBits = 16;
18025 let opExtentAlign = 0;
18026 }
18027 def PS_storerbnewabs : HInst<
18028 (outs),
18029 (ins u32_0Imm:$Ii, IntRegs:$Nt8),
18030 "memb(#$Ii) = $Nt8.new",
18031 tc_6e20402a, TypeV2LDST>, Enc_ad1831, AddrModeRel {
18032 let Inst{12-11} = 0b00;
18033 let Inst{24-21} = 0b0101;
18034 let Inst{31-27} = 0b01001;
18035 let addrMode = Absolute;
18036 let accessSize = ByteAccess;
18037 let isNVStore = 1;
18038 let isNewValue = 1;
18039 let isExtended = 1;
18040 let isRestrictNoSlot1Store = 1;
18041 let mayStore = 1;
18042 let BaseOpcode = "S2_storerbabs";
18043 let CextOpcode = "S2_storerb";
18044 let isPredicable = 1;
18045 let DecoderNamespace = "MustExtend";
18046 let isExtended = 1;
18047 let opExtendable = 0;
18048 let isExtentSigned = 0;
18049 let opExtentBits = 16;
18050 let opExtentAlign = 0;
18051 let opNewValue = 1;
18052 }
18053 def PS_storerdabs : HInst<
18054 (outs),
18055 (ins u29_3Imm:$Ii, DoubleRegs:$Rtt32),
18056 "memd(#$Ii) = $Rtt32",
18057 tc_0655b949, TypeV2LDST>, Enc_5c124a, AddrModeRel {
18058 let Inst{24-21} = 0b0110;
18059 let Inst{31-27} = 0b01001;
18060 let addrMode = Absolute;
18061 let accessSize = DoubleWordAccess;
18062 let isExtended = 1;
18063 let mayStore = 1;
18064 let BaseOpcode = "S2_storerdabs";
18065 let CextOpcode = "S2_storerd";
18066 let isPredicable = 1;
18067 let DecoderNamespace = "MustExtend";
18068 let isExtended = 1;
18069 let opExtendable = 0;
18070 let isExtentSigned = 0;
18071 let opExtentBits = 19;
18072 let opExtentAlign = 3;
18073 }
18074 def PS_storerfabs : HInst<
18075 (outs),
18076 (ins u31_1Imm:$Ii, IntRegs:$Rt32),
18077 "memh(#$Ii) = $Rt32.h",
18078 tc_0655b949, TypeV2LDST>, Enc_fda92c, AddrModeRel {
18079 let Inst{24-21} = 0b0011;
18080 let Inst{31-27} = 0b01001;
18081 let addrMode = Absolute;
18082 let accessSize = HalfWordAccess;
18083 let isExtended = 1;
18084 let mayStore = 1;
18085 let BaseOpcode = "S2_storerfabs";
18086 let CextOpcode = "S2_storerf";
18087 let isPredicable = 1;
18088 let DecoderNamespace = "MustExtend";
18089 let isExtended = 1;
18090 let opExtendable = 0;
18091 let isExtentSigned = 0;
18092 let opExtentBits = 17;
18093 let opExtentAlign = 1;
18094 }
18095 def PS_storerhabs : HInst<
18096 (outs),
18097 (ins u31_1Imm:$Ii, IntRegs:$Rt32),
18098 "memh(#$Ii) = $Rt32",
18099 tc_0655b949, TypeV2LDST>, Enc_fda92c, AddrModeRel {
18100 let Inst{24-21} = 0b0010;
18101 let Inst{31-27} = 0b01001;
18102 let addrMode = Absolute;
18103 let accessSize = HalfWordAccess;
18104 let isExtended = 1;
18105 let mayStore = 1;
18106 let BaseOpcode = "S2_storerhabs";
18107 let CextOpcode = "S2_storerh";
18108 let isPredicable = 1;
18109 let isNVStorable = 1;
18110 let DecoderNamespace = "MustExtend";
18111 let isExtended = 1;
18112 let opExtendable = 0;
18113 let isExtentSigned = 0;
18114 let opExtentBits = 17;
18115 let opExtentAlign = 1;
18116 }
18117 def PS_storerhnewabs : HInst<
18118 (outs),
18119 (ins u31_1Imm:$Ii, IntRegs:$Nt8),
18120 "memh(#$Ii) = $Nt8.new",
18121 tc_6e20402a, TypeV2LDST>, Enc_bc03e5, AddrModeRel {
18122 let Inst{12-11} = 0b01;
18123 let Inst{24-21} = 0b0101;
18124 let Inst{31-27} = 0b01001;
18125 let addrMode = Absolute;
18126 let accessSize = HalfWordAccess;
18127 let isNVStore = 1;
18128 let isNewValue = 1;
18129 let isExtended = 1;
18130 let isRestrictNoSlot1Store = 1;
18131 let mayStore = 1;
18132 let BaseOpcode = "S2_storerhabs";
18133 let CextOpcode = "S2_storerh";
18134 let isPredicable = 1;
18135 let DecoderNamespace = "MustExtend";
18136 let isExtended = 1;
18137 let opExtendable = 0;
18138 let isExtentSigned = 0;
18139 let opExtentBits = 17;
18140 let opExtentAlign = 1;
18141 let opNewValue = 1;
18142 }
18143 def PS_storeriabs : HInst<
18144 (outs),
18145 (ins u30_2Imm:$Ii, IntRegs:$Rt32),
18146 "memw(#$Ii) = $Rt32",
18147 tc_0655b949, TypeV2LDST>, Enc_541f26, AddrModeRel {
18148 let Inst{24-21} = 0b0100;
18149 let Inst{31-27} = 0b01001;
18150 let addrMode = Absolute;
18151 let accessSize = WordAccess;
18152 let isExtended = 1;
18153 let mayStore = 1;
18154 let BaseOpcode = "S2_storeriabs";
18155 let CextOpcode = "S2_storeri";
18156 let isPredicable = 1;
18157 let isNVStorable = 1;
18158 let DecoderNamespace = "MustExtend";
18159 let isExtended = 1;
18160 let opExtendable = 0;
18161 let isExtentSigned = 0;
18162 let opExtentBits = 18;
18163 let opExtentAlign = 2;
18164 }
18165 def PS_storerinewabs : HInst<
18166 (outs),
18167 (ins u30_2Imm:$Ii, IntRegs:$Nt8),
18168 "memw(#$Ii) = $Nt8.new",
18169 tc_6e20402a, TypeV2LDST>, Enc_78cbf0, AddrModeRel {
18170 let Inst{12-11} = 0b10;
18171 let Inst{24-21} = 0b0101;
18172 let Inst{31-27} = 0b01001;
18173 let addrMode = Absolute;
18174 let accessSize = WordAccess;
18175 let isNVStore = 1;
18176 let isNewValue = 1;
18177 let isExtended = 1;
18178 let isRestrictNoSlot1Store = 1;
18179 let mayStore = 1;
18180 let BaseOpcode = "S2_storeriabs";
18181 let CextOpcode = "S2_storeri";
18182 let isPredicable = 1;
18183 let DecoderNamespace = "MustExtend";
18184 let isExtended = 1;
18185 let opExtendable = 0;
18186 let isExtentSigned = 0;
18187 let opExtentBits = 18;
18188 let opExtentAlign = 2;
18189 let opNewValue = 1;
18190 }
18191 def PS_trap1 : HInst<
18192 (outs),
18193 (ins u8_0Imm:$Ii),
18194 "trap1(#$Ii)",
18195 tc_53c851ab, TypeJ>, Enc_a51a9a, Requires<[HasPreV65]> {
18196 let Inst{1-0} = 0b00;
18197 let Inst{7-5} = 0b000;
18198 let Inst{13-13} = 0b0;
18199 let Inst{31-16} = 0b0101010010000000;
18200 let isSolo = 1;
18201 }
18202 def S2_addasl_rrri : HInst<
18203 (outs IntRegs:$Rd32),
18204 (ins IntRegs:$Rt32, IntRegs:$Rs32, u3_0Imm:$Ii),
18205 "$Rd32 = addasl($Rt32,$Rs32,#$Ii)",
18206 tc_2c13e7f5, TypeS_3op>, Enc_47ef61 {
18207 let Inst{13-13} = 0b0;
18208 let Inst{31-21} = 0b11000100000;
18209 let hasNewValue = 1;
18210 let opNewValue = 0;
18211 let prefersSlot3 = 1;
18212 }
18213 def S2_allocframe : HInst<
18214 (outs IntRegs:$Rx32),
18215 (ins IntRegs:$Rx32in, u11_3Imm:$Ii),
18216 "allocframe($Rx32,#$Ii):raw",
18217 tc_934753bb, TypeST>, Enc_22c845 {
18218 let Inst{13-11} = 0b000;
18219 let Inst{31-21} = 0b10100000100;
18220 let hasNewValue = 1;
18221 let opNewValue = 0;
18222 let addrMode = BaseImmOffset;
18223 let accessSize = DoubleWordAccess;
18224 let mayStore = 1;
18225 let Uses = [FRAMEKEY, FRAMELIMIT, R30, R31];
18226 let Defs = [R30];
18227 let Constraints = "$Rx32 = $Rx32in";
18228 }
18229 def S2_asl_i_p : HInst<
18230 (outs DoubleRegs:$Rdd32),
18231 (ins DoubleRegs:$Rss32, u6_0Imm:$Ii),
18232 "$Rdd32 = asl($Rss32,#$Ii)",
18233 tc_5da50c4b, TypeS_2op>, Enc_5eac98 {
18234 let Inst{7-5} = 0b010;
18235 let Inst{31-21} = 0b10000000000;
18236 }
18237 def S2_asl_i_p_acc : HInst<
18238 (outs DoubleRegs:$Rxx32),
18239 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
18240 "$Rxx32 += asl($Rss32,#$Ii)",
18241 tc_2c13e7f5, TypeS_2op>, Enc_70fb07 {
18242 let Inst{7-5} = 0b110;
18243 let Inst{31-21} = 0b10000010000;
18244 let prefersSlot3 = 1;
18245 let Constraints = "$Rxx32 = $Rxx32in";
18246 }
18247 def S2_asl_i_p_and : HInst<
18248 (outs DoubleRegs:$Rxx32),
18249 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
18250 "$Rxx32 &= asl($Rss32,#$Ii)",
18251 tc_a4e22bbd, TypeS_2op>, Enc_70fb07 {
18252 let Inst{7-5} = 0b010;
18253 let Inst{31-21} = 0b10000010010;
18254 let prefersSlot3 = 1;
18255 let Constraints = "$Rxx32 = $Rxx32in";
18256 }
18257 def S2_asl_i_p_nac : HInst<
18258 (outs DoubleRegs:$Rxx32),
18259 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
18260 "$Rxx32 -= asl($Rss32,#$Ii)",
18261 tc_2c13e7f5, TypeS_2op>, Enc_70fb07 {
18262 let Inst{7-5} = 0b010;
18263 let Inst{31-21} = 0b10000010000;
18264 let prefersSlot3 = 1;
18265 let Constraints = "$Rxx32 = $Rxx32in";
18266 }
18267 def S2_asl_i_p_or : HInst<
18268 (outs DoubleRegs:$Rxx32),
18269 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
18270 "$Rxx32 |= asl($Rss32,#$Ii)",
18271 tc_a4e22bbd, TypeS_2op>, Enc_70fb07 {
18272 let Inst{7-5} = 0b110;
18273 let Inst{31-21} = 0b10000010010;
18274 let prefersSlot3 = 1;
18275 let Constraints = "$Rxx32 = $Rxx32in";
18276 }
18277 def S2_asl_i_p_xacc : HInst<
18278 (outs DoubleRegs:$Rxx32),
18279 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
18280 "$Rxx32 ^= asl($Rss32,#$Ii)",
18281 tc_a4e22bbd, TypeS_2op>, Enc_70fb07 {
18282 let Inst{7-5} = 0b010;
18283 let Inst{31-21} = 0b10000010100;
18284 let prefersSlot3 = 1;
18285 let Constraints = "$Rxx32 = $Rxx32in";
18286 }
18287 def S2_asl_i_r : HInst<
18288 (outs IntRegs:$Rd32),
18289 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
18290 "$Rd32 = asl($Rs32,#$Ii)",
18291 tc_5da50c4b, TypeS_2op>, Enc_a05677 {
18292 let Inst{7-5} = 0b010;
18293 let Inst{13-13} = 0b0;
18294 let Inst{31-21} = 0b10001100000;
18295 let hasNewValue = 1;
18296 let opNewValue = 0;
18297 }
18298 def S2_asl_i_r_acc : HInst<
18299 (outs IntRegs:$Rx32),
18300 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
18301 "$Rx32 += asl($Rs32,#$Ii)",
18302 tc_2c13e7f5, TypeS_2op>, Enc_28a2dc {
18303 let Inst{7-5} = 0b110;
18304 let Inst{13-13} = 0b0;
18305 let Inst{31-21} = 0b10001110000;
18306 let hasNewValue = 1;
18307 let opNewValue = 0;
18308 let prefersSlot3 = 1;
18309 let Constraints = "$Rx32 = $Rx32in";
18310 }
18311 def S2_asl_i_r_and : HInst<
18312 (outs IntRegs:$Rx32),
18313 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
18314 "$Rx32 &= asl($Rs32,#$Ii)",
18315 tc_a4e22bbd, TypeS_2op>, Enc_28a2dc {
18316 let Inst{7-5} = 0b010;
18317 let Inst{13-13} = 0b0;
18318 let Inst{31-21} = 0b10001110010;
18319 let hasNewValue = 1;
18320 let opNewValue = 0;
18321 let prefersSlot3 = 1;
18322 let Constraints = "$Rx32 = $Rx32in";
18323 }
18324 def S2_asl_i_r_nac : HInst<
18325 (outs IntRegs:$Rx32),
18326 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
18327 "$Rx32 -= asl($Rs32,#$Ii)",
18328 tc_2c13e7f5, TypeS_2op>, Enc_28a2dc {
18329 let Inst{7-5} = 0b010;
18330 let Inst{13-13} = 0b0;
18331 let Inst{31-21} = 0b10001110000;
18332 let hasNewValue = 1;
18333 let opNewValue = 0;
18334 let prefersSlot3 = 1;
18335 let Constraints = "$Rx32 = $Rx32in";
18336 }
18337 def S2_asl_i_r_or : HInst<
18338 (outs IntRegs:$Rx32),
18339 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
18340 "$Rx32 |= asl($Rs32,#$Ii)",
18341 tc_a4e22bbd, TypeS_2op>, Enc_28a2dc {
18342 let Inst{7-5} = 0b110;
18343 let Inst{13-13} = 0b0;
18344 let Inst{31-21} = 0b10001110010;
18345 let hasNewValue = 1;
18346 let opNewValue = 0;
18347 let prefersSlot3 = 1;
18348 let Constraints = "$Rx32 = $Rx32in";
18349 }
18350 def S2_asl_i_r_sat : HInst<
18351 (outs IntRegs:$Rd32),
18352 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
18353 "$Rd32 = asl($Rs32,#$Ii):sat",
18354 tc_8a825db2, TypeS_2op>, Enc_a05677 {
18355 let Inst{7-5} = 0b010;
18356 let Inst{13-13} = 0b0;
18357 let Inst{31-21} = 0b10001100010;
18358 let hasNewValue = 1;
18359 let opNewValue = 0;
18360 let prefersSlot3 = 1;
18361 let Defs = [USR_OVF];
18362 }
18363 def S2_asl_i_r_xacc : HInst<
18364 (outs IntRegs:$Rx32),
18365 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
18366 "$Rx32 ^= asl($Rs32,#$Ii)",
18367 tc_a4e22bbd, TypeS_2op>, Enc_28a2dc {
18368 let Inst{7-5} = 0b010;
18369 let Inst{13-13} = 0b0;
18370 let Inst{31-21} = 0b10001110100;
18371 let hasNewValue = 1;
18372 let opNewValue = 0;
18373 let prefersSlot3 = 1;
18374 let Constraints = "$Rx32 = $Rx32in";
18375 }
18376 def S2_asl_i_vh : HInst<
18377 (outs DoubleRegs:$Rdd32),
18378 (ins DoubleRegs:$Rss32, u4_0Imm:$Ii),
18379 "$Rdd32 = vaslh($Rss32,#$Ii)",
18380 tc_5da50c4b, TypeS_2op>, Enc_12b6e9 {
18381 let Inst{7-5} = 0b010;
18382 let Inst{13-12} = 0b00;
18383 let Inst{31-21} = 0b10000000100;
18384 }
18385 def S2_asl_i_vw : HInst<
18386 (outs DoubleRegs:$Rdd32),
18387 (ins DoubleRegs:$Rss32, u5_0Imm:$Ii),
18388 "$Rdd32 = vaslw($Rss32,#$Ii)",
18389 tc_5da50c4b, TypeS_2op>, Enc_7e5a82 {
18390 let Inst{7-5} = 0b010;
18391 let Inst{13-13} = 0b0;
18392 let Inst{31-21} = 0b10000000010;
18393 }
18394 def S2_asl_r_p : HInst<
18395 (outs DoubleRegs:$Rdd32),
18396 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
18397 "$Rdd32 = asl($Rss32,$Rt32)",
18398 tc_5da50c4b, TypeS_3op>, Enc_927852 {
18399 let Inst{7-5} = 0b100;
18400 let Inst{13-13} = 0b0;
18401 let Inst{31-21} = 0b11000011100;
18402 }
18403 def S2_asl_r_p_acc : HInst<
18404 (outs DoubleRegs:$Rxx32),
18405 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18406 "$Rxx32 += asl($Rss32,$Rt32)",
18407 tc_2c13e7f5, TypeS_3op>, Enc_1aa186 {
18408 let Inst{7-5} = 0b100;
18409 let Inst{13-13} = 0b0;
18410 let Inst{31-21} = 0b11001011110;
18411 let prefersSlot3 = 1;
18412 let Constraints = "$Rxx32 = $Rxx32in";
18413 }
18414 def S2_asl_r_p_and : HInst<
18415 (outs DoubleRegs:$Rxx32),
18416 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18417 "$Rxx32 &= asl($Rss32,$Rt32)",
18418 tc_a4e22bbd, TypeS_3op>, Enc_1aa186 {
18419 let Inst{7-5} = 0b100;
18420 let Inst{13-13} = 0b0;
18421 let Inst{31-21} = 0b11001011010;
18422 let prefersSlot3 = 1;
18423 let Constraints = "$Rxx32 = $Rxx32in";
18424 }
18425 def S2_asl_r_p_nac : HInst<
18426 (outs DoubleRegs:$Rxx32),
18427 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18428 "$Rxx32 -= asl($Rss32,$Rt32)",
18429 tc_2c13e7f5, TypeS_3op>, Enc_1aa186 {
18430 let Inst{7-5} = 0b100;
18431 let Inst{13-13} = 0b0;
18432 let Inst{31-21} = 0b11001011100;
18433 let prefersSlot3 = 1;
18434 let Constraints = "$Rxx32 = $Rxx32in";
18435 }
18436 def S2_asl_r_p_or : HInst<
18437 (outs DoubleRegs:$Rxx32),
18438 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18439 "$Rxx32 |= asl($Rss32,$Rt32)",
18440 tc_a4e22bbd, TypeS_3op>, Enc_1aa186 {
18441 let Inst{7-5} = 0b100;
18442 let Inst{13-13} = 0b0;
18443 let Inst{31-21} = 0b11001011000;
18444 let prefersSlot3 = 1;
18445 let Constraints = "$Rxx32 = $Rxx32in";
18446 }
18447 def S2_asl_r_p_xor : HInst<
18448 (outs DoubleRegs:$Rxx32),
18449 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18450 "$Rxx32 ^= asl($Rss32,$Rt32)",
18451 tc_a4e22bbd, TypeS_3op>, Enc_1aa186 {
18452 let Inst{7-5} = 0b100;
18453 let Inst{13-13} = 0b0;
18454 let Inst{31-21} = 0b11001011011;
18455 let prefersSlot3 = 1;
18456 let Constraints = "$Rxx32 = $Rxx32in";
18457 }
18458 def S2_asl_r_r : HInst<
18459 (outs IntRegs:$Rd32),
18460 (ins IntRegs:$Rs32, IntRegs:$Rt32),
18461 "$Rd32 = asl($Rs32,$Rt32)",
18462 tc_5da50c4b, TypeS_3op>, Enc_5ab2be {
18463 let Inst{7-5} = 0b100;
18464 let Inst{13-13} = 0b0;
18465 let Inst{31-21} = 0b11000110010;
18466 let hasNewValue = 1;
18467 let opNewValue = 0;
18468 }
18469 def S2_asl_r_r_acc : HInst<
18470 (outs IntRegs:$Rx32),
18471 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
18472 "$Rx32 += asl($Rs32,$Rt32)",
18473 tc_2c13e7f5, TypeS_3op>, Enc_2ae154 {
18474 let Inst{7-5} = 0b100;
18475 let Inst{13-13} = 0b0;
18476 let Inst{31-21} = 0b11001100110;
18477 let hasNewValue = 1;
18478 let opNewValue = 0;
18479 let prefersSlot3 = 1;
18480 let Constraints = "$Rx32 = $Rx32in";
18481 }
18482 def S2_asl_r_r_and : HInst<
18483 (outs IntRegs:$Rx32),
18484 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
18485 "$Rx32 &= asl($Rs32,$Rt32)",
18486 tc_a4e22bbd, TypeS_3op>, Enc_2ae154 {
18487 let Inst{7-5} = 0b100;
18488 let Inst{13-13} = 0b0;
18489 let Inst{31-21} = 0b11001100010;
18490 let hasNewValue = 1;
18491 let opNewValue = 0;
18492 let prefersSlot3 = 1;
18493 let Constraints = "$Rx32 = $Rx32in";
18494 }
18495 def S2_asl_r_r_nac : HInst<
18496 (outs IntRegs:$Rx32),
18497 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
18498 "$Rx32 -= asl($Rs32,$Rt32)",
18499 tc_2c13e7f5, TypeS_3op>, Enc_2ae154 {
18500 let Inst{7-5} = 0b100;
18501 let Inst{13-13} = 0b0;
18502 let Inst{31-21} = 0b11001100100;
18503 let hasNewValue = 1;
18504 let opNewValue = 0;
18505 let prefersSlot3 = 1;
18506 let Constraints = "$Rx32 = $Rx32in";
18507 }
18508 def S2_asl_r_r_or : HInst<
18509 (outs IntRegs:$Rx32),
18510 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
18511 "$Rx32 |= asl($Rs32,$Rt32)",
18512 tc_a4e22bbd, TypeS_3op>, Enc_2ae154 {
18513 let Inst{7-5} = 0b100;
18514 let Inst{13-13} = 0b0;
18515 let Inst{31-21} = 0b11001100000;
18516 let hasNewValue = 1;
18517 let opNewValue = 0;
18518 let prefersSlot3 = 1;
18519 let Constraints = "$Rx32 = $Rx32in";
18520 }
18521 def S2_asl_r_r_sat : HInst<
18522 (outs IntRegs:$Rd32),
18523 (ins IntRegs:$Rs32, IntRegs:$Rt32),
18524 "$Rd32 = asl($Rs32,$Rt32):sat",
18525 tc_8a825db2, TypeS_3op>, Enc_5ab2be {
18526 let Inst{7-5} = 0b100;
18527 let Inst{13-13} = 0b0;
18528 let Inst{31-21} = 0b11000110000;
18529 let hasNewValue = 1;
18530 let opNewValue = 0;
18531 let prefersSlot3 = 1;
18532 let Defs = [USR_OVF];
18533 }
18534 def S2_asl_r_vh : HInst<
18535 (outs DoubleRegs:$Rdd32),
18536 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
18537 "$Rdd32 = vaslh($Rss32,$Rt32)",
18538 tc_5da50c4b, TypeS_3op>, Enc_927852 {
18539 let Inst{7-5} = 0b100;
18540 let Inst{13-13} = 0b0;
18541 let Inst{31-21} = 0b11000011010;
18542 }
18543 def S2_asl_r_vw : HInst<
18544 (outs DoubleRegs:$Rdd32),
18545 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
18546 "$Rdd32 = vaslw($Rss32,$Rt32)",
18547 tc_5da50c4b, TypeS_3op>, Enc_927852 {
18548 let Inst{7-5} = 0b100;
18549 let Inst{13-13} = 0b0;
18550 let Inst{31-21} = 0b11000011000;
18551 }
18552 def S2_asr_i_p : HInst<
18553 (outs DoubleRegs:$Rdd32),
18554 (ins DoubleRegs:$Rss32, u6_0Imm:$Ii),
18555 "$Rdd32 = asr($Rss32,#$Ii)",
18556 tc_5da50c4b, TypeS_2op>, Enc_5eac98 {
18557 let Inst{7-5} = 0b000;
18558 let Inst{31-21} = 0b10000000000;
18559 }
18560 def S2_asr_i_p_acc : HInst<
18561 (outs DoubleRegs:$Rxx32),
18562 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
18563 "$Rxx32 += asr($Rss32,#$Ii)",
18564 tc_2c13e7f5, TypeS_2op>, Enc_70fb07 {
18565 let Inst{7-5} = 0b100;
18566 let Inst{31-21} = 0b10000010000;
18567 let prefersSlot3 = 1;
18568 let Constraints = "$Rxx32 = $Rxx32in";
18569 }
18570 def S2_asr_i_p_and : HInst<
18571 (outs DoubleRegs:$Rxx32),
18572 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
18573 "$Rxx32 &= asr($Rss32,#$Ii)",
18574 tc_a4e22bbd, TypeS_2op>, Enc_70fb07 {
18575 let Inst{7-5} = 0b000;
18576 let Inst{31-21} = 0b10000010010;
18577 let prefersSlot3 = 1;
18578 let Constraints = "$Rxx32 = $Rxx32in";
18579 }
18580 def S2_asr_i_p_nac : HInst<
18581 (outs DoubleRegs:$Rxx32),
18582 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
18583 "$Rxx32 -= asr($Rss32,#$Ii)",
18584 tc_2c13e7f5, TypeS_2op>, Enc_70fb07 {
18585 let Inst{7-5} = 0b000;
18586 let Inst{31-21} = 0b10000010000;
18587 let prefersSlot3 = 1;
18588 let Constraints = "$Rxx32 = $Rxx32in";
18589 }
18590 def S2_asr_i_p_or : HInst<
18591 (outs DoubleRegs:$Rxx32),
18592 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
18593 "$Rxx32 |= asr($Rss32,#$Ii)",
18594 tc_a4e22bbd, TypeS_2op>, Enc_70fb07 {
18595 let Inst{7-5} = 0b100;
18596 let Inst{31-21} = 0b10000010010;
18597 let prefersSlot3 = 1;
18598 let Constraints = "$Rxx32 = $Rxx32in";
18599 }
18600 def S2_asr_i_p_rnd : HInst<
18601 (outs DoubleRegs:$Rdd32),
18602 (ins DoubleRegs:$Rss32, u6_0Imm:$Ii),
18603 "$Rdd32 = asr($Rss32,#$Ii):rnd",
18604 tc_0dfac0a7, TypeS_2op>, Enc_5eac98 {
18605 let Inst{7-5} = 0b111;
18606 let Inst{31-21} = 0b10000000110;
18607 let prefersSlot3 = 1;
18608 }
18609 def S2_asr_i_p_rnd_goodsyntax : HInst<
18610 (outs DoubleRegs:$Rdd32),
18611 (ins DoubleRegs:$Rss32, u6_0Imm:$Ii),
18612 "$Rdd32 = asrrnd($Rss32,#$Ii)",
18613 tc_0dfac0a7, TypeS_2op> {
18614 let isPseudo = 1;
18615 }
18616 def S2_asr_i_r : HInst<
18617 (outs IntRegs:$Rd32),
18618 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
18619 "$Rd32 = asr($Rs32,#$Ii)",
18620 tc_5da50c4b, TypeS_2op>, Enc_a05677 {
18621 let Inst{7-5} = 0b000;
18622 let Inst{13-13} = 0b0;
18623 let Inst{31-21} = 0b10001100000;
18624 let hasNewValue = 1;
18625 let opNewValue = 0;
18626 }
18627 def S2_asr_i_r_acc : HInst<
18628 (outs IntRegs:$Rx32),
18629 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
18630 "$Rx32 += asr($Rs32,#$Ii)",
18631 tc_2c13e7f5, TypeS_2op>, Enc_28a2dc {
18632 let Inst{7-5} = 0b100;
18633 let Inst{13-13} = 0b0;
18634 let Inst{31-21} = 0b10001110000;
18635 let hasNewValue = 1;
18636 let opNewValue = 0;
18637 let prefersSlot3 = 1;
18638 let Constraints = "$Rx32 = $Rx32in";
18639 }
18640 def S2_asr_i_r_and : HInst<
18641 (outs IntRegs:$Rx32),
18642 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
18643 "$Rx32 &= asr($Rs32,#$Ii)",
18644 tc_a4e22bbd, TypeS_2op>, Enc_28a2dc {
18645 let Inst{7-5} = 0b000;
18646 let Inst{13-13} = 0b0;
18647 let Inst{31-21} = 0b10001110010;
18648 let hasNewValue = 1;
18649 let opNewValue = 0;
18650 let prefersSlot3 = 1;
18651 let Constraints = "$Rx32 = $Rx32in";
18652 }
18653 def S2_asr_i_r_nac : HInst<
18654 (outs IntRegs:$Rx32),
18655 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
18656 "$Rx32 -= asr($Rs32,#$Ii)",
18657 tc_2c13e7f5, TypeS_2op>, Enc_28a2dc {
18658 let Inst{7-5} = 0b000;
18659 let Inst{13-13} = 0b0;
18660 let Inst{31-21} = 0b10001110000;
18661 let hasNewValue = 1;
18662 let opNewValue = 0;
18663 let prefersSlot3 = 1;
18664 let Constraints = "$Rx32 = $Rx32in";
18665 }
18666 def S2_asr_i_r_or : HInst<
18667 (outs IntRegs:$Rx32),
18668 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
18669 "$Rx32 |= asr($Rs32,#$Ii)",
18670 tc_a4e22bbd, TypeS_2op>, Enc_28a2dc {
18671 let Inst{7-5} = 0b100;
18672 let Inst{13-13} = 0b0;
18673 let Inst{31-21} = 0b10001110010;
18674 let hasNewValue = 1;
18675 let opNewValue = 0;
18676 let prefersSlot3 = 1;
18677 let Constraints = "$Rx32 = $Rx32in";
18678 }
18679 def S2_asr_i_r_rnd : HInst<
18680 (outs IntRegs:$Rd32),
18681 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
18682 "$Rd32 = asr($Rs32,#$Ii):rnd",
18683 tc_0dfac0a7, TypeS_2op>, Enc_a05677 {
18684 let Inst{7-5} = 0b000;
18685 let Inst{13-13} = 0b0;
18686 let Inst{31-21} = 0b10001100010;
18687 let hasNewValue = 1;
18688 let opNewValue = 0;
18689 let prefersSlot3 = 1;
18690 }
18691 def S2_asr_i_r_rnd_goodsyntax : HInst<
18692 (outs IntRegs:$Rd32),
18693 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
18694 "$Rd32 = asrrnd($Rs32,#$Ii)",
18695 tc_0dfac0a7, TypeS_2op> {
18696 let hasNewValue = 1;
18697 let opNewValue = 0;
18698 let isPseudo = 1;
18699 }
18700 def S2_asr_i_svw_trun : HInst<
18701 (outs IntRegs:$Rd32),
18702 (ins DoubleRegs:$Rss32, u5_0Imm:$Ii),
18703 "$Rd32 = vasrw($Rss32,#$Ii)",
18704 tc_f34c1c21, TypeS_2op>, Enc_8dec2e {
18705 let Inst{7-5} = 0b010;
18706 let Inst{13-13} = 0b0;
18707 let Inst{31-21} = 0b10001000110;
18708 let hasNewValue = 1;
18709 let opNewValue = 0;
18710 let prefersSlot3 = 1;
18711 }
18712 def S2_asr_i_vh : HInst<
18713 (outs DoubleRegs:$Rdd32),
18714 (ins DoubleRegs:$Rss32, u4_0Imm:$Ii),
18715 "$Rdd32 = vasrh($Rss32,#$Ii)",
18716 tc_5da50c4b, TypeS_2op>, Enc_12b6e9 {
18717 let Inst{7-5} = 0b000;
18718 let Inst{13-12} = 0b00;
18719 let Inst{31-21} = 0b10000000100;
18720 }
18721 def S2_asr_i_vw : HInst<
18722 (outs DoubleRegs:$Rdd32),
18723 (ins DoubleRegs:$Rss32, u5_0Imm:$Ii),
18724 "$Rdd32 = vasrw($Rss32,#$Ii)",
18725 tc_5da50c4b, TypeS_2op>, Enc_7e5a82 {
18726 let Inst{7-5} = 0b000;
18727 let Inst{13-13} = 0b0;
18728 let Inst{31-21} = 0b10000000010;
18729 }
18730 def S2_asr_r_p : HInst<
18731 (outs DoubleRegs:$Rdd32),
18732 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
18733 "$Rdd32 = asr($Rss32,$Rt32)",
18734 tc_5da50c4b, TypeS_3op>, Enc_927852 {
18735 let Inst{7-5} = 0b000;
18736 let Inst{13-13} = 0b0;
18737 let Inst{31-21} = 0b11000011100;
18738 }
18739 def S2_asr_r_p_acc : HInst<
18740 (outs DoubleRegs:$Rxx32),
18741 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18742 "$Rxx32 += asr($Rss32,$Rt32)",
18743 tc_2c13e7f5, TypeS_3op>, Enc_1aa186 {
18744 let Inst{7-5} = 0b000;
18745 let Inst{13-13} = 0b0;
18746 let Inst{31-21} = 0b11001011110;
18747 let prefersSlot3 = 1;
18748 let Constraints = "$Rxx32 = $Rxx32in";
18749 }
18750 def S2_asr_r_p_and : HInst<
18751 (outs DoubleRegs:$Rxx32),
18752 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18753 "$Rxx32 &= asr($Rss32,$Rt32)",
18754 tc_a4e22bbd, TypeS_3op>, Enc_1aa186 {
18755 let Inst{7-5} = 0b000;
18756 let Inst{13-13} = 0b0;
18757 let Inst{31-21} = 0b11001011010;
18758 let prefersSlot3 = 1;
18759 let Constraints = "$Rxx32 = $Rxx32in";
18760 }
18761 def S2_asr_r_p_nac : HInst<
18762 (outs DoubleRegs:$Rxx32),
18763 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18764 "$Rxx32 -= asr($Rss32,$Rt32)",
18765 tc_2c13e7f5, TypeS_3op>, Enc_1aa186 {
18766 let Inst{7-5} = 0b000;
18767 let Inst{13-13} = 0b0;
18768 let Inst{31-21} = 0b11001011100;
18769 let prefersSlot3 = 1;
18770 let Constraints = "$Rxx32 = $Rxx32in";
18771 }
18772 def S2_asr_r_p_or : HInst<
18773 (outs DoubleRegs:$Rxx32),
18774 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18775 "$Rxx32 |= asr($Rss32,$Rt32)",
18776 tc_a4e22bbd, TypeS_3op>, Enc_1aa186 {
18777 let Inst{7-5} = 0b000;
18778 let Inst{13-13} = 0b0;
18779 let Inst{31-21} = 0b11001011000;
18780 let prefersSlot3 = 1;
18781 let Constraints = "$Rxx32 = $Rxx32in";
18782 }
18783 def S2_asr_r_p_xor : HInst<
18784 (outs DoubleRegs:$Rxx32),
18785 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18786 "$Rxx32 ^= asr($Rss32,$Rt32)",
18787 tc_a4e22bbd, TypeS_3op>, Enc_1aa186 {
18788 let Inst{7-5} = 0b000;
18789 let Inst{13-13} = 0b0;
18790 let Inst{31-21} = 0b11001011011;
18791 let prefersSlot3 = 1;
18792 let Constraints = "$Rxx32 = $Rxx32in";
18793 }
18794 def S2_asr_r_r : HInst<
18795 (outs IntRegs:$Rd32),
18796 (ins IntRegs:$Rs32, IntRegs:$Rt32),
18797 "$Rd32 = asr($Rs32,$Rt32)",
18798 tc_5da50c4b, TypeS_3op>, Enc_5ab2be {
18799 let Inst{7-5} = 0b000;
18800 let Inst{13-13} = 0b0;
18801 let Inst{31-21} = 0b11000110010;
18802 let hasNewValue = 1;
18803 let opNewValue = 0;
18804 }
18805 def S2_asr_r_r_acc : HInst<
18806 (outs IntRegs:$Rx32),
18807 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
18808 "$Rx32 += asr($Rs32,$Rt32)",
18809 tc_2c13e7f5, TypeS_3op>, Enc_2ae154 {
18810 let Inst{7-5} = 0b000;
18811 let Inst{13-13} = 0b0;
18812 let Inst{31-21} = 0b11001100110;
18813 let hasNewValue = 1;
18814 let opNewValue = 0;
18815 let prefersSlot3 = 1;
18816 let Constraints = "$Rx32 = $Rx32in";
18817 }
18818 def S2_asr_r_r_and : HInst<
18819 (outs IntRegs:$Rx32),
18820 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
18821 "$Rx32 &= asr($Rs32,$Rt32)",
18822 tc_a4e22bbd, TypeS_3op>, Enc_2ae154 {
18823 let Inst{7-5} = 0b000;
18824 let Inst{13-13} = 0b0;
18825 let Inst{31-21} = 0b11001100010;
18826 let hasNewValue = 1;
18827 let opNewValue = 0;
18828 let prefersSlot3 = 1;
18829 let Constraints = "$Rx32 = $Rx32in";
18830 }
18831 def S2_asr_r_r_nac : HInst<
18832 (outs IntRegs:$Rx32),
18833 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
18834 "$Rx32 -= asr($Rs32,$Rt32)",
18835 tc_2c13e7f5, TypeS_3op>, Enc_2ae154 {
18836 let Inst{7-5} = 0b000;
18837 let Inst{13-13} = 0b0;
18838 let Inst{31-21} = 0b11001100100;
18839 let hasNewValue = 1;
18840 let opNewValue = 0;
18841 let prefersSlot3 = 1;
18842 let Constraints = "$Rx32 = $Rx32in";
18843 }
18844 def S2_asr_r_r_or : HInst<
18845 (outs IntRegs:$Rx32),
18846 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
18847 "$Rx32 |= asr($Rs32,$Rt32)",
18848 tc_a4e22bbd, TypeS_3op>, Enc_2ae154 {
18849 let Inst{7-5} = 0b000;
18850 let Inst{13-13} = 0b0;
18851 let Inst{31-21} = 0b11001100000;
18852 let hasNewValue = 1;
18853 let opNewValue = 0;
18854 let prefersSlot3 = 1;
18855 let Constraints = "$Rx32 = $Rx32in";
18856 }
18857 def S2_asr_r_r_sat : HInst<
18858 (outs IntRegs:$Rd32),
18859 (ins IntRegs:$Rs32, IntRegs:$Rt32),
18860 "$Rd32 = asr($Rs32,$Rt32):sat",
18861 tc_8a825db2, TypeS_3op>, Enc_5ab2be {
18862 let Inst{7-5} = 0b000;
18863 let Inst{13-13} = 0b0;
18864 let Inst{31-21} = 0b11000110000;
18865 let hasNewValue = 1;
18866 let opNewValue = 0;
18867 let prefersSlot3 = 1;
18868 let Defs = [USR_OVF];
18869 }
18870 def S2_asr_r_svw_trun : HInst<
18871 (outs IntRegs:$Rd32),
18872 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
18873 "$Rd32 = vasrw($Rss32,$Rt32)",
18874 tc_f34c1c21, TypeS_3op>, Enc_3d5b28 {
18875 let Inst{7-5} = 0b010;
18876 let Inst{13-13} = 0b0;
18877 let Inst{31-21} = 0b11000101000;
18878 let hasNewValue = 1;
18879 let opNewValue = 0;
18880 let prefersSlot3 = 1;
18881 }
18882 def S2_asr_r_vh : HInst<
18883 (outs DoubleRegs:$Rdd32),
18884 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
18885 "$Rdd32 = vasrh($Rss32,$Rt32)",
18886 tc_5da50c4b, TypeS_3op>, Enc_927852 {
18887 let Inst{7-5} = 0b000;
18888 let Inst{13-13} = 0b0;
18889 let Inst{31-21} = 0b11000011010;
18890 }
18891 def S2_asr_r_vw : HInst<
18892 (outs DoubleRegs:$Rdd32),
18893 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
18894 "$Rdd32 = vasrw($Rss32,$Rt32)",
18895 tc_5da50c4b, TypeS_3op>, Enc_927852 {
18896 let Inst{7-5} = 0b000;
18897 let Inst{13-13} = 0b0;
18898 let Inst{31-21} = 0b11000011000;
18899 }
18900 def S2_brev : HInst<
18901 (outs IntRegs:$Rd32),
18902 (ins IntRegs:$Rs32),
18903 "$Rd32 = brev($Rs32)",
18904 tc_a7bdb22c, TypeS_2op>, Enc_5e2823 {
18905 let Inst{13-5} = 0b000000110;
18906 let Inst{31-21} = 0b10001100010;
18907 let hasNewValue = 1;
18908 let opNewValue = 0;
18909 let prefersSlot3 = 1;
18910 }
18911 def S2_brevp : HInst<
18912 (outs DoubleRegs:$Rdd32),
18913 (ins DoubleRegs:$Rss32),
18914 "$Rdd32 = brev($Rss32)",
18915 tc_a7bdb22c, TypeS_2op>, Enc_b9c5fb {
18916 let Inst{13-5} = 0b000000110;
18917 let Inst{31-21} = 0b10000000110;
18918 let prefersSlot3 = 1;
18919 }
18920 def S2_cabacdecbin : HInst<
18921 (outs DoubleRegs:$Rdd32),
18922 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
18923 "$Rdd32 = decbin($Rss32,$Rtt32)",
18924 tc_db596beb, TypeS_3op>, Enc_a56825 {
18925 let Inst{7-5} = 0b110;
18926 let Inst{13-13} = 0b0;
18927 let Inst{31-21} = 0b11000001110;
18928 let isPredicateLate = 1;
18929 let prefersSlot3 = 1;
18930 let Defs = [P0];
18931 }
18932 def S2_cl0 : HInst<
18933 (outs IntRegs:$Rd32),
18934 (ins IntRegs:$Rs32),
18935 "$Rd32 = cl0($Rs32)",
18936 tc_a7bdb22c, TypeS_2op>, Enc_5e2823 {
18937 let Inst{13-5} = 0b000000101;
18938 let Inst{31-21} = 0b10001100000;
18939 let hasNewValue = 1;
18940 let opNewValue = 0;
18941 let prefersSlot3 = 1;
18942 }
18943 def S2_cl0p : HInst<
18944 (outs IntRegs:$Rd32),
18945 (ins DoubleRegs:$Rss32),
18946 "$Rd32 = cl0($Rss32)",
18947 tc_a7bdb22c, TypeS_2op>, Enc_90cd8b {
18948 let Inst{13-5} = 0b000000010;
18949 let Inst{31-21} = 0b10001000010;
18950 let hasNewValue = 1;
18951 let opNewValue = 0;
18952 let prefersSlot3 = 1;
18953 }
18954 def S2_cl1 : HInst<
18955 (outs IntRegs:$Rd32),
18956 (ins IntRegs:$Rs32),
18957 "$Rd32 = cl1($Rs32)",
18958 tc_a7bdb22c, TypeS_2op>, Enc_5e2823 {
18959 let Inst{13-5} = 0b000000110;
18960 let Inst{31-21} = 0b10001100000;
18961 let hasNewValue = 1;
18962 let opNewValue = 0;
18963 let prefersSlot3 = 1;
18964 }
18965 def S2_cl1p : HInst<
18966 (outs IntRegs:$Rd32),
18967 (ins DoubleRegs:$Rss32),
18968 "$Rd32 = cl1($Rss32)",
18969 tc_a7bdb22c, TypeS_2op>, Enc_90cd8b {
18970 let Inst{13-5} = 0b000000100;
18971 let Inst{31-21} = 0b10001000010;
18972 let hasNewValue = 1;
18973 let opNewValue = 0;
18974 let prefersSlot3 = 1;
18975 }
18976 def S2_clb : HInst<
18977 (outs IntRegs:$Rd32),
18978 (ins IntRegs:$Rs32),
18979 "$Rd32 = clb($Rs32)",
18980 tc_a7bdb22c, TypeS_2op>, Enc_5e2823 {
18981 let Inst{13-5} = 0b000000100;
18982 let Inst{31-21} = 0b10001100000;
18983 let hasNewValue = 1;
18984 let opNewValue = 0;
18985 let prefersSlot3 = 1;
18986 }
18987 def S2_clbnorm : HInst<
18988 (outs IntRegs:$Rd32),
18989 (ins IntRegs:$Rs32),
18990 "$Rd32 = normamt($Rs32)",
18991 tc_a7bdb22c, TypeS_2op>, Enc_5e2823 {
18992 let Inst{13-5} = 0b000000111;
18993 let Inst{31-21} = 0b10001100000;
18994 let hasNewValue = 1;
18995 let opNewValue = 0;
18996 let prefersSlot3 = 1;
18997 }
18998 def S2_clbp : HInst<
18999 (outs IntRegs:$Rd32),
19000 (ins DoubleRegs:$Rss32),
19001 "$Rd32 = clb($Rss32)",
19002 tc_a7bdb22c, TypeS_2op>, Enc_90cd8b {
19003 let Inst{13-5} = 0b000000000;
19004 let Inst{31-21} = 0b10001000010;
19005 let hasNewValue = 1;
19006 let opNewValue = 0;
19007 let prefersSlot3 = 1;
19008 }
19009 def S2_clrbit_i : HInst<
19010 (outs IntRegs:$Rd32),
19011 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
19012 "$Rd32 = clrbit($Rs32,#$Ii)",
19013 tc_5da50c4b, TypeS_2op>, Enc_a05677 {
19014 let Inst{7-5} = 0b001;
19015 let Inst{13-13} = 0b0;
19016 let Inst{31-21} = 0b10001100110;
19017 let hasNewValue = 1;
19018 let opNewValue = 0;
19019 }
19020 def S2_clrbit_r : HInst<
19021 (outs IntRegs:$Rd32),
19022 (ins IntRegs:$Rs32, IntRegs:$Rt32),
19023 "$Rd32 = clrbit($Rs32,$Rt32)",
19024 tc_5da50c4b, TypeS_3op>, Enc_5ab2be {
19025 let Inst{7-5} = 0b010;
19026 let Inst{13-13} = 0b0;
19027 let Inst{31-21} = 0b11000110100;
19028 let hasNewValue = 1;
19029 let opNewValue = 0;
19030 }
19031 def S2_ct0 : HInst<
19032 (outs IntRegs:$Rd32),
19033 (ins IntRegs:$Rs32),
19034 "$Rd32 = ct0($Rs32)",
19035 tc_a7bdb22c, TypeS_2op>, Enc_5e2823 {
19036 let Inst{13-5} = 0b000000100;
19037 let Inst{31-21} = 0b10001100010;
19038 let hasNewValue = 1;
19039 let opNewValue = 0;
19040 let prefersSlot3 = 1;
19041 }
19042 def S2_ct0p : HInst<
19043 (outs IntRegs:$Rd32),
19044 (ins DoubleRegs:$Rss32),
19045 "$Rd32 = ct0($Rss32)",
19046 tc_a7bdb22c, TypeS_2op>, Enc_90cd8b {
19047 let Inst{13-5} = 0b000000010;
19048 let Inst{31-21} = 0b10001000111;
19049 let hasNewValue = 1;
19050 let opNewValue = 0;
19051 let prefersSlot3 = 1;
19052 }
19053 def S2_ct1 : HInst<
19054 (outs IntRegs:$Rd32),
19055 (ins IntRegs:$Rs32),
19056 "$Rd32 = ct1($Rs32)",
19057 tc_a7bdb22c, TypeS_2op>, Enc_5e2823 {
19058 let Inst{13-5} = 0b000000101;
19059 let Inst{31-21} = 0b10001100010;
19060 let hasNewValue = 1;
19061 let opNewValue = 0;
19062 let prefersSlot3 = 1;
19063 }
19064 def S2_ct1p : HInst<
19065 (outs IntRegs:$Rd32),
19066 (ins DoubleRegs:$Rss32),
19067 "$Rd32 = ct1($Rss32)",
19068 tc_a7bdb22c, TypeS_2op>, Enc_90cd8b {
19069 let Inst{13-5} = 0b000000100;
19070 let Inst{31-21} = 0b10001000111;
19071 let hasNewValue = 1;
19072 let opNewValue = 0;
19073 let prefersSlot3 = 1;
19074 }
19075 def S2_deinterleave : HInst<
19076 (outs DoubleRegs:$Rdd32),
19077 (ins DoubleRegs:$Rss32),
19078 "$Rdd32 = deinterleave($Rss32)",
19079 tc_a7bdb22c, TypeS_2op>, Enc_b9c5fb {
19080 let Inst{13-5} = 0b000000100;
19081 let Inst{31-21} = 0b10000000110;
19082 let prefersSlot3 = 1;
19083 }
19084 def S2_extractu : HInst<
19085 (outs IntRegs:$Rd32),
19086 (ins IntRegs:$Rs32, u5_0Imm:$Ii, u5_0Imm:$II),
19087 "$Rd32 = extractu($Rs32,#$Ii,#$II)",
19088 tc_2c13e7f5, TypeS_2op>, Enc_b388cf {
19089 let Inst{13-13} = 0b0;
19090 let Inst{31-23} = 0b100011010;
19091 let hasNewValue = 1;
19092 let opNewValue = 0;
19093 let prefersSlot3 = 1;
19094 }
19095 def S2_extractu_rp : HInst<
19096 (outs IntRegs:$Rd32),
19097 (ins IntRegs:$Rs32, DoubleRegs:$Rtt32),
19098 "$Rd32 = extractu($Rs32,$Rtt32)",
19099 tc_a08b630b, TypeS_3op>, Enc_e07374 {
19100 let Inst{7-5} = 0b000;
19101 let Inst{13-13} = 0b0;
19102 let Inst{31-21} = 0b11001001000;
19103 let hasNewValue = 1;
19104 let opNewValue = 0;
19105 let prefersSlot3 = 1;
19106 }
19107 def S2_extractup : HInst<
19108 (outs DoubleRegs:$Rdd32),
19109 (ins DoubleRegs:$Rss32, u6_0Imm:$Ii, u6_0Imm:$II),
19110 "$Rdd32 = extractu($Rss32,#$Ii,#$II)",
19111 tc_2c13e7f5, TypeS_2op>, Enc_b84c4c {
19112 let Inst{31-24} = 0b10000001;
19113 let prefersSlot3 = 1;
19114 }
19115 def S2_extractup_rp : HInst<
19116 (outs DoubleRegs:$Rdd32),
19117 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
19118 "$Rdd32 = extractu($Rss32,$Rtt32)",
19119 tc_a08b630b, TypeS_3op>, Enc_a56825 {
19120 let Inst{7-5} = 0b000;
19121 let Inst{13-13} = 0b0;
19122 let Inst{31-21} = 0b11000001000;
19123 let prefersSlot3 = 1;
19124 }
19125 def S2_insert : HInst<
19126 (outs IntRegs:$Rx32),
19127 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii, u5_0Imm:$II),
19128 "$Rx32 = insert($Rs32,#$Ii,#$II)",
19129 tc_bb831a7c, TypeS_2op>, Enc_a1e29d {
19130 let Inst{13-13} = 0b0;
19131 let Inst{31-23} = 0b100011110;
19132 let hasNewValue = 1;
19133 let opNewValue = 0;
19134 let prefersSlot3 = 1;
19135 let Constraints = "$Rx32 = $Rx32in";
19136 }
19137 def S2_insert_rp : HInst<
19138 (outs IntRegs:$Rx32),
19139 (ins IntRegs:$Rx32in, IntRegs:$Rs32, DoubleRegs:$Rtt32),
19140 "$Rx32 = insert($Rs32,$Rtt32)",
19141 tc_a4e22bbd, TypeS_3op>, Enc_179b35 {
19142 let Inst{7-5} = 0b000;
19143 let Inst{13-13} = 0b0;
19144 let Inst{31-21} = 0b11001000000;
19145 let hasNewValue = 1;
19146 let opNewValue = 0;
19147 let prefersSlot3 = 1;
19148 let Constraints = "$Rx32 = $Rx32in";
19149 }
19150 def S2_insertp : HInst<
19151 (outs DoubleRegs:$Rxx32),
19152 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii, u6_0Imm:$II),
19153 "$Rxx32 = insert($Rss32,#$Ii,#$II)",
19154 tc_bb831a7c, TypeS_2op>, Enc_143a3c {
19155 let Inst{31-24} = 0b10000011;
19156 let prefersSlot3 = 1;
19157 let Constraints = "$Rxx32 = $Rxx32in";
19158 }
19159 def S2_insertp_rp : HInst<
19160 (outs DoubleRegs:$Rxx32),
19161 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
19162 "$Rxx32 = insert($Rss32,$Rtt32)",
19163 tc_a4e22bbd, TypeS_3op>, Enc_88c16c {
19164 let Inst{7-5} = 0b000;
19165 let Inst{13-13} = 0b0;
19166 let Inst{31-21} = 0b11001010000;
19167 let prefersSlot3 = 1;
19168 let Constraints = "$Rxx32 = $Rxx32in";
19169 }
19170 def S2_interleave : HInst<
19171 (outs DoubleRegs:$Rdd32),
19172 (ins DoubleRegs:$Rss32),
19173 "$Rdd32 = interleave($Rss32)",
19174 tc_a7bdb22c, TypeS_2op>, Enc_b9c5fb {
19175 let Inst{13-5} = 0b000000101;
19176 let Inst{31-21} = 0b10000000110;
19177 let prefersSlot3 = 1;
19178 }
19179 def S2_lfsp : HInst<
19180 (outs DoubleRegs:$Rdd32),
19181 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
19182 "$Rdd32 = lfs($Rss32,$Rtt32)",
19183 tc_a08b630b, TypeS_3op>, Enc_a56825 {
19184 let Inst{7-5} = 0b110;
19185 let Inst{13-13} = 0b0;
19186 let Inst{31-21} = 0b11000001100;
19187 let prefersSlot3 = 1;
19188 }
19189 def S2_lsl_r_p : HInst<
19190 (outs DoubleRegs:$Rdd32),
19191 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
19192 "$Rdd32 = lsl($Rss32,$Rt32)",
19193 tc_5da50c4b, TypeS_3op>, Enc_927852 {
19194 let Inst{7-5} = 0b110;
19195 let Inst{13-13} = 0b0;
19196 let Inst{31-21} = 0b11000011100;
19197 }
19198 def S2_lsl_r_p_acc : HInst<
19199 (outs DoubleRegs:$Rxx32),
19200 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
19201 "$Rxx32 += lsl($Rss32,$Rt32)",
19202 tc_2c13e7f5, TypeS_3op>, Enc_1aa186 {
19203 let Inst{7-5} = 0b110;
19204 let Inst{13-13} = 0b0;
19205 let Inst{31-21} = 0b11001011110;
19206 let prefersSlot3 = 1;
19207 let Constraints = "$Rxx32 = $Rxx32in";
19208 }
19209 def S2_lsl_r_p_and : HInst<
19210 (outs DoubleRegs:$Rxx32),
19211 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
19212 "$Rxx32 &= lsl($Rss32,$Rt32)",
19213 tc_a4e22bbd, TypeS_3op>, Enc_1aa186 {
19214 let Inst{7-5} = 0b110;
19215 let Inst{13-13} = 0b0;
19216 let Inst{31-21} = 0b11001011010;
19217 let prefersSlot3 = 1;
19218 let Constraints = "$Rxx32 = $Rxx32in";
19219 }
19220 def S2_lsl_r_p_nac : HInst<
19221 (outs DoubleRegs:$Rxx32),
19222 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
19223 "$Rxx32 -= lsl($Rss32,$Rt32)",
19224 tc_2c13e7f5, TypeS_3op>, Enc_1aa186 {
19225 let Inst{7-5} = 0b110;
19226 let Inst{13-13} = 0b0;
19227 let Inst{31-21} = 0b11001011100;
19228 let prefersSlot3 = 1;
19229 let Constraints = "$Rxx32 = $Rxx32in";
19230 }
19231 def S2_lsl_r_p_or : HInst<
19232 (outs DoubleRegs:$Rxx32),
19233 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
19234 "$Rxx32 |= lsl($Rss32,$Rt32)",
19235 tc_a4e22bbd, TypeS_3op>, Enc_1aa186 {
19236 let Inst{7-5} = 0b110;
19237 let Inst{13-13} = 0b0;
19238 let Inst{31-21} = 0b11001011000;
19239 let prefersSlot3 = 1;
19240 let Constraints = "$Rxx32 = $Rxx32in";
19241 }
19242 def S2_lsl_r_p_xor : HInst<
19243 (outs DoubleRegs:$Rxx32),
19244 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
19245 "$Rxx32 ^= lsl($Rss32,$Rt32)",
19246 tc_a4e22bbd, TypeS_3op>, Enc_1aa186 {
19247 let Inst{7-5} = 0b110;
19248 let Inst{13-13} = 0b0;
19249 let Inst{31-21} = 0b11001011011;
19250 let prefersSlot3 = 1;
19251 let Constraints = "$Rxx32 = $Rxx32in";
19252 }
19253 def S2_lsl_r_r : HInst<
19254 (outs IntRegs:$Rd32),
19255 (ins IntRegs:$Rs32, IntRegs:$Rt32),
19256 "$Rd32 = lsl($Rs32,$Rt32)",
19257 tc_5da50c4b, TypeS_3op>, Enc_5ab2be {
19258 let Inst{7-5} = 0b110;
19259 let Inst{13-13} = 0b0;
19260 let Inst{31-21} = 0b11000110010;
19261 let hasNewValue = 1;
19262 let opNewValue = 0;
19263 }
19264 def S2_lsl_r_r_acc : HInst<
19265 (outs IntRegs:$Rx32),
19266 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
19267 "$Rx32 += lsl($Rs32,$Rt32)",
19268 tc_2c13e7f5, TypeS_3op>, Enc_2ae154 {
19269 let Inst{7-5} = 0b110;
19270 let Inst{13-13} = 0b0;
19271 let Inst{31-21} = 0b11001100110;
19272 let hasNewValue = 1;
19273 let opNewValue = 0;
19274 let prefersSlot3 = 1;
19275 let Constraints = "$Rx32 = $Rx32in";
19276 }
19277 def S2_lsl_r_r_and : HInst<
19278 (outs IntRegs:$Rx32),
19279 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
19280 "$Rx32 &= lsl($Rs32,$Rt32)",
19281 tc_a4e22bbd, TypeS_3op>, Enc_2ae154 {
19282 let Inst{7-5} = 0b110;
19283 let Inst{13-13} = 0b0;
19284 let Inst{31-21} = 0b11001100010;
19285 let hasNewValue = 1;
19286 let opNewValue = 0;
19287 let prefersSlot3 = 1;
19288 let Constraints = "$Rx32 = $Rx32in";
19289 }
19290 def S2_lsl_r_r_nac : HInst<
19291 (outs IntRegs:$Rx32),
19292 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
19293 "$Rx32 -= lsl($Rs32,$Rt32)",
19294 tc_2c13e7f5, TypeS_3op>, Enc_2ae154 {
19295 let Inst{7-5} = 0b110;
19296 let Inst{13-13} = 0b0;
19297 let Inst{31-21} = 0b11001100100;
19298 let hasNewValue = 1;
19299 let opNewValue = 0;
19300 let prefersSlot3 = 1;
19301 let Constraints = "$Rx32 = $Rx32in";
19302 }
19303 def S2_lsl_r_r_or : HInst<
19304 (outs IntRegs:$Rx32),
19305 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
19306 "$Rx32 |= lsl($Rs32,$Rt32)",
19307 tc_a4e22bbd, TypeS_3op>, Enc_2ae154 {
19308 let Inst{7-5} = 0b110;
19309 let Inst{13-13} = 0b0;
19310 let Inst{31-21} = 0b11001100000;
19311 let hasNewValue = 1;
19312 let opNewValue = 0;
19313 let prefersSlot3 = 1;
19314 let Constraints = "$Rx32 = $Rx32in";
19315 }
19316 def S2_lsl_r_vh : HInst<
19317 (outs DoubleRegs:$Rdd32),
19318 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
19319 "$Rdd32 = vlslh($Rss32,$Rt32)",
19320 tc_5da50c4b, TypeS_3op>, Enc_927852 {
19321 let Inst{7-5} = 0b110;
19322 let Inst{13-13} = 0b0;
19323 let Inst{31-21} = 0b11000011010;
19324 }
19325 def S2_lsl_r_vw : HInst<
19326 (outs DoubleRegs:$Rdd32),
19327 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
19328 "$Rdd32 = vlslw($Rss32,$Rt32)",
19329 tc_5da50c4b, TypeS_3op>, Enc_927852 {
19330 let Inst{7-5} = 0b110;
19331 let Inst{13-13} = 0b0;
19332 let Inst{31-21} = 0b11000011000;
19333 }
19334 def S2_lsr_i_p : HInst<
19335 (outs DoubleRegs:$Rdd32),
19336 (ins DoubleRegs:$Rss32, u6_0Imm:$Ii),
19337 "$Rdd32 = lsr($Rss32,#$Ii)",
19338 tc_5da50c4b, TypeS_2op>, Enc_5eac98 {
19339 let Inst{7-5} = 0b001;
19340 let Inst{31-21} = 0b10000000000;
19341 }
19342 def S2_lsr_i_p_acc : HInst<
19343 (outs DoubleRegs:$Rxx32),
19344 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
19345 "$Rxx32 += lsr($Rss32,#$Ii)",
19346 tc_2c13e7f5, TypeS_2op>, Enc_70fb07 {
19347 let Inst{7-5} = 0b101;
19348 let Inst{31-21} = 0b10000010000;
19349 let prefersSlot3 = 1;
19350 let Constraints = "$Rxx32 = $Rxx32in";
19351 }
19352 def S2_lsr_i_p_and : HInst<
19353 (outs DoubleRegs:$Rxx32),
19354 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
19355 "$Rxx32 &= lsr($Rss32,#$Ii)",
19356 tc_a4e22bbd, TypeS_2op>, Enc_70fb07 {
19357 let Inst{7-5} = 0b001;
19358 let Inst{31-21} = 0b10000010010;
19359 let prefersSlot3 = 1;
19360 let Constraints = "$Rxx32 = $Rxx32in";
19361 }
19362 def S2_lsr_i_p_nac : HInst<
19363 (outs DoubleRegs:$Rxx32),
19364 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
19365 "$Rxx32 -= lsr($Rss32,#$Ii)",
19366 tc_2c13e7f5, TypeS_2op>, Enc_70fb07 {
19367 let Inst{7-5} = 0b001;
19368 let Inst{31-21} = 0b10000010000;
19369 let prefersSlot3 = 1;
19370 let Constraints = "$Rxx32 = $Rxx32in";
19371 }
19372 def S2_lsr_i_p_or : HInst<
19373 (outs DoubleRegs:$Rxx32),
19374 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
19375 "$Rxx32 |= lsr($Rss32,#$Ii)",
19376 tc_a4e22bbd, TypeS_2op>, Enc_70fb07 {
19377 let Inst{7-5} = 0b101;
19378 let Inst{31-21} = 0b10000010010;
19379 let prefersSlot3 = 1;
19380 let Constraints = "$Rxx32 = $Rxx32in";
19381 }
19382 def S2_lsr_i_p_xacc : HInst<
19383 (outs DoubleRegs:$Rxx32),
19384 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
19385 "$Rxx32 ^= lsr($Rss32,#$Ii)",
19386 tc_a4e22bbd, TypeS_2op>, Enc_70fb07 {
19387 let Inst{7-5} = 0b001;
19388 let Inst{31-21} = 0b10000010100;
19389 let prefersSlot3 = 1;
19390 let Constraints = "$Rxx32 = $Rxx32in";
19391 }
19392 def S2_lsr_i_r : HInst<
19393 (outs IntRegs:$Rd32),
19394 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
19395 "$Rd32 = lsr($Rs32,#$Ii)",
19396 tc_5da50c4b, TypeS_2op>, Enc_a05677 {
19397 let Inst{7-5} = 0b001;
19398 let Inst{13-13} = 0b0;
19399 let Inst{31-21} = 0b10001100000;
19400 let hasNewValue = 1;
19401 let opNewValue = 0;
19402 }
19403 def S2_lsr_i_r_acc : HInst<
19404 (outs IntRegs:$Rx32),
19405 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
19406 "$Rx32 += lsr($Rs32,#$Ii)",
19407 tc_2c13e7f5, TypeS_2op>, Enc_28a2dc {
19408 let Inst{7-5} = 0b101;
19409 let Inst{13-13} = 0b0;
19410 let Inst{31-21} = 0b10001110000;
19411 let hasNewValue = 1;
19412 let opNewValue = 0;
19413 let prefersSlot3 = 1;
19414 let Constraints = "$Rx32 = $Rx32in";
19415 }
19416 def S2_lsr_i_r_and : HInst<
19417 (outs IntRegs:$Rx32),
19418 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
19419 "$Rx32 &= lsr($Rs32,#$Ii)",
19420 tc_a4e22bbd, TypeS_2op>, Enc_28a2dc {
19421 let Inst{7-5} = 0b001;
19422 let Inst{13-13} = 0b0;
19423 let Inst{31-21} = 0b10001110010;
19424 let hasNewValue = 1;
19425 let opNewValue = 0;
19426 let prefersSlot3 = 1;
19427 let Constraints = "$Rx32 = $Rx32in";
19428 }
19429 def S2_lsr_i_r_nac : HInst<
19430 (outs IntRegs:$Rx32),
19431 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
19432 "$Rx32 -= lsr($Rs32,#$Ii)",
19433 tc_2c13e7f5, TypeS_2op>, Enc_28a2dc {
19434 let Inst{7-5} = 0b001;
19435 let Inst{13-13} = 0b0;
19436 let Inst{31-21} = 0b10001110000;
19437 let hasNewValue = 1;
19438 let opNewValue = 0;
19439 let prefersSlot3 = 1;
19440 let Constraints = "$Rx32 = $Rx32in";
19441 }
19442 def S2_lsr_i_r_or : HInst<
19443 (outs IntRegs:$Rx32),
19444 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
19445 "$Rx32 |= lsr($Rs32,#$Ii)",
19446 tc_a4e22bbd, TypeS_2op>, Enc_28a2dc {
19447 let Inst{7-5} = 0b101;
19448 let Inst{13-13} = 0b0;
19449 let Inst{31-21} = 0b10001110010;
19450 let hasNewValue = 1;
19451 let opNewValue = 0;
19452 let prefersSlot3 = 1;
19453 let Constraints = "$Rx32 = $Rx32in";
19454 }
19455 def S2_lsr_i_r_xacc : HInst<
19456 (outs IntRegs:$Rx32),
19457 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
19458 "$Rx32 ^= lsr($Rs32,#$Ii)",
19459 tc_a4e22bbd, TypeS_2op>, Enc_28a2dc {
19460 let Inst{7-5} = 0b001;
19461 let Inst{13-13} = 0b0;
19462 let Inst{31-21} = 0b10001110100;
19463 let hasNewValue = 1;
19464 let opNewValue = 0;
19465 let prefersSlot3 = 1;
19466 let Constraints = "$Rx32 = $Rx32in";
19467 }
19468 def S2_lsr_i_vh : HInst<
19469 (outs DoubleRegs:$Rdd32),
19470 (ins DoubleRegs:$Rss32, u4_0Imm:$Ii),
19471 "$Rdd32 = vlsrh($Rss32,#$Ii)",
19472 tc_5da50c4b, TypeS_2op>, Enc_12b6e9 {
19473 let Inst{7-5} = 0b001;
19474 let Inst{13-12} = 0b00;
19475 let Inst{31-21} = 0b10000000100;
19476 }
19477 def S2_lsr_i_vw : HInst<
19478 (outs DoubleRegs:$Rdd32),
19479 (ins DoubleRegs:$Rss32, u5_0Imm:$Ii),
19480 "$Rdd32 = vlsrw($Rss32,#$Ii)",
19481 tc_5da50c4b, TypeS_2op>, Enc_7e5a82 {
19482 let Inst{7-5} = 0b001;
19483 let Inst{13-13} = 0b0;
19484 let Inst{31-21} = 0b10000000010;
19485 }
19486 def S2_lsr_r_p : HInst<
19487 (outs DoubleRegs:$Rdd32),
19488 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
19489 "$Rdd32 = lsr($Rss32,$Rt32)",
19490 tc_5da50c4b, TypeS_3op>, Enc_927852 {
19491 let Inst{7-5} = 0b010;
19492 let Inst{13-13} = 0b0;
19493 let Inst{31-21} = 0b11000011100;
19494 }
19495 def S2_lsr_r_p_acc : HInst<
19496 (outs DoubleRegs:$Rxx32),
19497 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
19498 "$Rxx32 += lsr($Rss32,$Rt32)",
19499 tc_2c13e7f5, TypeS_3op>, Enc_1aa186 {
19500 let Inst{7-5} = 0b010;
19501 let Inst{13-13} = 0b0;
19502 let Inst{31-21} = 0b11001011110;
19503 let prefersSlot3 = 1;
19504 let Constraints = "$Rxx32 = $Rxx32in";
19505 }
19506 def S2_lsr_r_p_and : HInst<
19507 (outs DoubleRegs:$Rxx32),
19508 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
19509 "$Rxx32 &= lsr($Rss32,$Rt32)",
19510 tc_a4e22bbd, TypeS_3op>, Enc_1aa186 {
19511 let Inst{7-5} = 0b010;
19512 let Inst{13-13} = 0b0;
19513 let Inst{31-21} = 0b11001011010;
19514 let prefersSlot3 = 1;
19515 let Constraints = "$Rxx32 = $Rxx32in";
19516 }
19517 def S2_lsr_r_p_nac : HInst<
19518 (outs DoubleRegs:$Rxx32),
19519 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
19520 "$Rxx32 -= lsr($Rss32,$Rt32)",
19521 tc_2c13e7f5, TypeS_3op>, Enc_1aa186 {
19522 let Inst{7-5} = 0b010;
19523 let Inst{13-13} = 0b0;
19524 let Inst{31-21} = 0b11001011100;
19525 let prefersSlot3 = 1;
19526 let Constraints = "$Rxx32 = $Rxx32in";
19527 }
19528 def S2_lsr_r_p_or : HInst<
19529 (outs DoubleRegs:$Rxx32),
19530 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
19531 "$Rxx32 |= lsr($Rss32,$Rt32)",
19532 tc_a4e22bbd, TypeS_3op>, Enc_1aa186 {
19533 let Inst{7-5} = 0b010;
19534 let Inst{13-13} = 0b0;
19535 let Inst{31-21} = 0b11001011000;
19536 let prefersSlot3 = 1;
19537 let Constraints = "$Rxx32 = $Rxx32in";
19538 }
19539 def S2_lsr_r_p_xor : HInst<
19540 (outs DoubleRegs:$Rxx32),
19541 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
19542 "$Rxx32 ^= lsr($Rss32,$Rt32)",
19543 tc_a4e22bbd, TypeS_3op>, Enc_1aa186 {
19544 let Inst{7-5} = 0b010;
19545 let Inst{13-13} = 0b0;
19546 let Inst{31-21} = 0b11001011011;
19547 let prefersSlot3 = 1;
19548 let Constraints = "$Rxx32 = $Rxx32in";
19549 }
19550 def S2_lsr_r_r : HInst<
19551 (outs IntRegs:$Rd32),
19552 (ins IntRegs:$Rs32, IntRegs:$Rt32),
19553 "$Rd32 = lsr($Rs32,$Rt32)",
19554 tc_5da50c4b, TypeS_3op>, Enc_5ab2be {
19555 let Inst{7-5} = 0b010;
19556 let Inst{13-13} = 0b0;
19557 let Inst{31-21} = 0b11000110010;
19558 let hasNewValue = 1;
19559 let opNewValue = 0;
19560 }
19561 def S2_lsr_r_r_acc : HInst<
19562 (outs IntRegs:$Rx32),
19563 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
19564 "$Rx32 += lsr($Rs32,$Rt32)",
19565 tc_2c13e7f5, TypeS_3op>, Enc_2ae154 {
19566 let Inst{7-5} = 0b010;
19567 let Inst{13-13} = 0b0;
19568 let Inst{31-21} = 0b11001100110;
19569 let hasNewValue = 1;
19570 let opNewValue = 0;
19571 let prefersSlot3 = 1;
19572 let Constraints = "$Rx32 = $Rx32in";
19573 }
19574 def S2_lsr_r_r_and : HInst<
19575 (outs IntRegs:$Rx32),
19576 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
19577 "$Rx32 &= lsr($Rs32,$Rt32)",
19578 tc_a4e22bbd, TypeS_3op>, Enc_2ae154 {
19579 let Inst{7-5} = 0b010;
19580 let Inst{13-13} = 0b0;
19581 let Inst{31-21} = 0b11001100010;
19582 let hasNewValue = 1;
19583 let opNewValue = 0;
19584 let prefersSlot3 = 1;
19585 let Constraints = "$Rx32 = $Rx32in";
19586 }
19587 def S2_lsr_r_r_nac : HInst<
19588 (outs IntRegs:$Rx32),
19589 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
19590 "$Rx32 -= lsr($Rs32,$Rt32)",
19591 tc_2c13e7f5, TypeS_3op>, Enc_2ae154 {
19592 let Inst{7-5} = 0b010;
19593 let Inst{13-13} = 0b0;
19594 let Inst{31-21} = 0b11001100100;
19595 let hasNewValue = 1;
19596 let opNewValue = 0;
19597 let prefersSlot3 = 1;
19598 let Constraints = "$Rx32 = $Rx32in";
19599 }
19600 def S2_lsr_r_r_or : HInst<
19601 (outs IntRegs:$Rx32),
19602 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
19603 "$Rx32 |= lsr($Rs32,$Rt32)",
19604 tc_a4e22bbd, TypeS_3op>, Enc_2ae154 {
19605 let Inst{7-5} = 0b010;
19606 let Inst{13-13} = 0b0;
19607 let Inst{31-21} = 0b11001100000;
19608 let hasNewValue = 1;
19609 let opNewValue = 0;
19610 let prefersSlot3 = 1;
19611 let Constraints = "$Rx32 = $Rx32in";
19612 }
19613 def S2_lsr_r_vh : HInst<
19614 (outs DoubleRegs:$Rdd32),
19615 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
19616 "$Rdd32 = vlsrh($Rss32,$Rt32)",
19617 tc_5da50c4b, TypeS_3op>, Enc_927852 {
19618 let Inst{7-5} = 0b010;
19619 let Inst{13-13} = 0b0;
19620 let Inst{31-21} = 0b11000011010;
19621 }
19622 def S2_lsr_r_vw : HInst<
19623 (outs DoubleRegs:$Rdd32),
19624 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
19625 "$Rdd32 = vlsrw($Rss32,$Rt32)",
19626 tc_5da50c4b, TypeS_3op>, Enc_927852 {
19627 let Inst{7-5} = 0b010;
19628 let Inst{13-13} = 0b0;
19629 let Inst{31-21} = 0b11000011000;
19630 }
19631 def S2_mask : HInst<
19632 (outs IntRegs:$Rd32),
19633 (ins u5_0Imm:$Ii, u5_0Imm:$II),
19634 "$Rd32 = mask(#$Ii,#$II)",
19635 tc_1fcb8495, TypeS_2op>, Enc_c85e2a, Requires<[HasV66]> {
19636 let Inst{13-13} = 0b1;
19637 let Inst{20-16} = 0b00000;
19638 let Inst{31-23} = 0b100011010;
19639 let hasNewValue = 1;
19640 let opNewValue = 0;
19641 let prefersSlot3 = 1;
19642 }
19643 def S2_packhl : HInst<
19644 (outs DoubleRegs:$Rdd32),
19645 (ins IntRegs:$Rs32, IntRegs:$Rt32),
19646 "$Rdd32 = packhl($Rs32,$Rt32)",
19647 tc_713b66bf, TypeALU32_3op>, Enc_be32a5 {
19648 let Inst{7-5} = 0b000;
19649 let Inst{13-13} = 0b0;
19650 let Inst{31-21} = 0b11110101100;
19651 let InputType = "reg";
19652 }
19653 def S2_parityp : HInst<
19654 (outs IntRegs:$Rd32),
19655 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
19656 "$Rd32 = parity($Rss32,$Rtt32)",
19657 tc_a08b630b, TypeALU64>, Enc_d2216a {
19658 let Inst{7-5} = 0b000;
19659 let Inst{13-13} = 0b0;
19660 let Inst{31-21} = 0b11010000000;
19661 let hasNewValue = 1;
19662 let opNewValue = 0;
19663 let prefersSlot3 = 1;
19664 }
19665 def S2_pstorerbf_io : HInst<
19666 (outs),
19667 (ins PredRegs:$Pv4, IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Rt32),
19668 "if (!$Pv4) memb($Rs32+#$Ii) = $Rt32",
19669 tc_8035e91f, TypeV2LDST>, Enc_da8d43, AddrModeRel {
19670 let Inst{2-2} = 0b0;
19671 let Inst{31-21} = 0b01000100000;
19672 let isPredicated = 1;
19673 let isPredicatedFalse = 1;
19674 let addrMode = BaseImmOffset;
19675 let accessSize = ByteAccess;
19676 let mayStore = 1;
19677 let BaseOpcode = "S2_storerb_io";
19678 let CextOpcode = "S2_storerb";
19679 let InputType = "imm";
19680 let isNVStorable = 1;
19681 let isExtendable = 1;
19682 let opExtendable = 2;
19683 let isExtentSigned = 0;
19684 let opExtentBits = 6;
19685 let opExtentAlign = 0;
19686 }
19687 def S2_pstorerbf_pi : HInst<
19688 (outs IntRegs:$Rx32),
19689 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_0Imm:$Ii, IntRegs:$Rt32),
19690 "if (!$Pv4) memb($Rx32++#$Ii) = $Rt32",
19691 tc_9edefe01, TypeST>, Enc_cc449f, AddrModeRel {
19692 let Inst{2-2} = 0b1;
19693 let Inst{7-7} = 0b0;
19694 let Inst{13-13} = 0b1;
19695 let Inst{31-21} = 0b10101011000;
19696 let isPredicated = 1;
19697 let isPredicatedFalse = 1;
19698 let addrMode = PostInc;
19699 let accessSize = ByteAccess;
19700 let mayStore = 1;
19701 let BaseOpcode = "S2_storerb_pi";
19702 let isNVStorable = 1;
19703 let Constraints = "$Rx32 = $Rx32in";
19704 }
19705 def S2_pstorerbf_zomap : HInst<
19706 (outs),
19707 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
19708 "if (!$Pv4) memb($Rs32) = $Rt32",
19709 tc_8035e91f, TypeMAPPING> {
19710 let isPseudo = 1;
19711 let isCodeGenOnly = 1;
19712 }
19713 def S2_pstorerbfnew_pi : HInst<
19714 (outs IntRegs:$Rx32),
19715 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_0Imm:$Ii, IntRegs:$Rt32),
19716 "if (!$Pv4.new) memb($Rx32++#$Ii) = $Rt32",
19717 tc_449acf79, TypeST>, Enc_cc449f, AddrModeRel {
19718 let Inst{2-2} = 0b1;
19719 let Inst{7-7} = 0b1;
19720 let Inst{13-13} = 0b1;
19721 let Inst{31-21} = 0b10101011000;
19722 let isPredicated = 1;
19723 let isPredicatedFalse = 1;
19724 let addrMode = PostInc;
19725 let accessSize = ByteAccess;
19726 let isPredicatedNew = 1;
19727 let mayStore = 1;
19728 let BaseOpcode = "S2_storerb_pi";
19729 let isNVStorable = 1;
19730 let Constraints = "$Rx32 = $Rx32in";
19731 }
19732 def S2_pstorerbnewf_io : HInst<
19733 (outs),
19734 (ins PredRegs:$Pv4, IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Nt8),
19735 "if (!$Pv4) memb($Rs32+#$Ii) = $Nt8.new",
19736 tc_011e0e9d, TypeV2LDST>, Enc_585242, AddrModeRel {
19737 let Inst{2-2} = 0b0;
19738 let Inst{12-11} = 0b00;
19739 let Inst{31-21} = 0b01000100101;
19740 let isPredicated = 1;
19741 let isPredicatedFalse = 1;
19742 let addrMode = BaseImmOffset;
19743 let accessSize = ByteAccess;
19744 let isNVStore = 1;
19745 let isNewValue = 1;
19746 let isRestrictNoSlot1Store = 1;
19747 let mayStore = 1;
19748 let BaseOpcode = "S2_storerb_io";
19749 let CextOpcode = "S2_storerb";
19750 let InputType = "imm";
19751 let isExtendable = 1;
19752 let opExtendable = 2;
19753 let isExtentSigned = 0;
19754 let opExtentBits = 6;
19755 let opExtentAlign = 0;
19756 let opNewValue = 3;
19757 }
19758 def S2_pstorerbnewf_pi : HInst<
19759 (outs IntRegs:$Rx32),
19760 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_0Imm:$Ii, IntRegs:$Nt8),
19761 "if (!$Pv4) memb($Rx32++#$Ii) = $Nt8.new",
19762 tc_ce59038e, TypeST>, Enc_52a5dd, AddrModeRel {
19763 let Inst{2-2} = 0b1;
19764 let Inst{7-7} = 0b0;
19765 let Inst{13-11} = 0b100;
19766 let Inst{31-21} = 0b10101011101;
19767 let isPredicated = 1;
19768 let isPredicatedFalse = 1;
19769 let addrMode = PostInc;
19770 let accessSize = ByteAccess;
19771 let isNVStore = 1;
19772 let isNewValue = 1;
19773 let isRestrictNoSlot1Store = 1;
19774 let mayStore = 1;
19775 let BaseOpcode = "S2_storerb_pi";
19776 let CextOpcode = "S2_storerb";
19777 let opNewValue = 4;
19778 let Constraints = "$Rx32 = $Rx32in";
19779 }
19780 def S2_pstorerbnewf_zomap : HInst<
19781 (outs),
19782 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Nt8),
19783 "if (!$Pv4) memb($Rs32) = $Nt8.new",
19784 tc_011e0e9d, TypeMAPPING> {
19785 let isPseudo = 1;
19786 let isCodeGenOnly = 1;
19787 let opNewValue = 2;
19788 }
19789 def S2_pstorerbnewfnew_pi : HInst<
19790 (outs IntRegs:$Rx32),
19791 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_0Imm:$Ii, IntRegs:$Nt8),
19792 "if (!$Pv4.new) memb($Rx32++#$Ii) = $Nt8.new",
19793 tc_f529831b, TypeST>, Enc_52a5dd, AddrModeRel {
19794 let Inst{2-2} = 0b1;
19795 let Inst{7-7} = 0b1;
19796 let Inst{13-11} = 0b100;
19797 let Inst{31-21} = 0b10101011101;
19798 let isPredicated = 1;
19799 let isPredicatedFalse = 1;
19800 let addrMode = PostInc;
19801 let accessSize = ByteAccess;
19802 let isNVStore = 1;
19803 let isPredicatedNew = 1;
19804 let isNewValue = 1;
19805 let isRestrictNoSlot1Store = 1;
19806 let mayStore = 1;
19807 let BaseOpcode = "S2_storerb_pi";
19808 let CextOpcode = "S2_storerb";
19809 let opNewValue = 4;
19810 let Constraints = "$Rx32 = $Rx32in";
19811 }
19812 def S2_pstorerbnewt_io : HInst<
19813 (outs),
19814 (ins PredRegs:$Pv4, IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Nt8),
19815 "if ($Pv4) memb($Rs32+#$Ii) = $Nt8.new",
19816 tc_011e0e9d, TypeV2LDST>, Enc_585242, AddrModeRel {
19817 let Inst{2-2} = 0b0;
19818 let Inst{12-11} = 0b00;
19819 let Inst{31-21} = 0b01000000101;
19820 let isPredicated = 1;
19821 let addrMode = BaseImmOffset;
19822 let accessSize = ByteAccess;
19823 let isNVStore = 1;
19824 let isNewValue = 1;
19825 let isRestrictNoSlot1Store = 1;
19826 let mayStore = 1;
19827 let BaseOpcode = "S2_storerb_io";
19828 let CextOpcode = "S2_storerb";
19829 let InputType = "imm";
19830 let isExtendable = 1;
19831 let opExtendable = 2;
19832 let isExtentSigned = 0;
19833 let opExtentBits = 6;
19834 let opExtentAlign = 0;
19835 let opNewValue = 3;
19836 }
19837 def S2_pstorerbnewt_pi : HInst<
19838 (outs IntRegs:$Rx32),
19839 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_0Imm:$Ii, IntRegs:$Nt8),
19840 "if ($Pv4) memb($Rx32++#$Ii) = $Nt8.new",
19841 tc_ce59038e, TypeST>, Enc_52a5dd, AddrModeRel {
19842 let Inst{2-2} = 0b0;
19843 let Inst{7-7} = 0b0;
19844 let Inst{13-11} = 0b100;
19845 let Inst{31-21} = 0b10101011101;
19846 let isPredicated = 1;
19847 let addrMode = PostInc;
19848 let accessSize = ByteAccess;
19849 let isNVStore = 1;
19850 let isNewValue = 1;
19851 let isRestrictNoSlot1Store = 1;
19852 let mayStore = 1;
19853 let BaseOpcode = "S2_storerb_pi";
19854 let CextOpcode = "S2_storerb";
19855 let opNewValue = 4;
19856 let Constraints = "$Rx32 = $Rx32in";
19857 }
19858 def S2_pstorerbnewt_zomap : HInst<
19859 (outs),
19860 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Nt8),
19861 "if ($Pv4) memb($Rs32) = $Nt8.new",
19862 tc_011e0e9d, TypeMAPPING> {
19863 let isPseudo = 1;
19864 let isCodeGenOnly = 1;
19865 let opNewValue = 2;
19866 }
19867 def S2_pstorerbnewtnew_pi : HInst<
19868 (outs IntRegs:$Rx32),
19869 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_0Imm:$Ii, IntRegs:$Nt8),
19870 "if ($Pv4.new) memb($Rx32++#$Ii) = $Nt8.new",
19871 tc_f529831b, TypeST>, Enc_52a5dd, AddrModeRel {
19872 let Inst{2-2} = 0b0;
19873 let Inst{7-7} = 0b1;
19874 let Inst{13-11} = 0b100;
19875 let Inst{31-21} = 0b10101011101;
19876 let isPredicated = 1;
19877 let addrMode = PostInc;
19878 let accessSize = ByteAccess;
19879 let isNVStore = 1;
19880 let isPredicatedNew = 1;
19881 let isNewValue = 1;
19882 let isRestrictNoSlot1Store = 1;
19883 let mayStore = 1;
19884 let BaseOpcode = "S2_storerb_pi";
19885 let CextOpcode = "S2_storerb";
19886 let opNewValue = 4;
19887 let Constraints = "$Rx32 = $Rx32in";
19888 }
19889 def S2_pstorerbt_io : HInst<
19890 (outs),
19891 (ins PredRegs:$Pv4, IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Rt32),
19892 "if ($Pv4) memb($Rs32+#$Ii) = $Rt32",
19893 tc_8035e91f, TypeV2LDST>, Enc_da8d43, AddrModeRel {
19894 let Inst{2-2} = 0b0;
19895 let Inst{31-21} = 0b01000000000;
19896 let isPredicated = 1;
19897 let addrMode = BaseImmOffset;
19898 let accessSize = ByteAccess;
19899 let mayStore = 1;
19900 let BaseOpcode = "S2_storerb_io";
19901 let CextOpcode = "S2_storerb";
19902 let InputType = "imm";
19903 let isNVStorable = 1;
19904 let isExtendable = 1;
19905 let opExtendable = 2;
19906 let isExtentSigned = 0;
19907 let opExtentBits = 6;
19908 let opExtentAlign = 0;
19909 }
19910 def S2_pstorerbt_pi : HInst<
19911 (outs IntRegs:$Rx32),
19912 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_0Imm:$Ii, IntRegs:$Rt32),
19913 "if ($Pv4) memb($Rx32++#$Ii) = $Rt32",
19914 tc_9edefe01, TypeST>, Enc_cc449f, AddrModeRel {
19915 let Inst{2-2} = 0b0;
19916 let Inst{7-7} = 0b0;
19917 let Inst{13-13} = 0b1;
19918 let Inst{31-21} = 0b10101011000;
19919 let isPredicated = 1;
19920 let addrMode = PostInc;
19921 let accessSize = ByteAccess;
19922 let mayStore = 1;
19923 let BaseOpcode = "S2_storerb_pi";
19924 let isNVStorable = 1;
19925 let Constraints = "$Rx32 = $Rx32in";
19926 }
19927 def S2_pstorerbt_zomap : HInst<
19928 (outs),
19929 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
19930 "if ($Pv4) memb($Rs32) = $Rt32",
19931 tc_8035e91f, TypeMAPPING> {
19932 let isPseudo = 1;
19933 let isCodeGenOnly = 1;
19934 }
19935 def S2_pstorerbtnew_pi : HInst<
19936 (outs IntRegs:$Rx32),
19937 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_0Imm:$Ii, IntRegs:$Rt32),
19938 "if ($Pv4.new) memb($Rx32++#$Ii) = $Rt32",
19939 tc_449acf79, TypeST>, Enc_cc449f, AddrModeRel {
19940 let Inst{2-2} = 0b0;
19941 let Inst{7-7} = 0b1;
19942 let Inst{13-13} = 0b1;
19943 let Inst{31-21} = 0b10101011000;
19944 let isPredicated = 1;
19945 let addrMode = PostInc;
19946 let accessSize = ByteAccess;
19947 let isPredicatedNew = 1;
19948 let mayStore = 1;
19949 let BaseOpcode = "S2_storerb_pi";
19950 let isNVStorable = 1;
19951 let Constraints = "$Rx32 = $Rx32in";
19952 }
19953 def S2_pstorerdf_io : HInst<
19954 (outs),
19955 (ins PredRegs:$Pv4, IntRegs:$Rs32, u29_3Imm:$Ii, DoubleRegs:$Rtt32),
19956 "if (!$Pv4) memd($Rs32+#$Ii) = $Rtt32",
19957 tc_8035e91f, TypeV2LDST>, Enc_57a33e, AddrModeRel {
19958 let Inst{2-2} = 0b0;
19959 let Inst{31-21} = 0b01000100110;
19960 let isPredicated = 1;
19961 let isPredicatedFalse = 1;
19962 let addrMode = BaseImmOffset;
19963 let accessSize = DoubleWordAccess;
19964 let mayStore = 1;
19965 let BaseOpcode = "S2_storerd_io";
19966 let CextOpcode = "S2_storerd";
19967 let InputType = "imm";
19968 let isExtendable = 1;
19969 let opExtendable = 2;
19970 let isExtentSigned = 0;
19971 let opExtentBits = 9;
19972 let opExtentAlign = 3;
19973 }
19974 def S2_pstorerdf_pi : HInst<
19975 (outs IntRegs:$Rx32),
19976 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_3Imm:$Ii, DoubleRegs:$Rtt32),
19977 "if (!$Pv4) memd($Rx32++#$Ii) = $Rtt32",
19978 tc_9edefe01, TypeST>, Enc_9a33d5, AddrModeRel {
19979 let Inst{2-2} = 0b1;
19980 let Inst{7-7} = 0b0;
19981 let Inst{13-13} = 0b1;
19982 let Inst{31-21} = 0b10101011110;
19983 let isPredicated = 1;
19984 let isPredicatedFalse = 1;
19985 let addrMode = PostInc;
19986 let accessSize = DoubleWordAccess;
19987 let mayStore = 1;
19988 let BaseOpcode = "S2_storerd_pi";
19989 let CextOpcode = "S2_storerd";
19990 let Constraints = "$Rx32 = $Rx32in";
19991 }
19992 def S2_pstorerdf_zomap : HInst<
19993 (outs),
19994 (ins PredRegs:$Pv4, IntRegs:$Rs32, DoubleRegs:$Rtt32),
19995 "if (!$Pv4) memd($Rs32) = $Rtt32",
19996 tc_8035e91f, TypeMAPPING> {
19997 let isPseudo = 1;
19998 let isCodeGenOnly = 1;
19999 }
20000 def S2_pstorerdfnew_pi : HInst<
20001 (outs IntRegs:$Rx32),
20002 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_3Imm:$Ii, DoubleRegs:$Rtt32),
20003 "if (!$Pv4.new) memd($Rx32++#$Ii) = $Rtt32",
20004 tc_449acf79, TypeST>, Enc_9a33d5, AddrModeRel {
20005 let Inst{2-2} = 0b1;
20006 let Inst{7-7} = 0b1;
20007 let Inst{13-13} = 0b1;
20008 let Inst{31-21} = 0b10101011110;
20009 let isPredicated = 1;
20010 let isPredicatedFalse = 1;
20011 let addrMode = PostInc;
20012 let accessSize = DoubleWordAccess;
20013 let isPredicatedNew = 1;
20014 let mayStore = 1;
20015 let BaseOpcode = "S2_storerd_pi";
20016 let CextOpcode = "S2_storerd";
20017 let Constraints = "$Rx32 = $Rx32in";
20018 }
20019 def S2_pstorerdt_io : HInst<
20020 (outs),
20021 (ins PredRegs:$Pv4, IntRegs:$Rs32, u29_3Imm:$Ii, DoubleRegs:$Rtt32),
20022 "if ($Pv4) memd($Rs32+#$Ii) = $Rtt32",
20023 tc_8035e91f, TypeV2LDST>, Enc_57a33e, AddrModeRel {
20024 let Inst{2-2} = 0b0;
20025 let Inst{31-21} = 0b01000000110;
20026 let isPredicated = 1;
20027 let addrMode = BaseImmOffset;
20028 let accessSize = DoubleWordAccess;
20029 let mayStore = 1;
20030 let BaseOpcode = "S2_storerd_io";
20031 let CextOpcode = "S2_storerd";
20032 let InputType = "imm";
20033 let isExtendable = 1;
20034 let opExtendable = 2;
20035 let isExtentSigned = 0;
20036 let opExtentBits = 9;
20037 let opExtentAlign = 3;
20038 }
20039 def S2_pstorerdt_pi : HInst<
20040 (outs IntRegs:$Rx32),
20041 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_3Imm:$Ii, DoubleRegs:$Rtt32),
20042 "if ($Pv4) memd($Rx32++#$Ii) = $Rtt32",
20043 tc_9edefe01, TypeST>, Enc_9a33d5, AddrModeRel {
20044 let Inst{2-2} = 0b0;
20045 let Inst{7-7} = 0b0;
20046 let Inst{13-13} = 0b1;
20047 let Inst{31-21} = 0b10101011110;
20048 let isPredicated = 1;
20049 let addrMode = PostInc;
20050 let accessSize = DoubleWordAccess;
20051 let mayStore = 1;
20052 let BaseOpcode = "S2_storerd_pi";
20053 let CextOpcode = "S2_storerd";
20054 let Constraints = "$Rx32 = $Rx32in";
20055 }
20056 def S2_pstorerdt_zomap : HInst<
20057 (outs),
20058 (ins PredRegs:$Pv4, IntRegs:$Rs32, DoubleRegs:$Rtt32),
20059 "if ($Pv4) memd($Rs32) = $Rtt32",
20060 tc_8035e91f, TypeMAPPING> {
20061 let isPseudo = 1;
20062 let isCodeGenOnly = 1;
20063 }
20064 def S2_pstorerdtnew_pi : HInst<
20065 (outs IntRegs:$Rx32),
20066 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_3Imm:$Ii, DoubleRegs:$Rtt32),
20067 "if ($Pv4.new) memd($Rx32++#$Ii) = $Rtt32",
20068 tc_449acf79, TypeST>, Enc_9a33d5, AddrModeRel {
20069 let Inst{2-2} = 0b0;
20070 let Inst{7-7} = 0b1;
20071 let Inst{13-13} = 0b1;
20072 let Inst{31-21} = 0b10101011110;
20073 let isPredicated = 1;
20074 let addrMode = PostInc;
20075 let accessSize = DoubleWordAccess;
20076 let isPredicatedNew = 1;
20077 let mayStore = 1;
20078 let BaseOpcode = "S2_storerd_pi";
20079 let CextOpcode = "S2_storerd";
20080 let Constraints = "$Rx32 = $Rx32in";
20081 }
20082 def S2_pstorerff_io : HInst<
20083 (outs),
20084 (ins PredRegs:$Pv4, IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Rt32),
20085 "if (!$Pv4) memh($Rs32+#$Ii) = $Rt32.h",
20086 tc_8035e91f, TypeV2LDST>, Enc_e8c45e, AddrModeRel {
20087 let Inst{2-2} = 0b0;
20088 let Inst{31-21} = 0b01000100011;
20089 let isPredicated = 1;
20090 let isPredicatedFalse = 1;
20091 let addrMode = BaseImmOffset;
20092 let accessSize = HalfWordAccess;
20093 let mayStore = 1;
20094 let BaseOpcode = "S2_storerf_io";
20095 let CextOpcode = "S2_storerf";
20096 let InputType = "imm";
20097 let isExtendable = 1;
20098 let opExtendable = 2;
20099 let isExtentSigned = 0;
20100 let opExtentBits = 7;
20101 let opExtentAlign = 1;
20102 }
20103 def S2_pstorerff_pi : HInst<
20104 (outs IntRegs:$Rx32),
20105 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Rt32),
20106 "if (!$Pv4) memh($Rx32++#$Ii) = $Rt32.h",
20107 tc_9edefe01, TypeST>, Enc_b886fd, AddrModeRel {
20108 let Inst{2-2} = 0b1;
20109 let Inst{7-7} = 0b0;
20110 let Inst{13-13} = 0b1;
20111 let Inst{31-21} = 0b10101011011;
20112 let isPredicated = 1;
20113 let isPredicatedFalse = 1;
20114 let addrMode = PostInc;
20115 let accessSize = HalfWordAccess;
20116 let mayStore = 1;
20117 let BaseOpcode = "S2_storerf_pi";
20118 let CextOpcode = "S2_storerf";
20119 let Constraints = "$Rx32 = $Rx32in";
20120 }
20121 def S2_pstorerff_zomap : HInst<
20122 (outs),
20123 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
20124 "if (!$Pv4) memh($Rs32) = $Rt32.h",
20125 tc_8035e91f, TypeMAPPING> {
20126 let isPseudo = 1;
20127 let isCodeGenOnly = 1;
20128 }
20129 def S2_pstorerffnew_pi : HInst<
20130 (outs IntRegs:$Rx32),
20131 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Rt32),
20132 "if (!$Pv4.new) memh($Rx32++#$Ii) = $Rt32.h",
20133 tc_449acf79, TypeST>, Enc_b886fd, AddrModeRel {
20134 let Inst{2-2} = 0b1;
20135 let Inst{7-7} = 0b1;
20136 let Inst{13-13} = 0b1;
20137 let Inst{31-21} = 0b10101011011;
20138 let isPredicated = 1;
20139 let isPredicatedFalse = 1;
20140 let addrMode = PostInc;
20141 let accessSize = HalfWordAccess;
20142 let isPredicatedNew = 1;
20143 let mayStore = 1;
20144 let BaseOpcode = "S2_storerf_pi";
20145 let CextOpcode = "S2_storerf";
20146 let Constraints = "$Rx32 = $Rx32in";
20147 }
20148 def S2_pstorerft_io : HInst<
20149 (outs),
20150 (ins PredRegs:$Pv4, IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Rt32),
20151 "if ($Pv4) memh($Rs32+#$Ii) = $Rt32.h",
20152 tc_8035e91f, TypeV2LDST>, Enc_e8c45e, AddrModeRel {
20153 let Inst{2-2} = 0b0;
20154 let Inst{31-21} = 0b01000000011;
20155 let isPredicated = 1;
20156 let addrMode = BaseImmOffset;
20157 let accessSize = HalfWordAccess;
20158 let mayStore = 1;
20159 let BaseOpcode = "S2_storerf_io";
20160 let CextOpcode = "S2_storerf";
20161 let InputType = "imm";
20162 let isExtendable = 1;
20163 let opExtendable = 2;
20164 let isExtentSigned = 0;
20165 let opExtentBits = 7;
20166 let opExtentAlign = 1;
20167 }
20168 def S2_pstorerft_pi : HInst<
20169 (outs IntRegs:$Rx32),
20170 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Rt32),
20171 "if ($Pv4) memh($Rx32++#$Ii) = $Rt32.h",
20172 tc_9edefe01, TypeST>, Enc_b886fd, AddrModeRel {
20173 let Inst{2-2} = 0b0;
20174 let Inst{7-7} = 0b0;
20175 let Inst{13-13} = 0b1;
20176 let Inst{31-21} = 0b10101011011;
20177 let isPredicated = 1;
20178 let addrMode = PostInc;
20179 let accessSize = HalfWordAccess;
20180 let mayStore = 1;
20181 let BaseOpcode = "S2_storerf_pi";
20182 let CextOpcode = "S2_storerf";
20183 let Constraints = "$Rx32 = $Rx32in";
20184 }
20185 def S2_pstorerft_zomap : HInst<
20186 (outs),
20187 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
20188 "if ($Pv4) memh($Rs32) = $Rt32.h",
20189 tc_8035e91f, TypeMAPPING> {
20190 let isPseudo = 1;
20191 let isCodeGenOnly = 1;
20192 }
20193 def S2_pstorerftnew_pi : HInst<
20194 (outs IntRegs:$Rx32),
20195 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Rt32),
20196 "if ($Pv4.new) memh($Rx32++#$Ii) = $Rt32.h",
20197 tc_449acf79, TypeST>, Enc_b886fd, AddrModeRel {
20198 let Inst{2-2} = 0b0;
20199 let Inst{7-7} = 0b1;
20200 let Inst{13-13} = 0b1;
20201 let Inst{31-21} = 0b10101011011;
20202 let isPredicated = 1;
20203 let addrMode = PostInc;
20204 let accessSize = HalfWordAccess;
20205 let isPredicatedNew = 1;
20206 let mayStore = 1;
20207 let BaseOpcode = "S2_storerf_pi";
20208 let CextOpcode = "S2_storerf";
20209 let Constraints = "$Rx32 = $Rx32in";
20210 }
20211 def S2_pstorerhf_io : HInst<
20212 (outs),
20213 (ins PredRegs:$Pv4, IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Rt32),
20214 "if (!$Pv4) memh($Rs32+#$Ii) = $Rt32",
20215 tc_8035e91f, TypeV2LDST>, Enc_e8c45e, AddrModeRel {
20216 let Inst{2-2} = 0b0;
20217 let Inst{31-21} = 0b01000100010;
20218 let isPredicated = 1;
20219 let isPredicatedFalse = 1;
20220 let addrMode = BaseImmOffset;
20221 let accessSize = HalfWordAccess;
20222 let mayStore = 1;
20223 let BaseOpcode = "S2_storerh_io";
20224 let CextOpcode = "S2_storerh";
20225 let InputType = "imm";
20226 let isNVStorable = 1;
20227 let isExtendable = 1;
20228 let opExtendable = 2;
20229 let isExtentSigned = 0;
20230 let opExtentBits = 7;
20231 let opExtentAlign = 1;
20232 }
20233 def S2_pstorerhf_pi : HInst<
20234 (outs IntRegs:$Rx32),
20235 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Rt32),
20236 "if (!$Pv4) memh($Rx32++#$Ii) = $Rt32",
20237 tc_9edefe01, TypeST>, Enc_b886fd, AddrModeRel {
20238 let Inst{2-2} = 0b1;
20239 let Inst{7-7} = 0b0;
20240 let Inst{13-13} = 0b1;
20241 let Inst{31-21} = 0b10101011010;
20242 let isPredicated = 1;
20243 let isPredicatedFalse = 1;
20244 let addrMode = PostInc;
20245 let accessSize = HalfWordAccess;
20246 let mayStore = 1;
20247 let BaseOpcode = "S2_storerh_pi";
20248 let isNVStorable = 1;
20249 let Constraints = "$Rx32 = $Rx32in";
20250 }
20251 def S2_pstorerhf_zomap : HInst<
20252 (outs),
20253 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
20254 "if (!$Pv4) memh($Rs32) = $Rt32",
20255 tc_8035e91f, TypeMAPPING> {
20256 let isPseudo = 1;
20257 let isCodeGenOnly = 1;
20258 }
20259 def S2_pstorerhfnew_pi : HInst<
20260 (outs IntRegs:$Rx32),
20261 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Rt32),
20262 "if (!$Pv4.new) memh($Rx32++#$Ii) = $Rt32",
20263 tc_449acf79, TypeST>, Enc_b886fd, AddrModeRel {
20264 let Inst{2-2} = 0b1;
20265 let Inst{7-7} = 0b1;
20266 let Inst{13-13} = 0b1;
20267 let Inst{31-21} = 0b10101011010;
20268 let isPredicated = 1;
20269 let isPredicatedFalse = 1;
20270 let addrMode = PostInc;
20271 let accessSize = HalfWordAccess;
20272 let isPredicatedNew = 1;
20273 let mayStore = 1;
20274 let BaseOpcode = "S2_storerh_pi";
20275 let isNVStorable = 1;
20276 let Constraints = "$Rx32 = $Rx32in";
20277 }
20278 def S2_pstorerhnewf_io : HInst<
20279 (outs),
20280 (ins PredRegs:$Pv4, IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Nt8),
20281 "if (!$Pv4) memh($Rs32+#$Ii) = $Nt8.new",
20282 tc_011e0e9d, TypeV2LDST>, Enc_f44229, AddrModeRel {
20283 let Inst{2-2} = 0b0;
20284 let Inst{12-11} = 0b01;
20285 let Inst{31-21} = 0b01000100101;
20286 let isPredicated = 1;
20287 let isPredicatedFalse = 1;
20288 let addrMode = BaseImmOffset;
20289 let accessSize = HalfWordAccess;
20290 let isNVStore = 1;
20291 let isNewValue = 1;
20292 let isRestrictNoSlot1Store = 1;
20293 let mayStore = 1;
20294 let BaseOpcode = "S2_storerh_io";
20295 let CextOpcode = "S2_storerh";
20296 let InputType = "imm";
20297 let isExtendable = 1;
20298 let opExtendable = 2;
20299 let isExtentSigned = 0;
20300 let opExtentBits = 7;
20301 let opExtentAlign = 1;
20302 let opNewValue = 3;
20303 }
20304 def S2_pstorerhnewf_pi : HInst<
20305 (outs IntRegs:$Rx32),
20306 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Nt8),
20307 "if (!$Pv4) memh($Rx32++#$Ii) = $Nt8.new",
20308 tc_ce59038e, TypeST>, Enc_31aa6a, AddrModeRel {
20309 let Inst{2-2} = 0b1;
20310 let Inst{7-7} = 0b0;
20311 let Inst{13-11} = 0b101;
20312 let Inst{31-21} = 0b10101011101;
20313 let isPredicated = 1;
20314 let isPredicatedFalse = 1;
20315 let addrMode = PostInc;
20316 let accessSize = HalfWordAccess;
20317 let isNVStore = 1;
20318 let isNewValue = 1;
20319 let isRestrictNoSlot1Store = 1;
20320 let mayStore = 1;
20321 let BaseOpcode = "S2_storerh_pi";
20322 let CextOpcode = "S2_storerh";
20323 let opNewValue = 4;
20324 let Constraints = "$Rx32 = $Rx32in";
20325 }
20326 def S2_pstorerhnewf_zomap : HInst<
20327 (outs),
20328 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Nt8),
20329 "if (!$Pv4) memh($Rs32) = $Nt8.new",
20330 tc_011e0e9d, TypeMAPPING> {
20331 let isPseudo = 1;
20332 let isCodeGenOnly = 1;
20333 let opNewValue = 2;
20334 }
20335 def S2_pstorerhnewfnew_pi : HInst<
20336 (outs IntRegs:$Rx32),
20337 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Nt8),
20338 "if (!$Pv4.new) memh($Rx32++#$Ii) = $Nt8.new",
20339 tc_f529831b, TypeST>, Enc_31aa6a, AddrModeRel {
20340 let Inst{2-2} = 0b1;
20341 let Inst{7-7} = 0b1;
20342 let Inst{13-11} = 0b101;
20343 let Inst{31-21} = 0b10101011101;
20344 let isPredicated = 1;
20345 let isPredicatedFalse = 1;
20346 let addrMode = PostInc;
20347 let accessSize = HalfWordAccess;
20348 let isNVStore = 1;
20349 let isPredicatedNew = 1;
20350 let isNewValue = 1;
20351 let isRestrictNoSlot1Store = 1;
20352 let mayStore = 1;
20353 let BaseOpcode = "S2_storerh_pi";
20354 let CextOpcode = "S2_storerh";
20355 let opNewValue = 4;
20356 let Constraints = "$Rx32 = $Rx32in";
20357 }
20358 def S2_pstorerhnewt_io : HInst<
20359 (outs),
20360 (ins PredRegs:$Pv4, IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Nt8),
20361 "if ($Pv4) memh($Rs32+#$Ii) = $Nt8.new",
20362 tc_011e0e9d, TypeV2LDST>, Enc_f44229, AddrModeRel {
20363 let Inst{2-2} = 0b0;
20364 let Inst{12-11} = 0b01;
20365 let Inst{31-21} = 0b01000000101;
20366 let isPredicated = 1;
20367 let addrMode = BaseImmOffset;
20368 let accessSize = HalfWordAccess;
20369 let isNVStore = 1;
20370 let isNewValue = 1;
20371 let isRestrictNoSlot1Store = 1;
20372 let mayStore = 1;
20373 let BaseOpcode = "S2_storerh_io";
20374 let CextOpcode = "S2_storerh";
20375 let InputType = "imm";
20376 let isExtendable = 1;
20377 let opExtendable = 2;
20378 let isExtentSigned = 0;
20379 let opExtentBits = 7;
20380 let opExtentAlign = 1;
20381 let opNewValue = 3;
20382 }
20383 def S2_pstorerhnewt_pi : HInst<
20384 (outs IntRegs:$Rx32),
20385 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Nt8),
20386 "if ($Pv4) memh($Rx32++#$Ii) = $Nt8.new",
20387 tc_ce59038e, TypeST>, Enc_31aa6a, AddrModeRel {
20388 let Inst{2-2} = 0b0;
20389 let Inst{7-7} = 0b0;
20390 let Inst{13-11} = 0b101;
20391 let Inst{31-21} = 0b10101011101;
20392 let isPredicated = 1;
20393 let addrMode = PostInc;
20394 let accessSize = HalfWordAccess;
20395 let isNVStore = 1;
20396 let isNewValue = 1;
20397 let isRestrictNoSlot1Store = 1;
20398 let mayStore = 1;
20399 let BaseOpcode = "S2_storerh_pi";
20400 let CextOpcode = "S2_storerh";
20401 let opNewValue = 4;
20402 let Constraints = "$Rx32 = $Rx32in";
20403 }
20404 def S2_pstorerhnewt_zomap : HInst<
20405 (outs),
20406 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Nt8),
20407 "if ($Pv4) memh($Rs32) = $Nt8.new",
20408 tc_011e0e9d, TypeMAPPING> {
20409 let isPseudo = 1;
20410 let isCodeGenOnly = 1;
20411 let opNewValue = 2;
20412 }
20413 def S2_pstorerhnewtnew_pi : HInst<
20414 (outs IntRegs:$Rx32),
20415 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Nt8),
20416 "if ($Pv4.new) memh($Rx32++#$Ii) = $Nt8.new",
20417 tc_f529831b, TypeST>, Enc_31aa6a, AddrModeRel {
20418 let Inst{2-2} = 0b0;
20419 let Inst{7-7} = 0b1;
20420 let Inst{13-11} = 0b101;
20421 let Inst{31-21} = 0b10101011101;
20422 let isPredicated = 1;
20423 let addrMode = PostInc;
20424 let accessSize = HalfWordAccess;
20425 let isNVStore = 1;
20426 let isPredicatedNew = 1;
20427 let isNewValue = 1;
20428 let isRestrictNoSlot1Store = 1;
20429 let mayStore = 1;
20430 let BaseOpcode = "S2_storerh_pi";
20431 let CextOpcode = "S2_storerh";
20432 let opNewValue = 4;
20433 let Constraints = "$Rx32 = $Rx32in";
20434 }
20435 def S2_pstorerht_io : HInst<
20436 (outs),
20437 (ins PredRegs:$Pv4, IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Rt32),
20438 "if ($Pv4) memh($Rs32+#$Ii) = $Rt32",
20439 tc_8035e91f, TypeV2LDST>, Enc_e8c45e, AddrModeRel {
20440 let Inst{2-2} = 0b0;
20441 let Inst{31-21} = 0b01000000010;
20442 let isPredicated = 1;
20443 let addrMode = BaseImmOffset;
20444 let accessSize = HalfWordAccess;
20445 let mayStore = 1;
20446 let BaseOpcode = "S2_storerh_io";
20447 let CextOpcode = "S2_storerh";
20448 let InputType = "imm";
20449 let isNVStorable = 1;
20450 let isExtendable = 1;
20451 let opExtendable = 2;
20452 let isExtentSigned = 0;
20453 let opExtentBits = 7;
20454 let opExtentAlign = 1;
20455 }
20456 def S2_pstorerht_pi : HInst<
20457 (outs IntRegs:$Rx32),
20458 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Rt32),
20459 "if ($Pv4) memh($Rx32++#$Ii) = $Rt32",
20460 tc_9edefe01, TypeST>, Enc_b886fd, AddrModeRel {
20461 let Inst{2-2} = 0b0;
20462 let Inst{7-7} = 0b0;
20463 let Inst{13-13} = 0b1;
20464 let Inst{31-21} = 0b10101011010;
20465 let isPredicated = 1;
20466 let addrMode = PostInc;
20467 let accessSize = HalfWordAccess;
20468 let mayStore = 1;
20469 let BaseOpcode = "S2_storerh_pi";
20470 let isNVStorable = 1;
20471 let Constraints = "$Rx32 = $Rx32in";
20472 }
20473 def S2_pstorerht_zomap : HInst<
20474 (outs),
20475 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
20476 "if ($Pv4) memh($Rs32) = $Rt32",
20477 tc_8035e91f, TypeMAPPING> {
20478 let isPseudo = 1;
20479 let isCodeGenOnly = 1;
20480 }
20481 def S2_pstorerhtnew_pi : HInst<
20482 (outs IntRegs:$Rx32),
20483 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Rt32),
20484 "if ($Pv4.new) memh($Rx32++#$Ii) = $Rt32",
20485 tc_449acf79, TypeST>, Enc_b886fd, AddrModeRel {
20486 let Inst{2-2} = 0b0;
20487 let Inst{7-7} = 0b1;
20488 let Inst{13-13} = 0b1;
20489 let Inst{31-21} = 0b10101011010;
20490 let isPredicated = 1;
20491 let addrMode = PostInc;
20492 let accessSize = HalfWordAccess;
20493 let isPredicatedNew = 1;
20494 let mayStore = 1;
20495 let BaseOpcode = "S2_storerh_pi";
20496 let isNVStorable = 1;
20497 let Constraints = "$Rx32 = $Rx32in";
20498 }
20499 def S2_pstorerif_io : HInst<
20500 (outs),
20501 (ins PredRegs:$Pv4, IntRegs:$Rs32, u30_2Imm:$Ii, IntRegs:$Rt32),
20502 "if (!$Pv4) memw($Rs32+#$Ii) = $Rt32",
20503 tc_8035e91f, TypeV2LDST>, Enc_397f23, AddrModeRel {
20504 let Inst{2-2} = 0b0;
20505 let Inst{31-21} = 0b01000100100;
20506 let isPredicated = 1;
20507 let isPredicatedFalse = 1;
20508 let addrMode = BaseImmOffset;
20509 let accessSize = WordAccess;
20510 let mayStore = 1;
20511 let BaseOpcode = "S2_storeri_io";
20512 let CextOpcode = "S2_storeri";
20513 let InputType = "imm";
20514 let isNVStorable = 1;
20515 let isExtendable = 1;
20516 let opExtendable = 2;
20517 let isExtentSigned = 0;
20518 let opExtentBits = 8;
20519 let opExtentAlign = 2;
20520 }
20521 def S2_pstorerif_pi : HInst<
20522 (outs IntRegs:$Rx32),
20523 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_2Imm:$Ii, IntRegs:$Rt32),
20524 "if (!$Pv4) memw($Rx32++#$Ii) = $Rt32",
20525 tc_9edefe01, TypeST>, Enc_7eaeb6, AddrModeRel {
20526 let Inst{2-2} = 0b1;
20527 let Inst{7-7} = 0b0;
20528 let Inst{13-13} = 0b1;
20529 let Inst{31-21} = 0b10101011100;
20530 let isPredicated = 1;
20531 let isPredicatedFalse = 1;
20532 let addrMode = PostInc;
20533 let accessSize = WordAccess;
20534 let mayStore = 1;
20535 let BaseOpcode = "S2_storeri_pi";
20536 let isNVStorable = 1;
20537 let Constraints = "$Rx32 = $Rx32in";
20538 }
20539 def S2_pstorerif_zomap : HInst<
20540 (outs),
20541 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
20542 "if (!$Pv4) memw($Rs32) = $Rt32",
20543 tc_8035e91f, TypeMAPPING> {
20544 let isPseudo = 1;
20545 let isCodeGenOnly = 1;
20546 }
20547 def S2_pstorerifnew_pi : HInst<
20548 (outs IntRegs:$Rx32),
20549 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_2Imm:$Ii, IntRegs:$Rt32),
20550 "if (!$Pv4.new) memw($Rx32++#$Ii) = $Rt32",
20551 tc_449acf79, TypeST>, Enc_7eaeb6, AddrModeRel {
20552 let Inst{2-2} = 0b1;
20553 let Inst{7-7} = 0b1;
20554 let Inst{13-13} = 0b1;
20555 let Inst{31-21} = 0b10101011100;
20556 let isPredicated = 1;
20557 let isPredicatedFalse = 1;
20558 let addrMode = PostInc;
20559 let accessSize = WordAccess;
20560 let isPredicatedNew = 1;
20561 let mayStore = 1;
20562 let BaseOpcode = "S2_storeri_pi";
20563 let CextOpcode = "S2_storeri";
20564 let isNVStorable = 1;
20565 let Constraints = "$Rx32 = $Rx32in";
20566 }
20567 def S2_pstorerinewf_io : HInst<
20568 (outs),
20569 (ins PredRegs:$Pv4, IntRegs:$Rs32, u30_2Imm:$Ii, IntRegs:$Nt8),
20570 "if (!$Pv4) memw($Rs32+#$Ii) = $Nt8.new",
20571 tc_011e0e9d, TypeV2LDST>, Enc_8dbdfe, AddrModeRel {
20572 let Inst{2-2} = 0b0;
20573 let Inst{12-11} = 0b10;
20574 let Inst{31-21} = 0b01000100101;
20575 let isPredicated = 1;
20576 let isPredicatedFalse = 1;
20577 let addrMode = BaseImmOffset;
20578 let accessSize = WordAccess;
20579 let isNVStore = 1;
20580 let isNewValue = 1;
20581 let isRestrictNoSlot1Store = 1;
20582 let mayStore = 1;
20583 let BaseOpcode = "S2_storeri_io";
20584 let CextOpcode = "S2_storeri";
20585 let InputType = "imm";
20586 let isExtendable = 1;
20587 let opExtendable = 2;
20588 let isExtentSigned = 0;
20589 let opExtentBits = 8;
20590 let opExtentAlign = 2;
20591 let opNewValue = 3;
20592 }
20593 def S2_pstorerinewf_pi : HInst<
20594 (outs IntRegs:$Rx32),
20595 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_2Imm:$Ii, IntRegs:$Nt8),
20596 "if (!$Pv4) memw($Rx32++#$Ii) = $Nt8.new",
20597 tc_ce59038e, TypeST>, Enc_65f095, AddrModeRel {
20598 let Inst{2-2} = 0b1;
20599 let Inst{7-7} = 0b0;
20600 let Inst{13-11} = 0b110;
20601 let Inst{31-21} = 0b10101011101;
20602 let isPredicated = 1;
20603 let isPredicatedFalse = 1;
20604 let addrMode = PostInc;
20605 let accessSize = WordAccess;
20606 let isNVStore = 1;
20607 let isNewValue = 1;
20608 let isRestrictNoSlot1Store = 1;
20609 let mayStore = 1;
20610 let BaseOpcode = "S2_storeri_pi";
20611 let CextOpcode = "S2_storeri";
20612 let opNewValue = 4;
20613 let Constraints = "$Rx32 = $Rx32in";
20614 }
20615 def S2_pstorerinewf_zomap : HInst<
20616 (outs),
20617 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Nt8),
20618 "if (!$Pv4) memw($Rs32) = $Nt8.new",
20619 tc_011e0e9d, TypeMAPPING> {
20620 let isPseudo = 1;
20621 let isCodeGenOnly = 1;
20622 let opNewValue = 2;
20623 }
20624 def S2_pstorerinewfnew_pi : HInst<
20625 (outs IntRegs:$Rx32),
20626 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_2Imm:$Ii, IntRegs:$Nt8),
20627 "if (!$Pv4.new) memw($Rx32++#$Ii) = $Nt8.new",
20628 tc_f529831b, TypeST>, Enc_65f095, AddrModeRel {
20629 let Inst{2-2} = 0b1;
20630 let Inst{7-7} = 0b1;
20631 let Inst{13-11} = 0b110;
20632 let Inst{31-21} = 0b10101011101;
20633 let isPredicated = 1;
20634 let isPredicatedFalse = 1;
20635 let addrMode = PostInc;
20636 let accessSize = WordAccess;
20637 let isNVStore = 1;
20638 let isPredicatedNew = 1;
20639 let isNewValue = 1;
20640 let isRestrictNoSlot1Store = 1;
20641 let mayStore = 1;
20642 let BaseOpcode = "S2_storeri_pi";
20643 let CextOpcode = "S2_storeri";
20644 let opNewValue = 4;
20645 let Constraints = "$Rx32 = $Rx32in";
20646 }
20647 def S2_pstorerinewt_io : HInst<
20648 (outs),
20649 (ins PredRegs:$Pv4, IntRegs:$Rs32, u30_2Imm:$Ii, IntRegs:$Nt8),
20650 "if ($Pv4) memw($Rs32+#$Ii) = $Nt8.new",
20651 tc_011e0e9d, TypeV2LDST>, Enc_8dbdfe, AddrModeRel {
20652 let Inst{2-2} = 0b0;
20653 let Inst{12-11} = 0b10;
20654 let Inst{31-21} = 0b01000000101;
20655 let isPredicated = 1;
20656 let addrMode = BaseImmOffset;
20657 let accessSize = WordAccess;
20658 let isNVStore = 1;
20659 let isNewValue = 1;
20660 let isRestrictNoSlot1Store = 1;
20661 let mayStore = 1;
20662 let BaseOpcode = "S2_storeri_io";
20663 let CextOpcode = "S2_storeri";
20664 let InputType = "imm";
20665 let isExtendable = 1;
20666 let opExtendable = 2;
20667 let isExtentSigned = 0;
20668 let opExtentBits = 8;
20669 let opExtentAlign = 2;
20670 let opNewValue = 3;
20671 }
20672 def S2_pstorerinewt_pi : HInst<
20673 (outs IntRegs:$Rx32),
20674 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_2Imm:$Ii, IntRegs:$Nt8),
20675 "if ($Pv4) memw($Rx32++#$Ii) = $Nt8.new",
20676 tc_ce59038e, TypeST>, Enc_65f095, AddrModeRel {
20677 let Inst{2-2} = 0b0;
20678 let Inst{7-7} = 0b0;
20679 let Inst{13-11} = 0b110;
20680 let Inst{31-21} = 0b10101011101;
20681 let isPredicated = 1;
20682 let addrMode = PostInc;
20683 let accessSize = WordAccess;
20684 let isNVStore = 1;
20685 let isNewValue = 1;
20686 let isRestrictNoSlot1Store = 1;
20687 let mayStore = 1;
20688 let BaseOpcode = "S2_storeri_pi";
20689 let CextOpcode = "S2_storeri";
20690 let opNewValue = 4;
20691 let Constraints = "$Rx32 = $Rx32in";
20692 }
20693 def S2_pstorerinewt_zomap : HInst<
20694 (outs),
20695 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Nt8),
20696 "if ($Pv4) memw($Rs32) = $Nt8.new",
20697 tc_011e0e9d, TypeMAPPING> {
20698 let isPseudo = 1;
20699 let isCodeGenOnly = 1;
20700 let opNewValue = 2;
20701 }
20702 def S2_pstorerinewtnew_pi : HInst<
20703 (outs IntRegs:$Rx32),
20704 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_2Imm:$Ii, IntRegs:$Nt8),
20705 "if ($Pv4.new) memw($Rx32++#$Ii) = $Nt8.new",
20706 tc_f529831b, TypeST>, Enc_65f095, AddrModeRel {
20707 let Inst{2-2} = 0b0;
20708 let Inst{7-7} = 0b1;
20709 let Inst{13-11} = 0b110;
20710 let Inst{31-21} = 0b10101011101;
20711 let isPredicated = 1;
20712 let addrMode = PostInc;
20713 let accessSize = WordAccess;
20714 let isNVStore = 1;
20715 let isPredicatedNew = 1;
20716 let isNewValue = 1;
20717 let isRestrictNoSlot1Store = 1;
20718 let mayStore = 1;
20719 let BaseOpcode = "S2_storeri_pi";
20720 let CextOpcode = "S2_storeri";
20721 let opNewValue = 4;
20722 let Constraints = "$Rx32 = $Rx32in";
20723 }
20724 def S2_pstorerit_io : HInst<
20725 (outs),
20726 (ins PredRegs:$Pv4, IntRegs:$Rs32, u30_2Imm:$Ii, IntRegs:$Rt32),
20727 "if ($Pv4) memw($Rs32+#$Ii) = $Rt32",
20728 tc_8035e91f, TypeV2LDST>, Enc_397f23, AddrModeRel {
20729 let Inst{2-2} = 0b0;
20730 let Inst{31-21} = 0b01000000100;
20731 let isPredicated = 1;
20732 let addrMode = BaseImmOffset;
20733 let accessSize = WordAccess;
20734 let mayStore = 1;
20735 let BaseOpcode = "S2_storeri_io";
20736 let CextOpcode = "S2_storeri";
20737 let InputType = "imm";
20738 let isNVStorable = 1;
20739 let isExtendable = 1;
20740 let opExtendable = 2;
20741 let isExtentSigned = 0;
20742 let opExtentBits = 8;
20743 let opExtentAlign = 2;
20744 }
20745 def S2_pstorerit_pi : HInst<
20746 (outs IntRegs:$Rx32),
20747 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_2Imm:$Ii, IntRegs:$Rt32),
20748 "if ($Pv4) memw($Rx32++#$Ii) = $Rt32",
20749 tc_9edefe01, TypeST>, Enc_7eaeb6, AddrModeRel {
20750 let Inst{2-2} = 0b0;
20751 let Inst{7-7} = 0b0;
20752 let Inst{13-13} = 0b1;
20753 let Inst{31-21} = 0b10101011100;
20754 let isPredicated = 1;
20755 let addrMode = PostInc;
20756 let accessSize = WordAccess;
20757 let mayStore = 1;
20758 let BaseOpcode = "S2_storeri_pi";
20759 let isNVStorable = 1;
20760 let Constraints = "$Rx32 = $Rx32in";
20761 }
20762 def S2_pstorerit_zomap : HInst<
20763 (outs),
20764 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
20765 "if ($Pv4) memw($Rs32) = $Rt32",
20766 tc_8035e91f, TypeMAPPING> {
20767 let isPseudo = 1;
20768 let isCodeGenOnly = 1;
20769 }
20770 def S2_pstoreritnew_pi : HInst<
20771 (outs IntRegs:$Rx32),
20772 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_2Imm:$Ii, IntRegs:$Rt32),
20773 "if ($Pv4.new) memw($Rx32++#$Ii) = $Rt32",
20774 tc_449acf79, TypeST>, Enc_7eaeb6, AddrModeRel {
20775 let Inst{2-2} = 0b0;
20776 let Inst{7-7} = 0b1;
20777 let Inst{13-13} = 0b1;
20778 let Inst{31-21} = 0b10101011100;
20779 let isPredicated = 1;
20780 let addrMode = PostInc;
20781 let accessSize = WordAccess;
20782 let isPredicatedNew = 1;
20783 let mayStore = 1;
20784 let BaseOpcode = "S2_storeri_pi";
20785 let isNVStorable = 1;
20786 let Constraints = "$Rx32 = $Rx32in";
20787 }
20788 def S2_setbit_i : HInst<
20789 (outs IntRegs:$Rd32),
20790 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
20791 "$Rd32 = setbit($Rs32,#$Ii)",
20792 tc_5da50c4b, TypeS_2op>, Enc_a05677 {
20793 let Inst{7-5} = 0b000;
20794 let Inst{13-13} = 0b0;
20795 let Inst{31-21} = 0b10001100110;
20796 let hasNewValue = 1;
20797 let opNewValue = 0;
20798 }
20799 def S2_setbit_r : HInst<
20800 (outs IntRegs:$Rd32),
20801 (ins IntRegs:$Rs32, IntRegs:$Rt32),
20802 "$Rd32 = setbit($Rs32,$Rt32)",
20803 tc_5da50c4b, TypeS_3op>, Enc_5ab2be {
20804 let Inst{7-5} = 0b000;
20805 let Inst{13-13} = 0b0;
20806 let Inst{31-21} = 0b11000110100;
20807 let hasNewValue = 1;
20808 let opNewValue = 0;
20809 }
20810 def S2_shuffeb : HInst<
20811 (outs DoubleRegs:$Rdd32),
20812 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
20813 "$Rdd32 = shuffeb($Rss32,$Rtt32)",
20814 tc_5da50c4b, TypeS_3op>, Enc_a56825 {
20815 let Inst{7-5} = 0b010;
20816 let Inst{13-13} = 0b0;
20817 let Inst{31-21} = 0b11000001000;
20818 }
20819 def S2_shuffeh : HInst<
20820 (outs DoubleRegs:$Rdd32),
20821 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
20822 "$Rdd32 = shuffeh($Rss32,$Rtt32)",
20823 tc_5da50c4b, TypeS_3op>, Enc_a56825 {
20824 let Inst{7-5} = 0b110;
20825 let Inst{13-13} = 0b0;
20826 let Inst{31-21} = 0b11000001000;
20827 }
20828 def S2_shuffob : HInst<
20829 (outs DoubleRegs:$Rdd32),
20830 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
20831 "$Rdd32 = shuffob($Rtt32,$Rss32)",
20832 tc_5da50c4b, TypeS_3op>, Enc_ea23e4 {
20833 let Inst{7-5} = 0b100;
20834 let Inst{13-13} = 0b0;
20835 let Inst{31-21} = 0b11000001000;
20836 }
20837 def S2_shuffoh : HInst<
20838 (outs DoubleRegs:$Rdd32),
20839 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
20840 "$Rdd32 = shuffoh($Rtt32,$Rss32)",
20841 tc_5da50c4b, TypeS_3op>, Enc_ea23e4 {
20842 let Inst{7-5} = 0b000;
20843 let Inst{13-13} = 0b0;
20844 let Inst{31-21} = 0b11000001100;
20845 }
20846 def S2_storerb_io : HInst<
20847 (outs),
20848 (ins IntRegs:$Rs32, s32_0Imm:$Ii, IntRegs:$Rt32),
20849 "memb($Rs32+#$Ii) = $Rt32",
20850 tc_ae5babd7, TypeST>, Enc_448f7f, AddrModeRel, PostInc_BaseImm {
20851 let Inst{24-21} = 0b1000;
20852 let Inst{31-27} = 0b10100;
20853 let addrMode = BaseImmOffset;
20854 let accessSize = ByteAccess;
20855 let mayStore = 1;
20856 let BaseOpcode = "S2_storerb_io";
20857 let CextOpcode = "S2_storerb";
20858 let InputType = "imm";
20859 let isPredicable = 1;
20860 let isNVStorable = 1;
20861 let isExtendable = 1;
20862 let opExtendable = 1;
20863 let isExtentSigned = 1;
20864 let opExtentBits = 11;
20865 let opExtentAlign = 0;
20866 }
20867 def S2_storerb_pbr : HInst<
20868 (outs IntRegs:$Rx32),
20869 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Rt32),
20870 "memb($Rx32++$Mu2:brev) = $Rt32",
20871 tc_a2b365d2, TypeST>, Enc_d5c73f, AddrModeRel {
20872 let Inst{7-0} = 0b00000000;
20873 let Inst{31-21} = 0b10101111000;
20874 let addrMode = PostInc;
20875 let accessSize = ByteAccess;
20876 let mayStore = 1;
20877 let BaseOpcode = "S2_storerb_pbr";
20878 let isNVStorable = 1;
20879 let Constraints = "$Rx32 = $Rx32in";
20880 }
20881 def S2_storerb_pci : HInst<
20882 (outs IntRegs:$Rx32),
20883 (ins IntRegs:$Rx32in, s4_0Imm:$Ii, ModRegs:$Mu2, IntRegs:$Rt32),
20884 "memb($Rx32++#$Ii:circ($Mu2)) = $Rt32",
20885 tc_b4dc7630, TypeST>, Enc_b15941, AddrModeRel {
20886 let Inst{2-0} = 0b000;
20887 let Inst{7-7} = 0b0;
20888 let Inst{31-21} = 0b10101001000;
20889 let addrMode = PostInc;
20890 let accessSize = ByteAccess;
20891 let mayStore = 1;
20892 let Uses = [CS];
20893 let BaseOpcode = "S2_storerb_pci";
20894 let isNVStorable = 1;
20895 let Constraints = "$Rx32 = $Rx32in";
20896 }
20897 def S2_storerb_pcr : HInst<
20898 (outs IntRegs:$Rx32),
20899 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Rt32),
20900 "memb($Rx32++I:circ($Mu2)) = $Rt32",
20901 tc_a2b365d2, TypeST>, Enc_d5c73f, AddrModeRel {
20902 let Inst{7-0} = 0b00000010;
20903 let Inst{31-21} = 0b10101001000;
20904 let addrMode = PostInc;
20905 let accessSize = ByteAccess;
20906 let mayStore = 1;
20907 let Uses = [CS];
20908 let BaseOpcode = "S2_storerb_pcr";
20909 let isNVStorable = 1;
20910 let Constraints = "$Rx32 = $Rx32in";
20911 }
20912 def S2_storerb_pi : HInst<
20913 (outs IntRegs:$Rx32),
20914 (ins IntRegs:$Rx32in, s4_0Imm:$Ii, IntRegs:$Rt32),
20915 "memb($Rx32++#$Ii) = $Rt32",
20916 tc_a2b365d2, TypeST>, Enc_10bc21, AddrModeRel, PostInc_BaseImm {
20917 let Inst{2-0} = 0b000;
20918 let Inst{7-7} = 0b0;
20919 let Inst{13-13} = 0b0;
20920 let Inst{31-21} = 0b10101011000;
20921 let addrMode = PostInc;
20922 let accessSize = ByteAccess;
20923 let mayStore = 1;
20924 let BaseOpcode = "S2_storerb_pi";
20925 let CextOpcode = "S2_storerb";
20926 let isPredicable = 1;
20927 let isNVStorable = 1;
20928 let Constraints = "$Rx32 = $Rx32in";
20929 }
20930 def S2_storerb_pr : HInst<
20931 (outs IntRegs:$Rx32),
20932 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Rt32),
20933 "memb($Rx32++$Mu2) = $Rt32",
20934 tc_a2b365d2, TypeST>, Enc_d5c73f, AddrModeRel {
20935 let Inst{7-0} = 0b00000000;
20936 let Inst{31-21} = 0b10101101000;
20937 let addrMode = PostInc;
20938 let accessSize = ByteAccess;
20939 let mayStore = 1;
20940 let BaseOpcode = "S2_storerb_pr";
20941 let isNVStorable = 1;
20942 let Constraints = "$Rx32 = $Rx32in";
20943 }
20944 def S2_storerb_zomap : HInst<
20945 (outs),
20946 (ins IntRegs:$Rs32, IntRegs:$Rt32),
20947 "memb($Rs32) = $Rt32",
20948 tc_ae5babd7, TypeMAPPING> {
20949 let isPseudo = 1;
20950 let isCodeGenOnly = 1;
20951 }
20952 def S2_storerbgp : HInst<
20953 (outs),
20954 (ins u32_0Imm:$Ii, IntRegs:$Rt32),
20955 "memb(gp+#$Ii) = $Rt32",
20956 tc_0655b949, TypeV2LDST>, Enc_1b64fb, AddrModeRel {
20957 let Inst{24-21} = 0b0000;
20958 let Inst{31-27} = 0b01001;
20959 let accessSize = ByteAccess;
20960 let mayStore = 1;
20961 let Uses = [GP];
20962 let BaseOpcode = "S2_storerbabs";
20963 let isPredicable = 1;
20964 let isNVStorable = 1;
20965 let opExtendable = 0;
20966 let isExtentSigned = 0;
20967 let opExtentBits = 16;
20968 let opExtentAlign = 0;
20969 }
20970 def S2_storerbnew_io : HInst<
20971 (outs),
20972 (ins IntRegs:$Rs32, s32_0Imm:$Ii, IntRegs:$Nt8),
20973 "memb($Rs32+#$Ii) = $Nt8.new",
20974 tc_5deb5e47, TypeST>, Enc_4df4e9, AddrModeRel {
20975 let Inst{12-11} = 0b00;
20976 let Inst{24-21} = 0b1101;
20977 let Inst{31-27} = 0b10100;
20978 let addrMode = BaseImmOffset;
20979 let accessSize = ByteAccess;
20980 let isNVStore = 1;
20981 let isNewValue = 1;
20982 let isRestrictNoSlot1Store = 1;
20983 let mayStore = 1;
20984 let BaseOpcode = "S2_storerb_io";
20985 let CextOpcode = "S2_storerb";
20986 let InputType = "imm";
20987 let isPredicable = 1;
20988 let isExtendable = 1;
20989 let opExtendable = 1;
20990 let isExtentSigned = 1;
20991 let opExtentBits = 11;
20992 let opExtentAlign = 0;
20993 let opNewValue = 2;
20994 }
20995 def S2_storerbnew_pbr : HInst<
20996 (outs IntRegs:$Rx32),
20997 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Nt8),
20998 "memb($Rx32++$Mu2:brev) = $Nt8.new",
20999 tc_92240447, TypeST>, Enc_8dbe85, AddrModeRel {
21000 let Inst{7-0} = 0b00000000;
21001 let Inst{12-11} = 0b00;
21002 let Inst{31-21} = 0b10101111101;
21003 let addrMode = PostInc;
21004 let accessSize = ByteAccess;
21005 let isNVStore = 1;
21006 let isNewValue = 1;
21007 let isRestrictNoSlot1Store = 1;
21008 let mayStore = 1;
21009 let BaseOpcode = "S2_storerb_pbr";
21010 let opNewValue = 3;
21011 let Constraints = "$Rx32 = $Rx32in";
21012 }
21013 def S2_storerbnew_pci : HInst<
21014 (outs IntRegs:$Rx32),
21015 (ins IntRegs:$Rx32in, s4_0Imm:$Ii, ModRegs:$Mu2, IntRegs:$Nt8),
21016 "memb($Rx32++#$Ii:circ($Mu2)) = $Nt8.new",
21017 tc_addc37a8, TypeST>, Enc_96ce4f, AddrModeRel {
21018 let Inst{2-0} = 0b000;
21019 let Inst{7-7} = 0b0;
21020 let Inst{12-11} = 0b00;
21021 let Inst{31-21} = 0b10101001101;
21022 let addrMode = PostInc;
21023 let accessSize = ByteAccess;
21024 let isNVStore = 1;
21025 let isNewValue = 1;
21026 let isRestrictNoSlot1Store = 1;
21027 let mayStore = 1;
21028 let Uses = [CS];
21029 let BaseOpcode = "S2_storerb_pci";
21030 let opNewValue = 4;
21031 let Constraints = "$Rx32 = $Rx32in";
21032 }
21033 def S2_storerbnew_pcr : HInst<
21034 (outs IntRegs:$Rx32),
21035 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Nt8),
21036 "memb($Rx32++I:circ($Mu2)) = $Nt8.new",
21037 tc_92240447, TypeST>, Enc_8dbe85, AddrModeRel {
21038 let Inst{7-0} = 0b00000010;
21039 let Inst{12-11} = 0b00;
21040 let Inst{31-21} = 0b10101001101;
21041 let addrMode = PostInc;
21042 let accessSize = ByteAccess;
21043 let isNVStore = 1;
21044 let isNewValue = 1;
21045 let isRestrictNoSlot1Store = 1;
21046 let mayStore = 1;
21047 let Uses = [CS];
21048 let BaseOpcode = "S2_storerb_pcr";
21049 let opNewValue = 3;
21050 let Constraints = "$Rx32 = $Rx32in";
21051 }
21052 def S2_storerbnew_pi : HInst<
21053 (outs IntRegs:$Rx32),
21054 (ins IntRegs:$Rx32in, s4_0Imm:$Ii, IntRegs:$Nt8),
21055 "memb($Rx32++#$Ii) = $Nt8.new",
21056 tc_92240447, TypeST>, Enc_c7cd90, AddrModeRel {
21057 let Inst{2-0} = 0b000;
21058 let Inst{7-7} = 0b0;
21059 let Inst{13-11} = 0b000;
21060 let Inst{31-21} = 0b10101011101;
21061 let addrMode = PostInc;
21062 let accessSize = ByteAccess;
21063 let isNVStore = 1;
21064 let isNewValue = 1;
21065 let isRestrictNoSlot1Store = 1;
21066 let mayStore = 1;
21067 let BaseOpcode = "S2_storerb_pi";
21068 let isPredicable = 1;
21069 let isNVStorable = 1;
21070 let opNewValue = 3;
21071 let Constraints = "$Rx32 = $Rx32in";
21072 }
21073 def S2_storerbnew_pr : HInst<
21074 (outs IntRegs:$Rx32),
21075 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Nt8),
21076 "memb($Rx32++$Mu2) = $Nt8.new",
21077 tc_92240447, TypeST>, Enc_8dbe85, AddrModeRel {
21078 let Inst{7-0} = 0b00000000;
21079 let Inst{12-11} = 0b00;
21080 let Inst{31-21} = 0b10101101101;
21081 let addrMode = PostInc;
21082 let accessSize = ByteAccess;
21083 let isNVStore = 1;
21084 let isNewValue = 1;
21085 let isRestrictNoSlot1Store = 1;
21086 let mayStore = 1;
21087 let BaseOpcode = "S2_storerb_pr";
21088 let opNewValue = 3;
21089 let Constraints = "$Rx32 = $Rx32in";
21090 }
21091 def S2_storerbnew_zomap : HInst<
21092 (outs),
21093 (ins IntRegs:$Rs32, IntRegs:$Nt8),
21094 "memb($Rs32) = $Nt8.new",
21095 tc_5deb5e47, TypeMAPPING> {
21096 let isPseudo = 1;
21097 let isCodeGenOnly = 1;
21098 let opNewValue = 1;
21099 }
21100 def S2_storerbnewgp : HInst<
21101 (outs),
21102 (ins u32_0Imm:$Ii, IntRegs:$Nt8),
21103 "memb(gp+#$Ii) = $Nt8.new",
21104 tc_6e20402a, TypeV2LDST>, Enc_ad1831, AddrModeRel {
21105 let Inst{12-11} = 0b00;
21106 let Inst{24-21} = 0b0101;
21107 let Inst{31-27} = 0b01001;
21108 let accessSize = ByteAccess;
21109 let isNVStore = 1;
21110 let isNewValue = 1;
21111 let isRestrictNoSlot1Store = 1;
21112 let mayStore = 1;
21113 let Uses = [GP];
21114 let BaseOpcode = "S2_storerbabs";
21115 let isPredicable = 1;
21116 let opExtendable = 0;
21117 let isExtentSigned = 0;
21118 let opExtentBits = 16;
21119 let opExtentAlign = 0;
21120 let opNewValue = 1;
21121 }
21122 def S2_storerd_io : HInst<
21123 (outs),
21124 (ins IntRegs:$Rs32, s29_3Imm:$Ii, DoubleRegs:$Rtt32),
21125 "memd($Rs32+#$Ii) = $Rtt32",
21126 tc_ae5babd7, TypeST>, Enc_ce6828, AddrModeRel, PostInc_BaseImm {
21127 let Inst{24-21} = 0b1110;
21128 let Inst{31-27} = 0b10100;
21129 let addrMode = BaseImmOffset;
21130 let accessSize = DoubleWordAccess;
21131 let mayStore = 1;
21132 let BaseOpcode = "S2_storerd_io";
21133 let CextOpcode = "S2_storerd";
21134 let InputType = "imm";
21135 let isPredicable = 1;
21136 let isExtendable = 1;
21137 let opExtendable = 1;
21138 let isExtentSigned = 1;
21139 let opExtentBits = 14;
21140 let opExtentAlign = 3;
21141 }
21142 def S2_storerd_pbr : HInst<
21143 (outs IntRegs:$Rx32),
21144 (ins IntRegs:$Rx32in, ModRegs:$Mu2, DoubleRegs:$Rtt32),
21145 "memd($Rx32++$Mu2:brev) = $Rtt32",
21146 tc_a2b365d2, TypeST>, Enc_928ca1 {
21147 let Inst{7-0} = 0b00000000;
21148 let Inst{31-21} = 0b10101111110;
21149 let addrMode = PostInc;
21150 let accessSize = DoubleWordAccess;
21151 let mayStore = 1;
21152 let Constraints = "$Rx32 = $Rx32in";
21153 }
21154 def S2_storerd_pci : HInst<
21155 (outs IntRegs:$Rx32),
21156 (ins IntRegs:$Rx32in, s4_3Imm:$Ii, ModRegs:$Mu2, DoubleRegs:$Rtt32),
21157 "memd($Rx32++#$Ii:circ($Mu2)) = $Rtt32",
21158 tc_b4dc7630, TypeST>, Enc_395cc4 {
21159 let Inst{2-0} = 0b000;
21160 let Inst{7-7} = 0b0;
21161 let Inst{31-21} = 0b10101001110;
21162 let addrMode = PostInc;
21163 let accessSize = DoubleWordAccess;
21164 let mayStore = 1;
21165 let Uses = [CS];
21166 let Constraints = "$Rx32 = $Rx32in";
21167 }
21168 def S2_storerd_pcr : HInst<
21169 (outs IntRegs:$Rx32),
21170 (ins IntRegs:$Rx32in, ModRegs:$Mu2, DoubleRegs:$Rtt32),
21171 "memd($Rx32++I:circ($Mu2)) = $Rtt32",
21172 tc_a2b365d2, TypeST>, Enc_928ca1 {
21173 let Inst{7-0} = 0b00000010;
21174 let Inst{31-21} = 0b10101001110;
21175 let addrMode = PostInc;
21176 let accessSize = DoubleWordAccess;
21177 let mayStore = 1;
21178 let Uses = [CS];
21179 let Constraints = "$Rx32 = $Rx32in";
21180 }
21181 def S2_storerd_pi : HInst<
21182 (outs IntRegs:$Rx32),
21183 (ins IntRegs:$Rx32in, s4_3Imm:$Ii, DoubleRegs:$Rtt32),
21184 "memd($Rx32++#$Ii) = $Rtt32",
21185 tc_a2b365d2, TypeST>, Enc_85bf58, AddrModeRel, PostInc_BaseImm {
21186 let Inst{2-0} = 0b000;
21187 let Inst{7-7} = 0b0;
21188 let Inst{13-13} = 0b0;
21189 let Inst{31-21} = 0b10101011110;
21190 let addrMode = PostInc;
21191 let accessSize = DoubleWordAccess;
21192 let mayStore = 1;
21193 let BaseOpcode = "S2_storerd_pi";
21194 let CextOpcode = "S2_storerd";
21195 let isPredicable = 1;
21196 let Constraints = "$Rx32 = $Rx32in";
21197 }
21198 def S2_storerd_pr : HInst<
21199 (outs IntRegs:$Rx32),
21200 (ins IntRegs:$Rx32in, ModRegs:$Mu2, DoubleRegs:$Rtt32),
21201 "memd($Rx32++$Mu2) = $Rtt32",
21202 tc_a2b365d2, TypeST>, Enc_928ca1 {
21203 let Inst{7-0} = 0b00000000;
21204 let Inst{31-21} = 0b10101101110;
21205 let addrMode = PostInc;
21206 let accessSize = DoubleWordAccess;
21207 let mayStore = 1;
21208 let Constraints = "$Rx32 = $Rx32in";
21209 }
21210 def S2_storerd_zomap : HInst<
21211 (outs),
21212 (ins IntRegs:$Rs32, DoubleRegs:$Rtt32),
21213 "memd($Rs32) = $Rtt32",
21214 tc_ae5babd7, TypeMAPPING> {
21215 let isPseudo = 1;
21216 let isCodeGenOnly = 1;
21217 }
21218 def S2_storerdgp : HInst<
21219 (outs),
21220 (ins u29_3Imm:$Ii, DoubleRegs:$Rtt32),
21221 "memd(gp+#$Ii) = $Rtt32",
21222 tc_0655b949, TypeV2LDST>, Enc_5c124a, AddrModeRel {
21223 let Inst{24-21} = 0b0110;
21224 let Inst{31-27} = 0b01001;
21225 let accessSize = DoubleWordAccess;
21226 let mayStore = 1;
21227 let Uses = [GP];
21228 let BaseOpcode = "S2_storerdabs";
21229 let isPredicable = 1;
21230 let opExtendable = 0;
21231 let isExtentSigned = 0;
21232 let opExtentBits = 19;
21233 let opExtentAlign = 3;
21234 }
21235 def S2_storerf_io : HInst<
21236 (outs),
21237 (ins IntRegs:$Rs32, s31_1Imm:$Ii, IntRegs:$Rt32),
21238 "memh($Rs32+#$Ii) = $Rt32.h",
21239 tc_ae5babd7, TypeST>, Enc_e957fb, AddrModeRel, PostInc_BaseImm {
21240 let Inst{24-21} = 0b1011;
21241 let Inst{31-27} = 0b10100;
21242 let addrMode = BaseImmOffset;
21243 let accessSize = HalfWordAccess;
21244 let mayStore = 1;
21245 let BaseOpcode = "S2_storerf_io";
21246 let CextOpcode = "S2_storerf";
21247 let InputType = "imm";
21248 let isPredicable = 1;
21249 let isExtendable = 1;
21250 let opExtendable = 1;
21251 let isExtentSigned = 1;
21252 let opExtentBits = 12;
21253 let opExtentAlign = 1;
21254 }
21255 def S2_storerf_pbr : HInst<
21256 (outs IntRegs:$Rx32),
21257 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Rt32),
21258 "memh($Rx32++$Mu2:brev) = $Rt32.h",
21259 tc_a2b365d2, TypeST>, Enc_d5c73f {
21260 let Inst{7-0} = 0b00000000;
21261 let Inst{31-21} = 0b10101111011;
21262 let addrMode = PostInc;
21263 let accessSize = HalfWordAccess;
21264 let mayStore = 1;
21265 let Constraints = "$Rx32 = $Rx32in";
21266 }
21267 def S2_storerf_pci : HInst<
21268 (outs IntRegs:$Rx32),
21269 (ins IntRegs:$Rx32in, s4_1Imm:$Ii, ModRegs:$Mu2, IntRegs:$Rt32),
21270 "memh($Rx32++#$Ii:circ($Mu2)) = $Rt32.h",
21271 tc_b4dc7630, TypeST>, Enc_935d9b {
21272 let Inst{2-0} = 0b000;
21273 let Inst{7-7} = 0b0;
21274 let Inst{31-21} = 0b10101001011;
21275 let addrMode = PostInc;
21276 let accessSize = HalfWordAccess;
21277 let mayStore = 1;
21278 let Uses = [CS];
21279 let Constraints = "$Rx32 = $Rx32in";
21280 }
21281 def S2_storerf_pcr : HInst<
21282 (outs IntRegs:$Rx32),
21283 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Rt32),
21284 "memh($Rx32++I:circ($Mu2)) = $Rt32.h",
21285 tc_a2b365d2, TypeST>, Enc_d5c73f {
21286 let Inst{7-0} = 0b00000010;
21287 let Inst{31-21} = 0b10101001011;
21288 let addrMode = PostInc;
21289 let accessSize = HalfWordAccess;
21290 let mayStore = 1;
21291 let Uses = [CS];
21292 let Constraints = "$Rx32 = $Rx32in";
21293 }
21294 def S2_storerf_pi : HInst<
21295 (outs IntRegs:$Rx32),
21296 (ins IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Rt32),
21297 "memh($Rx32++#$Ii) = $Rt32.h",
21298 tc_a2b365d2, TypeST>, Enc_052c7d, AddrModeRel, PostInc_BaseImm {
21299 let Inst{2-0} = 0b000;
21300 let Inst{7-7} = 0b0;
21301 let Inst{13-13} = 0b0;
21302 let Inst{31-21} = 0b10101011011;
21303 let addrMode = PostInc;
21304 let accessSize = HalfWordAccess;
21305 let mayStore = 1;
21306 let BaseOpcode = "S2_storerf_pi";
21307 let CextOpcode = "S2_storerf";
21308 let isPredicable = 1;
21309 let Constraints = "$Rx32 = $Rx32in";
21310 }
21311 def S2_storerf_pr : HInst<
21312 (outs IntRegs:$Rx32),
21313 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Rt32),
21314 "memh($Rx32++$Mu2) = $Rt32.h",
21315 tc_a2b365d2, TypeST>, Enc_d5c73f {
21316 let Inst{7-0} = 0b00000000;
21317 let Inst{31-21} = 0b10101101011;
21318 let addrMode = PostInc;
21319 let accessSize = HalfWordAccess;
21320 let mayStore = 1;
21321 let Constraints = "$Rx32 = $Rx32in";
21322 }
21323 def S2_storerf_zomap : HInst<
21324 (outs),
21325 (ins IntRegs:$Rs32, IntRegs:$Rt32),
21326 "memh($Rs32) = $Rt32.h",
21327 tc_ae5babd7, TypeMAPPING> {
21328 let isPseudo = 1;
21329 let isCodeGenOnly = 1;
21330 }
21331 def S2_storerfgp : HInst<
21332 (outs),
21333 (ins u31_1Imm:$Ii, IntRegs:$Rt32),
21334 "memh(gp+#$Ii) = $Rt32.h",
21335 tc_0655b949, TypeV2LDST>, Enc_fda92c, AddrModeRel {
21336 let Inst{24-21} = 0b0011;
21337 let Inst{31-27} = 0b01001;
21338 let accessSize = HalfWordAccess;
21339 let mayStore = 1;
21340 let Uses = [GP];
21341 let BaseOpcode = "S2_storerfabs";
21342 let isPredicable = 1;
21343 let opExtendable = 0;
21344 let isExtentSigned = 0;
21345 let opExtentBits = 17;
21346 let opExtentAlign = 1;
21347 }
21348 def S2_storerh_io : HInst<
21349 (outs),
21350 (ins IntRegs:$Rs32, s31_1Imm:$Ii, IntRegs:$Rt32),
21351 "memh($Rs32+#$Ii) = $Rt32",
21352 tc_ae5babd7, TypeST>, Enc_e957fb, AddrModeRel, PostInc_BaseImm {
21353 let Inst{24-21} = 0b1010;
21354 let Inst{31-27} = 0b10100;
21355 let addrMode = BaseImmOffset;
21356 let accessSize = HalfWordAccess;
21357 let mayStore = 1;
21358 let BaseOpcode = "S2_storerh_io";
21359 let CextOpcode = "S2_storerh";
21360 let InputType = "imm";
21361 let isPredicable = 1;
21362 let isNVStorable = 1;
21363 let isExtendable = 1;
21364 let opExtendable = 1;
21365 let isExtentSigned = 1;
21366 let opExtentBits = 12;
21367 let opExtentAlign = 1;
21368 }
21369 def S2_storerh_pbr : HInst<
21370 (outs IntRegs:$Rx32),
21371 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Rt32),
21372 "memh($Rx32++$Mu2:brev) = $Rt32",
21373 tc_a2b365d2, TypeST>, Enc_d5c73f, AddrModeRel {
21374 let Inst{7-0} = 0b00000000;
21375 let Inst{31-21} = 0b10101111010;
21376 let addrMode = PostInc;
21377 let accessSize = HalfWordAccess;
21378 let mayStore = 1;
21379 let BaseOpcode = "S2_storerh_pbr";
21380 let isNVStorable = 1;
21381 let Constraints = "$Rx32 = $Rx32in";
21382 }
21383 def S2_storerh_pci : HInst<
21384 (outs IntRegs:$Rx32),
21385 (ins IntRegs:$Rx32in, s4_1Imm:$Ii, ModRegs:$Mu2, IntRegs:$Rt32),
21386 "memh($Rx32++#$Ii:circ($Mu2)) = $Rt32",
21387 tc_b4dc7630, TypeST>, Enc_935d9b, AddrModeRel {
21388 let Inst{2-0} = 0b000;
21389 let Inst{7-7} = 0b0;
21390 let Inst{31-21} = 0b10101001010;
21391 let addrMode = PostInc;
21392 let accessSize = HalfWordAccess;
21393 let mayStore = 1;
21394 let Uses = [CS];
21395 let BaseOpcode = "S2_storerh_pci";
21396 let isNVStorable = 1;
21397 let Constraints = "$Rx32 = $Rx32in";
21398 }
21399 def S2_storerh_pcr : HInst<
21400 (outs IntRegs:$Rx32),
21401 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Rt32),
21402 "memh($Rx32++I:circ($Mu2)) = $Rt32",
21403 tc_a2b365d2, TypeST>, Enc_d5c73f, AddrModeRel {
21404 let Inst{7-0} = 0b00000010;
21405 let Inst{31-21} = 0b10101001010;
21406 let addrMode = PostInc;
21407 let accessSize = HalfWordAccess;
21408 let mayStore = 1;
21409 let Uses = [CS];
21410 let BaseOpcode = "S2_storerh_pcr";
21411 let isNVStorable = 1;
21412 let Constraints = "$Rx32 = $Rx32in";
21413 }
21414 def S2_storerh_pi : HInst<
21415 (outs IntRegs:$Rx32),
21416 (ins IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Rt32),
21417 "memh($Rx32++#$Ii) = $Rt32",
21418 tc_a2b365d2, TypeST>, Enc_052c7d, AddrModeRel, PostInc_BaseImm {
21419 let Inst{2-0} = 0b000;
21420 let Inst{7-7} = 0b0;
21421 let Inst{13-13} = 0b0;
21422 let Inst{31-21} = 0b10101011010;
21423 let addrMode = PostInc;
21424 let accessSize = HalfWordAccess;
21425 let mayStore = 1;
21426 let BaseOpcode = "S2_storerh_pi";
21427 let CextOpcode = "S2_storerh";
21428 let isPredicable = 1;
21429 let isNVStorable = 1;
21430 let Constraints = "$Rx32 = $Rx32in";
21431 }
21432 def S2_storerh_pr : HInst<
21433 (outs IntRegs:$Rx32),
21434 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Rt32),
21435 "memh($Rx32++$Mu2) = $Rt32",
21436 tc_a2b365d2, TypeST>, Enc_d5c73f, AddrModeRel {
21437 let Inst{7-0} = 0b00000000;
21438 let Inst{31-21} = 0b10101101010;
21439 let addrMode = PostInc;
21440 let accessSize = HalfWordAccess;
21441 let mayStore = 1;
21442 let BaseOpcode = "S2_storerh_pr";
21443 let isNVStorable = 1;
21444 let Constraints = "$Rx32 = $Rx32in";
21445 }
21446 def S2_storerh_zomap : HInst<
21447 (outs),
21448 (ins IntRegs:$Rs32, IntRegs:$Rt32),
21449 "memh($Rs32) = $Rt32",
21450 tc_ae5babd7, TypeMAPPING> {
21451 let isPseudo = 1;
21452 let isCodeGenOnly = 1;
21453 }
21454 def S2_storerhgp : HInst<
21455 (outs),
21456 (ins u31_1Imm:$Ii, IntRegs:$Rt32),
21457 "memh(gp+#$Ii) = $Rt32",
21458 tc_0655b949, TypeV2LDST>, Enc_fda92c, AddrModeRel {
21459 let Inst{24-21} = 0b0010;
21460 let Inst{31-27} = 0b01001;
21461 let accessSize = HalfWordAccess;
21462 let mayStore = 1;
21463 let Uses = [GP];
21464 let BaseOpcode = "S2_storerhabs";
21465 let isPredicable = 1;
21466 let isNVStorable = 1;
21467 let opExtendable = 0;
21468 let isExtentSigned = 0;
21469 let opExtentBits = 17;
21470 let opExtentAlign = 1;
21471 }
21472 def S2_storerhnew_io : HInst<
21473 (outs),
21474 (ins IntRegs:$Rs32, s31_1Imm:$Ii, IntRegs:$Nt8),
21475 "memh($Rs32+#$Ii) = $Nt8.new",
21476 tc_5deb5e47, TypeST>, Enc_0d8870, AddrModeRel {
21477 let Inst{12-11} = 0b01;
21478 let Inst{24-21} = 0b1101;
21479 let Inst{31-27} = 0b10100;
21480 let addrMode = BaseImmOffset;
21481 let accessSize = HalfWordAccess;
21482 let isNVStore = 1;
21483 let isNewValue = 1;
21484 let isRestrictNoSlot1Store = 1;
21485 let mayStore = 1;
21486 let BaseOpcode = "S2_storerh_io";
21487 let CextOpcode = "S2_storerh";
21488 let InputType = "imm";
21489 let isPredicable = 1;
21490 let isExtendable = 1;
21491 let opExtendable = 1;
21492 let isExtentSigned = 1;
21493 let opExtentBits = 12;
21494 let opExtentAlign = 1;
21495 let opNewValue = 2;
21496 }
21497 def S2_storerhnew_pbr : HInst<
21498 (outs IntRegs:$Rx32),
21499 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Nt8),
21500 "memh($Rx32++$Mu2:brev) = $Nt8.new",
21501 tc_92240447, TypeST>, Enc_8dbe85, AddrModeRel {
21502 let Inst{7-0} = 0b00000000;
21503 let Inst{12-11} = 0b01;
21504 let Inst{31-21} = 0b10101111101;
21505 let addrMode = PostInc;
21506 let accessSize = HalfWordAccess;
21507 let isNVStore = 1;
21508 let isNewValue = 1;
21509 let isRestrictNoSlot1Store = 1;
21510 let mayStore = 1;
21511 let BaseOpcode = "S2_storerh_pbr";
21512 let opNewValue = 3;
21513 let Constraints = "$Rx32 = $Rx32in";
21514 }
21515 def S2_storerhnew_pci : HInst<
21516 (outs IntRegs:$Rx32),
21517 (ins IntRegs:$Rx32in, s4_1Imm:$Ii, ModRegs:$Mu2, IntRegs:$Nt8),
21518 "memh($Rx32++#$Ii:circ($Mu2)) = $Nt8.new",
21519 tc_addc37a8, TypeST>, Enc_91b9fe, AddrModeRel {
21520 let Inst{2-0} = 0b000;
21521 let Inst{7-7} = 0b0;
21522 let Inst{12-11} = 0b01;
21523 let Inst{31-21} = 0b10101001101;
21524 let addrMode = PostInc;
21525 let accessSize = HalfWordAccess;
21526 let isNVStore = 1;
21527 let isNewValue = 1;
21528 let isRestrictNoSlot1Store = 1;
21529 let mayStore = 1;
21530 let Uses = [CS];
21531 let BaseOpcode = "S2_storerh_pci";
21532 let opNewValue = 4;
21533 let Constraints = "$Rx32 = $Rx32in";
21534 }
21535 def S2_storerhnew_pcr : HInst<
21536 (outs IntRegs:$Rx32),
21537 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Nt8),
21538 "memh($Rx32++I:circ($Mu2)) = $Nt8.new",
21539 tc_92240447, TypeST>, Enc_8dbe85, AddrModeRel {
21540 let Inst{7-0} = 0b00000010;
21541 let Inst{12-11} = 0b01;
21542 let Inst{31-21} = 0b10101001101;
21543 let addrMode = PostInc;
21544 let accessSize = HalfWordAccess;
21545 let isNVStore = 1;
21546 let isNewValue = 1;
21547 let isRestrictNoSlot1Store = 1;
21548 let mayStore = 1;
21549 let Uses = [CS];
21550 let BaseOpcode = "S2_storerh_pcr";
21551 let opNewValue = 3;
21552 let Constraints = "$Rx32 = $Rx32in";
21553 }
21554 def S2_storerhnew_pi : HInst<
21555 (outs IntRegs:$Rx32),
21556 (ins IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Nt8),
21557 "memh($Rx32++#$Ii) = $Nt8.new",
21558 tc_92240447, TypeST>, Enc_e26546, AddrModeRel {
21559 let Inst{2-0} = 0b000;
21560 let Inst{7-7} = 0b0;
21561 let Inst{13-11} = 0b001;
21562 let Inst{31-21} = 0b10101011101;
21563 let addrMode = PostInc;
21564 let accessSize = HalfWordAccess;
21565 let isNVStore = 1;
21566 let isNewValue = 1;
21567 let isRestrictNoSlot1Store = 1;
21568 let mayStore = 1;
21569 let BaseOpcode = "S2_storerh_pi";
21570 let isNVStorable = 1;
21571 let isPredicable = 1;
21572 let opNewValue = 3;
21573 let Constraints = "$Rx32 = $Rx32in";
21574 }
21575 def S2_storerhnew_pr : HInst<
21576 (outs IntRegs:$Rx32),
21577 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Nt8),
21578 "memh($Rx32++$Mu2) = $Nt8.new",
21579 tc_92240447, TypeST>, Enc_8dbe85, AddrModeRel {
21580 let Inst{7-0} = 0b00000000;
21581 let Inst{12-11} = 0b01;
21582 let Inst{31-21} = 0b10101101101;
21583 let addrMode = PostInc;
21584 let accessSize = HalfWordAccess;
21585 let isNVStore = 1;
21586 let isNewValue = 1;
21587 let isRestrictNoSlot1Store = 1;
21588 let mayStore = 1;
21589 let BaseOpcode = "S2_storerh_pr";
21590 let opNewValue = 3;
21591 let Constraints = "$Rx32 = $Rx32in";
21592 }
21593 def S2_storerhnew_zomap : HInst<
21594 (outs),
21595 (ins IntRegs:$Rs32, IntRegs:$Nt8),
21596 "memh($Rs32) = $Nt8.new",
21597 tc_5deb5e47, TypeMAPPING> {
21598 let isPseudo = 1;
21599 let isCodeGenOnly = 1;
21600 let opNewValue = 1;
21601 }
21602 def S2_storerhnewgp : HInst<
21603 (outs),
21604 (ins u31_1Imm:$Ii, IntRegs:$Nt8),
21605 "memh(gp+#$Ii) = $Nt8.new",
21606 tc_6e20402a, TypeV2LDST>, Enc_bc03e5, AddrModeRel {
21607 let Inst{12-11} = 0b01;
21608 let Inst{24-21} = 0b0101;
21609 let Inst{31-27} = 0b01001;
21610 let accessSize = HalfWordAccess;
21611 let isNVStore = 1;
21612 let isNewValue = 1;
21613 let isRestrictNoSlot1Store = 1;
21614 let mayStore = 1;
21615 let Uses = [GP];
21616 let BaseOpcode = "S2_storerhabs";
21617 let isPredicable = 1;
21618 let opExtendable = 0;
21619 let isExtentSigned = 0;
21620 let opExtentBits = 17;
21621 let opExtentAlign = 1;
21622 let opNewValue = 1;
21623 }
21624 def S2_storeri_io : HInst<
21625 (outs),
21626 (ins IntRegs:$Rs32, s30_2Imm:$Ii, IntRegs:$Rt32),
21627 "memw($Rs32+#$Ii) = $Rt32",
21628 tc_ae5babd7, TypeST>, Enc_143445, AddrModeRel, PostInc_BaseImm {
21629 let Inst{24-21} = 0b1100;
21630 let Inst{31-27} = 0b10100;
21631 let addrMode = BaseImmOffset;
21632 let accessSize = WordAccess;
21633 let mayStore = 1;
21634 let BaseOpcode = "S2_storeri_io";
21635 let CextOpcode = "S2_storeri";
21636 let InputType = "imm";
21637 let isPredicable = 1;
21638 let isNVStorable = 1;
21639 let isExtendable = 1;
21640 let opExtendable = 1;
21641 let isExtentSigned = 1;
21642 let opExtentBits = 13;
21643 let opExtentAlign = 2;
21644 }
21645 def S2_storeri_pbr : HInst<
21646 (outs IntRegs:$Rx32),
21647 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Rt32),
21648 "memw($Rx32++$Mu2:brev) = $Rt32",
21649 tc_a2b365d2, TypeST>, Enc_d5c73f, AddrModeRel {
21650 let Inst{7-0} = 0b00000000;
21651 let Inst{31-21} = 0b10101111100;
21652 let addrMode = PostInc;
21653 let accessSize = WordAccess;
21654 let mayStore = 1;
21655 let BaseOpcode = "S2_storeri_pbr";
21656 let isNVStorable = 1;
21657 let Constraints = "$Rx32 = $Rx32in";
21658 }
21659 def S2_storeri_pci : HInst<
21660 (outs IntRegs:$Rx32),
21661 (ins IntRegs:$Rx32in, s4_2Imm:$Ii, ModRegs:$Mu2, IntRegs:$Rt32),
21662 "memw($Rx32++#$Ii:circ($Mu2)) = $Rt32",
21663 tc_b4dc7630, TypeST>, Enc_79b8c8, AddrModeRel {
21664 let Inst{2-0} = 0b000;
21665 let Inst{7-7} = 0b0;
21666 let Inst{31-21} = 0b10101001100;
21667 let addrMode = PostInc;
21668 let accessSize = WordAccess;
21669 let mayStore = 1;
21670 let Uses = [CS];
21671 let BaseOpcode = "S2_storeri_pci";
21672 let isNVStorable = 1;
21673 let Constraints = "$Rx32 = $Rx32in";
21674 }
21675 def S2_storeri_pcr : HInst<
21676 (outs IntRegs:$Rx32),
21677 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Rt32),
21678 "memw($Rx32++I:circ($Mu2)) = $Rt32",
21679 tc_a2b365d2, TypeST>, Enc_d5c73f, AddrModeRel {
21680 let Inst{7-0} = 0b00000010;
21681 let Inst{31-21} = 0b10101001100;
21682 let addrMode = PostInc;
21683 let accessSize = WordAccess;
21684 let mayStore = 1;
21685 let Uses = [CS];
21686 let BaseOpcode = "S2_storeri_pcr";
21687 let isNVStorable = 1;
21688 let Constraints = "$Rx32 = $Rx32in";
21689 }
21690 def S2_storeri_pi : HInst<
21691 (outs IntRegs:$Rx32),
21692 (ins IntRegs:$Rx32in, s4_2Imm:$Ii, IntRegs:$Rt32),
21693 "memw($Rx32++#$Ii) = $Rt32",
21694 tc_a2b365d2, TypeST>, Enc_db40cd, AddrModeRel, PostInc_BaseImm {
21695 let Inst{2-0} = 0b000;
21696 let Inst{7-7} = 0b0;
21697 let Inst{13-13} = 0b0;
21698 let Inst{31-21} = 0b10101011100;
21699 let addrMode = PostInc;
21700 let accessSize = WordAccess;
21701 let mayStore = 1;
21702 let BaseOpcode = "S2_storeri_pi";
21703 let CextOpcode = "S2_storeri";
21704 let isPredicable = 1;
21705 let isNVStorable = 1;
21706 let Constraints = "$Rx32 = $Rx32in";
21707 }
21708 def S2_storeri_pr : HInst<
21709 (outs IntRegs:$Rx32),
21710 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Rt32),
21711 "memw($Rx32++$Mu2) = $Rt32",
21712 tc_a2b365d2, TypeST>, Enc_d5c73f, AddrModeRel {
21713 let Inst{7-0} = 0b00000000;
21714 let Inst{31-21} = 0b10101101100;
21715 let addrMode = PostInc;
21716 let accessSize = WordAccess;
21717 let mayStore = 1;
21718 let BaseOpcode = "S2_storeri_pr";
21719 let isNVStorable = 1;
21720 let Constraints = "$Rx32 = $Rx32in";
21721 }
21722 def S2_storeri_zomap : HInst<
21723 (outs),
21724 (ins IntRegs:$Rs32, IntRegs:$Rt32),
21725 "memw($Rs32) = $Rt32",
21726 tc_ae5babd7, TypeMAPPING> {
21727 let isPseudo = 1;
21728 let isCodeGenOnly = 1;
21729 }
21730 def S2_storerigp : HInst<
21731 (outs),
21732 (ins u30_2Imm:$Ii, IntRegs:$Rt32),
21733 "memw(gp+#$Ii) = $Rt32",
21734 tc_0655b949, TypeV2LDST>, Enc_541f26, AddrModeRel {
21735 let Inst{24-21} = 0b0100;
21736 let Inst{31-27} = 0b01001;
21737 let accessSize = WordAccess;
21738 let mayStore = 1;
21739 let Uses = [GP];
21740 let BaseOpcode = "S2_storeriabs";
21741 let isPredicable = 1;
21742 let isNVStorable = 1;
21743 let opExtendable = 0;
21744 let isExtentSigned = 0;
21745 let opExtentBits = 18;
21746 let opExtentAlign = 2;
21747 }
21748 def S2_storerinew_io : HInst<
21749 (outs),
21750 (ins IntRegs:$Rs32, s30_2Imm:$Ii, IntRegs:$Nt8),
21751 "memw($Rs32+#$Ii) = $Nt8.new",
21752 tc_5deb5e47, TypeST>, Enc_690862, AddrModeRel {
21753 let Inst{12-11} = 0b10;
21754 let Inst{24-21} = 0b1101;
21755 let Inst{31-27} = 0b10100;
21756 let addrMode = BaseImmOffset;
21757 let accessSize = WordAccess;
21758 let isNVStore = 1;
21759 let isNewValue = 1;
21760 let isRestrictNoSlot1Store = 1;
21761 let mayStore = 1;
21762 let BaseOpcode = "S2_storeri_io";
21763 let CextOpcode = "S2_storeri";
21764 let InputType = "imm";
21765 let isPredicable = 1;
21766 let isExtendable = 1;
21767 let opExtendable = 1;
21768 let isExtentSigned = 1;
21769 let opExtentBits = 13;
21770 let opExtentAlign = 2;
21771 let opNewValue = 2;
21772 }
21773 def S2_storerinew_pbr : HInst<
21774 (outs IntRegs:$Rx32),
21775 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Nt8),
21776 "memw($Rx32++$Mu2:brev) = $Nt8.new",
21777 tc_92240447, TypeST>, Enc_8dbe85, AddrModeRel {
21778 let Inst{7-0} = 0b00000000;
21779 let Inst{12-11} = 0b10;
21780 let Inst{31-21} = 0b10101111101;
21781 let addrMode = PostInc;
21782 let accessSize = WordAccess;
21783 let isNVStore = 1;
21784 let isNewValue = 1;
21785 let isRestrictNoSlot1Store = 1;
21786 let mayStore = 1;
21787 let BaseOpcode = "S2_storeri_pbr";
21788 let opNewValue = 3;
21789 let Constraints = "$Rx32 = $Rx32in";
21790 }
21791 def S2_storerinew_pci : HInst<
21792 (outs IntRegs:$Rx32),
21793 (ins IntRegs:$Rx32in, s4_2Imm:$Ii, ModRegs:$Mu2, IntRegs:$Nt8),
21794 "memw($Rx32++#$Ii:circ($Mu2)) = $Nt8.new",
21795 tc_addc37a8, TypeST>, Enc_3f97c8, AddrModeRel {
21796 let Inst{2-0} = 0b000;
21797 let Inst{7-7} = 0b0;
21798 let Inst{12-11} = 0b10;
21799 let Inst{31-21} = 0b10101001101;
21800 let addrMode = PostInc;
21801 let accessSize = WordAccess;
21802 let isNVStore = 1;
21803 let isNewValue = 1;
21804 let isRestrictNoSlot1Store = 1;
21805 let mayStore = 1;
21806 let Uses = [CS];
21807 let BaseOpcode = "S2_storeri_pci";
21808 let opNewValue = 4;
21809 let Constraints = "$Rx32 = $Rx32in";
21810 }
21811 def S2_storerinew_pcr : HInst<
21812 (outs IntRegs:$Rx32),
21813 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Nt8),
21814 "memw($Rx32++I:circ($Mu2)) = $Nt8.new",
21815 tc_92240447, TypeST>, Enc_8dbe85, AddrModeRel {
21816 let Inst{7-0} = 0b00000010;
21817 let Inst{12-11} = 0b10;
21818 let Inst{31-21} = 0b10101001101;
21819 let addrMode = PostInc;
21820 let accessSize = WordAccess;
21821 let isNVStore = 1;
21822 let isNewValue = 1;
21823 let isRestrictNoSlot1Store = 1;
21824 let mayStore = 1;
21825 let Uses = [CS];
21826 let BaseOpcode = "S2_storeri_pcr";
21827 let opNewValue = 3;
21828 let Constraints = "$Rx32 = $Rx32in";
21829 }
21830 def S2_storerinew_pi : HInst<
21831 (outs IntRegs:$Rx32),
21832 (ins IntRegs:$Rx32in, s4_2Imm:$Ii, IntRegs:$Nt8),
21833 "memw($Rx32++#$Ii) = $Nt8.new",
21834 tc_92240447, TypeST>, Enc_223005, AddrModeRel {
21835 let Inst{2-0} = 0b000;
21836 let Inst{7-7} = 0b0;
21837 let Inst{13-11} = 0b010;
21838 let Inst{31-21} = 0b10101011101;
21839 let addrMode = PostInc;
21840 let accessSize = WordAccess;
21841 let isNVStore = 1;
21842 let isNewValue = 1;
21843 let isRestrictNoSlot1Store = 1;
21844 let mayStore = 1;
21845 let BaseOpcode = "S2_storeri_pi";
21846 let isPredicable = 1;
21847 let opNewValue = 3;
21848 let Constraints = "$Rx32 = $Rx32in";
21849 }
21850 def S2_storerinew_pr : HInst<
21851 (outs IntRegs:$Rx32),
21852 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Nt8),
21853 "memw($Rx32++$Mu2) = $Nt8.new",
21854 tc_92240447, TypeST>, Enc_8dbe85, AddrModeRel {
21855 let Inst{7-0} = 0b00000000;
21856 let Inst{12-11} = 0b10;
21857 let Inst{31-21} = 0b10101101101;
21858 let addrMode = PostInc;
21859 let accessSize = WordAccess;
21860 let isNVStore = 1;
21861 let isNewValue = 1;
21862 let isRestrictNoSlot1Store = 1;
21863 let mayStore = 1;
21864 let BaseOpcode = "S2_storeri_pr";
21865 let opNewValue = 3;
21866 let Constraints = "$Rx32 = $Rx32in";
21867 }
21868 def S2_storerinew_zomap : HInst<
21869 (outs),
21870 (ins IntRegs:$Rs32, IntRegs:$Nt8),
21871 "memw($Rs32) = $Nt8.new",
21872 tc_5deb5e47, TypeMAPPING> {
21873 let isPseudo = 1;
21874 let isCodeGenOnly = 1;
21875 let opNewValue = 1;
21876 }
21877 def S2_storerinewgp : HInst<
21878 (outs),
21879 (ins u30_2Imm:$Ii, IntRegs:$Nt8),
21880 "memw(gp+#$Ii) = $Nt8.new",
21881 tc_6e20402a, TypeV2LDST>, Enc_78cbf0, AddrModeRel {
21882 let Inst{12-11} = 0b10;
21883 let Inst{24-21} = 0b0101;
21884 let Inst{31-27} = 0b01001;
21885 let accessSize = WordAccess;
21886 let isNVStore = 1;
21887 let isNewValue = 1;
21888 let isRestrictNoSlot1Store = 1;
21889 let mayStore = 1;
21890 let Uses = [GP];
21891 let BaseOpcode = "S2_storeriabs";
21892 let isPredicable = 1;
21893 let opExtendable = 0;
21894 let isExtentSigned = 0;
21895 let opExtentBits = 18;
21896 let opExtentAlign = 2;
21897 let opNewValue = 1;
21898 }
21899 def S2_storew_locked : HInst<
21900 (outs PredRegs:$Pd4),
21901 (ins IntRegs:$Rs32, IntRegs:$Rt32),
21902 "memw_locked($Rs32,$Pd4) = $Rt32",
21903 tc_6f42bc60, TypeST>, Enc_c2b48e {
21904 let Inst{7-2} = 0b000000;
21905 let Inst{13-13} = 0b0;
21906 let Inst{31-21} = 0b10100000101;
21907 let accessSize = WordAccess;
21908 let isPredicateLate = 1;
21909 let isSoloAX = 1;
21910 let mayStore = 1;
21911 }
21912 def S2_svsathb : HInst<
21913 (outs IntRegs:$Rd32),
21914 (ins IntRegs:$Rs32),
21915 "$Rd32 = vsathb($Rs32)",
21916 tc_9f6cd987, TypeS_2op>, Enc_5e2823 {
21917 let Inst{13-5} = 0b000000000;
21918 let Inst{31-21} = 0b10001100100;
21919 let hasNewValue = 1;
21920 let opNewValue = 0;
21921 let Defs = [USR_OVF];
21922 }
21923 def S2_svsathub : HInst<
21924 (outs IntRegs:$Rd32),
21925 (ins IntRegs:$Rs32),
21926 "$Rd32 = vsathub($Rs32)",
21927 tc_9f6cd987, TypeS_2op>, Enc_5e2823 {
21928 let Inst{13-5} = 0b000000010;
21929 let Inst{31-21} = 0b10001100100;
21930 let hasNewValue = 1;
21931 let opNewValue = 0;
21932 let Defs = [USR_OVF];
21933 }
21934 def S2_tableidxb : HInst<
21935 (outs IntRegs:$Rx32),
21936 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u4_0Imm:$Ii, s6_0Imm:$II),
21937 "$Rx32 = tableidxb($Rs32,#$Ii,#$II):raw",
21938 tc_bb831a7c, TypeS_2op>, Enc_cd82bc {
21939 let Inst{31-22} = 0b1000011100;
21940 let hasNewValue = 1;
21941 let opNewValue = 0;
21942 let prefersSlot3 = 1;
21943 let Constraints = "$Rx32 = $Rx32in";
21944 }
21945 def S2_tableidxb_goodsyntax : HInst<
21946 (outs IntRegs:$Rx32),
21947 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u4_0Imm:$Ii, u5_0Imm:$II),
21948 "$Rx32 = tableidxb($Rs32,#$Ii,#$II)",
21949 tc_bb831a7c, TypeS_2op> {
21950 let hasNewValue = 1;
21951 let opNewValue = 0;
21952 let isPseudo = 1;
21953 let isCodeGenOnly = 1;
21954 let Constraints = "$Rx32 = $Rx32in";
21955 }
21956 def S2_tableidxd : HInst<
21957 (outs IntRegs:$Rx32),
21958 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u4_0Imm:$Ii, s6_0Imm:$II),
21959 "$Rx32 = tableidxd($Rs32,#$Ii,#$II):raw",
21960 tc_bb831a7c, TypeS_2op>, Enc_cd82bc {
21961 let Inst{31-22} = 0b1000011111;
21962 let hasNewValue = 1;
21963 let opNewValue = 0;
21964 let prefersSlot3 = 1;
21965 let Constraints = "$Rx32 = $Rx32in";
21966 }
21967 def S2_tableidxd_goodsyntax : HInst<
21968 (outs IntRegs:$Rx32),
21969 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u4_0Imm:$Ii, u5_0Imm:$II),
21970 "$Rx32 = tableidxd($Rs32,#$Ii,#$II)",
21971 tc_bb831a7c, TypeS_2op> {
21972 let hasNewValue = 1;
21973 let opNewValue = 0;
21974 let isPseudo = 1;
21975 let Constraints = "$Rx32 = $Rx32in";
21976 }
21977 def S2_tableidxh : HInst<
21978 (outs IntRegs:$Rx32),
21979 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u4_0Imm:$Ii, s6_0Imm:$II),
21980 "$Rx32 = tableidxh($Rs32,#$Ii,#$II):raw",
21981 tc_bb831a7c, TypeS_2op>, Enc_cd82bc {
21982 let Inst{31-22} = 0b1000011101;
21983 let hasNewValue = 1;
21984 let opNewValue = 0;
21985 let prefersSlot3 = 1;
21986 let Constraints = "$Rx32 = $Rx32in";
21987 }
21988 def S2_tableidxh_goodsyntax : HInst<
21989 (outs IntRegs:$Rx32),
21990 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u4_0Imm:$Ii, u5_0Imm:$II),
21991 "$Rx32 = tableidxh($Rs32,#$Ii,#$II)",
21992 tc_bb831a7c, TypeS_2op> {
21993 let hasNewValue = 1;
21994 let opNewValue = 0;
21995 let isPseudo = 1;
21996 let Constraints = "$Rx32 = $Rx32in";
21997 }
21998 def S2_tableidxw : HInst<
21999 (outs IntRegs:$Rx32),
22000 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u4_0Imm:$Ii, s6_0Imm:$II),
22001 "$Rx32 = tableidxw($Rs32,#$Ii,#$II):raw",
22002 tc_bb831a7c, TypeS_2op>, Enc_cd82bc {
22003 let Inst{31-22} = 0b1000011110;
22004 let hasNewValue = 1;
22005 let opNewValue = 0;
22006 let prefersSlot3 = 1;
22007 let Constraints = "$Rx32 = $Rx32in";
22008 }
22009 def S2_tableidxw_goodsyntax : HInst<
22010 (outs IntRegs:$Rx32),
22011 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u4_0Imm:$Ii, u5_0Imm:$II),
22012 "$Rx32 = tableidxw($Rs32,#$Ii,#$II)",
22013 tc_bb831a7c, TypeS_2op> {
22014 let hasNewValue = 1;
22015 let opNewValue = 0;
22016 let isPseudo = 1;
22017 let Constraints = "$Rx32 = $Rx32in";
22018 }
22019 def S2_togglebit_i : HInst<
22020 (outs IntRegs:$Rd32),
22021 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
22022 "$Rd32 = togglebit($Rs32,#$Ii)",
22023 tc_5da50c4b, TypeS_2op>, Enc_a05677 {
22024 let Inst{7-5} = 0b010;
22025 let Inst{13-13} = 0b0;
22026 let Inst{31-21} = 0b10001100110;
22027 let hasNewValue = 1;
22028 let opNewValue = 0;
22029 }
22030 def S2_togglebit_r : HInst<
22031 (outs IntRegs:$Rd32),
22032 (ins IntRegs:$Rs32, IntRegs:$Rt32),
22033 "$Rd32 = togglebit($Rs32,$Rt32)",
22034 tc_5da50c4b, TypeS_3op>, Enc_5ab2be {
22035 let Inst{7-5} = 0b100;
22036 let Inst{13-13} = 0b0;
22037 let Inst{31-21} = 0b11000110100;
22038 let hasNewValue = 1;
22039 let opNewValue = 0;
22040 }
22041 def S2_tstbit_i : HInst<
22042 (outs PredRegs:$Pd4),
22043 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
22044 "$Pd4 = tstbit($Rs32,#$Ii)",
22045 tc_a1297125, TypeS_2op>, Enc_83ee64 {
22046 let Inst{7-2} = 0b000000;
22047 let Inst{13-13} = 0b0;
22048 let Inst{31-21} = 0b10000101000;
22049 }
22050 def S2_tstbit_r : HInst<
22051 (outs PredRegs:$Pd4),
22052 (ins IntRegs:$Rs32, IntRegs:$Rt32),
22053 "$Pd4 = tstbit($Rs32,$Rt32)",
22054 tc_4a55d03c, TypeS_3op>, Enc_c2b48e {
22055 let Inst{7-2} = 0b000000;
22056 let Inst{13-13} = 0b0;
22057 let Inst{31-21} = 0b11000111000;
22058 }
22059 def S2_valignib : HInst<
22060 (outs DoubleRegs:$Rdd32),
22061 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32, u3_0Imm:$Ii),
22062 "$Rdd32 = valignb($Rtt32,$Rss32,#$Ii)",
22063 tc_6fc5dbea, TypeS_3op>, Enc_729ff7 {
22064 let Inst{13-13} = 0b0;
22065 let Inst{31-21} = 0b11000000000;
22066 }
22067 def S2_valignrb : HInst<
22068 (outs DoubleRegs:$Rdd32),
22069 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32, PredRegs:$Pu4),
22070 "$Rdd32 = valignb($Rtt32,$Rss32,$Pu4)",
22071 tc_6fc5dbea, TypeS_3op>, Enc_8c6530 {
22072 let Inst{7-7} = 0b0;
22073 let Inst{13-13} = 0b0;
22074 let Inst{31-21} = 0b11000010000;
22075 }
22076 def S2_vcnegh : HInst<
22077 (outs DoubleRegs:$Rdd32),
22078 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
22079 "$Rdd32 = vcnegh($Rss32,$Rt32)",
22080 tc_8a825db2, TypeS_3op>, Enc_927852 {
22081 let Inst{7-5} = 0b010;
22082 let Inst{13-13} = 0b0;
22083 let Inst{31-21} = 0b11000011110;
22084 let prefersSlot3 = 1;
22085 let Defs = [USR_OVF];
22086 }
22087 def S2_vcrotate : HInst<
22088 (outs DoubleRegs:$Rdd32),
22089 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
22090 "$Rdd32 = vcrotate($Rss32,$Rt32)",
22091 tc_0dfac0a7, TypeS_3op>, Enc_927852 {
22092 let Inst{7-5} = 0b000;
22093 let Inst{13-13} = 0b0;
22094 let Inst{31-21} = 0b11000011110;
22095 let prefersSlot3 = 1;
22096 let Defs = [USR_OVF];
22097 }
22098 def S2_vrcnegh : HInst<
22099 (outs DoubleRegs:$Rxx32),
22100 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
22101 "$Rxx32 += vrcnegh($Rss32,$Rt32)",
22102 tc_7f8ae742, TypeS_3op>, Enc_1aa186 {
22103 let Inst{7-5} = 0b111;
22104 let Inst{13-13} = 0b1;
22105 let Inst{31-21} = 0b11001011001;
22106 let prefersSlot3 = 1;
22107 let Constraints = "$Rxx32 = $Rxx32in";
22108 }
22109 def S2_vrndpackwh : HInst<
22110 (outs IntRegs:$Rd32),
22111 (ins DoubleRegs:$Rss32),
22112 "$Rd32 = vrndwh($Rss32)",
22113 tc_e3d699e3, TypeS_2op>, Enc_90cd8b {
22114 let Inst{13-5} = 0b000000100;
22115 let Inst{31-21} = 0b10001000100;
22116 let hasNewValue = 1;
22117 let opNewValue = 0;
22118 let prefersSlot3 = 1;
22119 }
22120 def S2_vrndpackwhs : HInst<
22121 (outs IntRegs:$Rd32),
22122 (ins DoubleRegs:$Rss32),
22123 "$Rd32 = vrndwh($Rss32):sat",
22124 tc_d61dfdc3, TypeS_2op>, Enc_90cd8b {
22125 let Inst{13-5} = 0b000000110;
22126 let Inst{31-21} = 0b10001000100;
22127 let hasNewValue = 1;
22128 let opNewValue = 0;
22129 let prefersSlot3 = 1;
22130 let Defs = [USR_OVF];
22131 }
22132 def S2_vsathb : HInst<
22133 (outs IntRegs:$Rd32),
22134 (ins DoubleRegs:$Rss32),
22135 "$Rd32 = vsathb($Rss32)",
22136 tc_9f6cd987, TypeS_2op>, Enc_90cd8b {
22137 let Inst{13-5} = 0b000000110;
22138 let Inst{31-21} = 0b10001000000;
22139 let hasNewValue = 1;
22140 let opNewValue = 0;
22141 let Defs = [USR_OVF];
22142 }
22143 def S2_vsathb_nopack : HInst<
22144 (outs DoubleRegs:$Rdd32),
22145 (ins DoubleRegs:$Rss32),
22146 "$Rdd32 = vsathb($Rss32)",
22147 tc_9f6cd987, TypeS_2op>, Enc_b9c5fb {
22148 let Inst{13-5} = 0b000000111;
22149 let Inst{31-21} = 0b10000000000;
22150 let Defs = [USR_OVF];
22151 }
22152 def S2_vsathub : HInst<
22153 (outs IntRegs:$Rd32),
22154 (ins DoubleRegs:$Rss32),
22155 "$Rd32 = vsathub($Rss32)",
22156 tc_9f6cd987, TypeS_2op>, Enc_90cd8b {
22157 let Inst{13-5} = 0b000000000;
22158 let Inst{31-21} = 0b10001000000;
22159 let hasNewValue = 1;
22160 let opNewValue = 0;
22161 let Defs = [USR_OVF];
22162 }
22163 def S2_vsathub_nopack : HInst<
22164 (outs DoubleRegs:$Rdd32),
22165 (ins DoubleRegs:$Rss32),
22166 "$Rdd32 = vsathub($Rss32)",
22167 tc_9f6cd987, TypeS_2op>, Enc_b9c5fb {
22168 let Inst{13-5} = 0b000000100;
22169 let Inst{31-21} = 0b10000000000;
22170 let Defs = [USR_OVF];
22171 }
22172 def S2_vsatwh : HInst<
22173 (outs IntRegs:$Rd32),
22174 (ins DoubleRegs:$Rss32),
22175 "$Rd32 = vsatwh($Rss32)",
22176 tc_9f6cd987, TypeS_2op>, Enc_90cd8b {
22177 let Inst{13-5} = 0b000000010;
22178 let Inst{31-21} = 0b10001000000;
22179 let hasNewValue = 1;
22180 let opNewValue = 0;
22181 let Defs = [USR_OVF];
22182 }
22183 def S2_vsatwh_nopack : HInst<
22184 (outs DoubleRegs:$Rdd32),
22185 (ins DoubleRegs:$Rss32),
22186 "$Rdd32 = vsatwh($Rss32)",
22187 tc_9f6cd987, TypeS_2op>, Enc_b9c5fb {
22188 let Inst{13-5} = 0b000000110;
22189 let Inst{31-21} = 0b10000000000;
22190 let Defs = [USR_OVF];
22191 }
22192 def S2_vsatwuh : HInst<
22193 (outs IntRegs:$Rd32),
22194 (ins DoubleRegs:$Rss32),
22195 "$Rd32 = vsatwuh($Rss32)",
22196 tc_9f6cd987, TypeS_2op>, Enc_90cd8b {
22197 let Inst{13-5} = 0b000000100;
22198 let Inst{31-21} = 0b10001000000;
22199 let hasNewValue = 1;
22200 let opNewValue = 0;
22201 let Defs = [USR_OVF];
22202 }
22203 def S2_vsatwuh_nopack : HInst<
22204 (outs DoubleRegs:$Rdd32),
22205 (ins DoubleRegs:$Rss32),
22206 "$Rdd32 = vsatwuh($Rss32)",
22207 tc_9f6cd987, TypeS_2op>, Enc_b9c5fb {
22208 let Inst{13-5} = 0b000000101;
22209 let Inst{31-21} = 0b10000000000;
22210 let Defs = [USR_OVF];
22211 }
22212 def S2_vsplatrb : HInst<
22213 (outs IntRegs:$Rd32),
22214 (ins IntRegs:$Rs32),
22215 "$Rd32 = vsplatb($Rs32)",
22216 tc_9f6cd987, TypeS_2op>, Enc_5e2823 {
22217 let Inst{13-5} = 0b000000111;
22218 let Inst{31-21} = 0b10001100010;
22219 let hasNewValue = 1;
22220 let opNewValue = 0;
22221 let isReMaterializable = 1;
22222 let isAsCheapAsAMove = 1;
22223 }
22224 def S2_vsplatrh : HInst<
22225 (outs DoubleRegs:$Rdd32),
22226 (ins IntRegs:$Rs32),
22227 "$Rdd32 = vsplath($Rs32)",
22228 tc_9f6cd987, TypeS_2op>, Enc_3a3d62 {
22229 let Inst{13-5} = 0b000000010;
22230 let Inst{31-21} = 0b10000100010;
22231 let isReMaterializable = 1;
22232 let isAsCheapAsAMove = 1;
22233 }
22234 def S2_vspliceib : HInst<
22235 (outs DoubleRegs:$Rdd32),
22236 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32, u3_0Imm:$Ii),
22237 "$Rdd32 = vspliceb($Rss32,$Rtt32,#$Ii)",
22238 tc_6fc5dbea, TypeS_3op>, Enc_d50cd3 {
22239 let Inst{13-13} = 0b0;
22240 let Inst{31-21} = 0b11000000100;
22241 }
22242 def S2_vsplicerb : HInst<
22243 (outs DoubleRegs:$Rdd32),
22244 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32, PredRegs:$Pu4),
22245 "$Rdd32 = vspliceb($Rss32,$Rtt32,$Pu4)",
22246 tc_6fc5dbea, TypeS_3op>, Enc_dbd70c {
22247 let Inst{7-7} = 0b0;
22248 let Inst{13-13} = 0b0;
22249 let Inst{31-21} = 0b11000010100;
22250 }
22251 def S2_vsxtbh : HInst<
22252 (outs DoubleRegs:$Rdd32),
22253 (ins IntRegs:$Rs32),
22254 "$Rdd32 = vsxtbh($Rs32)",
22255 tc_9f6cd987, TypeS_2op>, Enc_3a3d62 {
22256 let Inst{13-5} = 0b000000000;
22257 let Inst{31-21} = 0b10000100000;
22258 let isReMaterializable = 1;
22259 let isAsCheapAsAMove = 1;
22260 }
22261 def S2_vsxthw : HInst<
22262 (outs DoubleRegs:$Rdd32),
22263 (ins IntRegs:$Rs32),
22264 "$Rdd32 = vsxthw($Rs32)",
22265 tc_9f6cd987, TypeS_2op>, Enc_3a3d62 {
22266 let Inst{13-5} = 0b000000100;
22267 let Inst{31-21} = 0b10000100000;
22268 let isReMaterializable = 1;
22269 let isAsCheapAsAMove = 1;
22270 }
22271 def S2_vtrunehb : HInst<
22272 (outs IntRegs:$Rd32),
22273 (ins DoubleRegs:$Rss32),
22274 "$Rd32 = vtrunehb($Rss32)",
22275 tc_9f6cd987, TypeS_2op>, Enc_90cd8b {
22276 let Inst{13-5} = 0b000000010;
22277 let Inst{31-21} = 0b10001000100;
22278 let hasNewValue = 1;
22279 let opNewValue = 0;
22280 }
22281 def S2_vtrunewh : HInst<
22282 (outs DoubleRegs:$Rdd32),
22283 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
22284 "$Rdd32 = vtrunewh($Rss32,$Rtt32)",
22285 tc_5da50c4b, TypeS_3op>, Enc_a56825 {
22286 let Inst{7-5} = 0b010;
22287 let Inst{13-13} = 0b0;
22288 let Inst{31-21} = 0b11000001100;
22289 }
22290 def S2_vtrunohb : HInst<
22291 (outs IntRegs:$Rd32),
22292 (ins DoubleRegs:$Rss32),
22293 "$Rd32 = vtrunohb($Rss32)",
22294 tc_9f6cd987, TypeS_2op>, Enc_90cd8b {
22295 let Inst{13-5} = 0b000000000;
22296 let Inst{31-21} = 0b10001000100;
22297 let hasNewValue = 1;
22298 let opNewValue = 0;
22299 }
22300 def S2_vtrunowh : HInst<
22301 (outs DoubleRegs:$Rdd32),
22302 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
22303 "$Rdd32 = vtrunowh($Rss32,$Rtt32)",
22304 tc_5da50c4b, TypeS_3op>, Enc_a56825 {
22305 let Inst{7-5} = 0b100;
22306 let Inst{13-13} = 0b0;
22307 let Inst{31-21} = 0b11000001100;
22308 }
22309 def S2_vzxtbh : HInst<
22310 (outs DoubleRegs:$Rdd32),
22311 (ins IntRegs:$Rs32),
22312 "$Rdd32 = vzxtbh($Rs32)",
22313 tc_9f6cd987, TypeS_2op>, Enc_3a3d62 {
22314 let Inst{13-5} = 0b000000010;
22315 let Inst{31-21} = 0b10000100000;
22316 let isReMaterializable = 1;
22317 let isAsCheapAsAMove = 1;
22318 }
22319 def S2_vzxthw : HInst<
22320 (outs DoubleRegs:$Rdd32),
22321 (ins IntRegs:$Rs32),
22322 "$Rdd32 = vzxthw($Rs32)",
22323 tc_9f6cd987, TypeS_2op>, Enc_3a3d62 {
22324 let Inst{13-5} = 0b000000110;
22325 let Inst{31-21} = 0b10000100000;
22326 let isReMaterializable = 1;
22327 let isAsCheapAsAMove = 1;
22328 }
22329 def S4_addaddi : HInst<
22330 (outs IntRegs:$Rd32),
22331 (ins IntRegs:$Rs32, IntRegs:$Ru32, s32_0Imm:$Ii),
22332 "$Rd32 = add($Rs32,add($Ru32,#$Ii))",
22333 tc_2c13e7f5, TypeALU64>, Enc_8b8d61, Requires<[UseCompound]> {
22334 let Inst{31-23} = 0b110110110;
22335 let hasNewValue = 1;
22336 let opNewValue = 0;
22337 let prefersSlot3 = 1;
22338 let isExtendable = 1;
22339 let opExtendable = 3;
22340 let isExtentSigned = 1;
22341 let opExtentBits = 6;
22342 let opExtentAlign = 0;
22343 }
22344 def S4_addi_asl_ri : HInst<
22345 (outs IntRegs:$Rx32),
22346 (ins u32_0Imm:$Ii, IntRegs:$Rx32in, u5_0Imm:$II),
22347 "$Rx32 = add(#$Ii,asl($Rx32in,#$II))",
22348 tc_2c13e7f5, TypeALU64>, Enc_c31910, Requires<[UseCompound]> {
22349 let Inst{2-0} = 0b100;
22350 let Inst{4-4} = 0b0;
22351 let Inst{31-24} = 0b11011110;
22352 let hasNewValue = 1;
22353 let opNewValue = 0;
22354 let prefersSlot3 = 1;
22355 let isExtendable = 1;
22356 let opExtendable = 1;
22357 let isExtentSigned = 0;
22358 let opExtentBits = 8;
22359 let opExtentAlign = 0;
22360 let Constraints = "$Rx32 = $Rx32in";
22361 }
22362 def S4_addi_lsr_ri : HInst<
22363 (outs IntRegs:$Rx32),
22364 (ins u32_0Imm:$Ii, IntRegs:$Rx32in, u5_0Imm:$II),
22365 "$Rx32 = add(#$Ii,lsr($Rx32in,#$II))",
22366 tc_2c13e7f5, TypeALU64>, Enc_c31910, Requires<[UseCompound]> {
22367 let Inst{2-0} = 0b100;
22368 let Inst{4-4} = 0b1;
22369 let Inst{31-24} = 0b11011110;
22370 let hasNewValue = 1;
22371 let opNewValue = 0;
22372 let prefersSlot3 = 1;
22373 let isExtendable = 1;
22374 let opExtendable = 1;
22375 let isExtentSigned = 0;
22376 let opExtentBits = 8;
22377 let opExtentAlign = 0;
22378 let Constraints = "$Rx32 = $Rx32in";
22379 }
22380 def S4_andi_asl_ri : HInst<
22381 (outs IntRegs:$Rx32),
22382 (ins u32_0Imm:$Ii, IntRegs:$Rx32in, u5_0Imm:$II),
22383 "$Rx32 = and(#$Ii,asl($Rx32in,#$II))",
22384 tc_a4e22bbd, TypeALU64>, Enc_c31910, Requires<[UseCompound]> {
22385 let Inst{2-0} = 0b000;
22386 let Inst{4-4} = 0b0;
22387 let Inst{31-24} = 0b11011110;
22388 let hasNewValue = 1;
22389 let opNewValue = 0;
22390 let prefersSlot3 = 1;
22391 let isExtendable = 1;
22392 let opExtendable = 1;
22393 let isExtentSigned = 0;
22394 let opExtentBits = 8;
22395 let opExtentAlign = 0;
22396 let Constraints = "$Rx32 = $Rx32in";
22397 }
22398 def S4_andi_lsr_ri : HInst<
22399 (outs IntRegs:$Rx32),
22400 (ins u32_0Imm:$Ii, IntRegs:$Rx32in, u5_0Imm:$II),
22401 "$Rx32 = and(#$Ii,lsr($Rx32in,#$II))",
22402 tc_a4e22bbd, TypeALU64>, Enc_c31910, Requires<[UseCompound]> {
22403 let Inst{2-0} = 0b000;
22404 let Inst{4-4} = 0b1;
22405 let Inst{31-24} = 0b11011110;
22406 let hasNewValue = 1;
22407 let opNewValue = 0;
22408 let prefersSlot3 = 1;
22409 let isExtendable = 1;
22410 let opExtendable = 1;
22411 let isExtentSigned = 0;
22412 let opExtentBits = 8;
22413 let opExtentAlign = 0;
22414 let Constraints = "$Rx32 = $Rx32in";
22415 }
22416 def S4_clbaddi : HInst<
22417 (outs IntRegs:$Rd32),
22418 (ins IntRegs:$Rs32, s6_0Imm:$Ii),
22419 "$Rd32 = add(clb($Rs32),#$Ii)",
22420 tc_a08b630b, TypeS_2op>, Enc_9fae8a {
22421 let Inst{7-5} = 0b000;
22422 let Inst{31-21} = 0b10001100001;
22423 let hasNewValue = 1;
22424 let opNewValue = 0;
22425 let prefersSlot3 = 1;
22426 }
22427 def S4_clbpaddi : HInst<
22428 (outs IntRegs:$Rd32),
22429 (ins DoubleRegs:$Rss32, s6_0Imm:$Ii),
22430 "$Rd32 = add(clb($Rss32),#$Ii)",
22431 tc_a08b630b, TypeS_2op>, Enc_a1640c {
22432 let Inst{7-5} = 0b010;
22433 let Inst{31-21} = 0b10001000011;
22434 let hasNewValue = 1;
22435 let opNewValue = 0;
22436 let prefersSlot3 = 1;
22437 }
22438 def S4_clbpnorm : HInst<
22439 (outs IntRegs:$Rd32),
22440 (ins DoubleRegs:$Rss32),
22441 "$Rd32 = normamt($Rss32)",
22442 tc_a7bdb22c, TypeS_2op>, Enc_90cd8b {
22443 let Inst{13-5} = 0b000000000;
22444 let Inst{31-21} = 0b10001000011;
22445 let hasNewValue = 1;
22446 let opNewValue = 0;
22447 let prefersSlot3 = 1;
22448 }
22449 def S4_extract : HInst<
22450 (outs IntRegs:$Rd32),
22451 (ins IntRegs:$Rs32, u5_0Imm:$Ii, u5_0Imm:$II),
22452 "$Rd32 = extract($Rs32,#$Ii,#$II)",
22453 tc_2c13e7f5, TypeS_2op>, Enc_b388cf {
22454 let Inst{13-13} = 0b0;
22455 let Inst{31-23} = 0b100011011;
22456 let hasNewValue = 1;
22457 let opNewValue = 0;
22458 let prefersSlot3 = 1;
22459 }
22460 def S4_extract_rp : HInst<
22461 (outs IntRegs:$Rd32),
22462 (ins IntRegs:$Rs32, DoubleRegs:$Rtt32),
22463 "$Rd32 = extract($Rs32,$Rtt32)",
22464 tc_a08b630b, TypeS_3op>, Enc_e07374 {
22465 let Inst{7-5} = 0b010;
22466 let Inst{13-13} = 0b0;
22467 let Inst{31-21} = 0b11001001000;
22468 let hasNewValue = 1;
22469 let opNewValue = 0;
22470 let prefersSlot3 = 1;
22471 }
22472 def S4_extractp : HInst<
22473 (outs DoubleRegs:$Rdd32),
22474 (ins DoubleRegs:$Rss32, u6_0Imm:$Ii, u6_0Imm:$II),
22475 "$Rdd32 = extract($Rss32,#$Ii,#$II)",
22476 tc_2c13e7f5, TypeS_2op>, Enc_b84c4c {
22477 let Inst{31-24} = 0b10001010;
22478 let prefersSlot3 = 1;
22479 }
22480 def S4_extractp_rp : HInst<
22481 (outs DoubleRegs:$Rdd32),
22482 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
22483 "$Rdd32 = extract($Rss32,$Rtt32)",
22484 tc_a08b630b, TypeS_3op>, Enc_a56825 {
22485 let Inst{7-5} = 0b100;
22486 let Inst{13-13} = 0b0;
22487 let Inst{31-21} = 0b11000001110;
22488 let prefersSlot3 = 1;
22489 }
22490 def S4_lsli : HInst<
22491 (outs IntRegs:$Rd32),
22492 (ins s6_0Imm:$Ii, IntRegs:$Rt32),
22493 "$Rd32 = lsl(#$Ii,$Rt32)",
22494 tc_5da50c4b, TypeS_3op>, Enc_fef969 {
22495 let Inst{7-6} = 0b11;
22496 let Inst{13-13} = 0b0;
22497 let Inst{31-21} = 0b11000110100;
22498 let hasNewValue = 1;
22499 let opNewValue = 0;
22500 }
22501 def S4_ntstbit_i : HInst<
22502 (outs PredRegs:$Pd4),
22503 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
22504 "$Pd4 = !tstbit($Rs32,#$Ii)",
22505 tc_a1297125, TypeS_2op>, Enc_83ee64 {
22506 let Inst{7-2} = 0b000000;
22507 let Inst{13-13} = 0b0;
22508 let Inst{31-21} = 0b10000101001;
22509 }
22510 def S4_ntstbit_r : HInst<
22511 (outs PredRegs:$Pd4),
22512 (ins IntRegs:$Rs32, IntRegs:$Rt32),
22513 "$Pd4 = !tstbit($Rs32,$Rt32)",
22514 tc_4a55d03c, TypeS_3op>, Enc_c2b48e {
22515 let Inst{7-2} = 0b000000;
22516 let Inst{13-13} = 0b0;
22517 let Inst{31-21} = 0b11000111001;
22518 }
22519 def S4_or_andi : HInst<
22520 (outs IntRegs:$Rx32),
22521 (ins IntRegs:$Rx32in, IntRegs:$Rs32, s32_0Imm:$Ii),
22522 "$Rx32 |= and($Rs32,#$Ii)",
22523 tc_a4e22bbd, TypeALU64>, Enc_b0e9d8 {
22524 let Inst{31-22} = 0b1101101000;
22525 let hasNewValue = 1;
22526 let opNewValue = 0;
22527 let prefersSlot3 = 1;
22528 let InputType = "imm";
22529 let isExtendable = 1;
22530 let opExtendable = 3;
22531 let isExtentSigned = 1;
22532 let opExtentBits = 10;
22533 let opExtentAlign = 0;
22534 let Constraints = "$Rx32 = $Rx32in";
22535 }
22536 def S4_or_andix : HInst<
22537 (outs IntRegs:$Rx32),
22538 (ins IntRegs:$Ru32, IntRegs:$Rx32in, s32_0Imm:$Ii),
22539 "$Rx32 = or($Ru32,and($Rx32in,#$Ii))",
22540 tc_a4e22bbd, TypeALU64>, Enc_b4e6cf, Requires<[UseCompound]> {
22541 let Inst{31-22} = 0b1101101001;
22542 let hasNewValue = 1;
22543 let opNewValue = 0;
22544 let prefersSlot3 = 1;
22545 let isExtendable = 1;
22546 let opExtendable = 3;
22547 let isExtentSigned = 1;
22548 let opExtentBits = 10;
22549 let opExtentAlign = 0;
22550 let Constraints = "$Rx32 = $Rx32in";
22551 }
22552 def S4_or_ori : HInst<
22553 (outs IntRegs:$Rx32),
22554 (ins IntRegs:$Rx32in, IntRegs:$Rs32, s32_0Imm:$Ii),
22555 "$Rx32 |= or($Rs32,#$Ii)",
22556 tc_a4e22bbd, TypeALU64>, Enc_b0e9d8 {
22557 let Inst{31-22} = 0b1101101010;
22558 let hasNewValue = 1;
22559 let opNewValue = 0;
22560 let prefersSlot3 = 1;
22561 let InputType = "imm";
22562 let isExtendable = 1;
22563 let opExtendable = 3;
22564 let isExtentSigned = 1;
22565 let opExtentBits = 10;
22566 let opExtentAlign = 0;
22567 let Constraints = "$Rx32 = $Rx32in";
22568 }
22569 def S4_ori_asl_ri : HInst<
22570 (outs IntRegs:$Rx32),
22571 (ins u32_0Imm:$Ii, IntRegs:$Rx32in, u5_0Imm:$II),
22572 "$Rx32 = or(#$Ii,asl($Rx32in,#$II))",
22573 tc_a4e22bbd, TypeALU64>, Enc_c31910, Requires<[UseCompound]> {
22574 let Inst{2-0} = 0b010;
22575 let Inst{4-4} = 0b0;
22576 let Inst{31-24} = 0b11011110;
22577 let hasNewValue = 1;
22578 let opNewValue = 0;
22579 let prefersSlot3 = 1;
22580 let isExtendable = 1;
22581 let opExtendable = 1;
22582 let isExtentSigned = 0;
22583 let opExtentBits = 8;
22584 let opExtentAlign = 0;
22585 let Constraints = "$Rx32 = $Rx32in";
22586 }
22587 def S4_ori_lsr_ri : HInst<
22588 (outs IntRegs:$Rx32),
22589 (ins u32_0Imm:$Ii, IntRegs:$Rx32in, u5_0Imm:$II),
22590 "$Rx32 = or(#$Ii,lsr($Rx32in,#$II))",
22591 tc_a4e22bbd, TypeALU64>, Enc_c31910, Requires<[UseCompound]> {
22592 let Inst{2-0} = 0b010;
22593 let Inst{4-4} = 0b1;
22594 let Inst{31-24} = 0b11011110;
22595 let hasNewValue = 1;
22596 let opNewValue = 0;
22597 let prefersSlot3 = 1;
22598 let isExtendable = 1;
22599 let opExtendable = 1;
22600 let isExtentSigned = 0;
22601 let opExtentBits = 8;
22602 let opExtentAlign = 0;
22603 let Constraints = "$Rx32 = $Rx32in";
22604 }
22605 def S4_parity : HInst<
22606 (outs IntRegs:$Rd32),
22607 (ins IntRegs:$Rs32, IntRegs:$Rt32),
22608 "$Rd32 = parity($Rs32,$Rt32)",
22609 tc_a08b630b, TypeALU64>, Enc_5ab2be {
22610 let Inst{7-5} = 0b000;
22611 let Inst{13-13} = 0b0;
22612 let Inst{31-21} = 0b11010101111;
22613 let hasNewValue = 1;
22614 let opNewValue = 0;
22615 let prefersSlot3 = 1;
22616 }
22617 def S4_pstorerbf_abs : HInst<
22618 (outs),
22619 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
22620 "if (!$Pv4) memb(#$Ii) = $Rt32",
22621 tc_ba9255a6, TypeST>, Enc_1cf4ca, AddrModeRel {
22622 let Inst{2-2} = 0b1;
22623 let Inst{7-7} = 0b1;
22624 let Inst{13-13} = 0b0;
22625 let Inst{31-18} = 0b10101111000000;
22626 let isPredicated = 1;
22627 let isPredicatedFalse = 1;
22628 let addrMode = Absolute;
22629 let accessSize = ByteAccess;
22630 let isExtended = 1;
22631 let mayStore = 1;
22632 let BaseOpcode = "S2_storerbabs";
22633 let CextOpcode = "S2_storerb";
22634 let isNVStorable = 1;
22635 let DecoderNamespace = "MustExtend";
22636 let isExtendable = 1;
22637 let opExtendable = 1;
22638 let isExtentSigned = 0;
22639 let opExtentBits = 6;
22640 let opExtentAlign = 0;
22641 }
22642 def S4_pstorerbf_rr : HInst<
22643 (outs),
22644 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
22645 "if (!$Pv4) memb($Rs32+$Ru32<<#$Ii) = $Rt32",
22646 tc_1fe4ab69, TypeST>, Enc_6339d5, AddrModeRel {
22647 let Inst{31-21} = 0b00110101000;
22648 let isPredicated = 1;
22649 let isPredicatedFalse = 1;
22650 let addrMode = BaseRegOffset;
22651 let accessSize = ByteAccess;
22652 let mayStore = 1;
22653 let BaseOpcode = "S4_storerb_rr";
22654 let CextOpcode = "S2_storerb";
22655 let InputType = "reg";
22656 let isNVStorable = 1;
22657 }
22658 def S4_pstorerbfnew_abs : HInst<
22659 (outs),
22660 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
22661 "if (!$Pv4.new) memb(#$Ii) = $Rt32",
22662 tc_bb07f2c5, TypeST>, Enc_1cf4ca, AddrModeRel {
22663 let Inst{2-2} = 0b1;
22664 let Inst{7-7} = 0b1;
22665 let Inst{13-13} = 0b1;
22666 let Inst{31-18} = 0b10101111000000;
22667 let isPredicated = 1;
22668 let isPredicatedFalse = 1;
22669 let addrMode = Absolute;
22670 let accessSize = ByteAccess;
22671 let isPredicatedNew = 1;
22672 let isExtended = 1;
22673 let mayStore = 1;
22674 let BaseOpcode = "S2_storerbabs";
22675 let CextOpcode = "S2_storerb";
22676 let isNVStorable = 1;
22677 let DecoderNamespace = "MustExtend";
22678 let isExtendable = 1;
22679 let opExtendable = 1;
22680 let isExtentSigned = 0;
22681 let opExtentBits = 6;
22682 let opExtentAlign = 0;
22683 }
22684 def S4_pstorerbfnew_io : HInst<
22685 (outs),
22686 (ins PredRegs:$Pv4, IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Rt32),
22687 "if (!$Pv4.new) memb($Rs32+#$Ii) = $Rt32",
22688 tc_a2b365d2, TypeV2LDST>, Enc_da8d43, AddrModeRel {
22689 let Inst{2-2} = 0b0;
22690 let Inst{31-21} = 0b01000110000;
22691 let isPredicated = 1;
22692 let isPredicatedFalse = 1;
22693 let addrMode = BaseImmOffset;
22694 let accessSize = ByteAccess;
22695 let isPredicatedNew = 1;
22696 let mayStore = 1;
22697 let BaseOpcode = "S2_storerb_io";
22698 let CextOpcode = "S2_storerb";
22699 let InputType = "imm";
22700 let isNVStorable = 1;
22701 let isExtendable = 1;
22702 let opExtendable = 2;
22703 let isExtentSigned = 0;
22704 let opExtentBits = 6;
22705 let opExtentAlign = 0;
22706 }
22707 def S4_pstorerbfnew_rr : HInst<
22708 (outs),
22709 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
22710 "if (!$Pv4.new) memb($Rs32+$Ru32<<#$Ii) = $Rt32",
22711 tc_8e82e8ca, TypeST>, Enc_6339d5, AddrModeRel {
22712 let Inst{31-21} = 0b00110111000;
22713 let isPredicated = 1;
22714 let isPredicatedFalse = 1;
22715 let addrMode = BaseRegOffset;
22716 let accessSize = ByteAccess;
22717 let isPredicatedNew = 1;
22718 let mayStore = 1;
22719 let BaseOpcode = "S4_storerb_rr";
22720 let CextOpcode = "S2_storerb";
22721 let InputType = "reg";
22722 let isNVStorable = 1;
22723 }
22724 def S4_pstorerbfnew_zomap : HInst<
22725 (outs),
22726 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
22727 "if (!$Pv4.new) memb($Rs32) = $Rt32",
22728 tc_a2b365d2, TypeMAPPING> {
22729 let isPseudo = 1;
22730 let isCodeGenOnly = 1;
22731 }
22732 def S4_pstorerbnewf_abs : HInst<
22733 (outs),
22734 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Nt8),
22735 "if (!$Pv4) memb(#$Ii) = $Nt8.new",
22736 tc_cfa0e29b, TypeST>, Enc_44215c, AddrModeRel {
22737 let Inst{2-2} = 0b1;
22738 let Inst{7-7} = 0b1;
22739 let Inst{13-11} = 0b000;
22740 let Inst{31-18} = 0b10101111101000;
22741 let isPredicated = 1;
22742 let isPredicatedFalse = 1;
22743 let addrMode = Absolute;
22744 let accessSize = ByteAccess;
22745 let isNVStore = 1;
22746 let isNewValue = 1;
22747 let isExtended = 1;
22748 let isRestrictNoSlot1Store = 1;
22749 let mayStore = 1;
22750 let BaseOpcode = "S2_storerbabs";
22751 let CextOpcode = "S2_storerb";
22752 let DecoderNamespace = "MustExtend";
22753 let isExtendable = 1;
22754 let opExtendable = 1;
22755 let isExtentSigned = 0;
22756 let opExtentBits = 6;
22757 let opExtentAlign = 0;
22758 let opNewValue = 2;
22759 }
22760 def S4_pstorerbnewf_rr : HInst<
22761 (outs),
22762 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
22763 "if (!$Pv4) memb($Rs32+$Ru32<<#$Ii) = $Nt8.new",
22764 tc_0a6c20ae, TypeST>, Enc_47ee5e, AddrModeRel {
22765 let Inst{4-3} = 0b00;
22766 let Inst{31-21} = 0b00110101101;
22767 let isPredicated = 1;
22768 let isPredicatedFalse = 1;
22769 let addrMode = BaseRegOffset;
22770 let accessSize = ByteAccess;
22771 let isNVStore = 1;
22772 let isNewValue = 1;
22773 let isRestrictNoSlot1Store = 1;
22774 let mayStore = 1;
22775 let BaseOpcode = "S4_storerb_rr";
22776 let CextOpcode = "S2_storerb";
22777 let InputType = "reg";
22778 let opNewValue = 4;
22779 }
22780 def S4_pstorerbnewfnew_abs : HInst<
22781 (outs),
22782 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Nt8),
22783 "if (!$Pv4.new) memb(#$Ii) = $Nt8.new",
22784 tc_0fac1eb8, TypeST>, Enc_44215c, AddrModeRel {
22785 let Inst{2-2} = 0b1;
22786 let Inst{7-7} = 0b1;
22787 let Inst{13-11} = 0b100;
22788 let Inst{31-18} = 0b10101111101000;
22789 let isPredicated = 1;
22790 let isPredicatedFalse = 1;
22791 let addrMode = Absolute;
22792 let accessSize = ByteAccess;
22793 let isNVStore = 1;
22794 let isPredicatedNew = 1;
22795 let isNewValue = 1;
22796 let isExtended = 1;
22797 let isRestrictNoSlot1Store = 1;
22798 let mayStore = 1;
22799 let BaseOpcode = "S2_storerbabs";
22800 let CextOpcode = "S2_storerb";
22801 let DecoderNamespace = "MustExtend";
22802 let isExtendable = 1;
22803 let opExtendable = 1;
22804 let isExtentSigned = 0;
22805 let opExtentBits = 6;
22806 let opExtentAlign = 0;
22807 let opNewValue = 2;
22808 }
22809 def S4_pstorerbnewfnew_io : HInst<
22810 (outs),
22811 (ins PredRegs:$Pv4, IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Nt8),
22812 "if (!$Pv4.new) memb($Rs32+#$Ii) = $Nt8.new",
22813 tc_92240447, TypeV2LDST>, Enc_585242, AddrModeRel {
22814 let Inst{2-2} = 0b0;
22815 let Inst{12-11} = 0b00;
22816 let Inst{31-21} = 0b01000110101;
22817 let isPredicated = 1;
22818 let isPredicatedFalse = 1;
22819 let addrMode = BaseImmOffset;
22820 let accessSize = ByteAccess;
22821 let isNVStore = 1;
22822 let isPredicatedNew = 1;
22823 let isNewValue = 1;
22824 let isRestrictNoSlot1Store = 1;
22825 let mayStore = 1;
22826 let BaseOpcode = "S2_storerb_io";
22827 let CextOpcode = "S2_storerb";
22828 let InputType = "imm";
22829 let isExtendable = 1;
22830 let opExtendable = 2;
22831 let isExtentSigned = 0;
22832 let opExtentBits = 6;
22833 let opExtentAlign = 0;
22834 let opNewValue = 3;
22835 }
22836 def S4_pstorerbnewfnew_rr : HInst<
22837 (outs),
22838 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
22839 "if (!$Pv4.new) memb($Rs32+$Ru32<<#$Ii) = $Nt8.new",
22840 tc_829d8a86, TypeST>, Enc_47ee5e, AddrModeRel {
22841 let Inst{4-3} = 0b00;
22842 let Inst{31-21} = 0b00110111101;
22843 let isPredicated = 1;
22844 let isPredicatedFalse = 1;
22845 let addrMode = BaseRegOffset;
22846 let accessSize = ByteAccess;
22847 let isNVStore = 1;
22848 let isPredicatedNew = 1;
22849 let isNewValue = 1;
22850 let isRestrictNoSlot1Store = 1;
22851 let mayStore = 1;
22852 let BaseOpcode = "S4_storerb_rr";
22853 let CextOpcode = "S2_storerb";
22854 let InputType = "reg";
22855 let opNewValue = 4;
22856 }
22857 def S4_pstorerbnewfnew_zomap : HInst<
22858 (outs),
22859 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Nt8),
22860 "if (!$Pv4.new) memb($Rs32) = $Nt8.new",
22861 tc_92240447, TypeMAPPING> {
22862 let isPseudo = 1;
22863 let isCodeGenOnly = 1;
22864 let opNewValue = 2;
22865 }
22866 def S4_pstorerbnewt_abs : HInst<
22867 (outs),
22868 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Nt8),
22869 "if ($Pv4) memb(#$Ii) = $Nt8.new",
22870 tc_cfa0e29b, TypeST>, Enc_44215c, AddrModeRel {
22871 let Inst{2-2} = 0b0;
22872 let Inst{7-7} = 0b1;
22873 let Inst{13-11} = 0b000;
22874 let Inst{31-18} = 0b10101111101000;
22875 let isPredicated = 1;
22876 let addrMode = Absolute;
22877 let accessSize = ByteAccess;
22878 let isNVStore = 1;
22879 let isNewValue = 1;
22880 let isExtended = 1;
22881 let isRestrictNoSlot1Store = 1;
22882 let mayStore = 1;
22883 let BaseOpcode = "S2_storerbabs";
22884 let CextOpcode = "S2_storerb";
22885 let DecoderNamespace = "MustExtend";
22886 let isExtendable = 1;
22887 let opExtendable = 1;
22888 let isExtentSigned = 0;
22889 let opExtentBits = 6;
22890 let opExtentAlign = 0;
22891 let opNewValue = 2;
22892 }
22893 def S4_pstorerbnewt_rr : HInst<
22894 (outs),
22895 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
22896 "if ($Pv4) memb($Rs32+$Ru32<<#$Ii) = $Nt8.new",
22897 tc_0a6c20ae, TypeST>, Enc_47ee5e, AddrModeRel {
22898 let Inst{4-3} = 0b00;
22899 let Inst{31-21} = 0b00110100101;
22900 let isPredicated = 1;
22901 let addrMode = BaseRegOffset;
22902 let accessSize = ByteAccess;
22903 let isNVStore = 1;
22904 let isNewValue = 1;
22905 let isRestrictNoSlot1Store = 1;
22906 let mayStore = 1;
22907 let BaseOpcode = "S4_storerb_rr";
22908 let CextOpcode = "S2_storerb";
22909 let InputType = "reg";
22910 let opNewValue = 4;
22911 }
22912 def S4_pstorerbnewtnew_abs : HInst<
22913 (outs),
22914 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Nt8),
22915 "if ($Pv4.new) memb(#$Ii) = $Nt8.new",
22916 tc_0fac1eb8, TypeST>, Enc_44215c, AddrModeRel {
22917 let Inst{2-2} = 0b0;
22918 let Inst{7-7} = 0b1;
22919 let Inst{13-11} = 0b100;
22920 let Inst{31-18} = 0b10101111101000;
22921 let isPredicated = 1;
22922 let addrMode = Absolute;
22923 let accessSize = ByteAccess;
22924 let isNVStore = 1;
22925 let isPredicatedNew = 1;
22926 let isNewValue = 1;
22927 let isExtended = 1;
22928 let isRestrictNoSlot1Store = 1;
22929 let mayStore = 1;
22930 let BaseOpcode = "S2_storerbabs";
22931 let CextOpcode = "S2_storerb";
22932 let DecoderNamespace = "MustExtend";
22933 let isExtendable = 1;
22934 let opExtendable = 1;
22935 let isExtentSigned = 0;
22936 let opExtentBits = 6;
22937 let opExtentAlign = 0;
22938 let opNewValue = 2;
22939 }
22940 def S4_pstorerbnewtnew_io : HInst<
22941 (outs),
22942 (ins PredRegs:$Pv4, IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Nt8),
22943 "if ($Pv4.new) memb($Rs32+#$Ii) = $Nt8.new",
22944 tc_92240447, TypeV2LDST>, Enc_585242, AddrModeRel {
22945 let Inst{2-2} = 0b0;
22946 let Inst{12-11} = 0b00;
22947 let Inst{31-21} = 0b01000010101;
22948 let isPredicated = 1;
22949 let addrMode = BaseImmOffset;
22950 let accessSize = ByteAccess;
22951 let isNVStore = 1;
22952 let isPredicatedNew = 1;
22953 let isNewValue = 1;
22954 let isRestrictNoSlot1Store = 1;
22955 let mayStore = 1;
22956 let BaseOpcode = "S2_storerb_io";
22957 let CextOpcode = "S2_storerb";
22958 let InputType = "imm";
22959 let isExtendable = 1;
22960 let opExtendable = 2;
22961 let isExtentSigned = 0;
22962 let opExtentBits = 6;
22963 let opExtentAlign = 0;
22964 let opNewValue = 3;
22965 }
22966 def S4_pstorerbnewtnew_rr : HInst<
22967 (outs),
22968 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
22969 "if ($Pv4.new) memb($Rs32+$Ru32<<#$Ii) = $Nt8.new",
22970 tc_829d8a86, TypeST>, Enc_47ee5e, AddrModeRel {
22971 let Inst{4-3} = 0b00;
22972 let Inst{31-21} = 0b00110110101;
22973 let isPredicated = 1;
22974 let addrMode = BaseRegOffset;
22975 let accessSize = ByteAccess;
22976 let isNVStore = 1;
22977 let isPredicatedNew = 1;
22978 let isNewValue = 1;
22979 let isRestrictNoSlot1Store = 1;
22980 let mayStore = 1;
22981 let BaseOpcode = "S4_storerb_rr";
22982 let CextOpcode = "S2_storerb";
22983 let InputType = "reg";
22984 let opNewValue = 4;
22985 }
22986 def S4_pstorerbnewtnew_zomap : HInst<
22987 (outs),
22988 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Nt8),
22989 "if ($Pv4.new) memb($Rs32) = $Nt8.new",
22990 tc_92240447, TypeMAPPING> {
22991 let isPseudo = 1;
22992 let isCodeGenOnly = 1;
22993 let opNewValue = 2;
22994 }
22995 def S4_pstorerbt_abs : HInst<
22996 (outs),
22997 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
22998 "if ($Pv4) memb(#$Ii) = $Rt32",
22999 tc_ba9255a6, TypeST>, Enc_1cf4ca, AddrModeRel {
23000 let Inst{2-2} = 0b0;
23001 let Inst{7-7} = 0b1;
23002 let Inst{13-13} = 0b0;
23003 let Inst{31-18} = 0b10101111000000;
23004 let isPredicated = 1;
23005 let addrMode = Absolute;
23006 let accessSize = ByteAccess;
23007 let isExtended = 1;
23008 let mayStore = 1;
23009 let BaseOpcode = "S2_storerbabs";
23010 let CextOpcode = "S2_storerb";
23011 let isNVStorable = 1;
23012 let DecoderNamespace = "MustExtend";
23013 let isExtendable = 1;
23014 let opExtendable = 1;
23015 let isExtentSigned = 0;
23016 let opExtentBits = 6;
23017 let opExtentAlign = 0;
23018 }
23019 def S4_pstorerbt_rr : HInst<
23020 (outs),
23021 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
23022 "if ($Pv4) memb($Rs32+$Ru32<<#$Ii) = $Rt32",
23023 tc_1fe4ab69, TypeST>, Enc_6339d5, AddrModeRel {
23024 let Inst{31-21} = 0b00110100000;
23025 let isPredicated = 1;
23026 let addrMode = BaseRegOffset;
23027 let accessSize = ByteAccess;
23028 let mayStore = 1;
23029 let BaseOpcode = "S4_storerb_rr";
23030 let CextOpcode = "S2_storerb";
23031 let InputType = "reg";
23032 let isNVStorable = 1;
23033 }
23034 def S4_pstorerbtnew_abs : HInst<
23035 (outs),
23036 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
23037 "if ($Pv4.new) memb(#$Ii) = $Rt32",
23038 tc_bb07f2c5, TypeST>, Enc_1cf4ca, AddrModeRel {
23039 let Inst{2-2} = 0b0;
23040 let Inst{7-7} = 0b1;
23041 let Inst{13-13} = 0b1;
23042 let Inst{31-18} = 0b10101111000000;
23043 let isPredicated = 1;
23044 let addrMode = Absolute;
23045 let accessSize = ByteAccess;
23046 let isPredicatedNew = 1;
23047 let isExtended = 1;
23048 let mayStore = 1;
23049 let BaseOpcode = "S2_storerbabs";
23050 let CextOpcode = "S2_storerb";
23051 let isNVStorable = 1;
23052 let DecoderNamespace = "MustExtend";
23053 let isExtendable = 1;
23054 let opExtendable = 1;
23055 let isExtentSigned = 0;
23056 let opExtentBits = 6;
23057 let opExtentAlign = 0;
23058 }
23059 def S4_pstorerbtnew_io : HInst<
23060 (outs),
23061 (ins PredRegs:$Pv4, IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Rt32),
23062 "if ($Pv4.new) memb($Rs32+#$Ii) = $Rt32",
23063 tc_a2b365d2, TypeV2LDST>, Enc_da8d43, AddrModeRel {
23064 let Inst{2-2} = 0b0;
23065 let Inst{31-21} = 0b01000010000;
23066 let isPredicated = 1;
23067 let addrMode = BaseImmOffset;
23068 let accessSize = ByteAccess;
23069 let isPredicatedNew = 1;
23070 let mayStore = 1;
23071 let BaseOpcode = "S2_storerb_io";
23072 let CextOpcode = "S2_storerb";
23073 let InputType = "imm";
23074 let isNVStorable = 1;
23075 let isExtendable = 1;
23076 let opExtendable = 2;
23077 let isExtentSigned = 0;
23078 let opExtentBits = 6;
23079 let opExtentAlign = 0;
23080 }
23081 def S4_pstorerbtnew_rr : HInst<
23082 (outs),
23083 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
23084 "if ($Pv4.new) memb($Rs32+$Ru32<<#$Ii) = $Rt32",
23085 tc_8e82e8ca, TypeST>, Enc_6339d5, AddrModeRel {
23086 let Inst{31-21} = 0b00110110000;
23087 let isPredicated = 1;
23088 let addrMode = BaseRegOffset;
23089 let accessSize = ByteAccess;
23090 let isPredicatedNew = 1;
23091 let mayStore = 1;
23092 let BaseOpcode = "S4_storerb_rr";
23093 let CextOpcode = "S2_storerb";
23094 let InputType = "reg";
23095 let isNVStorable = 1;
23096 }
23097 def S4_pstorerbtnew_zomap : HInst<
23098 (outs),
23099 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
23100 "if ($Pv4.new) memb($Rs32) = $Rt32",
23101 tc_a2b365d2, TypeMAPPING> {
23102 let isPseudo = 1;
23103 let isCodeGenOnly = 1;
23104 }
23105 def S4_pstorerdf_abs : HInst<
23106 (outs),
23107 (ins PredRegs:$Pv4, u32_0Imm:$Ii, DoubleRegs:$Rtt32),
23108 "if (!$Pv4) memd(#$Ii) = $Rtt32",
23109 tc_ba9255a6, TypeST>, Enc_50b5ac, AddrModeRel {
23110 let Inst{2-2} = 0b1;
23111 let Inst{7-7} = 0b1;
23112 let Inst{13-13} = 0b0;
23113 let Inst{31-18} = 0b10101111110000;
23114 let isPredicated = 1;
23115 let isPredicatedFalse = 1;
23116 let addrMode = Absolute;
23117 let accessSize = DoubleWordAccess;
23118 let isExtended = 1;
23119 let mayStore = 1;
23120 let BaseOpcode = "S2_storerdabs";
23121 let CextOpcode = "S2_storerd";
23122 let DecoderNamespace = "MustExtend";
23123 let isExtendable = 1;
23124 let opExtendable = 1;
23125 let isExtentSigned = 0;
23126 let opExtentBits = 6;
23127 let opExtentAlign = 0;
23128 }
23129 def S4_pstorerdf_rr : HInst<
23130 (outs),
23131 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, DoubleRegs:$Rtt32),
23132 "if (!$Pv4) memd($Rs32+$Ru32<<#$Ii) = $Rtt32",
23133 tc_1fe4ab69, TypeST>, Enc_1a9974, AddrModeRel {
23134 let Inst{31-21} = 0b00110101110;
23135 let isPredicated = 1;
23136 let isPredicatedFalse = 1;
23137 let addrMode = BaseRegOffset;
23138 let accessSize = DoubleWordAccess;
23139 let mayStore = 1;
23140 let BaseOpcode = "S2_storerd_rr";
23141 let CextOpcode = "S2_storerd";
23142 let InputType = "reg";
23143 }
23144 def S4_pstorerdfnew_abs : HInst<
23145 (outs),
23146 (ins PredRegs:$Pv4, u32_0Imm:$Ii, DoubleRegs:$Rtt32),
23147 "if (!$Pv4.new) memd(#$Ii) = $Rtt32",
23148 tc_bb07f2c5, TypeST>, Enc_50b5ac, AddrModeRel {
23149 let Inst{2-2} = 0b1;
23150 let Inst{7-7} = 0b1;
23151 let Inst{13-13} = 0b1;
23152 let Inst{31-18} = 0b10101111110000;
23153 let isPredicated = 1;
23154 let isPredicatedFalse = 1;
23155 let addrMode = Absolute;
23156 let accessSize = DoubleWordAccess;
23157 let isPredicatedNew = 1;
23158 let isExtended = 1;
23159 let mayStore = 1;
23160 let BaseOpcode = "S2_storerdabs";
23161 let CextOpcode = "S2_storerd";
23162 let DecoderNamespace = "MustExtend";
23163 let isExtendable = 1;
23164 let opExtendable = 1;
23165 let isExtentSigned = 0;
23166 let opExtentBits = 6;
23167 let opExtentAlign = 0;
23168 }
23169 def S4_pstorerdfnew_io : HInst<
23170 (outs),
23171 (ins PredRegs:$Pv4, IntRegs:$Rs32, u29_3Imm:$Ii, DoubleRegs:$Rtt32),
23172 "if (!$Pv4.new) memd($Rs32+#$Ii) = $Rtt32",
23173 tc_a2b365d2, TypeV2LDST>, Enc_57a33e, AddrModeRel {
23174 let Inst{2-2} = 0b0;
23175 let Inst{31-21} = 0b01000110110;
23176 let isPredicated = 1;
23177 let isPredicatedFalse = 1;
23178 let addrMode = BaseImmOffset;
23179 let accessSize = DoubleWordAccess;
23180 let isPredicatedNew = 1;
23181 let mayStore = 1;
23182 let BaseOpcode = "S2_storerd_io";
23183 let CextOpcode = "S2_storerd";
23184 let InputType = "imm";
23185 let isExtendable = 1;
23186 let opExtendable = 2;
23187 let isExtentSigned = 0;
23188 let opExtentBits = 9;
23189 let opExtentAlign = 3;
23190 }
23191 def S4_pstorerdfnew_rr : HInst<
23192 (outs),
23193 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, DoubleRegs:$Rtt32),
23194 "if (!$Pv4.new) memd($Rs32+$Ru32<<#$Ii) = $Rtt32",
23195 tc_8e82e8ca, TypeST>, Enc_1a9974, AddrModeRel {
23196 let Inst{31-21} = 0b00110111110;
23197 let isPredicated = 1;
23198 let isPredicatedFalse = 1;
23199 let addrMode = BaseRegOffset;
23200 let accessSize = DoubleWordAccess;
23201 let isPredicatedNew = 1;
23202 let mayStore = 1;
23203 let BaseOpcode = "S2_storerd_rr";
23204 let CextOpcode = "S2_storerd";
23205 let InputType = "reg";
23206 }
23207 def S4_pstorerdfnew_zomap : HInst<
23208 (outs),
23209 (ins PredRegs:$Pv4, IntRegs:$Rs32, DoubleRegs:$Rtt32),
23210 "if (!$Pv4.new) memd($Rs32) = $Rtt32",
23211 tc_a2b365d2, TypeMAPPING> {
23212 let isPseudo = 1;
23213 let isCodeGenOnly = 1;
23214 }
23215 def S4_pstorerdt_abs : HInst<
23216 (outs),
23217 (ins PredRegs:$Pv4, u32_0Imm:$Ii, DoubleRegs:$Rtt32),
23218 "if ($Pv4) memd(#$Ii) = $Rtt32",
23219 tc_ba9255a6, TypeST>, Enc_50b5ac, AddrModeRel {
23220 let Inst{2-2} = 0b0;
23221 let Inst{7-7} = 0b1;
23222 let Inst{13-13} = 0b0;
23223 let Inst{31-18} = 0b10101111110000;
23224 let isPredicated = 1;
23225 let addrMode = Absolute;
23226 let accessSize = DoubleWordAccess;
23227 let isExtended = 1;
23228 let mayStore = 1;
23229 let BaseOpcode = "S2_storerdabs";
23230 let CextOpcode = "S2_storerd";
23231 let DecoderNamespace = "MustExtend";
23232 let isExtendable = 1;
23233 let opExtendable = 1;
23234 let isExtentSigned = 0;
23235 let opExtentBits = 6;
23236 let opExtentAlign = 0;
23237 }
23238 def S4_pstorerdt_rr : HInst<
23239 (outs),
23240 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, DoubleRegs:$Rtt32),
23241 "if ($Pv4) memd($Rs32+$Ru32<<#$Ii) = $Rtt32",
23242 tc_1fe4ab69, TypeST>, Enc_1a9974, AddrModeRel {
23243 let Inst{31-21} = 0b00110100110;
23244 let isPredicated = 1;
23245 let addrMode = BaseRegOffset;
23246 let accessSize = DoubleWordAccess;
23247 let mayStore = 1;
23248 let BaseOpcode = "S2_storerd_rr";
23249 let CextOpcode = "S2_storerd";
23250 let InputType = "reg";
23251 }
23252 def S4_pstorerdtnew_abs : HInst<
23253 (outs),
23254 (ins PredRegs:$Pv4, u32_0Imm:$Ii, DoubleRegs:$Rtt32),
23255 "if ($Pv4.new) memd(#$Ii) = $Rtt32",
23256 tc_bb07f2c5, TypeST>, Enc_50b5ac, AddrModeRel {
23257 let Inst{2-2} = 0b0;
23258 let Inst{7-7} = 0b1;
23259 let Inst{13-13} = 0b1;
23260 let Inst{31-18} = 0b10101111110000;
23261 let isPredicated = 1;
23262 let addrMode = Absolute;
23263 let accessSize = DoubleWordAccess;
23264 let isPredicatedNew = 1;
23265 let isExtended = 1;
23266 let mayStore = 1;
23267 let BaseOpcode = "S2_storerdabs";
23268 let CextOpcode = "S2_storerd";
23269 let DecoderNamespace = "MustExtend";
23270 let isExtendable = 1;
23271 let opExtendable = 1;
23272 let isExtentSigned = 0;
23273 let opExtentBits = 6;
23274 let opExtentAlign = 0;
23275 }
23276 def S4_pstorerdtnew_io : HInst<
23277 (outs),
23278 (ins PredRegs:$Pv4, IntRegs:$Rs32, u29_3Imm:$Ii, DoubleRegs:$Rtt32),
23279 "if ($Pv4.new) memd($Rs32+#$Ii) = $Rtt32",
23280 tc_a2b365d2, TypeV2LDST>, Enc_57a33e, AddrModeRel {
23281 let Inst{2-2} = 0b0;
23282 let Inst{31-21} = 0b01000010110;
23283 let isPredicated = 1;
23284 let addrMode = BaseImmOffset;
23285 let accessSize = DoubleWordAccess;
23286 let isPredicatedNew = 1;
23287 let mayStore = 1;
23288 let BaseOpcode = "S2_storerd_io";
23289 let CextOpcode = "S2_storerd";
23290 let InputType = "imm";
23291 let isExtendable = 1;
23292 let opExtendable = 2;
23293 let isExtentSigned = 0;
23294 let opExtentBits = 9;
23295 let opExtentAlign = 3;
23296 }
23297 def S4_pstorerdtnew_rr : HInst<
23298 (outs),
23299 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, DoubleRegs:$Rtt32),
23300 "if ($Pv4.new) memd($Rs32+$Ru32<<#$Ii) = $Rtt32",
23301 tc_8e82e8ca, TypeST>, Enc_1a9974, AddrModeRel {
23302 let Inst{31-21} = 0b00110110110;
23303 let isPredicated = 1;
23304 let addrMode = BaseRegOffset;
23305 let accessSize = DoubleWordAccess;
23306 let isPredicatedNew = 1;
23307 let mayStore = 1;
23308 let BaseOpcode = "S2_storerd_rr";
23309 let CextOpcode = "S2_storerd";
23310 let InputType = "reg";
23311 }
23312 def S4_pstorerdtnew_zomap : HInst<
23313 (outs),
23314 (ins PredRegs:$Pv4, IntRegs:$Rs32, DoubleRegs:$Rtt32),
23315 "if ($Pv4.new) memd($Rs32) = $Rtt32",
23316 tc_a2b365d2, TypeMAPPING> {
23317 let isPseudo = 1;
23318 let isCodeGenOnly = 1;
23319 }
23320 def S4_pstorerff_abs : HInst<
23321 (outs),
23322 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
23323 "if (!$Pv4) memh(#$Ii) = $Rt32.h",
23324 tc_ba9255a6, TypeST>, Enc_1cf4ca, AddrModeRel {
23325 let Inst{2-2} = 0b1;
23326 let Inst{7-7} = 0b1;
23327 let Inst{13-13} = 0b0;
23328 let Inst{31-18} = 0b10101111011000;
23329 let isPredicated = 1;
23330 let isPredicatedFalse = 1;
23331 let addrMode = Absolute;
23332 let accessSize = HalfWordAccess;
23333 let isExtended = 1;
23334 let mayStore = 1;
23335 let BaseOpcode = "S2_storerfabs";
23336 let CextOpcode = "S2_storerf";
23337 let DecoderNamespace = "MustExtend";
23338 let isExtendable = 1;
23339 let opExtendable = 1;
23340 let isExtentSigned = 0;
23341 let opExtentBits = 6;
23342 let opExtentAlign = 0;
23343 }
23344 def S4_pstorerff_rr : HInst<
23345 (outs),
23346 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
23347 "if (!$Pv4) memh($Rs32+$Ru32<<#$Ii) = $Rt32.h",
23348 tc_1fe4ab69, TypeST>, Enc_6339d5, AddrModeRel {
23349 let Inst{31-21} = 0b00110101011;
23350 let isPredicated = 1;
23351 let isPredicatedFalse = 1;
23352 let addrMode = BaseRegOffset;
23353 let accessSize = HalfWordAccess;
23354 let mayStore = 1;
23355 let BaseOpcode = "S4_storerf_rr";
23356 let CextOpcode = "S2_storerf";
23357 let InputType = "reg";
23358 }
23359 def S4_pstorerffnew_abs : HInst<
23360 (outs),
23361 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
23362 "if (!$Pv4.new) memh(#$Ii) = $Rt32.h",
23363 tc_bb07f2c5, TypeST>, Enc_1cf4ca, AddrModeRel {
23364 let Inst{2-2} = 0b1;
23365 let Inst{7-7} = 0b1;
23366 let Inst{13-13} = 0b1;
23367 let Inst{31-18} = 0b10101111011000;
23368 let isPredicated = 1;
23369 let isPredicatedFalse = 1;
23370 let addrMode = Absolute;
23371 let accessSize = HalfWordAccess;
23372 let isPredicatedNew = 1;
23373 let isExtended = 1;
23374 let mayStore = 1;
23375 let BaseOpcode = "S2_storerfabs";
23376 let CextOpcode = "S2_storerf";
23377 let DecoderNamespace = "MustExtend";
23378 let isExtendable = 1;
23379 let opExtendable = 1;
23380 let isExtentSigned = 0;
23381 let opExtentBits = 6;
23382 let opExtentAlign = 0;
23383 }
23384 def S4_pstorerffnew_io : HInst<
23385 (outs),
23386 (ins PredRegs:$Pv4, IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Rt32),
23387 "if (!$Pv4.new) memh($Rs32+#$Ii) = $Rt32.h",
23388 tc_a2b365d2, TypeV2LDST>, Enc_e8c45e, AddrModeRel {
23389 let Inst{2-2} = 0b0;
23390 let Inst{31-21} = 0b01000110011;
23391 let isPredicated = 1;
23392 let isPredicatedFalse = 1;
23393 let addrMode = BaseImmOffset;
23394 let accessSize = HalfWordAccess;
23395 let isPredicatedNew = 1;
23396 let mayStore = 1;
23397 let BaseOpcode = "S2_storerf_io";
23398 let CextOpcode = "S2_storerf";
23399 let InputType = "imm";
23400 let isExtendable = 1;
23401 let opExtendable = 2;
23402 let isExtentSigned = 0;
23403 let opExtentBits = 7;
23404 let opExtentAlign = 1;
23405 }
23406 def S4_pstorerffnew_rr : HInst<
23407 (outs),
23408 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
23409 "if (!$Pv4.new) memh($Rs32+$Ru32<<#$Ii) = $Rt32.h",
23410 tc_8e82e8ca, TypeST>, Enc_6339d5, AddrModeRel {
23411 let Inst{31-21} = 0b00110111011;
23412 let isPredicated = 1;
23413 let isPredicatedFalse = 1;
23414 let addrMode = BaseRegOffset;
23415 let accessSize = HalfWordAccess;
23416 let isPredicatedNew = 1;
23417 let mayStore = 1;
23418 let BaseOpcode = "S4_storerf_rr";
23419 let CextOpcode = "S2_storerf";
23420 let InputType = "reg";
23421 }
23422 def S4_pstorerffnew_zomap : HInst<
23423 (outs),
23424 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
23425 "if (!$Pv4.new) memh($Rs32) = $Rt32.h",
23426 tc_a2b365d2, TypeMAPPING> {
23427 let isPseudo = 1;
23428 let isCodeGenOnly = 1;
23429 }
23430 def S4_pstorerft_abs : HInst<
23431 (outs),
23432 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
23433 "if ($Pv4) memh(#$Ii) = $Rt32.h",
23434 tc_ba9255a6, TypeST>, Enc_1cf4ca, AddrModeRel {
23435 let Inst{2-2} = 0b0;
23436 let Inst{7-7} = 0b1;
23437 let Inst{13-13} = 0b0;
23438 let Inst{31-18} = 0b10101111011000;
23439 let isPredicated = 1;
23440 let addrMode = Absolute;
23441 let accessSize = HalfWordAccess;
23442 let isExtended = 1;
23443 let mayStore = 1;
23444 let BaseOpcode = "S2_storerfabs";
23445 let CextOpcode = "S2_storerf";
23446 let DecoderNamespace = "MustExtend";
23447 let isExtendable = 1;
23448 let opExtendable = 1;
23449 let isExtentSigned = 0;
23450 let opExtentBits = 6;
23451 let opExtentAlign = 0;
23452 }
23453 def S4_pstorerft_rr : HInst<
23454 (outs),
23455 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
23456 "if ($Pv4) memh($Rs32+$Ru32<<#$Ii) = $Rt32.h",
23457 tc_1fe4ab69, TypeST>, Enc_6339d5, AddrModeRel {
23458 let Inst{31-21} = 0b00110100011;
23459 let isPredicated = 1;
23460 let addrMode = BaseRegOffset;
23461 let accessSize = HalfWordAccess;
23462 let mayStore = 1;
23463 let BaseOpcode = "S4_storerf_rr";
23464 let CextOpcode = "S2_storerf";
23465 let InputType = "reg";
23466 }
23467 def S4_pstorerftnew_abs : HInst<
23468 (outs),
23469 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
23470 "if ($Pv4.new) memh(#$Ii) = $Rt32.h",
23471 tc_bb07f2c5, TypeST>, Enc_1cf4ca, AddrModeRel {
23472 let Inst{2-2} = 0b0;
23473 let Inst{7-7} = 0b1;
23474 let Inst{13-13} = 0b1;
23475 let Inst{31-18} = 0b10101111011000;
23476 let isPredicated = 1;
23477 let addrMode = Absolute;
23478 let accessSize = HalfWordAccess;
23479 let isPredicatedNew = 1;
23480 let isExtended = 1;
23481 let mayStore = 1;
23482 let BaseOpcode = "S2_storerfabs";
23483 let CextOpcode = "S2_storerf";
23484 let DecoderNamespace = "MustExtend";
23485 let isExtendable = 1;
23486 let opExtendable = 1;
23487 let isExtentSigned = 0;
23488 let opExtentBits = 6;
23489 let opExtentAlign = 0;
23490 }
23491 def S4_pstorerftnew_io : HInst<
23492 (outs),
23493 (ins PredRegs:$Pv4, IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Rt32),
23494 "if ($Pv4.new) memh($Rs32+#$Ii) = $Rt32.h",
23495 tc_a2b365d2, TypeV2LDST>, Enc_e8c45e, AddrModeRel {
23496 let Inst{2-2} = 0b0;
23497 let Inst{31-21} = 0b01000010011;
23498 let isPredicated = 1;
23499 let addrMode = BaseImmOffset;
23500 let accessSize = HalfWordAccess;
23501 let isPredicatedNew = 1;
23502 let mayStore = 1;
23503 let BaseOpcode = "S2_storerf_io";
23504 let CextOpcode = "S2_storerf";
23505 let InputType = "imm";
23506 let isExtendable = 1;
23507 let opExtendable = 2;
23508 let isExtentSigned = 0;
23509 let opExtentBits = 7;
23510 let opExtentAlign = 1;
23511 }
23512 def S4_pstorerftnew_rr : HInst<
23513 (outs),
23514 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
23515 "if ($Pv4.new) memh($Rs32+$Ru32<<#$Ii) = $Rt32.h",
23516 tc_8e82e8ca, TypeST>, Enc_6339d5, AddrModeRel {
23517 let Inst{31-21} = 0b00110110011;
23518 let isPredicated = 1;
23519 let addrMode = BaseRegOffset;
23520 let accessSize = HalfWordAccess;
23521 let isPredicatedNew = 1;
23522 let mayStore = 1;
23523 let BaseOpcode = "S4_storerf_rr";
23524 let CextOpcode = "S2_storerf";
23525 let InputType = "reg";
23526 }
23527 def S4_pstorerftnew_zomap : HInst<
23528 (outs),
23529 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
23530 "if ($Pv4.new) memh($Rs32) = $Rt32.h",
23531 tc_a2b365d2, TypeMAPPING> {
23532 let isPseudo = 1;
23533 let isCodeGenOnly = 1;
23534 }
23535 def S4_pstorerhf_abs : HInst<
23536 (outs),
23537 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
23538 "if (!$Pv4) memh(#$Ii) = $Rt32",
23539 tc_ba9255a6, TypeST>, Enc_1cf4ca, AddrModeRel {
23540 let Inst{2-2} = 0b1;
23541 let Inst{7-7} = 0b1;
23542 let Inst{13-13} = 0b0;
23543 let Inst{31-18} = 0b10101111010000;
23544 let isPredicated = 1;
23545 let isPredicatedFalse = 1;
23546 let addrMode = Absolute;
23547 let accessSize = HalfWordAccess;
23548 let isExtended = 1;
23549 let mayStore = 1;
23550 let BaseOpcode = "S2_storerhabs";
23551 let CextOpcode = "S2_storerh";
23552 let isNVStorable = 1;
23553 let DecoderNamespace = "MustExtend";
23554 let isExtendable = 1;
23555 let opExtendable = 1;
23556 let isExtentSigned = 0;
23557 let opExtentBits = 6;
23558 let opExtentAlign = 0;
23559 }
23560 def S4_pstorerhf_rr : HInst<
23561 (outs),
23562 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
23563 "if (!$Pv4) memh($Rs32+$Ru32<<#$Ii) = $Rt32",
23564 tc_1fe4ab69, TypeST>, Enc_6339d5, AddrModeRel {
23565 let Inst{31-21} = 0b00110101010;
23566 let isPredicated = 1;
23567 let isPredicatedFalse = 1;
23568 let addrMode = BaseRegOffset;
23569 let accessSize = HalfWordAccess;
23570 let mayStore = 1;
23571 let BaseOpcode = "S2_storerh_rr";
23572 let CextOpcode = "S2_storerh";
23573 let InputType = "reg";
23574 let isNVStorable = 1;
23575 }
23576 def S4_pstorerhfnew_abs : HInst<
23577 (outs),
23578 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
23579 "if (!$Pv4.new) memh(#$Ii) = $Rt32",
23580 tc_bb07f2c5, TypeST>, Enc_1cf4ca, AddrModeRel {
23581 let Inst{2-2} = 0b1;
23582 let Inst{7-7} = 0b1;
23583 let Inst{13-13} = 0b1;
23584 let Inst{31-18} = 0b10101111010000;
23585 let isPredicated = 1;
23586 let isPredicatedFalse = 1;
23587 let addrMode = Absolute;
23588 let accessSize = HalfWordAccess;
23589 let isPredicatedNew = 1;
23590 let isExtended = 1;
23591 let mayStore = 1;
23592 let BaseOpcode = "S2_storerhabs";
23593 let CextOpcode = "S2_storerh";
23594 let isNVStorable = 1;
23595 let DecoderNamespace = "MustExtend";
23596 let isExtendable = 1;
23597 let opExtendable = 1;
23598 let isExtentSigned = 0;
23599 let opExtentBits = 6;
23600 let opExtentAlign = 0;
23601 }
23602 def S4_pstorerhfnew_io : HInst<
23603 (outs),
23604 (ins PredRegs:$Pv4, IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Rt32),
23605 "if (!$Pv4.new) memh($Rs32+#$Ii) = $Rt32",
23606 tc_a2b365d2, TypeV2LDST>, Enc_e8c45e, AddrModeRel {
23607 let Inst{2-2} = 0b0;
23608 let Inst{31-21} = 0b01000110010;
23609 let isPredicated = 1;
23610 let isPredicatedFalse = 1;
23611 let addrMode = BaseImmOffset;
23612 let accessSize = HalfWordAccess;
23613 let isPredicatedNew = 1;
23614 let mayStore = 1;
23615 let BaseOpcode = "S2_storerh_io";
23616 let CextOpcode = "S2_storerh";
23617 let InputType = "imm";
23618 let isNVStorable = 1;
23619 let isExtendable = 1;
23620 let opExtendable = 2;
23621 let isExtentSigned = 0;
23622 let opExtentBits = 7;
23623 let opExtentAlign = 1;
23624 }
23625 def S4_pstorerhfnew_rr : HInst<
23626 (outs),
23627 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
23628 "if (!$Pv4.new) memh($Rs32+$Ru32<<#$Ii) = $Rt32",
23629 tc_8e82e8ca, TypeST>, Enc_6339d5, AddrModeRel {
23630 let Inst{31-21} = 0b00110111010;
23631 let isPredicated = 1;
23632 let isPredicatedFalse = 1;
23633 let addrMode = BaseRegOffset;
23634 let accessSize = HalfWordAccess;
23635 let isPredicatedNew = 1;
23636 let mayStore = 1;
23637 let BaseOpcode = "S2_storerh_rr";
23638 let CextOpcode = "S2_storerh";
23639 let InputType = "reg";
23640 let isNVStorable = 1;
23641 }
23642 def S4_pstorerhfnew_zomap : HInst<
23643 (outs),
23644 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
23645 "if (!$Pv4.new) memh($Rs32) = $Rt32",
23646 tc_a2b365d2, TypeMAPPING> {
23647 let isPseudo = 1;
23648 let isCodeGenOnly = 1;
23649 }
23650 def S4_pstorerhnewf_abs : HInst<
23651 (outs),
23652 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Nt8),
23653 "if (!$Pv4) memh(#$Ii) = $Nt8.new",
23654 tc_cfa0e29b, TypeST>, Enc_44215c, AddrModeRel {
23655 let Inst{2-2} = 0b1;
23656 let Inst{7-7} = 0b1;
23657 let Inst{13-11} = 0b001;
23658 let Inst{31-18} = 0b10101111101000;
23659 let isPredicated = 1;
23660 let isPredicatedFalse = 1;
23661 let addrMode = Absolute;
23662 let accessSize = HalfWordAccess;
23663 let isNVStore = 1;
23664 let isNewValue = 1;
23665 let isExtended = 1;
23666 let isRestrictNoSlot1Store = 1;
23667 let mayStore = 1;
23668 let BaseOpcode = "S2_storerhabs";
23669 let CextOpcode = "S2_storerh";
23670 let DecoderNamespace = "MustExtend";
23671 let isExtendable = 1;
23672 let opExtendable = 1;
23673 let isExtentSigned = 0;
23674 let opExtentBits = 6;
23675 let opExtentAlign = 0;
23676 let opNewValue = 2;
23677 }
23678 def S4_pstorerhnewf_rr : HInst<
23679 (outs),
23680 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
23681 "if (!$Pv4) memh($Rs32+$Ru32<<#$Ii) = $Nt8.new",
23682 tc_0a6c20ae, TypeST>, Enc_47ee5e, AddrModeRel {
23683 let Inst{4-3} = 0b01;
23684 let Inst{31-21} = 0b00110101101;
23685 let isPredicated = 1;
23686 let isPredicatedFalse = 1;
23687 let addrMode = BaseRegOffset;
23688 let accessSize = HalfWordAccess;
23689 let isNVStore = 1;
23690 let isNewValue = 1;
23691 let isRestrictNoSlot1Store = 1;
23692 let mayStore = 1;
23693 let BaseOpcode = "S2_storerh_rr";
23694 let CextOpcode = "S2_storerh";
23695 let InputType = "reg";
23696 let opNewValue = 4;
23697 }
23698 def S4_pstorerhnewfnew_abs : HInst<
23699 (outs),
23700 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Nt8),
23701 "if (!$Pv4.new) memh(#$Ii) = $Nt8.new",
23702 tc_0fac1eb8, TypeST>, Enc_44215c, AddrModeRel {
23703 let Inst{2-2} = 0b1;
23704 let Inst{7-7} = 0b1;
23705 let Inst{13-11} = 0b101;
23706 let Inst{31-18} = 0b10101111101000;
23707 let isPredicated = 1;
23708 let isPredicatedFalse = 1;
23709 let addrMode = Absolute;
23710 let accessSize = HalfWordAccess;
23711 let isNVStore = 1;
23712 let isPredicatedNew = 1;
23713 let isNewValue = 1;
23714 let isExtended = 1;
23715 let isRestrictNoSlot1Store = 1;
23716 let mayStore = 1;
23717 let BaseOpcode = "S2_storerhabs";
23718 let CextOpcode = "S2_storerh";
23719 let DecoderNamespace = "MustExtend";
23720 let isExtendable = 1;
23721 let opExtendable = 1;
23722 let isExtentSigned = 0;
23723 let opExtentBits = 6;
23724 let opExtentAlign = 0;
23725 let opNewValue = 2;
23726 }
23727 def S4_pstorerhnewfnew_io : HInst<
23728 (outs),
23729 (ins PredRegs:$Pv4, IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Nt8),
23730 "if (!$Pv4.new) memh($Rs32+#$Ii) = $Nt8.new",
23731 tc_92240447, TypeV2LDST>, Enc_f44229, AddrModeRel {
23732 let Inst{2-2} = 0b0;
23733 let Inst{12-11} = 0b01;
23734 let Inst{31-21} = 0b01000110101;
23735 let isPredicated = 1;
23736 let isPredicatedFalse = 1;
23737 let addrMode = BaseImmOffset;
23738 let accessSize = HalfWordAccess;
23739 let isNVStore = 1;
23740 let isPredicatedNew = 1;
23741 let isNewValue = 1;
23742 let isRestrictNoSlot1Store = 1;
23743 let mayStore = 1;
23744 let BaseOpcode = "S2_storerh_io";
23745 let CextOpcode = "S2_storerh";
23746 let InputType = "imm";
23747 let isExtendable = 1;
23748 let opExtendable = 2;
23749 let isExtentSigned = 0;
23750 let opExtentBits = 7;
23751 let opExtentAlign = 1;
23752 let opNewValue = 3;
23753 }
23754 def S4_pstorerhnewfnew_rr : HInst<
23755 (outs),
23756 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
23757 "if (!$Pv4.new) memh($Rs32+$Ru32<<#$Ii) = $Nt8.new",
23758 tc_829d8a86, TypeST>, Enc_47ee5e, AddrModeRel {
23759 let Inst{4-3} = 0b01;
23760 let Inst{31-21} = 0b00110111101;
23761 let isPredicated = 1;
23762 let isPredicatedFalse = 1;
23763 let addrMode = BaseRegOffset;
23764 let accessSize = HalfWordAccess;
23765 let isNVStore = 1;
23766 let isPredicatedNew = 1;
23767 let isNewValue = 1;
23768 let isRestrictNoSlot1Store = 1;
23769 let mayStore = 1;
23770 let BaseOpcode = "S2_storerh_rr";
23771 let CextOpcode = "S2_storerh";
23772 let InputType = "reg";
23773 let opNewValue = 4;
23774 }
23775 def S4_pstorerhnewfnew_zomap : HInst<
23776 (outs),
23777 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Nt8),
23778 "if (!$Pv4.new) memh($Rs32) = $Nt8.new",
23779 tc_92240447, TypeMAPPING> {
23780 let isPseudo = 1;
23781 let isCodeGenOnly = 1;
23782 let opNewValue = 2;
23783 }
23784 def S4_pstorerhnewt_abs : HInst<
23785 (outs),
23786 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Nt8),
23787 "if ($Pv4) memh(#$Ii) = $Nt8.new",
23788 tc_cfa0e29b, TypeST>, Enc_44215c, AddrModeRel {
23789 let Inst{2-2} = 0b0;
23790 let Inst{7-7} = 0b1;
23791 let Inst{13-11} = 0b001;
23792 let Inst{31-18} = 0b10101111101000;
23793 let isPredicated = 1;
23794 let addrMode = Absolute;
23795 let accessSize = HalfWordAccess;
23796 let isNVStore = 1;
23797 let isNewValue = 1;
23798 let isExtended = 1;
23799 let isRestrictNoSlot1Store = 1;
23800 let mayStore = 1;
23801 let BaseOpcode = "S2_storerhabs";
23802 let CextOpcode = "S2_storerh";
23803 let DecoderNamespace = "MustExtend";
23804 let isExtendable = 1;
23805 let opExtendable = 1;
23806 let isExtentSigned = 0;
23807 let opExtentBits = 6;
23808 let opExtentAlign = 0;
23809 let opNewValue = 2;
23810 }
23811 def S4_pstorerhnewt_rr : HInst<
23812 (outs),
23813 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
23814 "if ($Pv4) memh($Rs32+$Ru32<<#$Ii) = $Nt8.new",
23815 tc_0a6c20ae, TypeST>, Enc_47ee5e, AddrModeRel {
23816 let Inst{4-3} = 0b01;
23817 let Inst{31-21} = 0b00110100101;
23818 let isPredicated = 1;
23819 let addrMode = BaseRegOffset;
23820 let accessSize = HalfWordAccess;
23821 let isNVStore = 1;
23822 let isNewValue = 1;
23823 let isRestrictNoSlot1Store = 1;
23824 let mayStore = 1;
23825 let BaseOpcode = "S2_storerh_rr";
23826 let CextOpcode = "S2_storerh";
23827 let InputType = "reg";
23828 let opNewValue = 4;
23829 }
23830 def S4_pstorerhnewtnew_abs : HInst<
23831 (outs),
23832 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Nt8),
23833 "if ($Pv4.new) memh(#$Ii) = $Nt8.new",
23834 tc_0fac1eb8, TypeST>, Enc_44215c, AddrModeRel {
23835 let Inst{2-2} = 0b0;
23836 let Inst{7-7} = 0b1;
23837 let Inst{13-11} = 0b101;
23838 let Inst{31-18} = 0b10101111101000;
23839 let isPredicated = 1;
23840 let addrMode = Absolute;
23841 let accessSize = HalfWordAccess;
23842 let isNVStore = 1;
23843 let isPredicatedNew = 1;
23844 let isNewValue = 1;
23845 let isExtended = 1;
23846 let isRestrictNoSlot1Store = 1;
23847 let mayStore = 1;
23848 let BaseOpcode = "S2_storerhabs";
23849 let CextOpcode = "S2_storerh";
23850 let DecoderNamespace = "MustExtend";
23851 let isExtendable = 1;
23852 let opExtendable = 1;
23853 let isExtentSigned = 0;
23854 let opExtentBits = 6;
23855 let opExtentAlign = 0;
23856 let opNewValue = 2;
23857 }
23858 def S4_pstorerhnewtnew_io : HInst<
23859 (outs),
23860 (ins PredRegs:$Pv4, IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Nt8),
23861 "if ($Pv4.new) memh($Rs32+#$Ii) = $Nt8.new",
23862 tc_92240447, TypeV2LDST>, Enc_f44229, AddrModeRel {
23863 let Inst{2-2} = 0b0;
23864 let Inst{12-11} = 0b01;
23865 let Inst{31-21} = 0b01000010101;
23866 let isPredicated = 1;
23867 let addrMode = BaseImmOffset;
23868 let accessSize = HalfWordAccess;
23869 let isNVStore = 1;
23870 let isPredicatedNew = 1;
23871 let isNewValue = 1;
23872 let isRestrictNoSlot1Store = 1;
23873 let mayStore = 1;
23874 let BaseOpcode = "S2_storerh_io";
23875 let CextOpcode = "S2_storerh";
23876 let InputType = "imm";
23877 let isExtendable = 1;
23878 let opExtendable = 2;
23879 let isExtentSigned = 0;
23880 let opExtentBits = 7;
23881 let opExtentAlign = 1;
23882 let opNewValue = 3;
23883 }
23884 def S4_pstorerhnewtnew_rr : HInst<
23885 (outs),
23886 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
23887 "if ($Pv4.new) memh($Rs32+$Ru32<<#$Ii) = $Nt8.new",
23888 tc_829d8a86, TypeST>, Enc_47ee5e, AddrModeRel {
23889 let Inst{4-3} = 0b01;
23890 let Inst{31-21} = 0b00110110101;
23891 let isPredicated = 1;
23892 let addrMode = BaseRegOffset;
23893 let accessSize = HalfWordAccess;
23894 let isNVStore = 1;
23895 let isPredicatedNew = 1;
23896 let isNewValue = 1;
23897 let isRestrictNoSlot1Store = 1;
23898 let mayStore = 1;
23899 let BaseOpcode = "S2_storerh_rr";
23900 let CextOpcode = "S2_storerh";
23901 let InputType = "reg";
23902 let opNewValue = 4;
23903 }
23904 def S4_pstorerhnewtnew_zomap : HInst<
23905 (outs),
23906 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Nt8),
23907 "if ($Pv4.new) memh($Rs32) = $Nt8.new",
23908 tc_92240447, TypeMAPPING> {
23909 let isPseudo = 1;
23910 let isCodeGenOnly = 1;
23911 let opNewValue = 2;
23912 }
23913 def S4_pstorerht_abs : HInst<
23914 (outs),
23915 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
23916 "if ($Pv4) memh(#$Ii) = $Rt32",
23917 tc_ba9255a6, TypeST>, Enc_1cf4ca, AddrModeRel {
23918 let Inst{2-2} = 0b0;
23919 let Inst{7-7} = 0b1;
23920 let Inst{13-13} = 0b0;
23921 let Inst{31-18} = 0b10101111010000;
23922 let isPredicated = 1;
23923 let addrMode = Absolute;
23924 let accessSize = HalfWordAccess;
23925 let isExtended = 1;
23926 let mayStore = 1;
23927 let BaseOpcode = "S2_storerhabs";
23928 let CextOpcode = "S2_storerh";
23929 let isNVStorable = 1;
23930 let DecoderNamespace = "MustExtend";
23931 let isExtendable = 1;
23932 let opExtendable = 1;
23933 let isExtentSigned = 0;
23934 let opExtentBits = 6;
23935 let opExtentAlign = 0;
23936 }
23937 def S4_pstorerht_rr : HInst<
23938 (outs),
23939 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
23940 "if ($Pv4) memh($Rs32+$Ru32<<#$Ii) = $Rt32",
23941 tc_1fe4ab69, TypeST>, Enc_6339d5, AddrModeRel {
23942 let Inst{31-21} = 0b00110100010;
23943 let isPredicated = 1;
23944 let addrMode = BaseRegOffset;
23945 let accessSize = HalfWordAccess;
23946 let mayStore = 1;
23947 let BaseOpcode = "S2_storerh_rr";
23948 let CextOpcode = "S2_storerh";
23949 let InputType = "reg";
23950 let isNVStorable = 1;
23951 }
23952 def S4_pstorerhtnew_abs : HInst<
23953 (outs),
23954 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
23955 "if ($Pv4.new) memh(#$Ii) = $Rt32",
23956 tc_bb07f2c5, TypeST>, Enc_1cf4ca, AddrModeRel {
23957 let Inst{2-2} = 0b0;
23958 let Inst{7-7} = 0b1;
23959 let Inst{13-13} = 0b1;
23960 let Inst{31-18} = 0b10101111010000;
23961 let isPredicated = 1;
23962 let addrMode = Absolute;
23963 let accessSize = HalfWordAccess;
23964 let isPredicatedNew = 1;
23965 let isExtended = 1;
23966 let mayStore = 1;
23967 let BaseOpcode = "S2_storerhabs";
23968 let CextOpcode = "S2_storerh";
23969 let isNVStorable = 1;
23970 let DecoderNamespace = "MustExtend";
23971 let isExtendable = 1;
23972 let opExtendable = 1;
23973 let isExtentSigned = 0;
23974 let opExtentBits = 6;
23975 let opExtentAlign = 0;
23976 }
23977 def S4_pstorerhtnew_io : HInst<
23978 (outs),
23979 (ins PredRegs:$Pv4, IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Rt32),
23980 "if ($Pv4.new) memh($Rs32+#$Ii) = $Rt32",
23981 tc_a2b365d2, TypeV2LDST>, Enc_e8c45e, AddrModeRel {
23982 let Inst{2-2} = 0b0;
23983 let Inst{31-21} = 0b01000010010;
23984 let isPredicated = 1;
23985 let addrMode = BaseImmOffset;
23986 let accessSize = HalfWordAccess;
23987 let isPredicatedNew = 1;
23988 let mayStore = 1;
23989 let BaseOpcode = "S2_storerh_io";
23990 let CextOpcode = "S2_storerh";
23991 let InputType = "imm";
23992 let isNVStorable = 1;
23993 let isExtendable = 1;
23994 let opExtendable = 2;
23995 let isExtentSigned = 0;
23996 let opExtentBits = 7;
23997 let opExtentAlign = 1;
23998 }
23999 def S4_pstorerhtnew_rr : HInst<
24000 (outs),
24001 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
24002 "if ($Pv4.new) memh($Rs32+$Ru32<<#$Ii) = $Rt32",
24003 tc_8e82e8ca, TypeST>, Enc_6339d5, AddrModeRel {
24004 let Inst{31-21} = 0b00110110010;
24005 let isPredicated = 1;
24006 let addrMode = BaseRegOffset;
24007 let accessSize = HalfWordAccess;
24008 let isPredicatedNew = 1;
24009 let mayStore = 1;
24010 let BaseOpcode = "S2_storerh_rr";
24011 let CextOpcode = "S2_storerh";
24012 let InputType = "reg";
24013 let isNVStorable = 1;
24014 }
24015 def S4_pstorerhtnew_zomap : HInst<
24016 (outs),
24017 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
24018 "if ($Pv4.new) memh($Rs32) = $Rt32",
24019 tc_a2b365d2, TypeMAPPING> {
24020 let isPseudo = 1;
24021 let isCodeGenOnly = 1;
24022 }
24023 def S4_pstorerif_abs : HInst<
24024 (outs),
24025 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
24026 "if (!$Pv4) memw(#$Ii) = $Rt32",
24027 tc_ba9255a6, TypeST>, Enc_1cf4ca, AddrModeRel {
24028 let Inst{2-2} = 0b1;
24029 let Inst{7-7} = 0b1;
24030 let Inst{13-13} = 0b0;
24031 let Inst{31-18} = 0b10101111100000;
24032 let isPredicated = 1;
24033 let isPredicatedFalse = 1;
24034 let addrMode = Absolute;
24035 let accessSize = WordAccess;
24036 let isExtended = 1;
24037 let mayStore = 1;
24038 let BaseOpcode = "S2_storeriabs";
24039 let CextOpcode = "S2_storeri";
24040 let isNVStorable = 1;
24041 let DecoderNamespace = "MustExtend";
24042 let isExtendable = 1;
24043 let opExtendable = 1;
24044 let isExtentSigned = 0;
24045 let opExtentBits = 6;
24046 let opExtentAlign = 0;
24047 }
24048 def S4_pstorerif_rr : HInst<
24049 (outs),
24050 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
24051 "if (!$Pv4) memw($Rs32+$Ru32<<#$Ii) = $Rt32",
24052 tc_1fe4ab69, TypeST>, Enc_6339d5, AddrModeRel {
24053 let Inst{31-21} = 0b00110101100;
24054 let isPredicated = 1;
24055 let isPredicatedFalse = 1;
24056 let addrMode = BaseRegOffset;
24057 let accessSize = WordAccess;
24058 let mayStore = 1;
24059 let BaseOpcode = "S2_storeri_rr";
24060 let CextOpcode = "S2_storeri";
24061 let InputType = "reg";
24062 let isNVStorable = 1;
24063 }
24064 def S4_pstorerifnew_abs : HInst<
24065 (outs),
24066 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
24067 "if (!$Pv4.new) memw(#$Ii) = $Rt32",
24068 tc_bb07f2c5, TypeST>, Enc_1cf4ca, AddrModeRel {
24069 let Inst{2-2} = 0b1;
24070 let Inst{7-7} = 0b1;
24071 let Inst{13-13} = 0b1;
24072 let Inst{31-18} = 0b10101111100000;
24073 let isPredicated = 1;
24074 let isPredicatedFalse = 1;
24075 let addrMode = Absolute;
24076 let accessSize = WordAccess;
24077 let isPredicatedNew = 1;
24078 let isExtended = 1;
24079 let mayStore = 1;
24080 let BaseOpcode = "S2_storeriabs";
24081 let CextOpcode = "S2_storeri";
24082 let isNVStorable = 1;
24083 let DecoderNamespace = "MustExtend";
24084 let isExtendable = 1;
24085 let opExtendable = 1;
24086 let isExtentSigned = 0;
24087 let opExtentBits = 6;
24088 let opExtentAlign = 0;
24089 }
24090 def S4_pstorerifnew_io : HInst<
24091 (outs),
24092 (ins PredRegs:$Pv4, IntRegs:$Rs32, u30_2Imm:$Ii, IntRegs:$Rt32),
24093 "if (!$Pv4.new) memw($Rs32+#$Ii) = $Rt32",
24094 tc_a2b365d2, TypeV2LDST>, Enc_397f23, AddrModeRel {
24095 let Inst{2-2} = 0b0;
24096 let Inst{31-21} = 0b01000110100;
24097 let isPredicated = 1;
24098 let isPredicatedFalse = 1;
24099 let addrMode = BaseImmOffset;
24100 let accessSize = WordAccess;
24101 let isPredicatedNew = 1;
24102 let mayStore = 1;
24103 let BaseOpcode = "S2_storeri_io";
24104 let CextOpcode = "S2_storeri";
24105 let InputType = "imm";
24106 let isNVStorable = 1;
24107 let isExtendable = 1;
24108 let opExtendable = 2;
24109 let isExtentSigned = 0;
24110 let opExtentBits = 8;
24111 let opExtentAlign = 2;
24112 }
24113 def S4_pstorerifnew_rr : HInst<
24114 (outs),
24115 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
24116 "if (!$Pv4.new) memw($Rs32+$Ru32<<#$Ii) = $Rt32",
24117 tc_8e82e8ca, TypeST>, Enc_6339d5, AddrModeRel {
24118 let Inst{31-21} = 0b00110111100;
24119 let isPredicated = 1;
24120 let isPredicatedFalse = 1;
24121 let addrMode = BaseRegOffset;
24122 let accessSize = WordAccess;
24123 let isPredicatedNew = 1;
24124 let mayStore = 1;
24125 let BaseOpcode = "S2_storeri_rr";
24126 let CextOpcode = "S2_storeri";
24127 let InputType = "reg";
24128 let isNVStorable = 1;
24129 }
24130 def S4_pstorerifnew_zomap : HInst<
24131 (outs),
24132 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
24133 "if (!$Pv4.new) memw($Rs32) = $Rt32",
24134 tc_a2b365d2, TypeMAPPING> {
24135 let isPseudo = 1;
24136 let isCodeGenOnly = 1;
24137 }
24138 def S4_pstorerinewf_abs : HInst<
24139 (outs),
24140 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Nt8),
24141 "if (!$Pv4) memw(#$Ii) = $Nt8.new",
24142 tc_cfa0e29b, TypeST>, Enc_44215c, AddrModeRel {
24143 let Inst{2-2} = 0b1;
24144 let Inst{7-7} = 0b1;
24145 let Inst{13-11} = 0b010;
24146 let Inst{31-18} = 0b10101111101000;
24147 let isPredicated = 1;
24148 let isPredicatedFalse = 1;
24149 let addrMode = Absolute;
24150 let accessSize = WordAccess;
24151 let isNVStore = 1;
24152 let isNewValue = 1;
24153 let isExtended = 1;
24154 let isRestrictNoSlot1Store = 1;
24155 let mayStore = 1;
24156 let BaseOpcode = "S2_storeriabs";
24157 let CextOpcode = "S2_storeri";
24158 let DecoderNamespace = "MustExtend";
24159 let isExtendable = 1;
24160 let opExtendable = 1;
24161 let isExtentSigned = 0;
24162 let opExtentBits = 6;
24163 let opExtentAlign = 0;
24164 let opNewValue = 2;
24165 }
24166 def S4_pstorerinewf_rr : HInst<
24167 (outs),
24168 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
24169 "if (!$Pv4) memw($Rs32+$Ru32<<#$Ii) = $Nt8.new",
24170 tc_0a6c20ae, TypeST>, Enc_47ee5e, AddrModeRel {
24171 let Inst{4-3} = 0b10;
24172 let Inst{31-21} = 0b00110101101;
24173 let isPredicated = 1;
24174 let isPredicatedFalse = 1;
24175 let addrMode = BaseRegOffset;
24176 let accessSize = WordAccess;
24177 let isNVStore = 1;
24178 let isNewValue = 1;
24179 let isRestrictNoSlot1Store = 1;
24180 let mayStore = 1;
24181 let BaseOpcode = "S2_storeri_rr";
24182 let CextOpcode = "S2_storeri";
24183 let InputType = "reg";
24184 let opNewValue = 4;
24185 }
24186 def S4_pstorerinewfnew_abs : HInst<
24187 (outs),
24188 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Nt8),
24189 "if (!$Pv4.new) memw(#$Ii) = $Nt8.new",
24190 tc_0fac1eb8, TypeST>, Enc_44215c, AddrModeRel {
24191 let Inst{2-2} = 0b1;
24192 let Inst{7-7} = 0b1;
24193 let Inst{13-11} = 0b110;
24194 let Inst{31-18} = 0b10101111101000;
24195 let isPredicated = 1;
24196 let isPredicatedFalse = 1;
24197 let addrMode = Absolute;
24198 let accessSize = WordAccess;
24199 let isNVStore = 1;
24200 let isPredicatedNew = 1;
24201 let isNewValue = 1;
24202 let isExtended = 1;
24203 let isRestrictNoSlot1Store = 1;
24204 let mayStore = 1;
24205 let BaseOpcode = "S2_storeriabs";
24206 let CextOpcode = "S2_storeri";
24207 let DecoderNamespace = "MustExtend";
24208 let isExtendable = 1;
24209 let opExtendable = 1;
24210 let isExtentSigned = 0;
24211 let opExtentBits = 6;
24212 let opExtentAlign = 0;
24213 let opNewValue = 2;
24214 }
24215 def S4_pstorerinewfnew_io : HInst<
24216 (outs),
24217 (ins PredRegs:$Pv4, IntRegs:$Rs32, u30_2Imm:$Ii, IntRegs:$Nt8),
24218 "if (!$Pv4.new) memw($Rs32+#$Ii) = $Nt8.new",
24219 tc_92240447, TypeV2LDST>, Enc_8dbdfe, AddrModeRel {
24220 let Inst{2-2} = 0b0;
24221 let Inst{12-11} = 0b10;
24222 let Inst{31-21} = 0b01000110101;
24223 let isPredicated = 1;
24224 let isPredicatedFalse = 1;
24225 let addrMode = BaseImmOffset;
24226 let accessSize = WordAccess;
24227 let isNVStore = 1;
24228 let isPredicatedNew = 1;
24229 let isNewValue = 1;
24230 let isRestrictNoSlot1Store = 1;
24231 let mayStore = 1;
24232 let BaseOpcode = "S2_storeri_io";
24233 let CextOpcode = "S2_storeri";
24234 let InputType = "imm";
24235 let isExtendable = 1;
24236 let opExtendable = 2;
24237 let isExtentSigned = 0;
24238 let opExtentBits = 8;
24239 let opExtentAlign = 2;
24240 let opNewValue = 3;
24241 }
24242 def S4_pstorerinewfnew_rr : HInst<
24243 (outs),
24244 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
24245 "if (!$Pv4.new) memw($Rs32+$Ru32<<#$Ii) = $Nt8.new",
24246 tc_829d8a86, TypeST>, Enc_47ee5e, AddrModeRel {
24247 let Inst{4-3} = 0b10;
24248 let Inst{31-21} = 0b00110111101;
24249 let isPredicated = 1;
24250 let isPredicatedFalse = 1;
24251 let addrMode = BaseRegOffset;
24252 let accessSize = WordAccess;
24253 let isNVStore = 1;
24254 let isPredicatedNew = 1;
24255 let isNewValue = 1;
24256 let isRestrictNoSlot1Store = 1;
24257 let mayStore = 1;
24258 let BaseOpcode = "S2_storeri_rr";
24259 let CextOpcode = "S2_storeri";
24260 let InputType = "reg";
24261 let opNewValue = 4;
24262 }
24263 def S4_pstorerinewfnew_zomap : HInst<
24264 (outs),
24265 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Nt8),
24266 "if (!$Pv4.new) memw($Rs32) = $Nt8.new",
24267 tc_92240447, TypeMAPPING> {
24268 let isPseudo = 1;
24269 let isCodeGenOnly = 1;
24270 let opNewValue = 2;
24271 }
24272 def S4_pstorerinewt_abs : HInst<
24273 (outs),
24274 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Nt8),
24275 "if ($Pv4) memw(#$Ii) = $Nt8.new",
24276 tc_cfa0e29b, TypeST>, Enc_44215c, AddrModeRel {
24277 let Inst{2-2} = 0b0;
24278 let Inst{7-7} = 0b1;
24279 let Inst{13-11} = 0b010;
24280 let Inst{31-18} = 0b10101111101000;
24281 let isPredicated = 1;
24282 let addrMode = Absolute;
24283 let accessSize = WordAccess;
24284 let isNVStore = 1;
24285 let isNewValue = 1;
24286 let isExtended = 1;
24287 let isRestrictNoSlot1Store = 1;
24288 let mayStore = 1;
24289 let BaseOpcode = "S2_storeriabs";
24290 let CextOpcode = "S2_storeri";
24291 let DecoderNamespace = "MustExtend";
24292 let isExtendable = 1;
24293 let opExtendable = 1;
24294 let isExtentSigned = 0;
24295 let opExtentBits = 6;
24296 let opExtentAlign = 0;
24297 let opNewValue = 2;
24298 }
24299 def S4_pstorerinewt_rr : HInst<
24300 (outs),
24301 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
24302 "if ($Pv4) memw($Rs32+$Ru32<<#$Ii) = $Nt8.new",
24303 tc_0a6c20ae, TypeST>, Enc_47ee5e, AddrModeRel {
24304 let Inst{4-3} = 0b10;
24305 let Inst{31-21} = 0b00110100101;
24306 let isPredicated = 1;
24307 let addrMode = BaseRegOffset;
24308 let accessSize = WordAccess;
24309 let isNVStore = 1;
24310 let isNewValue = 1;
24311 let isRestrictNoSlot1Store = 1;
24312 let mayStore = 1;
24313 let BaseOpcode = "S2_storeri_rr";
24314 let CextOpcode = "S2_storeri";
24315 let InputType = "reg";
24316 let opNewValue = 4;
24317 }
24318 def S4_pstorerinewtnew_abs : HInst<
24319 (outs),
24320 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Nt8),
24321 "if ($Pv4.new) memw(#$Ii) = $Nt8.new",
24322 tc_0fac1eb8, TypeST>, Enc_44215c, AddrModeRel {
24323 let Inst{2-2} = 0b0;
24324 let Inst{7-7} = 0b1;
24325 let Inst{13-11} = 0b110;
24326 let Inst{31-18} = 0b10101111101000;
24327 let isPredicated = 1;
24328 let addrMode = Absolute;
24329 let accessSize = WordAccess;
24330 let isNVStore = 1;
24331 let isPredicatedNew = 1;
24332 let isNewValue = 1;
24333 let isExtended = 1;
24334 let isRestrictNoSlot1Store = 1;
24335 let mayStore = 1;
24336 let BaseOpcode = "S2_storeriabs";
24337 let CextOpcode = "S2_storeri";
24338 let DecoderNamespace = "MustExtend";
24339 let isExtendable = 1;
24340 let opExtendable = 1;
24341 let isExtentSigned = 0;
24342 let opExtentBits = 6;
24343 let opExtentAlign = 0;
24344 let opNewValue = 2;
24345 }
24346 def S4_pstorerinewtnew_io : HInst<
24347 (outs),
24348 (ins PredRegs:$Pv4, IntRegs:$Rs32, u30_2Imm:$Ii, IntRegs:$Nt8),
24349 "if ($Pv4.new) memw($Rs32+#$Ii) = $Nt8.new",
24350 tc_92240447, TypeV2LDST>, Enc_8dbdfe, AddrModeRel {
24351 let Inst{2-2} = 0b0;
24352 let Inst{12-11} = 0b10;
24353 let Inst{31-21} = 0b01000010101;
24354 let isPredicated = 1;
24355 let addrMode = BaseImmOffset;
24356 let accessSize = WordAccess;
24357 let isNVStore = 1;
24358 let isPredicatedNew = 1;
24359 let isNewValue = 1;
24360 let isRestrictNoSlot1Store = 1;
24361 let mayStore = 1;
24362 let BaseOpcode = "S2_storeri_io";
24363 let CextOpcode = "S2_storeri";
24364 let InputType = "imm";
24365 let isExtendable = 1;
24366 let opExtendable = 2;
24367 let isExtentSigned = 0;
24368 let opExtentBits = 8;
24369 let opExtentAlign = 2;
24370 let opNewValue = 3;
24371 }
24372 def S4_pstorerinewtnew_rr : HInst<
24373 (outs),
24374 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
24375 "if ($Pv4.new) memw($Rs32+$Ru32<<#$Ii) = $Nt8.new",
24376 tc_829d8a86, TypeST>, Enc_47ee5e, AddrModeRel {
24377 let Inst{4-3} = 0b10;
24378 let Inst{31-21} = 0b00110110101;
24379 let isPredicated = 1;
24380 let addrMode = BaseRegOffset;
24381 let accessSize = WordAccess;
24382 let isNVStore = 1;
24383 let isPredicatedNew = 1;
24384 let isNewValue = 1;
24385 let isRestrictNoSlot1Store = 1;
24386 let mayStore = 1;
24387 let BaseOpcode = "S2_storeri_rr";
24388 let CextOpcode = "S2_storeri";
24389 let InputType = "reg";
24390 let opNewValue = 4;
24391 }
24392 def S4_pstorerinewtnew_zomap : HInst<
24393 (outs),
24394 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Nt8),
24395 "if ($Pv4.new) memw($Rs32) = $Nt8.new",
24396 tc_92240447, TypeMAPPING> {
24397 let isPseudo = 1;
24398 let isCodeGenOnly = 1;
24399 let opNewValue = 2;
24400 }
24401 def S4_pstorerit_abs : HInst<
24402 (outs),
24403 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
24404 "if ($Pv4) memw(#$Ii) = $Rt32",
24405 tc_ba9255a6, TypeST>, Enc_1cf4ca, AddrModeRel {
24406 let Inst{2-2} = 0b0;
24407 let Inst{7-7} = 0b1;
24408 let Inst{13-13} = 0b0;
24409 let Inst{31-18} = 0b10101111100000;
24410 let isPredicated = 1;
24411 let addrMode = Absolute;
24412 let accessSize = WordAccess;
24413 let isExtended = 1;
24414 let mayStore = 1;
24415 let BaseOpcode = "S2_storeriabs";
24416 let CextOpcode = "S2_storeri";
24417 let isNVStorable = 1;
24418 let DecoderNamespace = "MustExtend";
24419 let isExtendable = 1;
24420 let opExtendable = 1;
24421 let isExtentSigned = 0;
24422 let opExtentBits = 6;
24423 let opExtentAlign = 0;
24424 }
24425 def S4_pstorerit_rr : HInst<
24426 (outs),
24427 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
24428 "if ($Pv4) memw($Rs32+$Ru32<<#$Ii) = $Rt32",
24429 tc_1fe4ab69, TypeST>, Enc_6339d5, AddrModeRel {
24430 let Inst{31-21} = 0b00110100100;
24431 let isPredicated = 1;
24432 let addrMode = BaseRegOffset;
24433 let accessSize = WordAccess;
24434 let mayStore = 1;
24435 let BaseOpcode = "S2_storeri_rr";
24436 let CextOpcode = "S2_storeri";
24437 let InputType = "reg";
24438 let isNVStorable = 1;
24439 }
24440 def S4_pstoreritnew_abs : HInst<
24441 (outs),
24442 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
24443 "if ($Pv4.new) memw(#$Ii) = $Rt32",
24444 tc_bb07f2c5, TypeST>, Enc_1cf4ca, AddrModeRel {
24445 let Inst{2-2} = 0b0;
24446 let Inst{7-7} = 0b1;
24447 let Inst{13-13} = 0b1;
24448 let Inst{31-18} = 0b10101111100000;
24449 let isPredicated = 1;
24450 let addrMode = Absolute;
24451 let accessSize = WordAccess;
24452 let isPredicatedNew = 1;
24453 let isExtended = 1;
24454 let mayStore = 1;
24455 let BaseOpcode = "S2_storeriabs";
24456 let CextOpcode = "S2_storeri";
24457 let isNVStorable = 1;
24458 let DecoderNamespace = "MustExtend";
24459 let isExtendable = 1;
24460 let opExtendable = 1;
24461 let isExtentSigned = 0;
24462 let opExtentBits = 6;
24463 let opExtentAlign = 0;
24464 }
24465 def S4_pstoreritnew_io : HInst<
24466 (outs),
24467 (ins PredRegs:$Pv4, IntRegs:$Rs32, u30_2Imm:$Ii, IntRegs:$Rt32),
24468 "if ($Pv4.new) memw($Rs32+#$Ii) = $Rt32",
24469 tc_a2b365d2, TypeV2LDST>, Enc_397f23, AddrModeRel {
24470 let Inst{2-2} = 0b0;
24471 let Inst{31-21} = 0b01000010100;
24472 let isPredicated = 1;
24473 let addrMode = BaseImmOffset;
24474 let accessSize = WordAccess;
24475 let isPredicatedNew = 1;
24476 let mayStore = 1;
24477 let BaseOpcode = "S2_storeri_io";
24478 let CextOpcode = "S2_storeri";
24479 let InputType = "imm";
24480 let isNVStorable = 1;
24481 let isExtendable = 1;
24482 let opExtendable = 2;
24483 let isExtentSigned = 0;
24484 let opExtentBits = 8;
24485 let opExtentAlign = 2;
24486 }
24487 def S4_pstoreritnew_rr : HInst<
24488 (outs),
24489 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
24490 "if ($Pv4.new) memw($Rs32+$Ru32<<#$Ii) = $Rt32",
24491 tc_8e82e8ca, TypeST>, Enc_6339d5, AddrModeRel {
24492 let Inst{31-21} = 0b00110110100;
24493 let isPredicated = 1;
24494 let addrMode = BaseRegOffset;
24495 let accessSize = WordAccess;
24496 let isPredicatedNew = 1;
24497 let mayStore = 1;
24498 let BaseOpcode = "S2_storeri_rr";
24499 let CextOpcode = "S2_storeri";
24500 let InputType = "reg";
24501 let isNVStorable = 1;
24502 }
24503 def S4_pstoreritnew_zomap : HInst<
24504 (outs),
24505 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
24506 "if ($Pv4.new) memw($Rs32) = $Rt32",
24507 tc_a2b365d2, TypeMAPPING> {
24508 let isPseudo = 1;
24509 let isCodeGenOnly = 1;
24510 }
24511 def S4_stored_locked : HInst<
24512 (outs PredRegs:$Pd4),
24513 (ins IntRegs:$Rs32, DoubleRegs:$Rtt32),
24514 "memd_locked($Rs32,$Pd4) = $Rtt32",
24515 tc_6f42bc60, TypeST>, Enc_d7dc10 {
24516 let Inst{7-2} = 0b000000;
24517 let Inst{13-13} = 0b0;
24518 let Inst{31-21} = 0b10100000111;
24519 let accessSize = DoubleWordAccess;
24520 let isPredicateLate = 1;
24521 let isSoloAX = 1;
24522 let mayStore = 1;
24523 }
24524 def S4_storeirb_io : HInst<
24525 (outs),
24526 (ins IntRegs:$Rs32, u6_0Imm:$Ii, s32_0Imm:$II),
24527 "memb($Rs32+#$Ii) = #$II",
24528 tc_7c31e19a, TypeST>, Enc_8203bb, PredNewRel {
24529 let Inst{31-21} = 0b00111100000;
24530 let addrMode = BaseImmOffset;
24531 let accessSize = ByteAccess;
24532 let mayStore = 1;
24533 let BaseOpcode = "S4_storeirb_io";
24534 let CextOpcode = "S2_storerb";
24535 let InputType = "imm";
24536 let isPredicable = 1;
24537 let isExtendable = 1;
24538 let opExtendable = 2;
24539 let isExtentSigned = 1;
24540 let opExtentBits = 8;
24541 let opExtentAlign = 0;
24542 }
24543 def S4_storeirb_zomap : HInst<
24544 (outs),
24545 (ins IntRegs:$Rs32, s8_0Imm:$II),
24546 "memb($Rs32) = #$II",
24547 tc_7c31e19a, TypeMAPPING> {
24548 let isPseudo = 1;
24549 let isCodeGenOnly = 1;
24550 }
24551 def S4_storeirbf_io : HInst<
24552 (outs),
24553 (ins PredRegs:$Pv4, IntRegs:$Rs32, u6_0Imm:$Ii, s32_0Imm:$II),
24554 "if (!$Pv4) memb($Rs32+#$Ii) = #$II",
24555 tc_d03278fd, TypeST>, Enc_d7a65e, PredNewRel {
24556 let Inst{31-21} = 0b00111000100;
24557 let isPredicated = 1;
24558 let isPredicatedFalse = 1;
24559 let addrMode = BaseImmOffset;
24560 let accessSize = ByteAccess;
24561 let mayStore = 1;
24562 let BaseOpcode = "S4_storeirb_io";
24563 let CextOpcode = "S2_storerb";
24564 let InputType = "imm";
24565 let isExtendable = 1;
24566 let opExtendable = 3;
24567 let isExtentSigned = 1;
24568 let opExtentBits = 6;
24569 let opExtentAlign = 0;
24570 }
24571 def S4_storeirbf_zomap : HInst<
24572 (outs),
24573 (ins PredRegs:$Pv4, IntRegs:$Rs32, s6_0Imm:$II),
24574 "if (!$Pv4) memb($Rs32) = #$II",
24575 tc_d03278fd, TypeMAPPING> {
24576 let isPseudo = 1;
24577 let isCodeGenOnly = 1;
24578 }
24579 def S4_storeirbfnew_io : HInst<
24580 (outs),
24581 (ins PredRegs:$Pv4, IntRegs:$Rs32, u6_0Imm:$Ii, s32_0Imm:$II),
24582 "if (!$Pv4.new) memb($Rs32+#$Ii) = #$II",
24583 tc_65cbd974, TypeST>, Enc_d7a65e, PredNewRel {
24584 let Inst{31-21} = 0b00111001100;
24585 let isPredicated = 1;
24586 let isPredicatedFalse = 1;
24587 let addrMode = BaseImmOffset;
24588 let accessSize = ByteAccess;
24589 let isPredicatedNew = 1;
24590 let mayStore = 1;
24591 let BaseOpcode = "S4_storeirb_io";
24592 let CextOpcode = "S2_storerb";
24593 let InputType = "imm";
24594 let isExtendable = 1;
24595 let opExtendable = 3;
24596 let isExtentSigned = 1;
24597 let opExtentBits = 6;
24598 let opExtentAlign = 0;
24599 }
24600 def S4_storeirbfnew_zomap : HInst<
24601 (outs),
24602 (ins PredRegs:$Pv4, IntRegs:$Rs32, s6_0Imm:$II),
24603 "if (!$Pv4.new) memb($Rs32) = #$II",
24604 tc_65cbd974, TypeMAPPING> {
24605 let isPseudo = 1;
24606 let isCodeGenOnly = 1;
24607 }
24608 def S4_storeirbt_io : HInst<
24609 (outs),
24610 (ins PredRegs:$Pv4, IntRegs:$Rs32, u6_0Imm:$Ii, s32_0Imm:$II),
24611 "if ($Pv4) memb($Rs32+#$Ii) = #$II",
24612 tc_d03278fd, TypeST>, Enc_d7a65e, PredNewRel {
24613 let Inst{31-21} = 0b00111000000;
24614 let isPredicated = 1;
24615 let addrMode = BaseImmOffset;
24616 let accessSize = ByteAccess;
24617 let mayStore = 1;
24618 let BaseOpcode = "S4_storeirb_io";
24619 let CextOpcode = "S2_storerb";
24620 let InputType = "imm";
24621 let isExtendable = 1;
24622 let opExtendable = 3;
24623 let isExtentSigned = 1;
24624 let opExtentBits = 6;
24625 let opExtentAlign = 0;
24626 }
24627 def S4_storeirbt_zomap : HInst<
24628 (outs),
24629 (ins PredRegs:$Pv4, IntRegs:$Rs32, s6_0Imm:$II),
24630 "if ($Pv4) memb($Rs32) = #$II",
24631 tc_d03278fd, TypeMAPPING> {
24632 let isPseudo = 1;
24633 let isCodeGenOnly = 1;
24634 }
24635 def S4_storeirbtnew_io : HInst<
24636 (outs),
24637 (ins PredRegs:$Pv4, IntRegs:$Rs32, u6_0Imm:$Ii, s32_0Imm:$II),
24638 "if ($Pv4.new) memb($Rs32+#$Ii) = #$II",
24639 tc_65cbd974, TypeST>, Enc_d7a65e, PredNewRel {
24640 let Inst{31-21} = 0b00111001000;
24641 let isPredicated = 1;
24642 let addrMode = BaseImmOffset;
24643 let accessSize = ByteAccess;
24644 let isPredicatedNew = 1;
24645 let mayStore = 1;
24646 let BaseOpcode = "S4_storeirb_io";
24647 let CextOpcode = "S2_storerb";
24648 let InputType = "imm";
24649 let isExtendable = 1;
24650 let opExtendable = 3;
24651 let isExtentSigned = 1;
24652 let opExtentBits = 6;
24653 let opExtentAlign = 0;
24654 }
24655 def S4_storeirbtnew_zomap : HInst<
24656 (outs),
24657 (ins PredRegs:$Pv4, IntRegs:$Rs32, s6_0Imm:$II),
24658 "if ($Pv4.new) memb($Rs32) = #$II",
24659 tc_65cbd974, TypeMAPPING> {
24660 let isPseudo = 1;
24661 let isCodeGenOnly = 1;
24662 }
24663 def S4_storeirh_io : HInst<
24664 (outs),
24665 (ins IntRegs:$Rs32, u6_1Imm:$Ii, s32_0Imm:$II),
24666 "memh($Rs32+#$Ii) = #$II",
24667 tc_7c31e19a, TypeST>, Enc_a803e0, PredNewRel {
24668 let Inst{31-21} = 0b00111100001;
24669 let addrMode = BaseImmOffset;
24670 let accessSize = HalfWordAccess;
24671 let mayStore = 1;
24672 let BaseOpcode = "S4_storeirh_io";
24673 let CextOpcode = "S2_storerh";
24674 let InputType = "imm";
24675 let isPredicable = 1;
24676 let isExtendable = 1;
24677 let opExtendable = 2;
24678 let isExtentSigned = 1;
24679 let opExtentBits = 8;
24680 let opExtentAlign = 0;
24681 }
24682 def S4_storeirh_zomap : HInst<
24683 (outs),
24684 (ins IntRegs:$Rs32, s8_0Imm:$II),
24685 "memh($Rs32) = #$II",
24686 tc_7c31e19a, TypeMAPPING> {
24687 let isPseudo = 1;
24688 let isCodeGenOnly = 1;
24689 }
24690 def S4_storeirhf_io : HInst<
24691 (outs),
24692 (ins PredRegs:$Pv4, IntRegs:$Rs32, u6_1Imm:$Ii, s32_0Imm:$II),
24693 "if (!$Pv4) memh($Rs32+#$Ii) = #$II",
24694 tc_d03278fd, TypeST>, Enc_f20719, PredNewRel {
24695 let Inst{31-21} = 0b00111000101;
24696 let isPredicated = 1;
24697 let isPredicatedFalse = 1;
24698 let addrMode = BaseImmOffset;
24699 let accessSize = HalfWordAccess;
24700 let mayStore = 1;
24701 let BaseOpcode = "S4_storeirh_io";
24702 let CextOpcode = "S2_storerh";
24703 let InputType = "imm";
24704 let isExtendable = 1;
24705 let opExtendable = 3;
24706 let isExtentSigned = 1;
24707 let opExtentBits = 6;
24708 let opExtentAlign = 0;
24709 }
24710 def S4_storeirhf_zomap : HInst<
24711 (outs),
24712 (ins PredRegs:$Pv4, IntRegs:$Rs32, s6_0Imm:$II),
24713 "if (!$Pv4) memh($Rs32) = #$II",
24714 tc_d03278fd, TypeMAPPING> {
24715 let isPseudo = 1;
24716 let isCodeGenOnly = 1;
24717 }
24718 def S4_storeirhfnew_io : HInst<
24719 (outs),
24720 (ins PredRegs:$Pv4, IntRegs:$Rs32, u6_1Imm:$Ii, s32_0Imm:$II),
24721 "if (!$Pv4.new) memh($Rs32+#$Ii) = #$II",
24722 tc_65cbd974, TypeST>, Enc_f20719, PredNewRel {
24723 let Inst{31-21} = 0b00111001101;
24724 let isPredicated = 1;
24725 let isPredicatedFalse = 1;
24726 let addrMode = BaseImmOffset;
24727 let accessSize = HalfWordAccess;
24728 let isPredicatedNew = 1;
24729 let mayStore = 1;
24730 let BaseOpcode = "S4_storeirh_io";
24731 let CextOpcode = "S2_storerh";
24732 let InputType = "imm";
24733 let isExtendable = 1;
24734 let opExtendable = 3;
24735 let isExtentSigned = 1;
24736 let opExtentBits = 6;
24737 let opExtentAlign = 0;
24738 }
24739 def S4_storeirhfnew_zomap : HInst<
24740 (outs),
24741 (ins PredRegs:$Pv4, IntRegs:$Rs32, s6_0Imm:$II),
24742 "if (!$Pv4.new) memh($Rs32) = #$II",
24743 tc_65cbd974, TypeMAPPING> {
24744 let isPseudo = 1;
24745 let isCodeGenOnly = 1;
24746 }
24747 def S4_storeirht_io : HInst<
24748 (outs),
24749 (ins PredRegs:$Pv4, IntRegs:$Rs32, u6_1Imm:$Ii, s32_0Imm:$II),
24750 "if ($Pv4) memh($Rs32+#$Ii) = #$II",
24751 tc_d03278fd, TypeST>, Enc_f20719, PredNewRel {
24752 let Inst{31-21} = 0b00111000001;
24753 let isPredicated = 1;
24754 let addrMode = BaseImmOffset;
24755 let accessSize = HalfWordAccess;
24756 let mayStore = 1;
24757 let BaseOpcode = "S4_storeirh_io";
24758 let CextOpcode = "S2_storerh";
24759 let InputType = "imm";
24760 let isExtendable = 1;
24761 let opExtendable = 3;
24762 let isExtentSigned = 1;
24763 let opExtentBits = 6;
24764 let opExtentAlign = 0;
24765 }
24766 def S4_storeirht_zomap : HInst<
24767 (outs),
24768 (ins PredRegs:$Pv4, IntRegs:$Rs32, s6_0Imm:$II),
24769 "if ($Pv4) memh($Rs32) = #$II",
24770 tc_d03278fd, TypeMAPPING> {
24771 let isPseudo = 1;
24772 let isCodeGenOnly = 1;
24773 }
24774 def S4_storeirhtnew_io : HInst<
24775 (outs),
24776 (ins PredRegs:$Pv4, IntRegs:$Rs32, u6_1Imm:$Ii, s32_0Imm:$II),
24777 "if ($Pv4.new) memh($Rs32+#$Ii) = #$II",
24778 tc_65cbd974, TypeST>, Enc_f20719, PredNewRel {
24779 let Inst{31-21} = 0b00111001001;
24780 let isPredicated = 1;
24781 let addrMode = BaseImmOffset;
24782 let accessSize = HalfWordAccess;
24783 let isPredicatedNew = 1;
24784 let mayStore = 1;
24785 let BaseOpcode = "S4_storeirh_io";
24786 let CextOpcode = "S2_storerh";
24787 let InputType = "imm";
24788 let isExtendable = 1;
24789 let opExtendable = 3;
24790 let isExtentSigned = 1;
24791 let opExtentBits = 6;
24792 let opExtentAlign = 0;
24793 }
24794 def S4_storeirhtnew_zomap : HInst<
24795 (outs),
24796 (ins PredRegs:$Pv4, IntRegs:$Rs32, s6_0Imm:$II),
24797 "if ($Pv4.new) memh($Rs32) = #$II",
24798 tc_65cbd974, TypeMAPPING> {
24799 let isPseudo = 1;
24800 let isCodeGenOnly = 1;
24801 }
24802 def S4_storeiri_io : HInst<
24803 (outs),
24804 (ins IntRegs:$Rs32, u6_2Imm:$Ii, s32_0Imm:$II),
24805 "memw($Rs32+#$Ii) = #$II",
24806 tc_7c31e19a, TypeST>, Enc_f37377, PredNewRel {
24807 let Inst{31-21} = 0b00111100010;
24808 let addrMode = BaseImmOffset;
24809 let accessSize = WordAccess;
24810 let mayStore = 1;
24811 let BaseOpcode = "S4_storeiri_io";
24812 let CextOpcode = "S2_storeri";
24813 let InputType = "imm";
24814 let isPredicable = 1;
24815 let isExtendable = 1;
24816 let opExtendable = 2;
24817 let isExtentSigned = 1;
24818 let opExtentBits = 8;
24819 let opExtentAlign = 0;
24820 }
24821 def S4_storeiri_zomap : HInst<
24822 (outs),
24823 (ins IntRegs:$Rs32, s8_0Imm:$II),
24824 "memw($Rs32) = #$II",
24825 tc_7c31e19a, TypeMAPPING> {
24826 let isPseudo = 1;
24827 let isCodeGenOnly = 1;
24828 }
24829 def S4_storeirif_io : HInst<
24830 (outs),
24831 (ins PredRegs:$Pv4, IntRegs:$Rs32, u6_2Imm:$Ii, s32_0Imm:$II),
24832 "if (!$Pv4) memw($Rs32+#$Ii) = #$II",
24833 tc_d03278fd, TypeST>, Enc_5ccba9, PredNewRel {
24834 let Inst{31-21} = 0b00111000110;
24835 let isPredicated = 1;
24836 let isPredicatedFalse = 1;
24837 let addrMode = BaseImmOffset;
24838 let accessSize = WordAccess;
24839 let mayStore = 1;
24840 let BaseOpcode = "S4_storeiri_io";
24841 let CextOpcode = "S2_storeri";
24842 let InputType = "imm";
24843 let isExtendable = 1;
24844 let opExtendable = 3;
24845 let isExtentSigned = 1;
24846 let opExtentBits = 6;
24847 let opExtentAlign = 0;
24848 }
24849 def S4_storeirif_zomap : HInst<
24850 (outs),
24851 (ins PredRegs:$Pv4, IntRegs:$Rs32, s6_0Imm:$II),
24852 "if (!$Pv4) memw($Rs32) = #$II",
24853 tc_d03278fd, TypeMAPPING> {
24854 let isPseudo = 1;
24855 let isCodeGenOnly = 1;
24856 }
24857 def S4_storeirifnew_io : HInst<
24858 (outs),
24859 (ins PredRegs:$Pv4, IntRegs:$Rs32, u6_2Imm:$Ii, s32_0Imm:$II),
24860 "if (!$Pv4.new) memw($Rs32+#$Ii) = #$II",
24861 tc_65cbd974, TypeST>, Enc_5ccba9, PredNewRel {
24862 let Inst{31-21} = 0b00111001110;
24863 let isPredicated = 1;
24864 let isPredicatedFalse = 1;
24865 let addrMode = BaseImmOffset;
24866 let accessSize = WordAccess;
24867 let isPredicatedNew = 1;
24868 let mayStore = 1;
24869 let BaseOpcode = "S4_storeiri_io";
24870 let CextOpcode = "S2_storeri";
24871 let InputType = "imm";
24872 let isExtendable = 1;
24873 let opExtendable = 3;
24874 let isExtentSigned = 1;
24875 let opExtentBits = 6;
24876 let opExtentAlign = 0;
24877 }
24878 def S4_storeirifnew_zomap : HInst<
24879 (outs),
24880 (ins PredRegs:$Pv4, IntRegs:$Rs32, s6_0Imm:$II),
24881 "if (!$Pv4.new) memw($Rs32) = #$II",
24882 tc_65cbd974, TypeMAPPING> {
24883 let isPseudo = 1;
24884 let isCodeGenOnly = 1;
24885 }
24886 def S4_storeirit_io : HInst<
24887 (outs),
24888 (ins PredRegs:$Pv4, IntRegs:$Rs32, u6_2Imm:$Ii, s32_0Imm:$II),
24889 "if ($Pv4) memw($Rs32+#$Ii) = #$II",
24890 tc_d03278fd, TypeST>, Enc_5ccba9, PredNewRel {
24891 let Inst{31-21} = 0b00111000010;
24892 let isPredicated = 1;
24893 let addrMode = BaseImmOffset;
24894 let accessSize = WordAccess;
24895 let mayStore = 1;
24896 let BaseOpcode = "S4_storeiri_io";
24897 let CextOpcode = "S2_storeri";
24898 let InputType = "imm";
24899 let isExtendable = 1;
24900 let opExtendable = 3;
24901 let isExtentSigned = 1;
24902 let opExtentBits = 6;
24903 let opExtentAlign = 0;
24904 }
24905 def S4_storeirit_zomap : HInst<
24906 (outs),
24907 (ins PredRegs:$Pv4, IntRegs:$Rs32, s6_0Imm:$II),
24908 "if ($Pv4) memw($Rs32) = #$II",
24909 tc_d03278fd, TypeMAPPING> {
24910 let isPseudo = 1;
24911 let isCodeGenOnly = 1;
24912 }
24913 def S4_storeiritnew_io : HInst<
24914 (outs),
24915 (ins PredRegs:$Pv4, IntRegs:$Rs32, u6_2Imm:$Ii, s32_0Imm:$II),
24916 "if ($Pv4.new) memw($Rs32+#$Ii) = #$II",
24917 tc_65cbd974, TypeST>, Enc_5ccba9, PredNewRel {
24918 let Inst{31-21} = 0b00111001010;
24919 let isPredicated = 1;
24920 let addrMode = BaseImmOffset;
24921 let accessSize = WordAccess;
24922 let isPredicatedNew = 1;
24923 let mayStore = 1;
24924 let BaseOpcode = "S4_storeiri_io";
24925 let CextOpcode = "S2_storeri";
24926 let InputType = "imm";
24927 let isExtendable = 1;
24928 let opExtendable = 3;
24929 let isExtentSigned = 1;
24930 let opExtentBits = 6;
24931 let opExtentAlign = 0;
24932 }
24933 def S4_storeiritnew_zomap : HInst<
24934 (outs),
24935 (ins PredRegs:$Pv4, IntRegs:$Rs32, s6_0Imm:$II),
24936 "if ($Pv4.new) memw($Rs32) = #$II",
24937 tc_65cbd974, TypeMAPPING> {
24938 let isPseudo = 1;
24939 let isCodeGenOnly = 1;
24940 }
24941 def S4_storerb_ap : HInst<
24942 (outs IntRegs:$Re32),
24943 (ins u32_0Imm:$II, IntRegs:$Rt32),
24944 "memb($Re32=#$II) = $Rt32",
24945 tc_bb07f2c5, TypeST>, Enc_8bcba4, AddrModeRel {
24946 let Inst{7-6} = 0b10;
24947 let Inst{13-13} = 0b0;
24948 let Inst{31-21} = 0b10101011000;
24949 let addrMode = AbsoluteSet;
24950 let accessSize = ByteAccess;
24951 let isExtended = 1;
24952 let mayStore = 1;
24953 let BaseOpcode = "S2_storerb_ap";
24954 let isNVStorable = 1;
24955 let DecoderNamespace = "MustExtend";
24956 let isExtendable = 1;
24957 let opExtendable = 1;
24958 let isExtentSigned = 0;
24959 let opExtentBits = 6;
24960 let opExtentAlign = 0;
24961 }
24962 def S4_storerb_rr : HInst<
24963 (outs),
24964 (ins IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
24965 "memb($Rs32+$Ru32<<#$Ii) = $Rt32",
24966 tc_280f7fe1, TypeST>, Enc_eca7c8, AddrModeRel, ImmRegShl {
24967 let Inst{6-5} = 0b00;
24968 let Inst{31-21} = 0b00111011000;
24969 let addrMode = BaseRegOffset;
24970 let accessSize = ByteAccess;
24971 let mayStore = 1;
24972 let BaseOpcode = "S4_storerb_rr";
24973 let CextOpcode = "S2_storerb";
24974 let InputType = "reg";
24975 let isNVStorable = 1;
24976 let isPredicable = 1;
24977 }
24978 def S4_storerb_ur : HInst<
24979 (outs),
24980 (ins IntRegs:$Ru32, u2_0Imm:$Ii, u32_0Imm:$II, IntRegs:$Rt32),
24981 "memb($Ru32<<#$Ii+#$II) = $Rt32",
24982 tc_887d1bb7, TypeST>, Enc_9ea4cf, AddrModeRel, ImmRegShl {
24983 let Inst{7-7} = 0b1;
24984 let Inst{31-21} = 0b10101101000;
24985 let addrMode = BaseLongOffset;
24986 let accessSize = ByteAccess;
24987 let isExtended = 1;
24988 let mayStore = 1;
24989 let BaseOpcode = "S4_storerb_ur";
24990 let CextOpcode = "S2_storerb";
24991 let InputType = "imm";
24992 let isNVStorable = 1;
24993 let DecoderNamespace = "MustExtend";
24994 let isExtendable = 1;
24995 let opExtendable = 2;
24996 let isExtentSigned = 0;
24997 let opExtentBits = 6;
24998 let opExtentAlign = 0;
24999 }
25000 def S4_storerbnew_ap : HInst<
25001 (outs IntRegs:$Re32),
25002 (ins u32_0Imm:$II, IntRegs:$Nt8),
25003 "memb($Re32=#$II) = $Nt8.new",
25004 tc_0fac1eb8, TypeST>, Enc_724154, AddrModeRel {
25005 let Inst{7-6} = 0b10;
25006 let Inst{13-11} = 0b000;
25007 let Inst{31-21} = 0b10101011101;
25008 let addrMode = AbsoluteSet;
25009 let accessSize = ByteAccess;
25010 let isNVStore = 1;
25011 let isNewValue = 1;
25012 let isExtended = 1;
25013 let isRestrictNoSlot1Store = 1;
25014 let mayStore = 1;
25015 let BaseOpcode = "S2_storerb_ap";
25016 let DecoderNamespace = "MustExtend";
25017 let isExtendable = 1;
25018 let opExtendable = 1;
25019 let isExtentSigned = 0;
25020 let opExtentBits = 6;
25021 let opExtentAlign = 0;
25022 let opNewValue = 2;
25023 }
25024 def S4_storerbnew_rr : HInst<
25025 (outs),
25026 (ins IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
25027 "memb($Rs32+$Ru32<<#$Ii) = $Nt8.new",
25028 tc_96ef76ef, TypeST>, Enc_c6220b, AddrModeRel {
25029 let Inst{6-3} = 0b0000;
25030 let Inst{31-21} = 0b00111011101;
25031 let addrMode = BaseRegOffset;
25032 let accessSize = ByteAccess;
25033 let isNVStore = 1;
25034 let isNewValue = 1;
25035 let isRestrictNoSlot1Store = 1;
25036 let mayStore = 1;
25037 let BaseOpcode = "S4_storerb_rr";
25038 let CextOpcode = "S2_storerb";
25039 let InputType = "reg";
25040 let isPredicable = 1;
25041 let opNewValue = 3;
25042 }
25043 def S4_storerbnew_ur : HInst<
25044 (outs),
25045 (ins IntRegs:$Ru32, u2_0Imm:$Ii, u32_0Imm:$II, IntRegs:$Nt8),
25046 "memb($Ru32<<#$Ii+#$II) = $Nt8.new",
25047 tc_55a9a350, TypeST>, Enc_7eb485, AddrModeRel {
25048 let Inst{7-7} = 0b1;
25049 let Inst{12-11} = 0b00;
25050 let Inst{31-21} = 0b10101101101;
25051 let addrMode = BaseLongOffset;
25052 let accessSize = ByteAccess;
25053 let isNVStore = 1;
25054 let isNewValue = 1;
25055 let isExtended = 1;
25056 let isRestrictNoSlot1Store = 1;
25057 let mayStore = 1;
25058 let BaseOpcode = "S4_storerb_ur";
25059 let CextOpcode = "S2_storerb";
25060 let DecoderNamespace = "MustExtend";
25061 let isExtendable = 1;
25062 let opExtendable = 2;
25063 let isExtentSigned = 0;
25064 let opExtentBits = 6;
25065 let opExtentAlign = 0;
25066 let opNewValue = 3;
25067 }
25068 def S4_storerd_ap : HInst<
25069 (outs IntRegs:$Re32),
25070 (ins u32_0Imm:$II, DoubleRegs:$Rtt32),
25071 "memd($Re32=#$II) = $Rtt32",
25072 tc_bb07f2c5, TypeST>, Enc_c7a204 {
25073 let Inst{7-6} = 0b10;
25074 let Inst{13-13} = 0b0;
25075 let Inst{31-21} = 0b10101011110;
25076 let addrMode = AbsoluteSet;
25077 let accessSize = DoubleWordAccess;
25078 let isExtended = 1;
25079 let mayStore = 1;
25080 let BaseOpcode = "S4_storerd_ap";
25081 let DecoderNamespace = "MustExtend";
25082 let isExtendable = 1;
25083 let opExtendable = 1;
25084 let isExtentSigned = 0;
25085 let opExtentBits = 6;
25086 let opExtentAlign = 0;
25087 }
25088 def S4_storerd_rr : HInst<
25089 (outs),
25090 (ins IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, DoubleRegs:$Rtt32),
25091 "memd($Rs32+$Ru32<<#$Ii) = $Rtt32",
25092 tc_280f7fe1, TypeST>, Enc_55355c, AddrModeRel, ImmRegShl {
25093 let Inst{6-5} = 0b00;
25094 let Inst{31-21} = 0b00111011110;
25095 let addrMode = BaseRegOffset;
25096 let accessSize = DoubleWordAccess;
25097 let mayStore = 1;
25098 let BaseOpcode = "S2_storerd_rr";
25099 let CextOpcode = "S2_storerd";
25100 let InputType = "reg";
25101 let isPredicable = 1;
25102 }
25103 def S4_storerd_ur : HInst<
25104 (outs),
25105 (ins IntRegs:$Ru32, u2_0Imm:$Ii, u32_0Imm:$II, DoubleRegs:$Rtt32),
25106 "memd($Ru32<<#$Ii+#$II) = $Rtt32",
25107 tc_887d1bb7, TypeST>, Enc_f79415, AddrModeRel, ImmRegShl {
25108 let Inst{7-7} = 0b1;
25109 let Inst{31-21} = 0b10101101110;
25110 let addrMode = BaseLongOffset;
25111 let accessSize = DoubleWordAccess;
25112 let isExtended = 1;
25113 let mayStore = 1;
25114 let BaseOpcode = "S2_storerd_ur";
25115 let CextOpcode = "S2_storerd";
25116 let InputType = "imm";
25117 let DecoderNamespace = "MustExtend";
25118 let isExtendable = 1;
25119 let opExtendable = 2;
25120 let isExtentSigned = 0;
25121 let opExtentBits = 6;
25122 let opExtentAlign = 0;
25123 }
25124 def S4_storerf_ap : HInst<
25125 (outs IntRegs:$Re32),
25126 (ins u32_0Imm:$II, IntRegs:$Rt32),
25127 "memh($Re32=#$II) = $Rt32.h",
25128 tc_bb07f2c5, TypeST>, Enc_8bcba4 {
25129 let Inst{7-6} = 0b10;
25130 let Inst{13-13} = 0b0;
25131 let Inst{31-21} = 0b10101011011;
25132 let addrMode = AbsoluteSet;
25133 let accessSize = HalfWordAccess;
25134 let isExtended = 1;
25135 let mayStore = 1;
25136 let BaseOpcode = "S4_storerf_ap";
25137 let DecoderNamespace = "MustExtend";
25138 let isExtendable = 1;
25139 let opExtendable = 1;
25140 let isExtentSigned = 0;
25141 let opExtentBits = 6;
25142 let opExtentAlign = 0;
25143 }
25144 def S4_storerf_rr : HInst<
25145 (outs),
25146 (ins IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
25147 "memh($Rs32+$Ru32<<#$Ii) = $Rt32.h",
25148 tc_280f7fe1, TypeST>, Enc_eca7c8, AddrModeRel, ImmRegShl {
25149 let Inst{6-5} = 0b00;
25150 let Inst{31-21} = 0b00111011011;
25151 let addrMode = BaseRegOffset;
25152 let accessSize = HalfWordAccess;
25153 let mayStore = 1;
25154 let BaseOpcode = "S4_storerf_rr";
25155 let CextOpcode = "S2_storerf";
25156 let InputType = "reg";
25157 let isPredicable = 1;
25158 }
25159 def S4_storerf_ur : HInst<
25160 (outs),
25161 (ins IntRegs:$Ru32, u2_0Imm:$Ii, u32_0Imm:$II, IntRegs:$Rt32),
25162 "memh($Ru32<<#$Ii+#$II) = $Rt32.h",
25163 tc_887d1bb7, TypeST>, Enc_9ea4cf, AddrModeRel, ImmRegShl {
25164 let Inst{7-7} = 0b1;
25165 let Inst{31-21} = 0b10101101011;
25166 let addrMode = BaseLongOffset;
25167 let accessSize = HalfWordAccess;
25168 let isExtended = 1;
25169 let mayStore = 1;
25170 let BaseOpcode = "S4_storerf_rr";
25171 let CextOpcode = "S2_storerf";
25172 let InputType = "imm";
25173 let DecoderNamespace = "MustExtend";
25174 let isExtendable = 1;
25175 let opExtendable = 2;
25176 let isExtentSigned = 0;
25177 let opExtentBits = 6;
25178 let opExtentAlign = 0;
25179 }
25180 def S4_storerh_ap : HInst<
25181 (outs IntRegs:$Re32),
25182 (ins u32_0Imm:$II, IntRegs:$Rt32),
25183 "memh($Re32=#$II) = $Rt32",
25184 tc_bb07f2c5, TypeST>, Enc_8bcba4, AddrModeRel {
25185 let Inst{7-6} = 0b10;
25186 let Inst{13-13} = 0b0;
25187 let Inst{31-21} = 0b10101011010;
25188 let addrMode = AbsoluteSet;
25189 let accessSize = HalfWordAccess;
25190 let isExtended = 1;
25191 let mayStore = 1;
25192 let BaseOpcode = "S2_storerh_ap";
25193 let isNVStorable = 1;
25194 let DecoderNamespace = "MustExtend";
25195 let isExtendable = 1;
25196 let opExtendable = 1;
25197 let isExtentSigned = 0;
25198 let opExtentBits = 6;
25199 let opExtentAlign = 0;
25200 }
25201 def S4_storerh_rr : HInst<
25202 (outs),
25203 (ins IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
25204 "memh($Rs32+$Ru32<<#$Ii) = $Rt32",
25205 tc_280f7fe1, TypeST>, Enc_eca7c8, AddrModeRel, ImmRegShl {
25206 let Inst{6-5} = 0b00;
25207 let Inst{31-21} = 0b00111011010;
25208 let addrMode = BaseRegOffset;
25209 let accessSize = HalfWordAccess;
25210 let mayStore = 1;
25211 let BaseOpcode = "S2_storerh_rr";
25212 let CextOpcode = "S2_storerh";
25213 let InputType = "reg";
25214 let isNVStorable = 1;
25215 let isPredicable = 1;
25216 }
25217 def S4_storerh_ur : HInst<
25218 (outs),
25219 (ins IntRegs:$Ru32, u2_0Imm:$Ii, u32_0Imm:$II, IntRegs:$Rt32),
25220 "memh($Ru32<<#$Ii+#$II) = $Rt32",
25221 tc_887d1bb7, TypeST>, Enc_9ea4cf, AddrModeRel, ImmRegShl {
25222 let Inst{7-7} = 0b1;
25223 let Inst{31-21} = 0b10101101010;
25224 let addrMode = BaseLongOffset;
25225 let accessSize = HalfWordAccess;
25226 let isExtended = 1;
25227 let mayStore = 1;
25228 let BaseOpcode = "S2_storerh_ur";
25229 let CextOpcode = "S2_storerh";
25230 let InputType = "imm";
25231 let isNVStorable = 1;
25232 let DecoderNamespace = "MustExtend";
25233 let isExtendable = 1;
25234 let opExtendable = 2;
25235 let isExtentSigned = 0;
25236 let opExtentBits = 6;
25237 let opExtentAlign = 0;
25238 }
25239 def S4_storerhnew_ap : HInst<
25240 (outs IntRegs:$Re32),
25241 (ins u32_0Imm:$II, IntRegs:$Nt8),
25242 "memh($Re32=#$II) = $Nt8.new",
25243 tc_0fac1eb8, TypeST>, Enc_724154, AddrModeRel {
25244 let Inst{7-6} = 0b10;
25245 let Inst{13-11} = 0b001;
25246 let Inst{31-21} = 0b10101011101;
25247 let addrMode = AbsoluteSet;
25248 let accessSize = HalfWordAccess;
25249 let isNVStore = 1;
25250 let isNewValue = 1;
25251 let isExtended = 1;
25252 let isRestrictNoSlot1Store = 1;
25253 let mayStore = 1;
25254 let BaseOpcode = "S2_storerh_ap";
25255 let DecoderNamespace = "MustExtend";
25256 let isExtendable = 1;
25257 let opExtendable = 1;
25258 let isExtentSigned = 0;
25259 let opExtentBits = 6;
25260 let opExtentAlign = 0;
25261 let opNewValue = 2;
25262 }
25263 def S4_storerhnew_rr : HInst<
25264 (outs),
25265 (ins IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
25266 "memh($Rs32+$Ru32<<#$Ii) = $Nt8.new",
25267 tc_96ef76ef, TypeST>, Enc_c6220b, AddrModeRel {
25268 let Inst{6-3} = 0b0001;
25269 let Inst{31-21} = 0b00111011101;
25270 let addrMode = BaseRegOffset;
25271 let accessSize = HalfWordAccess;
25272 let isNVStore = 1;
25273 let isNewValue = 1;
25274 let isRestrictNoSlot1Store = 1;
25275 let mayStore = 1;
25276 let BaseOpcode = "S2_storerh_rr";
25277 let CextOpcode = "S2_storerh";
25278 let InputType = "reg";
25279 let isPredicable = 1;
25280 let opNewValue = 3;
25281 }
25282 def S4_storerhnew_ur : HInst<
25283 (outs),
25284 (ins IntRegs:$Ru32, u2_0Imm:$Ii, u32_0Imm:$II, IntRegs:$Nt8),
25285 "memh($Ru32<<#$Ii+#$II) = $Nt8.new",
25286 tc_55a9a350, TypeST>, Enc_7eb485, AddrModeRel {
25287 let Inst{7-7} = 0b1;
25288 let Inst{12-11} = 0b01;
25289 let Inst{31-21} = 0b10101101101;
25290 let addrMode = BaseLongOffset;
25291 let accessSize = HalfWordAccess;
25292 let isNVStore = 1;
25293 let isNewValue = 1;
25294 let isExtended = 1;
25295 let isRestrictNoSlot1Store = 1;
25296 let mayStore = 1;
25297 let BaseOpcode = "S2_storerh_ur";
25298 let CextOpcode = "S2_storerh";
25299 let DecoderNamespace = "MustExtend";
25300 let isExtendable = 1;
25301 let opExtendable = 2;
25302 let isExtentSigned = 0;
25303 let opExtentBits = 6;
25304 let opExtentAlign = 0;
25305 let opNewValue = 3;
25306 }
25307 def S4_storeri_ap : HInst<
25308 (outs IntRegs:$Re32),
25309 (ins u32_0Imm:$II, IntRegs:$Rt32),
25310 "memw($Re32=#$II) = $Rt32",
25311 tc_bb07f2c5, TypeST>, Enc_8bcba4, AddrModeRel {
25312 let Inst{7-6} = 0b10;
25313 let Inst{13-13} = 0b0;
25314 let Inst{31-21} = 0b10101011100;
25315 let addrMode = AbsoluteSet;
25316 let accessSize = WordAccess;
25317 let isExtended = 1;
25318 let mayStore = 1;
25319 let BaseOpcode = "S2_storeri_ap";
25320 let isNVStorable = 1;
25321 let DecoderNamespace = "MustExtend";
25322 let isExtendable = 1;
25323 let opExtendable = 1;
25324 let isExtentSigned = 0;
25325 let opExtentBits = 6;
25326 let opExtentAlign = 0;
25327 }
25328 def S4_storeri_rr : HInst<
25329 (outs),
25330 (ins IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
25331 "memw($Rs32+$Ru32<<#$Ii) = $Rt32",
25332 tc_280f7fe1, TypeST>, Enc_eca7c8, AddrModeRel, ImmRegShl {
25333 let Inst{6-5} = 0b00;
25334 let Inst{31-21} = 0b00111011100;
25335 let addrMode = BaseRegOffset;
25336 let accessSize = WordAccess;
25337 let mayStore = 1;
25338 let BaseOpcode = "S2_storeri_rr";
25339 let CextOpcode = "S2_storeri";
25340 let InputType = "reg";
25341 let isNVStorable = 1;
25342 let isPredicable = 1;
25343 }
25344 def S4_storeri_ur : HInst<
25345 (outs),
25346 (ins IntRegs:$Ru32, u2_0Imm:$Ii, u32_0Imm:$II, IntRegs:$Rt32),
25347 "memw($Ru32<<#$Ii+#$II) = $Rt32",
25348 tc_887d1bb7, TypeST>, Enc_9ea4cf, AddrModeRel, ImmRegShl {
25349 let Inst{7-7} = 0b1;
25350 let Inst{31-21} = 0b10101101100;
25351 let addrMode = BaseLongOffset;
25352 let accessSize = WordAccess;
25353 let isExtended = 1;
25354 let mayStore = 1;
25355 let BaseOpcode = "S2_storeri_ur";
25356 let CextOpcode = "S2_storeri";
25357 let InputType = "imm";
25358 let isNVStorable = 1;
25359 let DecoderNamespace = "MustExtend";
25360 let isExtendable = 1;
25361 let opExtendable = 2;
25362 let isExtentSigned = 0;
25363 let opExtentBits = 6;
25364 let opExtentAlign = 0;
25365 }
25366 def S4_storerinew_ap : HInst<
25367 (outs IntRegs:$Re32),
25368 (ins u32_0Imm:$II, IntRegs:$Nt8),
25369 "memw($Re32=#$II) = $Nt8.new",
25370 tc_0fac1eb8, TypeST>, Enc_724154, AddrModeRel {
25371 let Inst{7-6} = 0b10;
25372 let Inst{13-11} = 0b010;
25373 let Inst{31-21} = 0b10101011101;
25374 let addrMode = AbsoluteSet;
25375 let accessSize = WordAccess;
25376 let isNVStore = 1;
25377 let isNewValue = 1;
25378 let isExtended = 1;
25379 let isRestrictNoSlot1Store = 1;
25380 let mayStore = 1;
25381 let BaseOpcode = "S2_storeri_ap";
25382 let DecoderNamespace = "MustExtend";
25383 let isExtendable = 1;
25384 let opExtendable = 1;
25385 let isExtentSigned = 0;
25386 let opExtentBits = 6;
25387 let opExtentAlign = 0;
25388 let opNewValue = 2;
25389 }
25390 def S4_storerinew_rr : HInst<
25391 (outs),
25392 (ins IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
25393 "memw($Rs32+$Ru32<<#$Ii) = $Nt8.new",
25394 tc_96ef76ef, TypeST>, Enc_c6220b, AddrModeRel {
25395 let Inst{6-3} = 0b0010;
25396 let Inst{31-21} = 0b00111011101;
25397 let addrMode = BaseRegOffset;
25398 let accessSize = WordAccess;
25399 let isNVStore = 1;
25400 let isNewValue = 1;
25401 let isRestrictNoSlot1Store = 1;
25402 let mayStore = 1;
25403 let BaseOpcode = "S2_storeri_rr";
25404 let CextOpcode = "S2_storeri";
25405 let InputType = "reg";
25406 let isPredicable = 1;
25407 let opNewValue = 3;
25408 }
25409 def S4_storerinew_ur : HInst<
25410 (outs),
25411 (ins IntRegs:$Ru32, u2_0Imm:$Ii, u32_0Imm:$II, IntRegs:$Nt8),
25412 "memw($Ru32<<#$Ii+#$II) = $Nt8.new",
25413 tc_55a9a350, TypeST>, Enc_7eb485, AddrModeRel {
25414 let Inst{7-7} = 0b1;
25415 let Inst{12-11} = 0b10;
25416 let Inst{31-21} = 0b10101101101;
25417 let addrMode = BaseLongOffset;
25418 let accessSize = WordAccess;
25419 let isNVStore = 1;
25420 let isNewValue = 1;
25421 let isExtended = 1;
25422 let isRestrictNoSlot1Store = 1;
25423 let mayStore = 1;
25424 let BaseOpcode = "S2_storeri_ur";
25425 let CextOpcode = "S2_storeri";
25426 let DecoderNamespace = "MustExtend";
25427 let isExtendable = 1;
25428 let opExtendable = 2;
25429 let isExtentSigned = 0;
25430 let opExtentBits = 6;
25431 let opExtentAlign = 0;
25432 let opNewValue = 3;
25433 }
25434 def S4_subaddi : HInst<
25435 (outs IntRegs:$Rd32),
25436 (ins IntRegs:$Rs32, s32_0Imm:$Ii, IntRegs:$Ru32),
25437 "$Rd32 = add($Rs32,sub(#$Ii,$Ru32))",
25438 tc_2c13e7f5, TypeALU64>, Enc_8b8d61, Requires<[UseCompound]> {
25439 let Inst{31-23} = 0b110110111;
25440 let hasNewValue = 1;
25441 let opNewValue = 0;
25442 let prefersSlot3 = 1;
25443 let isExtendable = 1;
25444 let opExtendable = 2;
25445 let isExtentSigned = 1;
25446 let opExtentBits = 6;
25447 let opExtentAlign = 0;
25448 }
25449 def S4_subi_asl_ri : HInst<
25450 (outs IntRegs:$Rx32),
25451 (ins u32_0Imm:$Ii, IntRegs:$Rx32in, u5_0Imm:$II),
25452 "$Rx32 = sub(#$Ii,asl($Rx32in,#$II))",
25453 tc_2c13e7f5, TypeALU64>, Enc_c31910, Requires<[UseCompound]> {
25454 let Inst{2-0} = 0b110;
25455 let Inst{4-4} = 0b0;
25456 let Inst{31-24} = 0b11011110;
25457 let hasNewValue = 1;
25458 let opNewValue = 0;
25459 let prefersSlot3 = 1;
25460 let isExtendable = 1;
25461 let opExtendable = 1;
25462 let isExtentSigned = 0;
25463 let opExtentBits = 8;
25464 let opExtentAlign = 0;
25465 let Constraints = "$Rx32 = $Rx32in";
25466 }
25467 def S4_subi_lsr_ri : HInst<
25468 (outs IntRegs:$Rx32),
25469 (ins u32_0Imm:$Ii, IntRegs:$Rx32in, u5_0Imm:$II),
25470 "$Rx32 = sub(#$Ii,lsr($Rx32in,#$II))",
25471 tc_2c13e7f5, TypeALU64>, Enc_c31910, Requires<[UseCompound]> {
25472 let Inst{2-0} = 0b110;
25473 let Inst{4-4} = 0b1;
25474 let Inst{31-24} = 0b11011110;
25475 let hasNewValue = 1;
25476 let opNewValue = 0;
25477 let prefersSlot3 = 1;
25478 let isExtendable = 1;
25479 let opExtendable = 1;
25480 let isExtentSigned = 0;
25481 let opExtentBits = 8;
25482 let opExtentAlign = 0;
25483 let Constraints = "$Rx32 = $Rx32in";
25484 }
25485 def S4_vrcrotate : HInst<
25486 (outs DoubleRegs:$Rdd32),
25487 (ins DoubleRegs:$Rss32, IntRegs:$Rt32, u2_0Imm:$Ii),
25488 "$Rdd32 = vrcrotate($Rss32,$Rt32,#$Ii)",
25489 tc_f0cdeccf, TypeS_3op>, Enc_645d54 {
25490 let Inst{7-6} = 0b11;
25491 let Inst{31-21} = 0b11000011110;
25492 let prefersSlot3 = 1;
25493 }
25494 def S4_vrcrotate_acc : HInst<
25495 (outs DoubleRegs:$Rxx32),
25496 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32, u2_0Imm:$Ii),
25497 "$Rxx32 += vrcrotate($Rss32,$Rt32,#$Ii)",
25498 tc_a38c45dc, TypeS_3op>, Enc_b72622 {
25499 let Inst{7-6} = 0b00;
25500 let Inst{31-21} = 0b11001011101;
25501 let prefersSlot3 = 1;
25502 let Constraints = "$Rxx32 = $Rxx32in";
25503 }
25504 def S4_vxaddsubh : HInst<
25505 (outs DoubleRegs:$Rdd32),
25506 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
25507 "$Rdd32 = vxaddsubh($Rss32,$Rtt32):sat",
25508 tc_8a825db2, TypeS_3op>, Enc_a56825 {
25509 let Inst{7-5} = 0b100;
25510 let Inst{13-13} = 0b0;
25511 let Inst{31-21} = 0b11000001010;
25512 let prefersSlot3 = 1;
25513 let Defs = [USR_OVF];
25514 }
25515 def S4_vxaddsubhr : HInst<
25516 (outs DoubleRegs:$Rdd32),
25517 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
25518 "$Rdd32 = vxaddsubh($Rss32,$Rtt32):rnd:>>1:sat",
25519 tc_0dfac0a7, TypeS_3op>, Enc_a56825 {
25520 let Inst{7-5} = 0b000;
25521 let Inst{13-13} = 0b0;
25522 let Inst{31-21} = 0b11000001110;
25523 let prefersSlot3 = 1;
25524 let Defs = [USR_OVF];
25525 }
25526 def S4_vxaddsubw : HInst<
25527 (outs DoubleRegs:$Rdd32),
25528 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
25529 "$Rdd32 = vxaddsubw($Rss32,$Rtt32):sat",
25530 tc_8a825db2, TypeS_3op>, Enc_a56825 {
25531 let Inst{7-5} = 0b000;
25532 let Inst{13-13} = 0b0;
25533 let Inst{31-21} = 0b11000001010;
25534 let prefersSlot3 = 1;
25535 let Defs = [USR_OVF];
25536 }
25537 def S4_vxsubaddh : HInst<
25538 (outs DoubleRegs:$Rdd32),
25539 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
25540 "$Rdd32 = vxsubaddh($Rss32,$Rtt32):sat",
25541 tc_8a825db2, TypeS_3op>, Enc_a56825 {
25542 let Inst{7-5} = 0b110;
25543 let Inst{13-13} = 0b0;
25544 let Inst{31-21} = 0b11000001010;
25545 let prefersSlot3 = 1;
25546 let Defs = [USR_OVF];
25547 }
25548 def S4_vxsubaddhr : HInst<
25549 (outs DoubleRegs:$Rdd32),
25550 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
25551 "$Rdd32 = vxsubaddh($Rss32,$Rtt32):rnd:>>1:sat",
25552 tc_0dfac0a7, TypeS_3op>, Enc_a56825 {
25553 let Inst{7-5} = 0b010;
25554 let Inst{13-13} = 0b0;
25555 let Inst{31-21} = 0b11000001110;
25556 let prefersSlot3 = 1;
25557 let Defs = [USR_OVF];
25558 }
25559 def S4_vxsubaddw : HInst<
25560 (outs DoubleRegs:$Rdd32),
25561 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
25562 "$Rdd32 = vxsubaddw($Rss32,$Rtt32):sat",
25563 tc_8a825db2, TypeS_3op>, Enc_a56825 {
25564 let Inst{7-5} = 0b010;
25565 let Inst{13-13} = 0b0;
25566 let Inst{31-21} = 0b11000001010;
25567 let prefersSlot3 = 1;
25568 let Defs = [USR_OVF];
25569 }
25570 def S5_asrhub_rnd_sat : HInst<
25571 (outs IntRegs:$Rd32),
25572 (ins DoubleRegs:$Rss32, u4_0Imm:$Ii),
25573 "$Rd32 = vasrhub($Rss32,#$Ii):raw",
25574 tc_0dfac0a7, TypeS_2op>, Enc_11a146 {
25575 let Inst{7-5} = 0b100;
25576 let Inst{13-12} = 0b00;
25577 let Inst{31-21} = 0b10001000011;
25578 let hasNewValue = 1;
25579 let opNewValue = 0;
25580 let prefersSlot3 = 1;
25581 let Defs = [USR_OVF];
25582 }
25583 def S5_asrhub_rnd_sat_goodsyntax : HInst<
25584 (outs IntRegs:$Rd32),
25585 (ins DoubleRegs:$Rss32, u4_0Imm:$Ii),
25586 "$Rd32 = vasrhub($Rss32,#$Ii):rnd:sat",
25587 tc_0dfac0a7, TypeS_2op> {
25588 let hasNewValue = 1;
25589 let opNewValue = 0;
25590 let isPseudo = 1;
25591 }
25592 def S5_asrhub_sat : HInst<
25593 (outs IntRegs:$Rd32),
25594 (ins DoubleRegs:$Rss32, u4_0Imm:$Ii),
25595 "$Rd32 = vasrhub($Rss32,#$Ii):sat",
25596 tc_0dfac0a7, TypeS_2op>, Enc_11a146 {
25597 let Inst{7-5} = 0b101;
25598 let Inst{13-12} = 0b00;
25599 let Inst{31-21} = 0b10001000011;
25600 let hasNewValue = 1;
25601 let opNewValue = 0;
25602 let prefersSlot3 = 1;
25603 let Defs = [USR_OVF];
25604 }
25605 def S5_popcountp : HInst<
25606 (outs IntRegs:$Rd32),
25607 (ins DoubleRegs:$Rss32),
25608 "$Rd32 = popcount($Rss32)",
25609 tc_d3632d88, TypeS_2op>, Enc_90cd8b {
25610 let Inst{13-5} = 0b000000011;
25611 let Inst{31-21} = 0b10001000011;
25612 let hasNewValue = 1;
25613 let opNewValue = 0;
25614 let prefersSlot3 = 1;
25615 }
25616 def S5_vasrhrnd : HInst<
25617 (outs DoubleRegs:$Rdd32),
25618 (ins DoubleRegs:$Rss32, u4_0Imm:$Ii),
25619 "$Rdd32 = vasrh($Rss32,#$Ii):raw",
25620 tc_0dfac0a7, TypeS_2op>, Enc_12b6e9 {
25621 let Inst{7-5} = 0b000;
25622 let Inst{13-12} = 0b00;
25623 let Inst{31-21} = 0b10000000001;
25624 let prefersSlot3 = 1;
25625 }
25626 def S5_vasrhrnd_goodsyntax : HInst<
25627 (outs DoubleRegs:$Rdd32),
25628 (ins DoubleRegs:$Rss32, u4_0Imm:$Ii),
25629 "$Rdd32 = vasrh($Rss32,#$Ii):rnd",
25630 tc_0dfac0a7, TypeS_2op> {
25631 let isPseudo = 1;
25632 }
25633 def S6_allocframe_to_raw : HInst<
25634 (outs),
25635 (ins u11_3Imm:$Ii),
25636 "allocframe(#$Ii)",
25637 tc_934753bb, TypeMAPPING>, Requires<[HasV65]> {
25638 let isPseudo = 1;
25639 let isCodeGenOnly = 1;
25640 }
25641 def S6_rol_i_p : HInst<
25642 (outs DoubleRegs:$Rdd32),
25643 (ins DoubleRegs:$Rss32, u6_0Imm:$Ii),
25644 "$Rdd32 = rol($Rss32,#$Ii)",
25645 tc_407e96f9, TypeS_2op>, Enc_5eac98, Requires<[HasV60]> {
25646 let Inst{7-5} = 0b011;
25647 let Inst{31-21} = 0b10000000000;
25648 }
25649 def S6_rol_i_p_acc : HInst<
25650 (outs DoubleRegs:$Rxx32),
25651 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
25652 "$Rxx32 += rol($Rss32,#$Ii)",
25653 tc_5e4cf0e8, TypeS_2op>, Enc_70fb07, Requires<[HasV60]> {
25654 let Inst{7-5} = 0b111;
25655 let Inst{31-21} = 0b10000010000;
25656 let prefersSlot3 = 1;
25657 let Constraints = "$Rxx32 = $Rxx32in";
25658 }
25659 def S6_rol_i_p_and : HInst<
25660 (outs DoubleRegs:$Rxx32),
25661 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
25662 "$Rxx32 &= rol($Rss32,#$Ii)",
25663 tc_5e4cf0e8, TypeS_2op>, Enc_70fb07, Requires<[HasV60]> {
25664 let Inst{7-5} = 0b011;
25665 let Inst{31-21} = 0b10000010010;
25666 let prefersSlot3 = 1;
25667 let Constraints = "$Rxx32 = $Rxx32in";
25668 }
25669 def S6_rol_i_p_nac : HInst<
25670 (outs DoubleRegs:$Rxx32),
25671 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
25672 "$Rxx32 -= rol($Rss32,#$Ii)",
25673 tc_5e4cf0e8, TypeS_2op>, Enc_70fb07, Requires<[HasV60]> {
25674 let Inst{7-5} = 0b011;
25675 let Inst{31-21} = 0b10000010000;
25676 let prefersSlot3 = 1;
25677 let Constraints = "$Rxx32 = $Rxx32in";
25678 }
25679 def S6_rol_i_p_or : HInst<
25680 (outs DoubleRegs:$Rxx32),
25681 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
25682 "$Rxx32 |= rol($Rss32,#$Ii)",
25683 tc_5e4cf0e8, TypeS_2op>, Enc_70fb07, Requires<[HasV60]> {
25684 let Inst{7-5} = 0b111;
25685 let Inst{31-21} = 0b10000010010;
25686 let prefersSlot3 = 1;
25687 let Constraints = "$Rxx32 = $Rxx32in";
25688 }
25689 def S6_rol_i_p_xacc : HInst<
25690 (outs DoubleRegs:$Rxx32),
25691 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
25692 "$Rxx32 ^= rol($Rss32,#$Ii)",
25693 tc_5e4cf0e8, TypeS_2op>, Enc_70fb07, Requires<[HasV60]> {
25694 let Inst{7-5} = 0b011;
25695 let Inst{31-21} = 0b10000010100;
25696 let prefersSlot3 = 1;
25697 let Constraints = "$Rxx32 = $Rxx32in";
25698 }
25699 def S6_rol_i_r : HInst<
25700 (outs IntRegs:$Rd32),
25701 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
25702 "$Rd32 = rol($Rs32,#$Ii)",
25703 tc_407e96f9, TypeS_2op>, Enc_a05677, Requires<[HasV60]> {
25704 let Inst{7-5} = 0b011;
25705 let Inst{13-13} = 0b0;
25706 let Inst{31-21} = 0b10001100000;
25707 let hasNewValue = 1;
25708 let opNewValue = 0;
25709 }
25710 def S6_rol_i_r_acc : HInst<
25711 (outs IntRegs:$Rx32),
25712 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
25713 "$Rx32 += rol($Rs32,#$Ii)",
25714 tc_5e4cf0e8, TypeS_2op>, Enc_28a2dc, Requires<[HasV60]> {
25715 let Inst{7-5} = 0b111;
25716 let Inst{13-13} = 0b0;
25717 let Inst{31-21} = 0b10001110000;
25718 let hasNewValue = 1;
25719 let opNewValue = 0;
25720 let prefersSlot3 = 1;
25721 let Constraints = "$Rx32 = $Rx32in";
25722 }
25723 def S6_rol_i_r_and : HInst<
25724 (outs IntRegs:$Rx32),
25725 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
25726 "$Rx32 &= rol($Rs32,#$Ii)",
25727 tc_5e4cf0e8, TypeS_2op>, Enc_28a2dc, Requires<[HasV60]> {
25728 let Inst{7-5} = 0b011;
25729 let Inst{13-13} = 0b0;
25730 let Inst{31-21} = 0b10001110010;
25731 let hasNewValue = 1;
25732 let opNewValue = 0;
25733 let prefersSlot3 = 1;
25734 let Constraints = "$Rx32 = $Rx32in";
25735 }
25736 def S6_rol_i_r_nac : HInst<
25737 (outs IntRegs:$Rx32),
25738 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
25739 "$Rx32 -= rol($Rs32,#$Ii)",
25740 tc_5e4cf0e8, TypeS_2op>, Enc_28a2dc, Requires<[HasV60]> {
25741 let Inst{7-5} = 0b011;
25742 let Inst{13-13} = 0b0;
25743 let Inst{31-21} = 0b10001110000;
25744 let hasNewValue = 1;
25745 let opNewValue = 0;
25746 let prefersSlot3 = 1;
25747 let Constraints = "$Rx32 = $Rx32in";
25748 }
25749 def S6_rol_i_r_or : HInst<
25750 (outs IntRegs:$Rx32),
25751 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
25752 "$Rx32 |= rol($Rs32,#$Ii)",
25753 tc_5e4cf0e8, TypeS_2op>, Enc_28a2dc, Requires<[HasV60]> {
25754 let Inst{7-5} = 0b111;
25755 let Inst{13-13} = 0b0;
25756 let Inst{31-21} = 0b10001110010;
25757 let hasNewValue = 1;
25758 let opNewValue = 0;
25759 let prefersSlot3 = 1;
25760 let Constraints = "$Rx32 = $Rx32in";
25761 }
25762 def S6_rol_i_r_xacc : HInst<
25763 (outs IntRegs:$Rx32),
25764 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
25765 "$Rx32 ^= rol($Rs32,#$Ii)",
25766 tc_5e4cf0e8, TypeS_2op>, Enc_28a2dc, Requires<[HasV60]> {
25767 let Inst{7-5} = 0b011;
25768 let Inst{13-13} = 0b0;
25769 let Inst{31-21} = 0b10001110100;
25770 let hasNewValue = 1;
25771 let opNewValue = 0;
25772 let prefersSlot3 = 1;
25773 let Constraints = "$Rx32 = $Rx32in";
25774 }
25775 def S6_vsplatrbp : HInst<
25776 (outs DoubleRegs:$Rdd32),
25777 (ins IntRegs:$Rs32),
25778 "$Rdd32 = vsplatb($Rs32)",
25779 tc_ef921005, TypeS_2op>, Enc_3a3d62, Requires<[HasV62]> {
25780 let Inst{13-5} = 0b000000100;
25781 let Inst{31-21} = 0b10000100010;
25782 }
25783 def S6_vtrunehb_ppp : HInst<
25784 (outs DoubleRegs:$Rdd32),
25785 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
25786 "$Rdd32 = vtrunehb($Rss32,$Rtt32)",
25787 tc_407e96f9, TypeS_3op>, Enc_a56825, Requires<[HasV62]> {
25788 let Inst{7-5} = 0b011;
25789 let Inst{13-13} = 0b0;
25790 let Inst{31-21} = 0b11000001100;
25791 }
25792 def S6_vtrunohb_ppp : HInst<
25793 (outs DoubleRegs:$Rdd32),
25794 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
25795 "$Rdd32 = vtrunohb($Rss32,$Rtt32)",
25796 tc_407e96f9, TypeS_3op>, Enc_a56825, Requires<[HasV62]> {
25797 let Inst{7-5} = 0b101;
25798 let Inst{13-13} = 0b0;
25799 let Inst{31-21} = 0b11000001100;
25800 }
25801 def SA1_addi : HInst<
25802 (outs GeneralSubRegs:$Rx16),
25803 (ins IntRegs:$Rx16in, s32_0Imm:$Ii),
25804 "$Rx16 = add($Rx16in,#$Ii)",
25805 tc_5b347363, TypeSUBINSN>, Enc_93af4c {
25806 let Inst{12-11} = 0b00;
25807 let hasNewValue = 1;
25808 let opNewValue = 0;
25809 let AsmVariantName = "NonParsable";
25810 let DecoderNamespace = "SUBINSN_A";
25811 let isExtendable = 1;
25812 let opExtendable = 2;
25813 let isExtentSigned = 1;
25814 let opExtentBits = 7;
25815 let opExtentAlign = 0;
25816 let Constraints = "$Rx16 = $Rx16in";
25817 }
25818 def SA1_addrx : HInst<
25819 (outs GeneralSubRegs:$Rx16),
25820 (ins IntRegs:$Rx16in, GeneralSubRegs:$Rs16),
25821 "$Rx16 = add($Rx16in,$Rs16)",
25822 tc_5b347363, TypeSUBINSN>, Enc_0527db {
25823 let Inst{12-8} = 0b11000;
25824 let hasNewValue = 1;
25825 let opNewValue = 0;
25826 let AsmVariantName = "NonParsable";
25827 let DecoderNamespace = "SUBINSN_A";
25828 let Constraints = "$Rx16 = $Rx16in";
25829 }
25830 def SA1_addsp : HInst<
25831 (outs GeneralSubRegs:$Rd16),
25832 (ins u6_2Imm:$Ii),
25833 "$Rd16 = add(r29,#$Ii)",
25834 tc_3d14a17b, TypeSUBINSN>, Enc_2df31d {
25835 let Inst{12-10} = 0b011;
25836 let hasNewValue = 1;
25837 let opNewValue = 0;
25838 let AsmVariantName = "NonParsable";
25839 let Uses = [R29];
25840 let DecoderNamespace = "SUBINSN_A";
25841 }
25842 def SA1_and1 : HInst<
25843 (outs GeneralSubRegs:$Rd16),
25844 (ins GeneralSubRegs:$Rs16),
25845 "$Rd16 = and($Rs16,#1)",
25846 tc_3d14a17b, TypeSUBINSN>, Enc_97d666 {
25847 let Inst{12-8} = 0b10010;
25848 let hasNewValue = 1;
25849 let opNewValue = 0;
25850 let AsmVariantName = "NonParsable";
25851 let DecoderNamespace = "SUBINSN_A";
25852 }
25853 def SA1_clrf : HInst<
25854 (outs GeneralSubRegs:$Rd16),
25855 (ins),
25856 "if (!p0) $Rd16 = #0",
25857 tc_3fbf1042, TypeSUBINSN>, Enc_1f5ba6 {
25858 let Inst{12-4} = 0b110100111;
25859 let isPredicated = 1;
25860 let isPredicatedFalse = 1;
25861 let hasNewValue = 1;
25862 let opNewValue = 0;
25863 let AsmVariantName = "NonParsable";
25864 let Uses = [P0];
25865 let DecoderNamespace = "SUBINSN_A";
25866 }
25867 def SA1_clrfnew : HInst<
25868 (outs GeneralSubRegs:$Rd16),
25869 (ins),
25870 "if (!p0.new) $Rd16 = #0",
25871 tc_63567288, TypeSUBINSN>, Enc_1f5ba6 {
25872 let Inst{12-4} = 0b110100101;
25873 let isPredicated = 1;
25874 let isPredicatedFalse = 1;
25875 let hasNewValue = 1;
25876 let opNewValue = 0;
25877 let AsmVariantName = "NonParsable";
25878 let isPredicatedNew = 1;
25879 let Uses = [P0];
25880 let DecoderNamespace = "SUBINSN_A";
25881 }
25882 def SA1_clrt : HInst<
25883 (outs GeneralSubRegs:$Rd16),
25884 (ins),
25885 "if (p0) $Rd16 = #0",
25886 tc_3fbf1042, TypeSUBINSN>, Enc_1f5ba6 {
25887 let Inst{12-4} = 0b110100110;
25888 let isPredicated = 1;
25889 let hasNewValue = 1;
25890 let opNewValue = 0;
25891 let AsmVariantName = "NonParsable";
25892 let Uses = [P0];
25893 let DecoderNamespace = "SUBINSN_A";
25894 }
25895 def SA1_clrtnew : HInst<
25896 (outs GeneralSubRegs:$Rd16),
25897 (ins),
25898 "if (p0.new) $Rd16 = #0",
25899 tc_63567288, TypeSUBINSN>, Enc_1f5ba6 {
25900 let Inst{12-4} = 0b110100100;
25901 let isPredicated = 1;
25902 let hasNewValue = 1;
25903 let opNewValue = 0;
25904 let AsmVariantName = "NonParsable";
25905 let isPredicatedNew = 1;
25906 let Uses = [P0];
25907 let DecoderNamespace = "SUBINSN_A";
25908 }
25909 def SA1_cmpeqi : HInst<
25910 (outs),
25911 (ins GeneralSubRegs:$Rs16, u2_0Imm:$Ii),
25912 "p0 = cmp.eq($Rs16,#$Ii)",
25913 tc_59a7822c, TypeSUBINSN>, Enc_63eaeb {
25914 let Inst{3-2} = 0b00;
25915 let Inst{12-8} = 0b11001;
25916 let AsmVariantName = "NonParsable";
25917 let Defs = [P0];
25918 let DecoderNamespace = "SUBINSN_A";
25919 }
25920 def SA1_combine0i : HInst<
25921 (outs GeneralDoubleLow8Regs:$Rdd8),
25922 (ins u2_0Imm:$Ii),
25923 "$Rdd8 = combine(#0,#$Ii)",
25924 tc_3d14a17b, TypeSUBINSN>, Enc_ed48be {
25925 let Inst{4-3} = 0b00;
25926 let Inst{12-7} = 0b111000;
25927 let hasNewValue = 1;
25928 let opNewValue = 0;
25929 let AsmVariantName = "NonParsable";
25930 let DecoderNamespace = "SUBINSN_A";
25931 }
25932 def SA1_combine1i : HInst<
25933 (outs GeneralDoubleLow8Regs:$Rdd8),
25934 (ins u2_0Imm:$Ii),
25935 "$Rdd8 = combine(#1,#$Ii)",
25936 tc_3d14a17b, TypeSUBINSN>, Enc_ed48be {
25937 let Inst{4-3} = 0b01;
25938 let Inst{12-7} = 0b111000;
25939 let hasNewValue = 1;
25940 let opNewValue = 0;
25941 let AsmVariantName = "NonParsable";
25942 let DecoderNamespace = "SUBINSN_A";
25943 }
25944 def SA1_combine2i : HInst<
25945 (outs GeneralDoubleLow8Regs:$Rdd8),
25946 (ins u2_0Imm:$Ii),
25947 "$Rdd8 = combine(#2,#$Ii)",
25948 tc_3d14a17b, TypeSUBINSN>, Enc_ed48be {
25949 let Inst{4-3} = 0b10;
25950 let Inst{12-7} = 0b111000;
25951 let hasNewValue = 1;
25952 let opNewValue = 0;
25953 let AsmVariantName = "NonParsable";
25954 let DecoderNamespace = "SUBINSN_A";
25955 }
25956 def SA1_combine3i : HInst<
25957 (outs GeneralDoubleLow8Regs:$Rdd8),
25958 (ins u2_0Imm:$Ii),
25959 "$Rdd8 = combine(#3,#$Ii)",
25960 tc_3d14a17b, TypeSUBINSN>, Enc_ed48be {
25961 let Inst{4-3} = 0b11;
25962 let Inst{12-7} = 0b111000;
25963 let hasNewValue = 1;
25964 let opNewValue = 0;
25965 let AsmVariantName = "NonParsable";
25966 let DecoderNamespace = "SUBINSN_A";
25967 }
25968 def SA1_combinerz : HInst<
25969 (outs GeneralDoubleLow8Regs:$Rdd8),
25970 (ins GeneralSubRegs:$Rs16),
25971 "$Rdd8 = combine($Rs16,#0)",
25972 tc_3d14a17b, TypeSUBINSN>, Enc_399e12 {
25973 let Inst{3-3} = 0b1;
25974 let Inst{12-8} = 0b11101;
25975 let hasNewValue = 1;
25976 let opNewValue = 0;
25977 let AsmVariantName = "NonParsable";
25978 let DecoderNamespace = "SUBINSN_A";
25979 }
25980 def SA1_combinezr : HInst<
25981 (outs GeneralDoubleLow8Regs:$Rdd8),
25982 (ins GeneralSubRegs:$Rs16),
25983 "$Rdd8 = combine(#0,$Rs16)",
25984 tc_3d14a17b, TypeSUBINSN>, Enc_399e12 {
25985 let Inst{3-3} = 0b0;
25986 let Inst{12-8} = 0b11101;
25987 let hasNewValue = 1;
25988 let opNewValue = 0;
25989 let AsmVariantName = "NonParsable";
25990 let DecoderNamespace = "SUBINSN_A";
25991 }
25992 def SA1_dec : HInst<
25993 (outs GeneralSubRegs:$Rd16),
25994 (ins GeneralSubRegs:$Rs16, n1Const:$n1),
25995 "$Rd16 = add($Rs16,#$n1)",
25996 tc_5b347363, TypeSUBINSN>, Enc_ee5ed0 {
25997 let Inst{12-8} = 0b10011;
25998 let hasNewValue = 1;
25999 let opNewValue = 0;
26000 let AsmVariantName = "NonParsable";
26001 let DecoderNamespace = "SUBINSN_A";
26002 }
26003 def SA1_inc : HInst<
26004 (outs GeneralSubRegs:$Rd16),
26005 (ins GeneralSubRegs:$Rs16),
26006 "$Rd16 = add($Rs16,#1)",
26007 tc_3d14a17b, TypeSUBINSN>, Enc_97d666 {
26008 let Inst{12-8} = 0b10001;
26009 let hasNewValue = 1;
26010 let opNewValue = 0;
26011 let AsmVariantName = "NonParsable";
26012 let DecoderNamespace = "SUBINSN_A";
26013 }
26014 def SA1_seti : HInst<
26015 (outs GeneralSubRegs:$Rd16),
26016 (ins u32_0Imm:$Ii),
26017 "$Rd16 = #$Ii",
26018 tc_3d14a17b, TypeSUBINSN>, Enc_e39bb2 {
26019 let Inst{12-10} = 0b010;
26020 let hasNewValue = 1;
26021 let opNewValue = 0;
26022 let AsmVariantName = "NonParsable";
26023 let DecoderNamespace = "SUBINSN_A";
26024 let isExtendable = 1;
26025 let opExtendable = 1;
26026 let isExtentSigned = 0;
26027 let opExtentBits = 6;
26028 let opExtentAlign = 0;
26029 }
26030 def SA1_setin1 : HInst<
26031 (outs GeneralSubRegs:$Rd16),
26032 (ins n1Const:$n1),
26033 "$Rd16 = #$n1",
26034 tc_3d14a17b, TypeSUBINSN>, Enc_7a0ea6 {
26035 let Inst{12-4} = 0b110100000;
26036 let hasNewValue = 1;
26037 let opNewValue = 0;
26038 let AsmVariantName = "NonParsable";
26039 let DecoderNamespace = "SUBINSN_A";
26040 }
26041 def SA1_sxtb : HInst<
26042 (outs GeneralSubRegs:$Rd16),
26043 (ins GeneralSubRegs:$Rs16),
26044 "$Rd16 = sxtb($Rs16)",
26045 tc_3d14a17b, TypeSUBINSN>, Enc_97d666 {
26046 let Inst{12-8} = 0b10101;
26047 let hasNewValue = 1;
26048 let opNewValue = 0;
26049 let AsmVariantName = "NonParsable";
26050 let DecoderNamespace = "SUBINSN_A";
26051 }
26052 def SA1_sxth : HInst<
26053 (outs GeneralSubRegs:$Rd16),
26054 (ins GeneralSubRegs:$Rs16),
26055 "$Rd16 = sxth($Rs16)",
26056 tc_3d14a17b, TypeSUBINSN>, Enc_97d666 {
26057 let Inst{12-8} = 0b10100;
26058 let hasNewValue = 1;
26059 let opNewValue = 0;
26060 let AsmVariantName = "NonParsable";
26061 let DecoderNamespace = "SUBINSN_A";
26062 }
26063 def SA1_tfr : HInst<
26064 (outs GeneralSubRegs:$Rd16),
26065 (ins GeneralSubRegs:$Rs16),
26066 "$Rd16 = $Rs16",
26067 tc_3d14a17b, TypeSUBINSN>, Enc_97d666 {
26068 let Inst{12-8} = 0b10000;
26069 let hasNewValue = 1;
26070 let opNewValue = 0;
26071 let AsmVariantName = "NonParsable";
26072 let DecoderNamespace = "SUBINSN_A";
26073 }
26074 def SA1_zxtb : HInst<
26075 (outs GeneralSubRegs:$Rd16),
26076 (ins GeneralSubRegs:$Rs16),
26077 "$Rd16 = and($Rs16,#255)",
26078 tc_3d14a17b, TypeSUBINSN>, Enc_97d666 {
26079 let Inst{12-8} = 0b10111;
26080 let hasNewValue = 1;
26081 let opNewValue = 0;
26082 let AsmVariantName = "NonParsable";
26083 let DecoderNamespace = "SUBINSN_A";
26084 }
26085 def SA1_zxth : HInst<
26086 (outs GeneralSubRegs:$Rd16),
26087 (ins GeneralSubRegs:$Rs16),
26088 "$Rd16 = zxth($Rs16)",
26089 tc_3d14a17b, TypeSUBINSN>, Enc_97d666 {
26090 let Inst{12-8} = 0b10110;
26091 let hasNewValue = 1;
26092 let opNewValue = 0;
26093 let AsmVariantName = "NonParsable";
26094 let DecoderNamespace = "SUBINSN_A";
26095 }
26096 def SL1_loadri_io : HInst<
26097 (outs GeneralSubRegs:$Rd16),
26098 (ins GeneralSubRegs:$Rs16, u4_2Imm:$Ii),
26099 "$Rd16 = memw($Rs16+#$Ii)",
26100 tc_4222e6bf, TypeSUBINSN>, Enc_53dca9 {
26101 let Inst{12-12} = 0b0;
26102 let hasNewValue = 1;
26103 let opNewValue = 0;
26104 let addrMode = BaseImmOffset;
26105 let accessSize = WordAccess;
26106 let AsmVariantName = "NonParsable";
26107 let mayLoad = 1;
26108 let DecoderNamespace = "SUBINSN_L1";
26109 }
26110 def SL1_loadrub_io : HInst<
26111 (outs GeneralSubRegs:$Rd16),
26112 (ins GeneralSubRegs:$Rs16, u4_0Imm:$Ii),
26113 "$Rd16 = memub($Rs16+#$Ii)",
26114 tc_4222e6bf, TypeSUBINSN>, Enc_c175d0 {
26115 let Inst{12-12} = 0b1;
26116 let hasNewValue = 1;
26117 let opNewValue = 0;
26118 let addrMode = BaseImmOffset;
26119 let accessSize = ByteAccess;
26120 let AsmVariantName = "NonParsable";
26121 let mayLoad = 1;
26122 let DecoderNamespace = "SUBINSN_L1";
26123 }
26124 def SL2_deallocframe : HInst<
26125 (outs),
26126 (ins),
26127 "deallocframe",
26128 tc_937dd41c, TypeSUBINSN>, Enc_e3b0c4 {
26129 let Inst{12-0} = 0b1111100000000;
26130 let accessSize = DoubleWordAccess;
26131 let AsmVariantName = "NonParsable";
26132 let mayLoad = 1;
26133 let Uses = [FRAMEKEY, R30];
26134 let Defs = [R29, R30, R31];
26135 let DecoderNamespace = "SUBINSN_L2";
26136 }
26137 def SL2_jumpr31 : HInst<
26138 (outs),
26139 (ins),
26140 "jumpr r31",
26141 tc_a4ee89db, TypeSUBINSN>, Enc_e3b0c4 {
26142 let Inst{12-0} = 0b1111111000000;
26143 let isTerminator = 1;
26144 let isIndirectBranch = 1;
26145 let AsmVariantName = "NonParsable";
26146 let cofMax1 = 1;
26147 let isReturn = 1;
26148 let Uses = [R31];
26149 let Defs = [PC];
26150 let DecoderNamespace = "SUBINSN_L2";
26151 }
26152 def SL2_jumpr31_f : HInst<
26153 (outs),
26154 (ins),
26155 "if (!p0) jumpr r31",
26156 tc_a4ee89db, TypeSUBINSN>, Enc_e3b0c4 {
26157 let Inst{12-0} = 0b1111111000101;
26158 let isPredicated = 1;
26159 let isPredicatedFalse = 1;
26160 let isTerminator = 1;
26161 let isIndirectBranch = 1;
26162 let AsmVariantName = "NonParsable";
26163 let cofMax1 = 1;
26164 let isReturn = 1;
26165 let Uses = [P0, R31];
26166 let Defs = [PC];
26167 let isTaken = Inst{4};
26168 let DecoderNamespace = "SUBINSN_L2";
26169 }
26170 def SL2_jumpr31_fnew : HInst<
26171 (outs),
26172 (ins),
26173 "if (!p0.new) jumpr:nt r31",
26174 tc_a4ee89db, TypeSUBINSN>, Enc_e3b0c4 {
26175 let Inst{12-0} = 0b1111111000111;
26176 let isPredicated = 1;
26177 let isPredicatedFalse = 1;
26178 let isTerminator = 1;
26179 let isIndirectBranch = 1;
26180 let AsmVariantName = "NonParsable";
26181 let isPredicatedNew = 1;
26182 let cofMax1 = 1;
26183 let isReturn = 1;
26184 let Uses = [P0, R31];
26185 let Defs = [PC];
26186 let isTaken = Inst{4};
26187 let DecoderNamespace = "SUBINSN_L2";
26188 }
26189 def SL2_jumpr31_t : HInst<
26190 (outs),
26191 (ins),
26192 "if (p0) jumpr r31",
26193 tc_a4ee89db, TypeSUBINSN>, Enc_e3b0c4 {
26194 let Inst{12-0} = 0b1111111000100;
26195 let isPredicated = 1;
26196 let isTerminator = 1;
26197 let isIndirectBranch = 1;
26198 let AsmVariantName = "NonParsable";
26199 let cofMax1 = 1;
26200 let isReturn = 1;
26201 let Uses = [P0, R31];
26202 let Defs = [PC];
26203 let isTaken = Inst{4};
26204 let DecoderNamespace = "SUBINSN_L2";
26205 }
26206 def SL2_jumpr31_tnew : HInst<
26207 (outs),
26208 (ins),
26209 "if (p0.new) jumpr:nt r31",
26210 tc_a4ee89db, TypeSUBINSN>, Enc_e3b0c4 {
26211 let Inst{12-0} = 0b1111111000110;
26212 let isPredicated = 1;
26213 let isTerminator = 1;
26214 let isIndirectBranch = 1;
26215 let AsmVariantName = "NonParsable";
26216 let isPredicatedNew = 1;
26217 let cofMax1 = 1;
26218 let isReturn = 1;
26219 let Uses = [P0, R31];
26220 let Defs = [PC];
26221 let isTaken = Inst{4};
26222 let DecoderNamespace = "SUBINSN_L2";
26223 }
26224 def SL2_loadrb_io : HInst<
26225 (outs GeneralSubRegs:$Rd16),
26226 (ins GeneralSubRegs:$Rs16, u3_0Imm:$Ii),
26227 "$Rd16 = memb($Rs16+#$Ii)",
26228 tc_4222e6bf, TypeSUBINSN>, Enc_2fbf3c {
26229 let Inst{12-11} = 0b10;
26230 let hasNewValue = 1;
26231 let opNewValue = 0;
26232 let addrMode = BaseImmOffset;
26233 let accessSize = ByteAccess;
26234 let AsmVariantName = "NonParsable";
26235 let mayLoad = 1;
26236 let DecoderNamespace = "SUBINSN_L2";
26237 }
26238 def SL2_loadrd_sp : HInst<
26239 (outs GeneralDoubleLow8Regs:$Rdd8),
26240 (ins u5_3Imm:$Ii),
26241 "$Rdd8 = memd(r29+#$Ii)",
26242 tc_8a6d0d94, TypeSUBINSN>, Enc_86a14b {
26243 let Inst{12-8} = 0b11110;
26244 let hasNewValue = 1;
26245 let opNewValue = 0;
26246 let addrMode = BaseImmOffset;
26247 let accessSize = DoubleWordAccess;
26248 let AsmVariantName = "NonParsable";
26249 let mayLoad = 1;
26250 let Uses = [R29];
26251 let DecoderNamespace = "SUBINSN_L2";
26252 }
26253 def SL2_loadrh_io : HInst<
26254 (outs GeneralSubRegs:$Rd16),
26255 (ins GeneralSubRegs:$Rs16, u3_1Imm:$Ii),
26256 "$Rd16 = memh($Rs16+#$Ii)",
26257 tc_4222e6bf, TypeSUBINSN>, Enc_2bae10 {
26258 let Inst{12-11} = 0b00;
26259 let hasNewValue = 1;
26260 let opNewValue = 0;
26261 let addrMode = BaseImmOffset;
26262 let accessSize = HalfWordAccess;
26263 let AsmVariantName = "NonParsable";
26264 let mayLoad = 1;
26265 let DecoderNamespace = "SUBINSN_L2";
26266 }
26267 def SL2_loadri_sp : HInst<
26268 (outs GeneralSubRegs:$Rd16),
26269 (ins u5_2Imm:$Ii),
26270 "$Rd16 = memw(r29+#$Ii)",
26271 tc_8a6d0d94, TypeSUBINSN>, Enc_51635c {
26272 let Inst{12-9} = 0b1110;
26273 let hasNewValue = 1;
26274 let opNewValue = 0;
26275 let addrMode = BaseImmOffset;
26276 let accessSize = WordAccess;
26277 let AsmVariantName = "NonParsable";
26278 let mayLoad = 1;
26279 let Uses = [R29];
26280 let DecoderNamespace = "SUBINSN_L2";
26281 }
26282 def SL2_loadruh_io : HInst<
26283 (outs GeneralSubRegs:$Rd16),
26284 (ins GeneralSubRegs:$Rs16, u3_1Imm:$Ii),
26285 "$Rd16 = memuh($Rs16+#$Ii)",
26286 tc_4222e6bf, TypeSUBINSN>, Enc_2bae10 {
26287 let Inst{12-11} = 0b01;
26288 let hasNewValue = 1;
26289 let opNewValue = 0;
26290 let addrMode = BaseImmOffset;
26291 let accessSize = HalfWordAccess;
26292 let AsmVariantName = "NonParsable";
26293 let mayLoad = 1;
26294 let DecoderNamespace = "SUBINSN_L2";
26295 }
26296 def SL2_return : HInst<
26297 (outs),
26298 (ins),
26299 "dealloc_return",
26300 tc_c818ff7f, TypeSUBINSN>, Enc_e3b0c4 {
26301 let Inst{12-0} = 0b1111101000000;
26302 let isTerminator = 1;
26303 let isIndirectBranch = 1;
26304 let accessSize = DoubleWordAccess;
26305 let AsmVariantName = "NonParsable";
26306 let mayLoad = 1;
26307 let cofMax1 = 1;
26308 let isRestrictNoSlot1Store = 1;
26309 let isReturn = 1;
26310 let Uses = [FRAMEKEY, R30];
26311 let Defs = [PC, R29, R30, R31];
26312 let DecoderNamespace = "SUBINSN_L2";
26313 }
26314 def SL2_return_f : HInst<
26315 (outs),
26316 (ins),
26317 "if (!p0) dealloc_return",
26318 tc_c818ff7f, TypeSUBINSN>, Enc_e3b0c4 {
26319 let Inst{12-0} = 0b1111101000101;
26320 let isPredicated = 1;
26321 let isPredicatedFalse = 1;
26322 let isTerminator = 1;
26323 let isIndirectBranch = 1;
26324 let accessSize = DoubleWordAccess;
26325 let AsmVariantName = "NonParsable";
26326 let mayLoad = 1;
26327 let cofMax1 = 1;
26328 let isRestrictNoSlot1Store = 1;
26329 let isReturn = 1;
26330 let Uses = [FRAMEKEY, P0, R30];
26331 let Defs = [PC, R29, R30, R31];
26332 let isTaken = Inst{4};
26333 let DecoderNamespace = "SUBINSN_L2";
26334 }
26335 def SL2_return_fnew : HInst<
26336 (outs),
26337 (ins),
26338 "if (!p0.new) dealloc_return:nt",
26339 tc_c818ff7f, TypeSUBINSN>, Enc_e3b0c4 {
26340 let Inst{12-0} = 0b1111101000111;
26341 let isPredicated = 1;
26342 let isPredicatedFalse = 1;
26343 let isTerminator = 1;
26344 let isIndirectBranch = 1;
26345 let accessSize = DoubleWordAccess;
26346 let AsmVariantName = "NonParsable";
26347 let isPredicatedNew = 1;
26348 let mayLoad = 1;
26349 let cofMax1 = 1;
26350 let isRestrictNoSlot1Store = 1;
26351 let isReturn = 1;
26352 let Uses = [FRAMEKEY, P0, R30];
26353 let Defs = [PC, R29, R30, R31];
26354 let isTaken = Inst{4};
26355 let DecoderNamespace = "SUBINSN_L2";
26356 }
26357 def SL2_return_t : HInst<
26358 (outs),
26359 (ins),
26360 "if (p0) dealloc_return",
26361 tc_c818ff7f, TypeSUBINSN>, Enc_e3b0c4 {
26362 let Inst{12-0} = 0b1111101000100;
26363 let isPredicated = 1;
26364 let isTerminator = 1;
26365 let isIndirectBranch = 1;
26366 let accessSize = DoubleWordAccess;
26367 let AsmVariantName = "NonParsable";
26368 let mayLoad = 1;
26369 let cofMax1 = 1;
26370 let isRestrictNoSlot1Store = 1;
26371 let isReturn = 1;
26372 let Uses = [FRAMEKEY, P0, R30];
26373 let Defs = [PC, R29, R30, R31];
26374 let isTaken = Inst{4};
26375 let DecoderNamespace = "SUBINSN_L2";
26376 }
26377 def SL2_return_tnew : HInst<
26378 (outs),
26379 (ins),
26380 "if (p0.new) dealloc_return:nt",
26381 tc_c818ff7f, TypeSUBINSN>, Enc_e3b0c4 {
26382 let Inst{12-0} = 0b1111101000110;
26383 let isPredicated = 1;
26384 let isTerminator = 1;
26385 let isIndirectBranch = 1;
26386 let accessSize = DoubleWordAccess;
26387 let AsmVariantName = "NonParsable";
26388 let isPredicatedNew = 1;
26389 let mayLoad = 1;
26390 let cofMax1 = 1;
26391 let isRestrictNoSlot1Store = 1;
26392 let isReturn = 1;
26393 let Uses = [FRAMEKEY, P0, R30];
26394 let Defs = [PC, R29, R30, R31];
26395 let isTaken = Inst{4};
26396 let DecoderNamespace = "SUBINSN_L2";
26397 }
26398 def SS1_storeb_io : HInst<
26399 (outs),
26400 (ins GeneralSubRegs:$Rs16, u4_0Imm:$Ii, GeneralSubRegs:$Rt16),
26401 "memb($Rs16+#$Ii) = $Rt16",
26402 tc_ae5babd7, TypeSUBINSN>, Enc_b38ffc {
26403 let Inst{12-12} = 0b1;
26404 let addrMode = BaseImmOffset;
26405 let accessSize = ByteAccess;
26406 let AsmVariantName = "NonParsable";
26407 let mayStore = 1;
26408 let DecoderNamespace = "SUBINSN_S1";
26409 }
26410 def SS1_storew_io : HInst<
26411 (outs),
26412 (ins GeneralSubRegs:$Rs16, u4_2Imm:$Ii, GeneralSubRegs:$Rt16),
26413 "memw($Rs16+#$Ii) = $Rt16",
26414 tc_ae5babd7, TypeSUBINSN>, Enc_f55a0c {
26415 let Inst{12-12} = 0b0;
26416 let addrMode = BaseImmOffset;
26417 let accessSize = WordAccess;
26418 let AsmVariantName = "NonParsable";
26419 let mayStore = 1;
26420 let DecoderNamespace = "SUBINSN_S1";
26421 }
26422 def SS2_allocframe : HInst<
26423 (outs),
26424 (ins u5_3Imm:$Ii),
26425 "allocframe(#$Ii)",
26426 tc_1242dc2a, TypeSUBINSN>, Enc_6f70ca {
26427 let Inst{3-0} = 0b0000;
26428 let Inst{12-9} = 0b1110;
26429 let addrMode = BaseImmOffset;
26430 let accessSize = DoubleWordAccess;
26431 let AsmVariantName = "NonParsable";
26432 let mayStore = 1;
26433 let Uses = [FRAMEKEY, FRAMELIMIT, R29, R30, R31];
26434 let Defs = [R29, R30];
26435 let DecoderNamespace = "SUBINSN_S2";
26436 }
26437 def SS2_storebi0 : HInst<
26438 (outs),
26439 (ins GeneralSubRegs:$Rs16, u4_0Imm:$Ii),
26440 "memb($Rs16+#$Ii) = #0",
26441 tc_44d5a428, TypeSUBINSN>, Enc_84d359 {
26442 let Inst{12-8} = 0b10010;
26443 let addrMode = BaseImmOffset;
26444 let accessSize = ByteAccess;
26445 let AsmVariantName = "NonParsable";
26446 let mayStore = 1;
26447 let DecoderNamespace = "SUBINSN_S2";
26448 }
26449 def SS2_storebi1 : HInst<
26450 (outs),
26451 (ins GeneralSubRegs:$Rs16, u4_0Imm:$Ii),
26452 "memb($Rs16+#$Ii) = #1",
26453 tc_44d5a428, TypeSUBINSN>, Enc_84d359 {
26454 let Inst{12-8} = 0b10011;
26455 let addrMode = BaseImmOffset;
26456 let accessSize = ByteAccess;
26457 let AsmVariantName = "NonParsable";
26458 let mayStore = 1;
26459 let DecoderNamespace = "SUBINSN_S2";
26460 }
26461 def SS2_stored_sp : HInst<
26462 (outs),
26463 (ins s6_3Imm:$Ii, GeneralDoubleLow8Regs:$Rtt8),
26464 "memd(r29+#$Ii) = $Rtt8",
26465 tc_0655b949, TypeSUBINSN>, Enc_b8309d {
26466 let Inst{12-9} = 0b0101;
26467 let addrMode = BaseImmOffset;
26468 let accessSize = DoubleWordAccess;
26469 let AsmVariantName = "NonParsable";
26470 let mayStore = 1;
26471 let Uses = [R29];
26472 let DecoderNamespace = "SUBINSN_S2";
26473 }
26474 def SS2_storeh_io : HInst<
26475 (outs),
26476 (ins GeneralSubRegs:$Rs16, u3_1Imm:$Ii, GeneralSubRegs:$Rt16),
26477 "memh($Rs16+#$Ii) = $Rt16",
26478 tc_ae5babd7, TypeSUBINSN>, Enc_625deb {
26479 let Inst{12-11} = 0b00;
26480 let addrMode = BaseImmOffset;
26481 let accessSize = HalfWordAccess;
26482 let AsmVariantName = "NonParsable";
26483 let mayStore = 1;
26484 let DecoderNamespace = "SUBINSN_S2";
26485 }
26486 def SS2_storew_sp : HInst<
26487 (outs),
26488 (ins u5_2Imm:$Ii, GeneralSubRegs:$Rt16),
26489 "memw(r29+#$Ii) = $Rt16",
26490 tc_0655b949, TypeSUBINSN>, Enc_87c142 {
26491 let Inst{12-9} = 0b0100;
26492 let addrMode = BaseImmOffset;
26493 let accessSize = WordAccess;
26494 let AsmVariantName = "NonParsable";
26495 let mayStore = 1;
26496 let Uses = [R29];
26497 let DecoderNamespace = "SUBINSN_S2";
26498 }
26499 def SS2_storewi0 : HInst<
26500 (outs),
26501 (ins GeneralSubRegs:$Rs16, u4_2Imm:$Ii),
26502 "memw($Rs16+#$Ii) = #0",
26503 tc_44d5a428, TypeSUBINSN>, Enc_a6ce9c {
26504 let Inst{12-8} = 0b10000;
26505 let addrMode = BaseImmOffset;
26506 let accessSize = WordAccess;
26507 let AsmVariantName = "NonParsable";
26508 let mayStore = 1;
26509 let DecoderNamespace = "SUBINSN_S2";
26510 }
26511 def SS2_storewi1 : HInst<
26512 (outs),
26513 (ins GeneralSubRegs:$Rs16, u4_2Imm:$Ii),
26514 "memw($Rs16+#$Ii) = #1",
26515 tc_44d5a428, TypeSUBINSN>, Enc_a6ce9c {
26516 let Inst{12-8} = 0b10001;
26517 let addrMode = BaseImmOffset;
26518 let accessSize = WordAccess;
26519 let AsmVariantName = "NonParsable";
26520 let mayStore = 1;
26521 let DecoderNamespace = "SUBINSN_S2";
26522 }
26523 def V6_MAP_equb : HInst<
26524 (outs HvxQR:$Qd4),
26525 (ins HvxVR:$Vu32, HvxVR:$Vv32),
26526 "$Qd4 = vcmp.eq($Vu32.ub,$Vv32.ub)",
26527 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26528 let hasNewValue = 1;
26529 let opNewValue = 0;
26530 let isCVI = 1;
26531 let isPseudo = 1;
26532 let isCodeGenOnly = 1;
26533 let DecoderNamespace = "EXT_mmvec";
26534 }
26535 def V6_MAP_equb_and : HInst<
26536 (outs HvxQR:$Qx4),
26537 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
26538 "$Qx4 &= vcmp.eq($Vu32.ub,$Vv32.ub)",
26539 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26540 let isCVI = 1;
26541 let isPseudo = 1;
26542 let isCodeGenOnly = 1;
26543 let DecoderNamespace = "EXT_mmvec";
26544 let Constraints = "$Qx4 = $Qx4in";
26545 }
26546 def V6_MAP_equb_ior : HInst<
26547 (outs HvxQR:$Qx4),
26548 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
26549 "$Qx4 |= vcmp.eq($Vu32.ub,$Vv32.ub)",
26550 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26551 let isAccumulator = 1;
26552 let isCVI = 1;
26553 let isPseudo = 1;
26554 let isCodeGenOnly = 1;
26555 let DecoderNamespace = "EXT_mmvec";
26556 let Constraints = "$Qx4 = $Qx4in";
26557 }
26558 def V6_MAP_equb_xor : HInst<
26559 (outs HvxQR:$Qx4),
26560 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
26561 "$Qx4 ^= vcmp.eq($Vu32.ub,$Vv32.ub)",
26562 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26563 let isCVI = 1;
26564 let isPseudo = 1;
26565 let isCodeGenOnly = 1;
26566 let DecoderNamespace = "EXT_mmvec";
26567 let Constraints = "$Qx4 = $Qx4in";
26568 }
26569 def V6_MAP_equh : HInst<
26570 (outs HvxQR:$Qd4),
26571 (ins HvxVR:$Vu32, HvxVR:$Vv32),
26572 "$Qd4 = vcmp.eq($Vu32.uh,$Vv32.uh)",
26573 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26574 let hasNewValue = 1;
26575 let opNewValue = 0;
26576 let isCVI = 1;
26577 let isPseudo = 1;
26578 let isCodeGenOnly = 1;
26579 let DecoderNamespace = "EXT_mmvec";
26580 }
26581 def V6_MAP_equh_and : HInst<
26582 (outs HvxQR:$Qx4),
26583 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
26584 "$Qx4 &= vcmp.eq($Vu32.uh,$Vv32.uh)",
26585 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26586 let isCVI = 1;
26587 let isPseudo = 1;
26588 let isCodeGenOnly = 1;
26589 let DecoderNamespace = "EXT_mmvec";
26590 let Constraints = "$Qx4 = $Qx4in";
26591 }
26592 def V6_MAP_equh_ior : HInst<
26593 (outs HvxQR:$Qx4),
26594 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
26595 "$Qx4 |= vcmp.eq($Vu32.uh,$Vv32.uh)",
26596 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26597 let isAccumulator = 1;
26598 let isCVI = 1;
26599 let isPseudo = 1;
26600 let isCodeGenOnly = 1;
26601 let DecoderNamespace = "EXT_mmvec";
26602 let Constraints = "$Qx4 = $Qx4in";
26603 }
26604 def V6_MAP_equh_xor : HInst<
26605 (outs HvxQR:$Qx4),
26606 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
26607 "$Qx4 ^= vcmp.eq($Vu32.uh,$Vv32.uh)",
26608 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26609 let isCVI = 1;
26610 let isPseudo = 1;
26611 let isCodeGenOnly = 1;
26612 let DecoderNamespace = "EXT_mmvec";
26613 let Constraints = "$Qx4 = $Qx4in";
26614 }
26615 def V6_MAP_equw : HInst<
26616 (outs HvxQR:$Qd4),
26617 (ins HvxVR:$Vu32, HvxVR:$Vv32),
26618 "$Qd4 = vcmp.eq($Vu32.uw,$Vv32.uw)",
26619 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26620 let hasNewValue = 1;
26621 let opNewValue = 0;
26622 let isCVI = 1;
26623 let isPseudo = 1;
26624 let isCodeGenOnly = 1;
26625 let DecoderNamespace = "EXT_mmvec";
26626 }
26627 def V6_MAP_equw_and : HInst<
26628 (outs HvxQR:$Qx4),
26629 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
26630 "$Qx4 &= vcmp.eq($Vu32.uw,$Vv32.uw)",
26631 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26632 let isCVI = 1;
26633 let isPseudo = 1;
26634 let isCodeGenOnly = 1;
26635 let DecoderNamespace = "EXT_mmvec";
26636 let Constraints = "$Qx4 = $Qx4in";
26637 }
26638 def V6_MAP_equw_ior : HInst<
26639 (outs HvxQR:$Qx4),
26640 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
26641 "$Qx4 |= vcmp.eq($Vu32.uw,$Vv32.uw)",
26642 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26643 let isAccumulator = 1;
26644 let isCVI = 1;
26645 let isPseudo = 1;
26646 let isCodeGenOnly = 1;
26647 let DecoderNamespace = "EXT_mmvec";
26648 let Constraints = "$Qx4 = $Qx4in";
26649 }
26650 def V6_MAP_equw_xor : HInst<
26651 (outs HvxQR:$Qx4),
26652 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
26653 "$Qx4 ^= vcmp.eq($Vu32.uw,$Vv32.uw)",
26654 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26655 let isCVI = 1;
26656 let isPseudo = 1;
26657 let isCodeGenOnly = 1;
26658 let DecoderNamespace = "EXT_mmvec";
26659 let Constraints = "$Qx4 = $Qx4in";
26660 }
26661 def V6_extractw : HInst<
26662 (outs IntRegs:$Rd32),
26663 (ins HvxVR:$Vu32, IntRegs:$Rs32),
26664 "$Rd32 = vextract($Vu32,$Rs32)",
26665 tc_540c3da3, TypeLD>, Enc_50e578, Requires<[UseHVXV60]> {
26666 let Inst{7-5} = 0b001;
26667 let Inst{13-13} = 0b0;
26668 let Inst{31-21} = 0b10010010000;
26669 let hasNewValue = 1;
26670 let opNewValue = 0;
26671 let isCVI = 1;
26672 let isSolo = 1;
26673 let mayLoad = 1;
26674 let DecoderNamespace = "EXT_mmvec";
26675 }
26676 def V6_extractw_alt : HInst<
26677 (outs IntRegs:$Rd32),
26678 (ins HvxVR:$Vu32, IntRegs:$Rs32),
26679 "$Rd32.w = vextract($Vu32,$Rs32)",
26680 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26681 let hasNewValue = 1;
26682 let opNewValue = 0;
26683 let isCVI = 1;
26684 let isPseudo = 1;
26685 let isCodeGenOnly = 1;
26686 let DecoderNamespace = "EXT_mmvec";
26687 }
26688 def V6_hi : HInst<
26689 (outs HvxVR:$Vd32),
26690 (ins HvxWR:$Vss32),
26691 "$Vd32 = hi($Vss32)",
26692 CVI_VA, TypeCVI_VA>, Requires<[UseHVXV60]> {
26693 let hasNewValue = 1;
26694 let opNewValue = 0;
26695 let isCVI = 1;
26696 let isPseudo = 1;
26697 let DecoderNamespace = "EXT_mmvec";
26698 }
26699 def V6_ld0 : HInst<
26700 (outs HvxVR:$Vd32),
26701 (ins IntRegs:$Rt32),
26702 "$Vd32 = vmem($Rt32)",
26703 PSEUDO, TypeCVI_VM_LD>, Requires<[UseHVXV60]> {
26704 let hasNewValue = 1;
26705 let opNewValue = 0;
26706 let isCVI = 1;
26707 let isPseudo = 1;
26708 let isCodeGenOnly = 1;
26709 let DecoderNamespace = "EXT_mmvec";
26710 }
26711 def V6_ldcnp0 : HInst<
26712 (outs HvxVR:$Vd32),
26713 (ins PredRegs:$Pv4, IntRegs:$Rt32),
26714 "if (!$Pv4) $Vd32.cur = vmem($Rt32)",
26715 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
26716 let hasNewValue = 1;
26717 let opNewValue = 0;
26718 let isCVI = 1;
26719 let isPseudo = 1;
26720 let isCodeGenOnly = 1;
26721 let DecoderNamespace = "EXT_mmvec";
26722 }
26723 def V6_ldcnpnt0 : HInst<
26724 (outs HvxVR:$Vd32),
26725 (ins PredRegs:$Pv4, IntRegs:$Rt32),
26726 "if (!$Pv4) $Vd32.cur = vmem($Rt32):nt",
26727 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
26728 let hasNewValue = 1;
26729 let opNewValue = 0;
26730 let isCVI = 1;
26731 let isPseudo = 1;
26732 let isCodeGenOnly = 1;
26733 let DecoderNamespace = "EXT_mmvec";
26734 }
26735 def V6_ldcp0 : HInst<
26736 (outs HvxVR:$Vd32),
26737 (ins PredRegs:$Pv4, IntRegs:$Rt32),
26738 "if ($Pv4) $Vd32.cur = vmem($Rt32)",
26739 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
26740 let hasNewValue = 1;
26741 let opNewValue = 0;
26742 let isCVI = 1;
26743 let isPseudo = 1;
26744 let isCodeGenOnly = 1;
26745 let DecoderNamespace = "EXT_mmvec";
26746 }
26747 def V6_ldcpnt0 : HInst<
26748 (outs HvxVR:$Vd32),
26749 (ins PredRegs:$Pv4, IntRegs:$Rt32),
26750 "if ($Pv4) $Vd32.cur = vmem($Rt32):nt",
26751 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
26752 let hasNewValue = 1;
26753 let opNewValue = 0;
26754 let isCVI = 1;
26755 let isPseudo = 1;
26756 let isCodeGenOnly = 1;
26757 let DecoderNamespace = "EXT_mmvec";
26758 }
26759 def V6_ldnp0 : HInst<
26760 (outs HvxVR:$Vd32),
26761 (ins PredRegs:$Pv4, IntRegs:$Rt32),
26762 "if (!$Pv4) $Vd32 = vmem($Rt32)",
26763 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
26764 let hasNewValue = 1;
26765 let opNewValue = 0;
26766 let isCVI = 1;
26767 let isPseudo = 1;
26768 let isCodeGenOnly = 1;
26769 let DecoderNamespace = "EXT_mmvec";
26770 }
26771 def V6_ldnpnt0 : HInst<
26772 (outs HvxVR:$Vd32),
26773 (ins PredRegs:$Pv4, IntRegs:$Rt32),
26774 "if (!$Pv4) $Vd32 = vmem($Rt32):nt",
26775 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
26776 let hasNewValue = 1;
26777 let opNewValue = 0;
26778 let isCVI = 1;
26779 let isPseudo = 1;
26780 let isCodeGenOnly = 1;
26781 let DecoderNamespace = "EXT_mmvec";
26782 }
26783 def V6_ldnt0 : HInst<
26784 (outs HvxVR:$Vd32),
26785 (ins IntRegs:$Rt32),
26786 "$Vd32 = vmem($Rt32):nt",
26787 PSEUDO, TypeCVI_VM_LD>, Requires<[UseHVXV60]> {
26788 let hasNewValue = 1;
26789 let opNewValue = 0;
26790 let isCVI = 1;
26791 let isPseudo = 1;
26792 let isCodeGenOnly = 1;
26793 let DecoderNamespace = "EXT_mmvec";
26794 }
26795 def V6_ldntnt0 : HInst<
26796 (outs HvxVR:$Vd32),
26797 (ins IntRegs:$Rt32),
26798 "$Vd32 = vmem($Rt32):nt",
26799 PSEUDO, TypeMAPPING>, Requires<[HasV62]> {
26800 let hasNewValue = 1;
26801 let opNewValue = 0;
26802 let isPseudo = 1;
26803 let isCodeGenOnly = 1;
26804 let DecoderNamespace = "EXT_mmvec";
26805 }
26806 def V6_ldp0 : HInst<
26807 (outs HvxVR:$Vd32),
26808 (ins PredRegs:$Pv4, IntRegs:$Rt32),
26809 "if ($Pv4) $Vd32 = vmem($Rt32)",
26810 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
26811 let hasNewValue = 1;
26812 let opNewValue = 0;
26813 let isCVI = 1;
26814 let isPseudo = 1;
26815 let isCodeGenOnly = 1;
26816 let DecoderNamespace = "EXT_mmvec";
26817 }
26818 def V6_ldpnt0 : HInst<
26819 (outs HvxVR:$Vd32),
26820 (ins PredRegs:$Pv4, IntRegs:$Rt32),
26821 "if ($Pv4) $Vd32 = vmem($Rt32):nt",
26822 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
26823 let hasNewValue = 1;
26824 let opNewValue = 0;
26825 let isCVI = 1;
26826 let isPseudo = 1;
26827 let isCodeGenOnly = 1;
26828 let DecoderNamespace = "EXT_mmvec";
26829 }
26830 def V6_ldtnp0 : HInst<
26831 (outs HvxVR:$Vd32),
26832 (ins PredRegs:$Pv4, IntRegs:$Rt32),
26833 "if (!$Pv4) $Vd32.tmp = vmem($Rt32)",
26834 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
26835 let hasNewValue = 1;
26836 let opNewValue = 0;
26837 let isCVI = 1;
26838 let isPseudo = 1;
26839 let isCodeGenOnly = 1;
26840 let DecoderNamespace = "EXT_mmvec";
26841 }
26842 def V6_ldtnpnt0 : HInst<
26843 (outs HvxVR:$Vd32),
26844 (ins PredRegs:$Pv4, IntRegs:$Rt32),
26845 "if (!$Pv4) $Vd32.tmp = vmem($Rt32):nt",
26846 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
26847 let hasNewValue = 1;
26848 let opNewValue = 0;
26849 let isCVI = 1;
26850 let isPseudo = 1;
26851 let isCodeGenOnly = 1;
26852 let DecoderNamespace = "EXT_mmvec";
26853 }
26854 def V6_ldtp0 : HInst<
26855 (outs HvxVR:$Vd32),
26856 (ins PredRegs:$Pv4, IntRegs:$Rt32),
26857 "if ($Pv4) $Vd32.tmp = vmem($Rt32)",
26858 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
26859 let hasNewValue = 1;
26860 let opNewValue = 0;
26861 let isCVI = 1;
26862 let isPseudo = 1;
26863 let isCodeGenOnly = 1;
26864 let DecoderNamespace = "EXT_mmvec";
26865 }
26866 def V6_ldtpnt0 : HInst<
26867 (outs HvxVR:$Vd32),
26868 (ins PredRegs:$Pv4, IntRegs:$Rt32),
26869 "if ($Pv4) $Vd32.tmp = vmem($Rt32):nt",
26870 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
26871 let hasNewValue = 1;
26872 let opNewValue = 0;
26873 let isCVI = 1;
26874 let isPseudo = 1;
26875 let isCodeGenOnly = 1;
26876 let DecoderNamespace = "EXT_mmvec";
26877 }
26878 def V6_ldu0 : HInst<
26879 (outs HvxVR:$Vd32),
26880 (ins IntRegs:$Rt32),
26881 "$Vd32 = vmemu($Rt32)",
26882 PSEUDO, TypeCVI_VM_LD>, Requires<[UseHVXV60]> {
26883 let hasNewValue = 1;
26884 let opNewValue = 0;
26885 let isCVI = 1;
26886 let isPseudo = 1;
26887 let isCodeGenOnly = 1;
26888 let DecoderNamespace = "EXT_mmvec";
26889 }
26890 def V6_lo : HInst<
26891 (outs HvxVR:$Vd32),
26892 (ins HvxWR:$Vss32),
26893 "$Vd32 = lo($Vss32)",
26894 CVI_VA, TypeCVI_VA>, Requires<[UseHVXV60]> {
26895 let hasNewValue = 1;
26896 let opNewValue = 0;
26897 let isCVI = 1;
26898 let isPseudo = 1;
26899 let DecoderNamespace = "EXT_mmvec";
26900 }
26901 def V6_lvsplatb : HInst<
26902 (outs HvxVR:$Vd32),
26903 (ins IntRegs:$Rt32),
26904 "$Vd32.b = vsplat($Rt32)",
26905 tc_c4edf264, TypeCVI_VX_LATE>, Enc_a5ed8a, Requires<[UseHVXV62]> {
26906 let Inst{13-5} = 0b000000010;
26907 let Inst{31-21} = 0b00011001110;
26908 let hasNewValue = 1;
26909 let opNewValue = 0;
26910 let isCVI = 1;
26911 let DecoderNamespace = "EXT_mmvec";
26912 }
26913 def V6_lvsplath : HInst<
26914 (outs HvxVR:$Vd32),
26915 (ins IntRegs:$Rt32),
26916 "$Vd32.h = vsplat($Rt32)",
26917 tc_c4edf264, TypeCVI_VX_LATE>, Enc_a5ed8a, Requires<[UseHVXV62]> {
26918 let Inst{13-5} = 0b000000001;
26919 let Inst{31-21} = 0b00011001110;
26920 let hasNewValue = 1;
26921 let opNewValue = 0;
26922 let isCVI = 1;
26923 let DecoderNamespace = "EXT_mmvec";
26924 }
26925 def V6_lvsplatw : HInst<
26926 (outs HvxVR:$Vd32),
26927 (ins IntRegs:$Rt32),
26928 "$Vd32 = vsplat($Rt32)",
26929 tc_c4edf264, TypeCVI_VX_LATE>, Enc_a5ed8a, Requires<[UseHVXV60]> {
26930 let Inst{13-5} = 0b000000001;
26931 let Inst{31-21} = 0b00011001101;
26932 let hasNewValue = 1;
26933 let opNewValue = 0;
26934 let isCVI = 1;
26935 let DecoderNamespace = "EXT_mmvec";
26936 }
26937 def V6_pred_and : HInst<
26938 (outs HvxQR:$Qd4),
26939 (ins HvxQR:$Qs4, HvxQR:$Qt4),
26940 "$Qd4 = and($Qs4,$Qt4)",
26941 tc_db5555f3, TypeCVI_VA_DV>, Enc_134437, Requires<[UseHVXV60]> {
26942 let Inst{7-2} = 0b000000;
26943 let Inst{13-10} = 0b0000;
26944 let Inst{21-16} = 0b000011;
26945 let Inst{31-24} = 0b00011110;
26946 let hasNewValue = 1;
26947 let opNewValue = 0;
26948 let isCVI = 1;
26949 let DecoderNamespace = "EXT_mmvec";
26950 }
26951 def V6_pred_and_n : HInst<
26952 (outs HvxQR:$Qd4),
26953 (ins HvxQR:$Qs4, HvxQR:$Qt4),
26954 "$Qd4 = and($Qs4,!$Qt4)",
26955 tc_db5555f3, TypeCVI_VA_DV>, Enc_134437, Requires<[UseHVXV60]> {
26956 let Inst{7-2} = 0b000101;
26957 let Inst{13-10} = 0b0000;
26958 let Inst{21-16} = 0b000011;
26959 let Inst{31-24} = 0b00011110;
26960 let hasNewValue = 1;
26961 let opNewValue = 0;
26962 let isCVI = 1;
26963 let DecoderNamespace = "EXT_mmvec";
26964 }
26965 def V6_pred_not : HInst<
26966 (outs HvxQR:$Qd4),
26967 (ins HvxQR:$Qs4),
26968 "$Qd4 = not($Qs4)",
26969 tc_0ec46cf9, TypeCVI_VA>, Enc_bfbf03, Requires<[UseHVXV60]> {
26970 let Inst{7-2} = 0b000010;
26971 let Inst{13-10} = 0b0000;
26972 let Inst{31-16} = 0b0001111000000011;
26973 let hasNewValue = 1;
26974 let opNewValue = 0;
26975 let isCVI = 1;
26976 let DecoderNamespace = "EXT_mmvec";
26977 }
26978 def V6_pred_or : HInst<
26979 (outs HvxQR:$Qd4),
26980 (ins HvxQR:$Qs4, HvxQR:$Qt4),
26981 "$Qd4 = or($Qs4,$Qt4)",
26982 tc_db5555f3, TypeCVI_VA_DV>, Enc_134437, Requires<[UseHVXV60]> {
26983 let Inst{7-2} = 0b000001;
26984 let Inst{13-10} = 0b0000;
26985 let Inst{21-16} = 0b000011;
26986 let Inst{31-24} = 0b00011110;
26987 let hasNewValue = 1;
26988 let opNewValue = 0;
26989 let isCVI = 1;
26990 let DecoderNamespace = "EXT_mmvec";
26991 }
26992 def V6_pred_or_n : HInst<
26993 (outs HvxQR:$Qd4),
26994 (ins HvxQR:$Qs4, HvxQR:$Qt4),
26995 "$Qd4 = or($Qs4,!$Qt4)",
26996 tc_db5555f3, TypeCVI_VA_DV>, Enc_134437, Requires<[UseHVXV60]> {
26997 let Inst{7-2} = 0b000100;
26998 let Inst{13-10} = 0b0000;
26999 let Inst{21-16} = 0b000011;
27000 let Inst{31-24} = 0b00011110;
27001 let hasNewValue = 1;
27002 let opNewValue = 0;
27003 let isCVI = 1;
27004 let DecoderNamespace = "EXT_mmvec";
27005 }
27006 def V6_pred_scalar2 : HInst<
27007 (outs HvxQR:$Qd4),
27008 (ins IntRegs:$Rt32),
27009 "$Qd4 = vsetq($Rt32)",
27010 tc_5bf8afbb, TypeCVI_VP>, Enc_7222b7, Requires<[UseHVXV60]> {
27011 let Inst{13-2} = 0b000000010001;
27012 let Inst{31-21} = 0b00011001101;
27013 let hasNewValue = 1;
27014 let opNewValue = 0;
27015 let isCVI = 1;
27016 let DecoderNamespace = "EXT_mmvec";
27017 }
27018 def V6_pred_scalar2v2 : HInst<
27019 (outs HvxQR:$Qd4),
27020 (ins IntRegs:$Rt32),
27021 "$Qd4 = vsetq2($Rt32)",
27022 tc_5bf8afbb, TypeCVI_VP>, Enc_7222b7, Requires<[UseHVXV62]> {
27023 let Inst{13-2} = 0b000000010011;
27024 let Inst{31-21} = 0b00011001101;
27025 let hasNewValue = 1;
27026 let opNewValue = 0;
27027 let isCVI = 1;
27028 let DecoderNamespace = "EXT_mmvec";
27029 }
27030 def V6_pred_xor : HInst<
27031 (outs HvxQR:$Qd4),
27032 (ins HvxQR:$Qs4, HvxQR:$Qt4),
27033 "$Qd4 = xor($Qs4,$Qt4)",
27034 tc_db5555f3, TypeCVI_VA_DV>, Enc_134437, Requires<[UseHVXV60]> {
27035 let Inst{7-2} = 0b000011;
27036 let Inst{13-10} = 0b0000;
27037 let Inst{21-16} = 0b000011;
27038 let Inst{31-24} = 0b00011110;
27039 let hasNewValue = 1;
27040 let opNewValue = 0;
27041 let isCVI = 1;
27042 let DecoderNamespace = "EXT_mmvec";
27043 }
27044 def V6_shuffeqh : HInst<
27045 (outs HvxQR:$Qd4),
27046 (ins HvxQR:$Qs4, HvxQR:$Qt4),
27047 "$Qd4.b = vshuffe($Qs4.h,$Qt4.h)",
27048 tc_db5555f3, TypeCVI_VA_DV>, Enc_134437, Requires<[UseHVXV62]> {
27049 let Inst{7-2} = 0b000110;
27050 let Inst{13-10} = 0b0000;
27051 let Inst{21-16} = 0b000011;
27052 let Inst{31-24} = 0b00011110;
27053 let hasNewValue = 1;
27054 let opNewValue = 0;
27055 let isCVI = 1;
27056 let DecoderNamespace = "EXT_mmvec";
27057 }
27058 def V6_shuffeqw : HInst<
27059 (outs HvxQR:$Qd4),
27060 (ins HvxQR:$Qs4, HvxQR:$Qt4),
27061 "$Qd4.h = vshuffe($Qs4.w,$Qt4.w)",
27062 tc_db5555f3, TypeCVI_VA_DV>, Enc_134437, Requires<[UseHVXV62]> {
27063 let Inst{7-2} = 0b000111;
27064 let Inst{13-10} = 0b0000;
27065 let Inst{21-16} = 0b000011;
27066 let Inst{31-24} = 0b00011110;
27067 let hasNewValue = 1;
27068 let opNewValue = 0;
27069 let isCVI = 1;
27070 let DecoderNamespace = "EXT_mmvec";
27071 }
27072 def V6_st0 : HInst<
27073 (outs),
27074 (ins IntRegs:$Rt32, HvxVR:$Vs32),
27075 "vmem($Rt32) = $Vs32",
27076 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
27077 let isCVI = 1;
27078 let isPseudo = 1;
27079 let isCodeGenOnly = 1;
27080 let DecoderNamespace = "EXT_mmvec";
27081 }
27082 def V6_stn0 : HInst<
27083 (outs),
27084 (ins IntRegs:$Rt32, HvxVR:$Os8),
27085 "vmem($Rt32) = $Os8.new",
27086 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
27087 let isCVI = 1;
27088 let isPseudo = 1;
27089 let isCodeGenOnly = 1;
27090 let DecoderNamespace = "EXT_mmvec";
27091 let opNewValue = 1;
27092 }
27093 def V6_stnnt0 : HInst<
27094 (outs),
27095 (ins IntRegs:$Rt32, HvxVR:$Os8),
27096 "vmem($Rt32):nt = $Os8.new",
27097 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
27098 let isCVI = 1;
27099 let isPseudo = 1;
27100 let isCodeGenOnly = 1;
27101 let DecoderNamespace = "EXT_mmvec";
27102 let opNewValue = 1;
27103 }
27104 def V6_stnp0 : HInst<
27105 (outs),
27106 (ins PredRegs:$Pv4, IntRegs:$Rt32, HvxVR:$Vs32),
27107 "if (!$Pv4) vmem($Rt32) = $Vs32",
27108 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
27109 let isCVI = 1;
27110 let isPseudo = 1;
27111 let isCodeGenOnly = 1;
27112 let DecoderNamespace = "EXT_mmvec";
27113 }
27114 def V6_stnpnt0 : HInst<
27115 (outs),
27116 (ins PredRegs:$Pv4, IntRegs:$Rt32, HvxVR:$Vs32),
27117 "if (!$Pv4) vmem($Rt32):nt = $Vs32",
27118 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
27119 let isCVI = 1;
27120 let isPseudo = 1;
27121 let isCodeGenOnly = 1;
27122 let DecoderNamespace = "EXT_mmvec";
27123 }
27124 def V6_stnq0 : HInst<
27125 (outs),
27126 (ins HvxQR:$Qv4, IntRegs:$Rt32, HvxVR:$Vs32),
27127 "if (!$Qv4) vmem($Rt32) = $Vs32",
27128 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
27129 let isCVI = 1;
27130 let isPseudo = 1;
27131 let isCodeGenOnly = 1;
27132 let DecoderNamespace = "EXT_mmvec";
27133 }
27134 def V6_stnqnt0 : HInst<
27135 (outs),
27136 (ins HvxQR:$Qv4, IntRegs:$Rt32, HvxVR:$Vs32),
27137 "if (!$Qv4) vmem($Rt32):nt = $Vs32",
27138 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
27139 let isCVI = 1;
27140 let isPseudo = 1;
27141 let isCodeGenOnly = 1;
27142 let DecoderNamespace = "EXT_mmvec";
27143 }
27144 def V6_stnt0 : HInst<
27145 (outs),
27146 (ins IntRegs:$Rt32, HvxVR:$Vs32),
27147 "vmem($Rt32):nt = $Vs32",
27148 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
27149 let isCVI = 1;
27150 let isPseudo = 1;
27151 let isCodeGenOnly = 1;
27152 let DecoderNamespace = "EXT_mmvec";
27153 }
27154 def V6_stp0 : HInst<
27155 (outs),
27156 (ins PredRegs:$Pv4, IntRegs:$Rt32, HvxVR:$Vs32),
27157 "if ($Pv4) vmem($Rt32) = $Vs32",
27158 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
27159 let isCVI = 1;
27160 let isPseudo = 1;
27161 let isCodeGenOnly = 1;
27162 let DecoderNamespace = "EXT_mmvec";
27163 }
27164 def V6_stpnt0 : HInst<
27165 (outs),
27166 (ins PredRegs:$Pv4, IntRegs:$Rt32, HvxVR:$Vs32),
27167 "if ($Pv4) vmem($Rt32):nt = $Vs32",
27168 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
27169 let isCVI = 1;
27170 let isPseudo = 1;
27171 let isCodeGenOnly = 1;
27172 let DecoderNamespace = "EXT_mmvec";
27173 }
27174 def V6_stq0 : HInst<
27175 (outs),
27176 (ins HvxQR:$Qv4, IntRegs:$Rt32, HvxVR:$Vs32),
27177 "if ($Qv4) vmem($Rt32) = $Vs32",
27178 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
27179 let isCVI = 1;
27180 let isPseudo = 1;
27181 let isCodeGenOnly = 1;
27182 let DecoderNamespace = "EXT_mmvec";
27183 }
27184 def V6_stqnt0 : HInst<
27185 (outs),
27186 (ins HvxQR:$Qv4, IntRegs:$Rt32, HvxVR:$Vs32),
27187 "if ($Qv4) vmem($Rt32):nt = $Vs32",
27188 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
27189 let isCVI = 1;
27190 let isPseudo = 1;
27191 let isCodeGenOnly = 1;
27192 let DecoderNamespace = "EXT_mmvec";
27193 }
27194 def V6_stu0 : HInst<
27195 (outs),
27196 (ins IntRegs:$Rt32, HvxVR:$Vs32),
27197 "vmemu($Rt32) = $Vs32",
27198 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
27199 let isCVI = 1;
27200 let isPseudo = 1;
27201 let isCodeGenOnly = 1;
27202 let DecoderNamespace = "EXT_mmvec";
27203 }
27204 def V6_stunp0 : HInst<
27205 (outs),
27206 (ins PredRegs:$Pv4, IntRegs:$Rt32, HvxVR:$Vs32),
27207 "if (!$Pv4) vmemu($Rt32) = $Vs32",
27208 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
27209 let isCVI = 1;
27210 let isPseudo = 1;
27211 let isCodeGenOnly = 1;
27212 let DecoderNamespace = "EXT_mmvec";
27213 }
27214 def V6_stup0 : HInst<
27215 (outs),
27216 (ins PredRegs:$Pv4, IntRegs:$Rt32, HvxVR:$Vs32),
27217 "if ($Pv4) vmemu($Rt32) = $Vs32",
27218 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
27219 let isCVI = 1;
27220 let isPseudo = 1;
27221 let isCodeGenOnly = 1;
27222 let DecoderNamespace = "EXT_mmvec";
27223 }
27224 def V6_vL32Ub_ai : HInst<
27225 (outs HvxVR:$Vd32),
27226 (ins IntRegs:$Rt32, s4_0Imm:$Ii),
27227 "$Vd32 = vmemu($Rt32+#$Ii)",
27228 tc_a7e6707d, TypeCVI_VM_VP_LDU>, Enc_f3f408, Requires<[UseHVXV60]> {
27229 let Inst{7-5} = 0b111;
27230 let Inst{12-11} = 0b00;
27231 let Inst{31-21} = 0b00101000000;
27232 let hasNewValue = 1;
27233 let opNewValue = 0;
27234 let addrMode = BaseImmOffset;
27235 let accessSize = HVXVectorAccess;
27236 let isCVLoad = 1;
27237 let isCVI = 1;
27238 let mayLoad = 1;
27239 let isRestrictNoSlot1Store = 1;
27240 let DecoderNamespace = "EXT_mmvec";
27241 }
27242 def V6_vL32Ub_pi : HInst<
27243 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27244 (ins IntRegs:$Rx32in, s3_0Imm:$Ii),
27245 "$Vd32 = vmemu($Rx32++#$Ii)",
27246 tc_3c56e5ce, TypeCVI_VM_VP_LDU>, Enc_a255dc, Requires<[UseHVXV60]> {
27247 let Inst{7-5} = 0b111;
27248 let Inst{13-11} = 0b000;
27249 let Inst{31-21} = 0b00101001000;
27250 let hasNewValue = 1;
27251 let opNewValue = 0;
27252 let addrMode = PostInc;
27253 let accessSize = HVXVectorAccess;
27254 let isCVLoad = 1;
27255 let isCVI = 1;
27256 let mayLoad = 1;
27257 let isRestrictNoSlot1Store = 1;
27258 let BaseOpcode = "V6_vL32b_pi";
27259 let DecoderNamespace = "EXT_mmvec";
27260 let Constraints = "$Rx32 = $Rx32in";
27261 }
27262 def V6_vL32Ub_ppu : HInst<
27263 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27264 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
27265 "$Vd32 = vmemu($Rx32++$Mu2)",
27266 tc_3c56e5ce, TypeCVI_VM_VP_LDU>, Enc_2ebe3b, Requires<[UseHVXV60]> {
27267 let Inst{12-5} = 0b00000111;
27268 let Inst{31-21} = 0b00101011000;
27269 let hasNewValue = 1;
27270 let opNewValue = 0;
27271 let addrMode = PostInc;
27272 let accessSize = HVXVectorAccess;
27273 let isCVLoad = 1;
27274 let isCVI = 1;
27275 let mayLoad = 1;
27276 let isRestrictNoSlot1Store = 1;
27277 let DecoderNamespace = "EXT_mmvec";
27278 let Constraints = "$Rx32 = $Rx32in";
27279 }
27280 def V6_vL32b_ai : HInst<
27281 (outs HvxVR:$Vd32),
27282 (ins IntRegs:$Rt32, s4_0Imm:$Ii),
27283 "$Vd32 = vmem($Rt32+#$Ii)",
27284 tc_c0749f3c, TypeCVI_VM_LD>, Enc_f3f408, Requires<[UseHVXV60]>, PredRel {
27285 let Inst{7-5} = 0b000;
27286 let Inst{12-11} = 0b00;
27287 let Inst{31-21} = 0b00101000000;
27288 let hasNewValue = 1;
27289 let opNewValue = 0;
27290 let addrMode = BaseImmOffset;
27291 let accessSize = HVXVectorAccess;
27292 let isCVLoad = 1;
27293 let isCVI = 1;
27294 let mayLoad = 1;
27295 let isRestrictNoSlot1Store = 1;
27296 let BaseOpcode = "V6_vL32b_ai";
27297 let isCVLoadable = 1;
27298 let isPredicable = 1;
27299 let DecoderNamespace = "EXT_mmvec";
27300 }
27301 def V6_vL32b_cur_ai : HInst<
27302 (outs HvxVR:$Vd32),
27303 (ins IntRegs:$Rt32, s4_0Imm:$Ii),
27304 "$Vd32.cur = vmem($Rt32+#$Ii)",
27305 tc_c0749f3c, TypeCVI_VM_LD>, Enc_f3f408, Requires<[UseHVXV60]>, PredRel {
27306 let Inst{7-5} = 0b001;
27307 let Inst{12-11} = 0b00;
27308 let Inst{31-21} = 0b00101000000;
27309 let hasNewValue = 1;
27310 let opNewValue = 0;
27311 let addrMode = BaseImmOffset;
27312 let accessSize = HVXVectorAccess;
27313 let isCVLoad = 1;
27314 let isCVI = 1;
27315 let CVINew = 1;
27316 let mayLoad = 1;
27317 let isRestrictNoSlot1Store = 1;
27318 let BaseOpcode = "V6_vL32b_cur_ai";
27319 let isPredicable = 1;
27320 let DecoderNamespace = "EXT_mmvec";
27321 }
27322 def V6_vL32b_cur_npred_ai : HInst<
27323 (outs HvxVR:$Vd32),
27324 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
27325 "if (!$Pv4) $Vd32.cur = vmem($Rt32+#$Ii)",
27326 tc_abe8c3b2, TypeCVI_VM_LD>, Enc_8d8a30, Requires<[UseHVXV62]>, PredRel {
27327 let Inst{7-5} = 0b101;
27328 let Inst{31-21} = 0b00101000100;
27329 let isPredicated = 1;
27330 let isPredicatedFalse = 1;
27331 let hasNewValue = 1;
27332 let opNewValue = 0;
27333 let addrMode = BaseImmOffset;
27334 let accessSize = HVXVectorAccess;
27335 let isCVLoad = 1;
27336 let isCVI = 1;
27337 let CVINew = 1;
27338 let mayLoad = 1;
27339 let isRestrictNoSlot1Store = 1;
27340 let BaseOpcode = "V6_vL32b_cur_ai";
27341 let DecoderNamespace = "EXT_mmvec";
27342 }
27343 def V6_vL32b_cur_npred_pi : HInst<
27344 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27345 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
27346 "if (!$Pv4) $Vd32.cur = vmem($Rx32++#$Ii)",
27347 tc_453fe68d, TypeCVI_VM_LD>, Enc_58a8bf, Requires<[UseHVXV62]>, PredRel {
27348 let Inst{7-5} = 0b101;
27349 let Inst{13-13} = 0b0;
27350 let Inst{31-21} = 0b00101001100;
27351 let isPredicated = 1;
27352 let isPredicatedFalse = 1;
27353 let hasNewValue = 1;
27354 let opNewValue = 0;
27355 let addrMode = PostInc;
27356 let accessSize = HVXVectorAccess;
27357 let isCVLoad = 1;
27358 let isCVI = 1;
27359 let CVINew = 1;
27360 let mayLoad = 1;
27361 let isRestrictNoSlot1Store = 1;
27362 let BaseOpcode = "V6_vL32b_cur_pi";
27363 let DecoderNamespace = "EXT_mmvec";
27364 let Constraints = "$Rx32 = $Rx32in";
27365 }
27366 def V6_vL32b_cur_npred_ppu : HInst<
27367 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27368 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
27369 "if (!$Pv4) $Vd32.cur = vmem($Rx32++$Mu2)",
27370 tc_453fe68d, TypeCVI_VM_LD>, Enc_f8c1c4, Requires<[UseHVXV62]>, PredRel {
27371 let Inst{10-5} = 0b000101;
27372 let Inst{31-21} = 0b00101011100;
27373 let isPredicated = 1;
27374 let isPredicatedFalse = 1;
27375 let hasNewValue = 1;
27376 let opNewValue = 0;
27377 let addrMode = PostInc;
27378 let accessSize = HVXVectorAccess;
27379 let isCVLoad = 1;
27380 let isCVI = 1;
27381 let CVINew = 1;
27382 let mayLoad = 1;
27383 let isRestrictNoSlot1Store = 1;
27384 let BaseOpcode = "V6_vL32b_cur_ppu";
27385 let DecoderNamespace = "EXT_mmvec";
27386 let Constraints = "$Rx32 = $Rx32in";
27387 }
27388 def V6_vL32b_cur_pi : HInst<
27389 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27390 (ins IntRegs:$Rx32in, s3_0Imm:$Ii),
27391 "$Vd32.cur = vmem($Rx32++#$Ii)",
27392 tc_1ba8a0cd, TypeCVI_VM_LD>, Enc_a255dc, Requires<[UseHVXV60]>, PredRel {
27393 let Inst{7-5} = 0b001;
27394 let Inst{13-11} = 0b000;
27395 let Inst{31-21} = 0b00101001000;
27396 let hasNewValue = 1;
27397 let opNewValue = 0;
27398 let addrMode = PostInc;
27399 let accessSize = HVXVectorAccess;
27400 let isCVLoad = 1;
27401 let isCVI = 1;
27402 let CVINew = 1;
27403 let mayLoad = 1;
27404 let isRestrictNoSlot1Store = 1;
27405 let BaseOpcode = "V6_vL32b_cur_pi";
27406 let isPredicable = 1;
27407 let DecoderNamespace = "EXT_mmvec";
27408 let Constraints = "$Rx32 = $Rx32in";
27409 }
27410 def V6_vL32b_cur_ppu : HInst<
27411 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27412 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
27413 "$Vd32.cur = vmem($Rx32++$Mu2)",
27414 tc_1ba8a0cd, TypeCVI_VM_LD>, Enc_2ebe3b, Requires<[UseHVXV60]>, PredRel {
27415 let Inst{12-5} = 0b00000001;
27416 let Inst{31-21} = 0b00101011000;
27417 let hasNewValue = 1;
27418 let opNewValue = 0;
27419 let addrMode = PostInc;
27420 let accessSize = HVXVectorAccess;
27421 let isCVLoad = 1;
27422 let isCVI = 1;
27423 let CVINew = 1;
27424 let mayLoad = 1;
27425 let isRestrictNoSlot1Store = 1;
27426 let BaseOpcode = "V6_vL32b_cur_ppu";
27427 let isPredicable = 1;
27428 let DecoderNamespace = "EXT_mmvec";
27429 let Constraints = "$Rx32 = $Rx32in";
27430 }
27431 def V6_vL32b_cur_pred_ai : HInst<
27432 (outs HvxVR:$Vd32),
27433 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
27434 "if ($Pv4) $Vd32.cur = vmem($Rt32+#$Ii)",
27435 tc_abe8c3b2, TypeCVI_VM_LD>, Enc_8d8a30, Requires<[UseHVXV62]>, PredRel {
27436 let Inst{7-5} = 0b100;
27437 let Inst{31-21} = 0b00101000100;
27438 let isPredicated = 1;
27439 let hasNewValue = 1;
27440 let opNewValue = 0;
27441 let addrMode = BaseImmOffset;
27442 let accessSize = HVXVectorAccess;
27443 let isCVLoad = 1;
27444 let isCVI = 1;
27445 let CVINew = 1;
27446 let mayLoad = 1;
27447 let isRestrictNoSlot1Store = 1;
27448 let BaseOpcode = "V6_vL32b_cur_ai";
27449 let DecoderNamespace = "EXT_mmvec";
27450 }
27451 def V6_vL32b_cur_pred_pi : HInst<
27452 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27453 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
27454 "if ($Pv4) $Vd32.cur = vmem($Rx32++#$Ii)",
27455 tc_453fe68d, TypeCVI_VM_LD>, Enc_58a8bf, Requires<[UseHVXV62]>, PredRel {
27456 let Inst{7-5} = 0b100;
27457 let Inst{13-13} = 0b0;
27458 let Inst{31-21} = 0b00101001100;
27459 let isPredicated = 1;
27460 let hasNewValue = 1;
27461 let opNewValue = 0;
27462 let addrMode = PostInc;
27463 let accessSize = HVXVectorAccess;
27464 let isCVLoad = 1;
27465 let isCVI = 1;
27466 let CVINew = 1;
27467 let mayLoad = 1;
27468 let isRestrictNoSlot1Store = 1;
27469 let BaseOpcode = "V6_vL32b_cur_pi";
27470 let DecoderNamespace = "EXT_mmvec";
27471 let Constraints = "$Rx32 = $Rx32in";
27472 }
27473 def V6_vL32b_cur_pred_ppu : HInst<
27474 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27475 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
27476 "if ($Pv4) $Vd32.cur = vmem($Rx32++$Mu2)",
27477 tc_453fe68d, TypeCVI_VM_LD>, Enc_f8c1c4, Requires<[UseHVXV62]>, PredRel {
27478 let Inst{10-5} = 0b000100;
27479 let Inst{31-21} = 0b00101011100;
27480 let isPredicated = 1;
27481 let hasNewValue = 1;
27482 let opNewValue = 0;
27483 let addrMode = PostInc;
27484 let accessSize = HVXVectorAccess;
27485 let isCVLoad = 1;
27486 let isCVI = 1;
27487 let CVINew = 1;
27488 let mayLoad = 1;
27489 let isRestrictNoSlot1Store = 1;
27490 let BaseOpcode = "V6_vL32b_cur_ppu";
27491 let DecoderNamespace = "EXT_mmvec";
27492 let Constraints = "$Rx32 = $Rx32in";
27493 }
27494 def V6_vL32b_npred_ai : HInst<
27495 (outs HvxVR:$Vd32),
27496 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
27497 "if (!$Pv4) $Vd32 = vmem($Rt32+#$Ii)",
27498 tc_abe8c3b2, TypeCVI_VM_LD>, Enc_8d8a30, Requires<[UseHVXV62]>, PredRel {
27499 let Inst{7-5} = 0b011;
27500 let Inst{31-21} = 0b00101000100;
27501 let isPredicated = 1;
27502 let isPredicatedFalse = 1;
27503 let hasNewValue = 1;
27504 let opNewValue = 0;
27505 let addrMode = BaseImmOffset;
27506 let accessSize = HVXVectorAccess;
27507 let isCVLoad = 1;
27508 let isCVI = 1;
27509 let mayLoad = 1;
27510 let isRestrictNoSlot1Store = 1;
27511 let BaseOpcode = "V6_vL32b_ai";
27512 let DecoderNamespace = "EXT_mmvec";
27513 }
27514 def V6_vL32b_npred_pi : HInst<
27515 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27516 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
27517 "if (!$Pv4) $Vd32 = vmem($Rx32++#$Ii)",
27518 tc_453fe68d, TypeCVI_VM_LD>, Enc_58a8bf, Requires<[UseHVXV62]>, PredRel {
27519 let Inst{7-5} = 0b011;
27520 let Inst{13-13} = 0b0;
27521 let Inst{31-21} = 0b00101001100;
27522 let isPredicated = 1;
27523 let isPredicatedFalse = 1;
27524 let hasNewValue = 1;
27525 let opNewValue = 0;
27526 let addrMode = PostInc;
27527 let accessSize = HVXVectorAccess;
27528 let isCVLoad = 1;
27529 let isCVI = 1;
27530 let mayLoad = 1;
27531 let isRestrictNoSlot1Store = 1;
27532 let BaseOpcode = "V6_vL32b_pi";
27533 let DecoderNamespace = "EXT_mmvec";
27534 let Constraints = "$Rx32 = $Rx32in";
27535 }
27536 def V6_vL32b_npred_ppu : HInst<
27537 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27538 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
27539 "if (!$Pv4) $Vd32 = vmem($Rx32++$Mu2)",
27540 tc_453fe68d, TypeCVI_VM_LD>, Enc_f8c1c4, Requires<[UseHVXV62]>, PredRel {
27541 let Inst{10-5} = 0b000011;
27542 let Inst{31-21} = 0b00101011100;
27543 let isPredicated = 1;
27544 let isPredicatedFalse = 1;
27545 let hasNewValue = 1;
27546 let opNewValue = 0;
27547 let addrMode = PostInc;
27548 let accessSize = HVXVectorAccess;
27549 let isCVLoad = 1;
27550 let isCVI = 1;
27551 let mayLoad = 1;
27552 let isRestrictNoSlot1Store = 1;
27553 let BaseOpcode = "V6_vL32b_ppu";
27554 let DecoderNamespace = "EXT_mmvec";
27555 let Constraints = "$Rx32 = $Rx32in";
27556 }
27557 def V6_vL32b_nt_ai : HInst<
27558 (outs HvxVR:$Vd32),
27559 (ins IntRegs:$Rt32, s4_0Imm:$Ii),
27560 "$Vd32 = vmem($Rt32+#$Ii):nt",
27561 tc_c0749f3c, TypeCVI_VM_LD>, Enc_f3f408, Requires<[UseHVXV60]>, PredRel {
27562 let Inst{7-5} = 0b000;
27563 let Inst{12-11} = 0b00;
27564 let Inst{31-21} = 0b00101000010;
27565 let hasNewValue = 1;
27566 let opNewValue = 0;
27567 let addrMode = BaseImmOffset;
27568 let accessSize = HVXVectorAccess;
27569 let isCVLoad = 1;
27570 let isCVI = 1;
27571 let mayLoad = 1;
27572 let isNonTemporal = 1;
27573 let isRestrictNoSlot1Store = 1;
27574 let BaseOpcode = "V6_vL32b_nt_ai";
27575 let isCVLoadable = 1;
27576 let isPredicable = 1;
27577 let DecoderNamespace = "EXT_mmvec";
27578 }
27579 def V6_vL32b_nt_cur_ai : HInst<
27580 (outs HvxVR:$Vd32),
27581 (ins IntRegs:$Rt32, s4_0Imm:$Ii),
27582 "$Vd32.cur = vmem($Rt32+#$Ii):nt",
27583 tc_c0749f3c, TypeCVI_VM_LD>, Enc_f3f408, Requires<[UseHVXV60]>, PredRel {
27584 let Inst{7-5} = 0b001;
27585 let Inst{12-11} = 0b00;
27586 let Inst{31-21} = 0b00101000010;
27587 let hasNewValue = 1;
27588 let opNewValue = 0;
27589 let addrMode = BaseImmOffset;
27590 let accessSize = HVXVectorAccess;
27591 let isCVLoad = 1;
27592 let isCVI = 1;
27593 let CVINew = 1;
27594 let mayLoad = 1;
27595 let isNonTemporal = 1;
27596 let isRestrictNoSlot1Store = 1;
27597 let BaseOpcode = "V6_vL32b_nt_cur_ai";
27598 let isPredicable = 1;
27599 let DecoderNamespace = "EXT_mmvec";
27600 }
27601 def V6_vL32b_nt_cur_npred_ai : HInst<
27602 (outs HvxVR:$Vd32),
27603 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
27604 "if (!$Pv4) $Vd32.cur = vmem($Rt32+#$Ii):nt",
27605 tc_abe8c3b2, TypeCVI_VM_LD>, Enc_8d8a30, Requires<[UseHVXV62]>, PredRel {
27606 let Inst{7-5} = 0b101;
27607 let Inst{31-21} = 0b00101000110;
27608 let isPredicated = 1;
27609 let isPredicatedFalse = 1;
27610 let hasNewValue = 1;
27611 let opNewValue = 0;
27612 let addrMode = BaseImmOffset;
27613 let accessSize = HVXVectorAccess;
27614 let isCVLoad = 1;
27615 let isCVI = 1;
27616 let CVINew = 1;
27617 let mayLoad = 1;
27618 let isNonTemporal = 1;
27619 let isRestrictNoSlot1Store = 1;
27620 let BaseOpcode = "V6_vL32b_nt_cur_ai";
27621 let DecoderNamespace = "EXT_mmvec";
27622 }
27623 def V6_vL32b_nt_cur_npred_pi : HInst<
27624 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27625 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
27626 "if (!$Pv4) $Vd32.cur = vmem($Rx32++#$Ii):nt",
27627 tc_453fe68d, TypeCVI_VM_LD>, Enc_58a8bf, Requires<[UseHVXV62]>, PredRel {
27628 let Inst{7-5} = 0b101;
27629 let Inst{13-13} = 0b0;
27630 let Inst{31-21} = 0b00101001110;
27631 let isPredicated = 1;
27632 let isPredicatedFalse = 1;
27633 let hasNewValue = 1;
27634 let opNewValue = 0;
27635 let addrMode = PostInc;
27636 let accessSize = HVXVectorAccess;
27637 let isCVLoad = 1;
27638 let isCVI = 1;
27639 let CVINew = 1;
27640 let mayLoad = 1;
27641 let isNonTemporal = 1;
27642 let isRestrictNoSlot1Store = 1;
27643 let BaseOpcode = "V6_vL32b_nt_cur_pi";
27644 let DecoderNamespace = "EXT_mmvec";
27645 let Constraints = "$Rx32 = $Rx32in";
27646 }
27647 def V6_vL32b_nt_cur_npred_ppu : HInst<
27648 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27649 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
27650 "if (!$Pv4) $Vd32.cur = vmem($Rx32++$Mu2):nt",
27651 tc_453fe68d, TypeCVI_VM_LD>, Enc_f8c1c4, Requires<[UseHVXV62]>, PredRel {
27652 let Inst{10-5} = 0b000101;
27653 let Inst{31-21} = 0b00101011110;
27654 let isPredicated = 1;
27655 let isPredicatedFalse = 1;
27656 let hasNewValue = 1;
27657 let opNewValue = 0;
27658 let addrMode = PostInc;
27659 let accessSize = HVXVectorAccess;
27660 let isCVLoad = 1;
27661 let isCVI = 1;
27662 let CVINew = 1;
27663 let mayLoad = 1;
27664 let isNonTemporal = 1;
27665 let isRestrictNoSlot1Store = 1;
27666 let BaseOpcode = "V6_vL32b_nt_cur_ppu";
27667 let DecoderNamespace = "EXT_mmvec";
27668 let Constraints = "$Rx32 = $Rx32in";
27669 }
27670 def V6_vL32b_nt_cur_pi : HInst<
27671 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27672 (ins IntRegs:$Rx32in, s3_0Imm:$Ii),
27673 "$Vd32.cur = vmem($Rx32++#$Ii):nt",
27674 tc_1ba8a0cd, TypeCVI_VM_LD>, Enc_a255dc, Requires<[UseHVXV60]>, PredRel {
27675 let Inst{7-5} = 0b001;
27676 let Inst{13-11} = 0b000;
27677 let Inst{31-21} = 0b00101001010;
27678 let hasNewValue = 1;
27679 let opNewValue = 0;
27680 let addrMode = PostInc;
27681 let accessSize = HVXVectorAccess;
27682 let isCVLoad = 1;
27683 let isCVI = 1;
27684 let CVINew = 1;
27685 let mayLoad = 1;
27686 let isNonTemporal = 1;
27687 let isRestrictNoSlot1Store = 1;
27688 let BaseOpcode = "V6_vL32b_nt_cur_pi";
27689 let isPredicable = 1;
27690 let DecoderNamespace = "EXT_mmvec";
27691 let Constraints = "$Rx32 = $Rx32in";
27692 }
27693 def V6_vL32b_nt_cur_ppu : HInst<
27694 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27695 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
27696 "$Vd32.cur = vmem($Rx32++$Mu2):nt",
27697 tc_1ba8a0cd, TypeCVI_VM_LD>, Enc_2ebe3b, Requires<[UseHVXV60]>, PredRel {
27698 let Inst{12-5} = 0b00000001;
27699 let Inst{31-21} = 0b00101011010;
27700 let hasNewValue = 1;
27701 let opNewValue = 0;
27702 let addrMode = PostInc;
27703 let accessSize = HVXVectorAccess;
27704 let isCVLoad = 1;
27705 let isCVI = 1;
27706 let CVINew = 1;
27707 let mayLoad = 1;
27708 let isNonTemporal = 1;
27709 let isRestrictNoSlot1Store = 1;
27710 let BaseOpcode = "V6_vL32b_nt_cur_ppu";
27711 let isPredicable = 1;
27712 let DecoderNamespace = "EXT_mmvec";
27713 let Constraints = "$Rx32 = $Rx32in";
27714 }
27715 def V6_vL32b_nt_cur_pred_ai : HInst<
27716 (outs HvxVR:$Vd32),
27717 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
27718 "if ($Pv4) $Vd32.cur = vmem($Rt32+#$Ii):nt",
27719 tc_abe8c3b2, TypeCVI_VM_LD>, Enc_8d8a30, Requires<[UseHVXV62]>, PredRel {
27720 let Inst{7-5} = 0b100;
27721 let Inst{31-21} = 0b00101000110;
27722 let isPredicated = 1;
27723 let hasNewValue = 1;
27724 let opNewValue = 0;
27725 let addrMode = BaseImmOffset;
27726 let accessSize = HVXVectorAccess;
27727 let isCVLoad = 1;
27728 let isCVI = 1;
27729 let CVINew = 1;
27730 let mayLoad = 1;
27731 let isNonTemporal = 1;
27732 let isRestrictNoSlot1Store = 1;
27733 let BaseOpcode = "V6_vL32b_nt_cur_ai";
27734 let DecoderNamespace = "EXT_mmvec";
27735 }
27736 def V6_vL32b_nt_cur_pred_pi : HInst<
27737 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27738 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
27739 "if ($Pv4) $Vd32.cur = vmem($Rx32++#$Ii):nt",
27740 tc_453fe68d, TypeCVI_VM_LD>, Enc_58a8bf, Requires<[UseHVXV62]>, PredRel {
27741 let Inst{7-5} = 0b100;
27742 let Inst{13-13} = 0b0;
27743 let Inst{31-21} = 0b00101001110;
27744 let isPredicated = 1;
27745 let hasNewValue = 1;
27746 let opNewValue = 0;
27747 let addrMode = PostInc;
27748 let accessSize = HVXVectorAccess;
27749 let isCVLoad = 1;
27750 let isCVI = 1;
27751 let CVINew = 1;
27752 let mayLoad = 1;
27753 let isNonTemporal = 1;
27754 let isRestrictNoSlot1Store = 1;
27755 let BaseOpcode = "V6_vL32b_nt_cur_pi";
27756 let DecoderNamespace = "EXT_mmvec";
27757 let Constraints = "$Rx32 = $Rx32in";
27758 }
27759 def V6_vL32b_nt_cur_pred_ppu : HInst<
27760 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27761 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
27762 "if ($Pv4) $Vd32.cur = vmem($Rx32++$Mu2):nt",
27763 tc_453fe68d, TypeCVI_VM_LD>, Enc_f8c1c4, Requires<[UseHVXV62]>, PredRel {
27764 let Inst{10-5} = 0b000100;
27765 let Inst{31-21} = 0b00101011110;
27766 let isPredicated = 1;
27767 let hasNewValue = 1;
27768 let opNewValue = 0;
27769 let addrMode = PostInc;
27770 let accessSize = HVXVectorAccess;
27771 let isCVLoad = 1;
27772 let isCVI = 1;
27773 let CVINew = 1;
27774 let mayLoad = 1;
27775 let isNonTemporal = 1;
27776 let isRestrictNoSlot1Store = 1;
27777 let BaseOpcode = "V6_vL32b_nt_cur_ppu";
27778 let DecoderNamespace = "EXT_mmvec";
27779 let Constraints = "$Rx32 = $Rx32in";
27780 }
27781 def V6_vL32b_nt_npred_ai : HInst<
27782 (outs HvxVR:$Vd32),
27783 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
27784 "if (!$Pv4) $Vd32 = vmem($Rt32+#$Ii):nt",
27785 tc_abe8c3b2, TypeCVI_VM_LD>, Enc_8d8a30, Requires<[UseHVXV62]>, PredRel {
27786 let Inst{7-5} = 0b011;
27787 let Inst{31-21} = 0b00101000110;
27788 let isPredicated = 1;
27789 let isPredicatedFalse = 1;
27790 let hasNewValue = 1;
27791 let opNewValue = 0;
27792 let addrMode = BaseImmOffset;
27793 let accessSize = HVXVectorAccess;
27794 let isCVLoad = 1;
27795 let isCVI = 1;
27796 let mayLoad = 1;
27797 let isNonTemporal = 1;
27798 let isRestrictNoSlot1Store = 1;
27799 let BaseOpcode = "V6_vL32b_nt_ai";
27800 let DecoderNamespace = "EXT_mmvec";
27801 }
27802 def V6_vL32b_nt_npred_pi : HInst<
27803 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27804 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
27805 "if (!$Pv4) $Vd32 = vmem($Rx32++#$Ii):nt",
27806 tc_453fe68d, TypeCVI_VM_LD>, Enc_58a8bf, Requires<[UseHVXV62]>, PredRel {
27807 let Inst{7-5} = 0b011;
27808 let Inst{13-13} = 0b0;
27809 let Inst{31-21} = 0b00101001110;
27810 let isPredicated = 1;
27811 let isPredicatedFalse = 1;
27812 let hasNewValue = 1;
27813 let opNewValue = 0;
27814 let addrMode = PostInc;
27815 let accessSize = HVXVectorAccess;
27816 let isCVLoad = 1;
27817 let isCVI = 1;
27818 let mayLoad = 1;
27819 let isNonTemporal = 1;
27820 let isRestrictNoSlot1Store = 1;
27821 let BaseOpcode = "V6_vL32b_nt_pi";
27822 let DecoderNamespace = "EXT_mmvec";
27823 let Constraints = "$Rx32 = $Rx32in";
27824 }
27825 def V6_vL32b_nt_npred_ppu : HInst<
27826 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27827 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
27828 "if (!$Pv4) $Vd32 = vmem($Rx32++$Mu2):nt",
27829 tc_453fe68d, TypeCVI_VM_LD>, Enc_f8c1c4, Requires<[UseHVXV62]>, PredRel {
27830 let Inst{10-5} = 0b000011;
27831 let Inst{31-21} = 0b00101011110;
27832 let isPredicated = 1;
27833 let isPredicatedFalse = 1;
27834 let hasNewValue = 1;
27835 let opNewValue = 0;
27836 let addrMode = PostInc;
27837 let accessSize = HVXVectorAccess;
27838 let isCVLoad = 1;
27839 let isCVI = 1;
27840 let mayLoad = 1;
27841 let isNonTemporal = 1;
27842 let isRestrictNoSlot1Store = 1;
27843 let BaseOpcode = "V6_vL32b_nt_ppu";
27844 let DecoderNamespace = "EXT_mmvec";
27845 let Constraints = "$Rx32 = $Rx32in";
27846 }
27847 def V6_vL32b_nt_pi : HInst<
27848 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27849 (ins IntRegs:$Rx32in, s3_0Imm:$Ii),
27850 "$Vd32 = vmem($Rx32++#$Ii):nt",
27851 tc_1ba8a0cd, TypeCVI_VM_LD>, Enc_a255dc, Requires<[UseHVXV60]>, PredRel {
27852 let Inst{7-5} = 0b000;
27853 let Inst{13-11} = 0b000;
27854 let Inst{31-21} = 0b00101001010;
27855 let hasNewValue = 1;
27856 let opNewValue = 0;
27857 let addrMode = PostInc;
27858 let accessSize = HVXVectorAccess;
27859 let isCVLoad = 1;
27860 let isCVI = 1;
27861 let mayLoad = 1;
27862 let isNonTemporal = 1;
27863 let isRestrictNoSlot1Store = 1;
27864 let BaseOpcode = "V6_vL32b_nt_pi";
27865 let isCVLoadable = 1;
27866 let isPredicable = 1;
27867 let DecoderNamespace = "EXT_mmvec";
27868 let Constraints = "$Rx32 = $Rx32in";
27869 }
27870 def V6_vL32b_nt_ppu : HInst<
27871 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27872 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
27873 "$Vd32 = vmem($Rx32++$Mu2):nt",
27874 tc_1ba8a0cd, TypeCVI_VM_LD>, Enc_2ebe3b, Requires<[UseHVXV60]>, PredRel {
27875 let Inst{12-5} = 0b00000000;
27876 let Inst{31-21} = 0b00101011010;
27877 let hasNewValue = 1;
27878 let opNewValue = 0;
27879 let addrMode = PostInc;
27880 let accessSize = HVXVectorAccess;
27881 let isCVLoad = 1;
27882 let isCVI = 1;
27883 let mayLoad = 1;
27884 let isNonTemporal = 1;
27885 let isRestrictNoSlot1Store = 1;
27886 let BaseOpcode = "V6_vL32b_nt_ppu";
27887 let isCVLoadable = 1;
27888 let isPredicable = 1;
27889 let DecoderNamespace = "EXT_mmvec";
27890 let Constraints = "$Rx32 = $Rx32in";
27891 }
27892 def V6_vL32b_nt_pred_ai : HInst<
27893 (outs HvxVR:$Vd32),
27894 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
27895 "if ($Pv4) $Vd32 = vmem($Rt32+#$Ii):nt",
27896 tc_abe8c3b2, TypeCVI_VM_LD>, Enc_8d8a30, Requires<[UseHVXV62]>, PredRel {
27897 let Inst{7-5} = 0b010;
27898 let Inst{31-21} = 0b00101000110;
27899 let isPredicated = 1;
27900 let hasNewValue = 1;
27901 let opNewValue = 0;
27902 let addrMode = BaseImmOffset;
27903 let accessSize = HVXVectorAccess;
27904 let isCVLoad = 1;
27905 let isCVI = 1;
27906 let mayLoad = 1;
27907 let isNonTemporal = 1;
27908 let isRestrictNoSlot1Store = 1;
27909 let BaseOpcode = "V6_vL32b_nt_ai";
27910 let DecoderNamespace = "EXT_mmvec";
27911 }
27912 def V6_vL32b_nt_pred_pi : HInst<
27913 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27914 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
27915 "if ($Pv4) $Vd32 = vmem($Rx32++#$Ii):nt",
27916 tc_453fe68d, TypeCVI_VM_LD>, Enc_58a8bf, Requires<[UseHVXV62]>, PredRel {
27917 let Inst{7-5} = 0b010;
27918 let Inst{13-13} = 0b0;
27919 let Inst{31-21} = 0b00101001110;
27920 let isPredicated = 1;
27921 let hasNewValue = 1;
27922 let opNewValue = 0;
27923 let addrMode = PostInc;
27924 let accessSize = HVXVectorAccess;
27925 let isCVLoad = 1;
27926 let isCVI = 1;
27927 let mayLoad = 1;
27928 let isNonTemporal = 1;
27929 let isRestrictNoSlot1Store = 1;
27930 let BaseOpcode = "V6_vL32b_nt_pi";
27931 let DecoderNamespace = "EXT_mmvec";
27932 let Constraints = "$Rx32 = $Rx32in";
27933 }
27934 def V6_vL32b_nt_pred_ppu : HInst<
27935 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27936 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
27937 "if ($Pv4) $Vd32 = vmem($Rx32++$Mu2):nt",
27938 tc_453fe68d, TypeCVI_VM_LD>, Enc_f8c1c4, Requires<[UseHVXV62]>, PredRel {
27939 let Inst{10-5} = 0b000010;
27940 let Inst{31-21} = 0b00101011110;
27941 let isPredicated = 1;
27942 let hasNewValue = 1;
27943 let opNewValue = 0;
27944 let addrMode = PostInc;
27945 let accessSize = HVXVectorAccess;
27946 let isCVLoad = 1;
27947 let isCVI = 1;
27948 let mayLoad = 1;
27949 let isNonTemporal = 1;
27950 let isRestrictNoSlot1Store = 1;
27951 let BaseOpcode = "V6_vL32b_nt_ppu";
27952 let DecoderNamespace = "EXT_mmvec";
27953 let Constraints = "$Rx32 = $Rx32in";
27954 }
27955 def V6_vL32b_nt_tmp_ai : HInst<
27956 (outs HvxVR:$Vd32),
27957 (ins IntRegs:$Rt32, s4_0Imm:$Ii),
27958 "$Vd32.tmp = vmem($Rt32+#$Ii):nt",
27959 tc_52447ecc, TypeCVI_VM_TMP_LD>, Enc_f3f408, Requires<[UseHVXV60]>, PredRel {
27960 let Inst{7-5} = 0b010;
27961 let Inst{12-11} = 0b00;
27962 let Inst{31-21} = 0b00101000010;
27963 let hasNewValue = 1;
27964 let opNewValue = 0;
27965 let addrMode = BaseImmOffset;
27966 let accessSize = HVXVectorAccess;
27967 let isCVLoad = 1;
27968 let isCVI = 1;
27969 let mayLoad = 1;
27970 let isNonTemporal = 1;
27971 let isRestrictNoSlot1Store = 1;
27972 let BaseOpcode = "V6_vL32b_nt_tmp_ai";
27973 let isPredicable = 1;
27974 let DecoderNamespace = "EXT_mmvec";
27975 }
27976 def V6_vL32b_nt_tmp_npred_ai : HInst<
27977 (outs HvxVR:$Vd32),
27978 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
27979 "if (!$Pv4) $Vd32.tmp = vmem($Rt32+#$Ii):nt",
27980 tc_3904b926, TypeCVI_VM_TMP_LD>, Enc_8d8a30, Requires<[UseHVXV62]>, PredRel {
27981 let Inst{7-5} = 0b111;
27982 let Inst{31-21} = 0b00101000110;
27983 let isPredicated = 1;
27984 let isPredicatedFalse = 1;
27985 let hasNewValue = 1;
27986 let opNewValue = 0;
27987 let addrMode = BaseImmOffset;
27988 let accessSize = HVXVectorAccess;
27989 let isCVLoad = 1;
27990 let isCVI = 1;
27991 let mayLoad = 1;
27992 let isNonTemporal = 1;
27993 let isRestrictNoSlot1Store = 1;
27994 let BaseOpcode = "V6_vL32b_nt_tmp_ai";
27995 let DecoderNamespace = "EXT_mmvec";
27996 }
27997 def V6_vL32b_nt_tmp_npred_pi : HInst<
27998 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27999 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
28000 "if (!$Pv4) $Vd32.tmp = vmem($Rx32++#$Ii):nt",
28001 tc_b9db8205, TypeCVI_VM_TMP_LD>, Enc_58a8bf, Requires<[UseHVXV62]>, PredRel {
28002 let Inst{7-5} = 0b111;
28003 let Inst{13-13} = 0b0;
28004 let Inst{31-21} = 0b00101001110;
28005 let isPredicated = 1;
28006 let isPredicatedFalse = 1;
28007 let hasNewValue = 1;
28008 let opNewValue = 0;
28009 let addrMode = PostInc;
28010 let accessSize = HVXVectorAccess;
28011 let isCVLoad = 1;
28012 let isCVI = 1;
28013 let mayLoad = 1;
28014 let isNonTemporal = 1;
28015 let isRestrictNoSlot1Store = 1;
28016 let BaseOpcode = "V6_vL32b_nt_tmp_pi";
28017 let DecoderNamespace = "EXT_mmvec";
28018 let Constraints = "$Rx32 = $Rx32in";
28019 }
28020 def V6_vL32b_nt_tmp_npred_ppu : HInst<
28021 (outs HvxVR:$Vd32, IntRegs:$Rx32),
28022 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
28023 "if (!$Pv4) $Vd32.tmp = vmem($Rx32++$Mu2):nt",
28024 tc_b9db8205, TypeCVI_VM_TMP_LD>, Enc_f8c1c4, Requires<[UseHVXV62]>, PredRel {
28025 let Inst{10-5} = 0b000111;
28026 let Inst{31-21} = 0b00101011110;
28027 let isPredicated = 1;
28028 let isPredicatedFalse = 1;
28029 let hasNewValue = 1;
28030 let opNewValue = 0;
28031 let addrMode = PostInc;
28032 let accessSize = HVXVectorAccess;
28033 let isCVLoad = 1;
28034 let isCVI = 1;
28035 let mayLoad = 1;
28036 let isNonTemporal = 1;
28037 let isRestrictNoSlot1Store = 1;
28038 let BaseOpcode = "V6_vL32b_nt_tmp_ppu";
28039 let DecoderNamespace = "EXT_mmvec";
28040 let Constraints = "$Rx32 = $Rx32in";
28041 }
28042 def V6_vL32b_nt_tmp_pi : HInst<
28043 (outs HvxVR:$Vd32, IntRegs:$Rx32),
28044 (ins IntRegs:$Rx32in, s3_0Imm:$Ii),
28045 "$Vd32.tmp = vmem($Rx32++#$Ii):nt",
28046 tc_663c80a7, TypeCVI_VM_TMP_LD>, Enc_a255dc, Requires<[UseHVXV60]>, PredRel {
28047 let Inst{7-5} = 0b010;
28048 let Inst{13-11} = 0b000;
28049 let Inst{31-21} = 0b00101001010;
28050 let hasNewValue = 1;
28051 let opNewValue = 0;
28052 let addrMode = PostInc;
28053 let accessSize = HVXVectorAccess;
28054 let isCVLoad = 1;
28055 let isCVI = 1;
28056 let mayLoad = 1;
28057 let isNonTemporal = 1;
28058 let isRestrictNoSlot1Store = 1;
28059 let BaseOpcode = "V6_vL32b_nt_tmp_pi";
28060 let isPredicable = 1;
28061 let DecoderNamespace = "EXT_mmvec";
28062 let Constraints = "$Rx32 = $Rx32in";
28063 }
28064 def V6_vL32b_nt_tmp_ppu : HInst<
28065 (outs HvxVR:$Vd32, IntRegs:$Rx32),
28066 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
28067 "$Vd32.tmp = vmem($Rx32++$Mu2):nt",
28068 tc_663c80a7, TypeCVI_VM_TMP_LD>, Enc_2ebe3b, Requires<[UseHVXV60]>, PredRel {
28069 let Inst{12-5} = 0b00000010;
28070 let Inst{31-21} = 0b00101011010;
28071 let hasNewValue = 1;
28072 let opNewValue = 0;
28073 let addrMode = PostInc;
28074 let accessSize = HVXVectorAccess;
28075 let isCVLoad = 1;
28076 let isCVI = 1;
28077 let mayLoad = 1;
28078 let isNonTemporal = 1;
28079 let isRestrictNoSlot1Store = 1;
28080 let BaseOpcode = "V6_vL32b_nt_tmp_ppu";
28081 let isPredicable = 1;
28082 let DecoderNamespace = "EXT_mmvec";
28083 let Constraints = "$Rx32 = $Rx32in";
28084 }
28085 def V6_vL32b_nt_tmp_pred_ai : HInst<
28086 (outs HvxVR:$Vd32),
28087 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
28088 "if ($Pv4) $Vd32.tmp = vmem($Rt32+#$Ii):nt",
28089 tc_3904b926, TypeCVI_VM_TMP_LD>, Enc_8d8a30, Requires<[UseHVXV62]>, PredRel {
28090 let Inst{7-5} = 0b110;
28091 let Inst{31-21} = 0b00101000110;
28092 let isPredicated = 1;
28093 let hasNewValue = 1;
28094 let opNewValue = 0;
28095 let addrMode = BaseImmOffset;
28096 let accessSize = HVXVectorAccess;
28097 let isCVLoad = 1;
28098 let isCVI = 1;
28099 let mayLoad = 1;
28100 let isNonTemporal = 1;
28101 let isRestrictNoSlot1Store = 1;
28102 let BaseOpcode = "V6_vL32b_nt_tmp_ai";
28103 let DecoderNamespace = "EXT_mmvec";
28104 }
28105 def V6_vL32b_nt_tmp_pred_pi : HInst<
28106 (outs HvxVR:$Vd32, IntRegs:$Rx32),
28107 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
28108 "if ($Pv4) $Vd32.tmp = vmem($Rx32++#$Ii):nt",
28109 tc_b9db8205, TypeCVI_VM_TMP_LD>, Enc_58a8bf, Requires<[UseHVXV62]>, PredRel {
28110 let Inst{7-5} = 0b110;
28111 let Inst{13-13} = 0b0;
28112 let Inst{31-21} = 0b00101001110;
28113 let isPredicated = 1;
28114 let hasNewValue = 1;
28115 let opNewValue = 0;
28116 let addrMode = PostInc;
28117 let accessSize = HVXVectorAccess;
28118 let isCVLoad = 1;
28119 let isCVI = 1;
28120 let mayLoad = 1;
28121 let isNonTemporal = 1;
28122 let isRestrictNoSlot1Store = 1;
28123 let BaseOpcode = "V6_vL32b_nt_tmp_pi";
28124 let DecoderNamespace = "EXT_mmvec";
28125 let Constraints = "$Rx32 = $Rx32in";
28126 }
28127 def V6_vL32b_nt_tmp_pred_ppu : HInst<
28128 (outs HvxVR:$Vd32, IntRegs:$Rx32),
28129 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
28130 "if ($Pv4) $Vd32.tmp = vmem($Rx32++$Mu2):nt",
28131 tc_b9db8205, TypeCVI_VM_TMP_LD>, Enc_f8c1c4, Requires<[UseHVXV62]>, PredRel {
28132 let Inst{10-5} = 0b000110;
28133 let Inst{31-21} = 0b00101011110;
28134 let isPredicated = 1;
28135 let hasNewValue = 1;
28136 let opNewValue = 0;
28137 let addrMode = PostInc;
28138 let accessSize = HVXVectorAccess;
28139 let isCVLoad = 1;
28140 let isCVI = 1;
28141 let mayLoad = 1;
28142 let isNonTemporal = 1;
28143 let isRestrictNoSlot1Store = 1;
28144 let BaseOpcode = "V6_vL32b_nt_tmp_ppu";
28145 let DecoderNamespace = "EXT_mmvec";
28146 let Constraints = "$Rx32 = $Rx32in";
28147 }
28148 def V6_vL32b_pi : HInst<
28149 (outs HvxVR:$Vd32, IntRegs:$Rx32),
28150 (ins IntRegs:$Rx32in, s3_0Imm:$Ii),
28151 "$Vd32 = vmem($Rx32++#$Ii)",
28152 tc_1ba8a0cd, TypeCVI_VM_LD>, Enc_a255dc, Requires<[UseHVXV60]>, PredRel {
28153 let Inst{7-5} = 0b000;
28154 let Inst{13-11} = 0b000;
28155 let Inst{31-21} = 0b00101001000;
28156 let hasNewValue = 1;
28157 let opNewValue = 0;
28158 let addrMode = PostInc;
28159 let accessSize = HVXVectorAccess;
28160 let isCVLoad = 1;
28161 let isCVI = 1;
28162 let mayLoad = 1;
28163 let isRestrictNoSlot1Store = 1;
28164 let BaseOpcode = "V6_vL32b_pi";
28165 let isCVLoadable = 1;
28166 let isPredicable = 1;
28167 let DecoderNamespace = "EXT_mmvec";
28168 let Constraints = "$Rx32 = $Rx32in";
28169 }
28170 def V6_vL32b_ppu : HInst<
28171 (outs HvxVR:$Vd32, IntRegs:$Rx32),
28172 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
28173 "$Vd32 = vmem($Rx32++$Mu2)",
28174 tc_1ba8a0cd, TypeCVI_VM_LD>, Enc_2ebe3b, Requires<[UseHVXV60]>, PredRel {
28175 let Inst{12-5} = 0b00000000;
28176 let Inst{31-21} = 0b00101011000;
28177 let hasNewValue = 1;
28178 let opNewValue = 0;
28179 let addrMode = PostInc;
28180 let accessSize = HVXVectorAccess;
28181 let isCVLoad = 1;
28182 let isCVI = 1;
28183 let mayLoad = 1;
28184 let isRestrictNoSlot1Store = 1;
28185 let BaseOpcode = "V6_vL32b_ppu";
28186 let isCVLoadable = 1;
28187 let isPredicable = 1;
28188 let DecoderNamespace = "EXT_mmvec";
28189 let Constraints = "$Rx32 = $Rx32in";
28190 }
28191 def V6_vL32b_pred_ai : HInst<
28192 (outs HvxVR:$Vd32),
28193 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
28194 "if ($Pv4) $Vd32 = vmem($Rt32+#$Ii)",
28195 tc_abe8c3b2, TypeCVI_VM_LD>, Enc_8d8a30, Requires<[UseHVXV62]>, PredRel {
28196 let Inst{7-5} = 0b010;
28197 let Inst{31-21} = 0b00101000100;
28198 let isPredicated = 1;
28199 let hasNewValue = 1;
28200 let opNewValue = 0;
28201 let addrMode = BaseImmOffset;
28202 let accessSize = HVXVectorAccess;
28203 let isCVLoad = 1;
28204 let isCVI = 1;
28205 let mayLoad = 1;
28206 let isRestrictNoSlot1Store = 1;
28207 let BaseOpcode = "V6_vL32b_ai";
28208 let DecoderNamespace = "EXT_mmvec";
28209 }
28210 def V6_vL32b_pred_pi : HInst<
28211 (outs HvxVR:$Vd32, IntRegs:$Rx32),
28212 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
28213 "if ($Pv4) $Vd32 = vmem($Rx32++#$Ii)",
28214 tc_453fe68d, TypeCVI_VM_LD>, Enc_58a8bf, Requires<[UseHVXV62]>, PredRel {
28215 let Inst{7-5} = 0b010;
28216 let Inst{13-13} = 0b0;
28217 let Inst{31-21} = 0b00101001100;
28218 let isPredicated = 1;
28219 let hasNewValue = 1;
28220 let opNewValue = 0;
28221 let addrMode = PostInc;
28222 let accessSize = HVXVectorAccess;
28223 let isCVLoad = 1;
28224 let isCVI = 1;
28225 let mayLoad = 1;
28226 let isRestrictNoSlot1Store = 1;
28227 let BaseOpcode = "V6_vL32b_pi";
28228 let DecoderNamespace = "EXT_mmvec";
28229 let Constraints = "$Rx32 = $Rx32in";
28230 }
28231 def V6_vL32b_pred_ppu : HInst<
28232 (outs HvxVR:$Vd32, IntRegs:$Rx32),
28233 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
28234 "if ($Pv4) $Vd32 = vmem($Rx32++$Mu2)",
28235 tc_453fe68d, TypeCVI_VM_LD>, Enc_f8c1c4, Requires<[UseHVXV62]>, PredRel {
28236 let Inst{10-5} = 0b000010;
28237 let Inst{31-21} = 0b00101011100;
28238 let isPredicated = 1;
28239 let hasNewValue = 1;
28240 let opNewValue = 0;
28241 let addrMode = PostInc;
28242 let accessSize = HVXVectorAccess;
28243 let isCVLoad = 1;
28244 let isCVI = 1;
28245 let mayLoad = 1;
28246 let isRestrictNoSlot1Store = 1;
28247 let BaseOpcode = "V6_vL32b_ppu";
28248 let DecoderNamespace = "EXT_mmvec";
28249 let Constraints = "$Rx32 = $Rx32in";
28250 }
28251 def V6_vL32b_tmp_ai : HInst<
28252 (outs HvxVR:$Vd32),
28253 (ins IntRegs:$Rt32, s4_0Imm:$Ii),
28254 "$Vd32.tmp = vmem($Rt32+#$Ii)",
28255 tc_52447ecc, TypeCVI_VM_TMP_LD>, Enc_f3f408, Requires<[UseHVXV60]>, PredRel {
28256 let Inst{7-5} = 0b010;
28257 let Inst{12-11} = 0b00;
28258 let Inst{31-21} = 0b00101000000;
28259 let hasNewValue = 1;
28260 let opNewValue = 0;
28261 let addrMode = BaseImmOffset;
28262 let accessSize = HVXVectorAccess;
28263 let isCVLoad = 1;
28264 let isCVI = 1;
28265 let mayLoad = 1;
28266 let isRestrictNoSlot1Store = 1;
28267 let BaseOpcode = "V6_vL32b_tmp_ai";
28268 let isPredicable = 1;
28269 let DecoderNamespace = "EXT_mmvec";
28270 }
28271 def V6_vL32b_tmp_npred_ai : HInst<
28272 (outs HvxVR:$Vd32),
28273 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
28274 "if (!$Pv4) $Vd32.tmp = vmem($Rt32+#$Ii)",
28275 tc_3904b926, TypeCVI_VM_TMP_LD>, Enc_8d8a30, Requires<[UseHVXV62]>, PredRel {
28276 let Inst{7-5} = 0b111;
28277 let Inst{31-21} = 0b00101000100;
28278 let isPredicated = 1;
28279 let isPredicatedFalse = 1;
28280 let hasNewValue = 1;
28281 let opNewValue = 0;
28282 let addrMode = BaseImmOffset;
28283 let accessSize = HVXVectorAccess;
28284 let isCVLoad = 1;
28285 let isCVI = 1;
28286 let mayLoad = 1;
28287 let isRestrictNoSlot1Store = 1;
28288 let BaseOpcode = "V6_vL32b_tmp_ai";
28289 let DecoderNamespace = "EXT_mmvec";
28290 }
28291 def V6_vL32b_tmp_npred_pi : HInst<
28292 (outs HvxVR:$Vd32, IntRegs:$Rx32),
28293 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
28294 "if (!$Pv4) $Vd32.tmp = vmem($Rx32++#$Ii)",
28295 tc_b9db8205, TypeCVI_VM_TMP_LD>, Enc_58a8bf, Requires<[UseHVXV62]>, PredRel {
28296 let Inst{7-5} = 0b111;
28297 let Inst{13-13} = 0b0;
28298 let Inst{31-21} = 0b00101001100;
28299 let isPredicated = 1;
28300 let isPredicatedFalse = 1;
28301 let hasNewValue = 1;
28302 let opNewValue = 0;
28303 let addrMode = PostInc;
28304 let accessSize = HVXVectorAccess;
28305 let isCVLoad = 1;
28306 let isCVI = 1;
28307 let mayLoad = 1;
28308 let isRestrictNoSlot1Store = 1;
28309 let BaseOpcode = "V6_vL32b_tmp_pi";
28310 let DecoderNamespace = "EXT_mmvec";
28311 let Constraints = "$Rx32 = $Rx32in";
28312 }
28313 def V6_vL32b_tmp_npred_ppu : HInst<
28314 (outs HvxVR:$Vd32, IntRegs:$Rx32),
28315 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
28316 "if (!$Pv4) $Vd32.tmp = vmem($Rx32++$Mu2)",
28317 tc_b9db8205, TypeCVI_VM_TMP_LD>, Enc_f8c1c4, Requires<[UseHVXV62]>, PredRel {
28318 let Inst{10-5} = 0b000111;
28319 let Inst{31-21} = 0b00101011100;
28320 let isPredicated = 1;
28321 let isPredicatedFalse = 1;
28322 let hasNewValue = 1;
28323 let opNewValue = 0;
28324 let addrMode = PostInc;
28325 let accessSize = HVXVectorAccess;
28326 let isCVLoad = 1;
28327 let isCVI = 1;
28328 let mayLoad = 1;
28329 let isRestrictNoSlot1Store = 1;
28330 let BaseOpcode = "V6_vL32b_tmp_ppu";
28331 let DecoderNamespace = "EXT_mmvec";
28332 let Constraints = "$Rx32 = $Rx32in";
28333 }
28334 def V6_vL32b_tmp_pi : HInst<
28335 (outs HvxVR:$Vd32, IntRegs:$Rx32),
28336 (ins IntRegs:$Rx32in, s3_0Imm:$Ii),
28337 "$Vd32.tmp = vmem($Rx32++#$Ii)",
28338 tc_663c80a7, TypeCVI_VM_TMP_LD>, Enc_a255dc, Requires<[UseHVXV60]>, PredRel {
28339 let Inst{7-5} = 0b010;
28340 let Inst{13-11} = 0b000;
28341 let Inst{31-21} = 0b00101001000;
28342 let hasNewValue = 1;
28343 let opNewValue = 0;
28344 let addrMode = PostInc;
28345 let accessSize = HVXVectorAccess;
28346 let isCVLoad = 1;
28347 let isCVI = 1;
28348 let mayLoad = 1;
28349 let isRestrictNoSlot1Store = 1;
28350 let BaseOpcode = "V6_vL32b_tmp_pi";
28351 let isPredicable = 1;
28352 let DecoderNamespace = "EXT_mmvec";
28353 let Constraints = "$Rx32 = $Rx32in";
28354 }
28355 def V6_vL32b_tmp_ppu : HInst<
28356 (outs HvxVR:$Vd32, IntRegs:$Rx32),
28357 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
28358 "$Vd32.tmp = vmem($Rx32++$Mu2)",
28359 tc_663c80a7, TypeCVI_VM_TMP_LD>, Enc_2ebe3b, Requires<[UseHVXV60]>, PredRel {
28360 let Inst{12-5} = 0b00000010;
28361 let Inst{31-21} = 0b00101011000;
28362 let hasNewValue = 1;
28363 let opNewValue = 0;
28364 let addrMode = PostInc;
28365 let accessSize = HVXVectorAccess;
28366 let isCVLoad = 1;
28367 let isCVI = 1;
28368 let mayLoad = 1;
28369 let isRestrictNoSlot1Store = 1;
28370 let BaseOpcode = "V6_vL32b_tmp_ppu";
28371 let isPredicable = 1;
28372 let DecoderNamespace = "EXT_mmvec";
28373 let Constraints = "$Rx32 = $Rx32in";
28374 }
28375 def V6_vL32b_tmp_pred_ai : HInst<
28376 (outs HvxVR:$Vd32),
28377 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
28378 "if ($Pv4) $Vd32.tmp = vmem($Rt32+#$Ii)",
28379 tc_3904b926, TypeCVI_VM_TMP_LD>, Enc_8d8a30, Requires<[UseHVXV62]>, PredRel {
28380 let Inst{7-5} = 0b110;
28381 let Inst{31-21} = 0b00101000100;
28382 let isPredicated = 1;
28383 let hasNewValue = 1;
28384 let opNewValue = 0;
28385 let addrMode = BaseImmOffset;
28386 let accessSize = HVXVectorAccess;
28387 let isCVLoad = 1;
28388 let isCVI = 1;
28389 let mayLoad = 1;
28390 let isRestrictNoSlot1Store = 1;
28391 let BaseOpcode = "V6_vL32b_tmp_ai";
28392 let DecoderNamespace = "EXT_mmvec";
28393 }
28394 def V6_vL32b_tmp_pred_pi : HInst<
28395 (outs HvxVR:$Vd32, IntRegs:$Rx32),
28396 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
28397 "if ($Pv4) $Vd32.tmp = vmem($Rx32++#$Ii)",
28398 tc_b9db8205, TypeCVI_VM_TMP_LD>, Enc_58a8bf, Requires<[UseHVXV62]>, PredRel {
28399 let Inst{7-5} = 0b110;
28400 let Inst{13-13} = 0b0;
28401 let Inst{31-21} = 0b00101001100;
28402 let isPredicated = 1;
28403 let hasNewValue = 1;
28404 let opNewValue = 0;
28405 let addrMode = PostInc;
28406 let accessSize = HVXVectorAccess;
28407 let isCVLoad = 1;
28408 let isCVI = 1;
28409 let mayLoad = 1;
28410 let isRestrictNoSlot1Store = 1;
28411 let BaseOpcode = "V6_vL32b_tmp_pi";
28412 let DecoderNamespace = "EXT_mmvec";
28413 let Constraints = "$Rx32 = $Rx32in";
28414 }
28415 def V6_vL32b_tmp_pred_ppu : HInst<
28416 (outs HvxVR:$Vd32, IntRegs:$Rx32),
28417 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
28418 "if ($Pv4) $Vd32.tmp = vmem($Rx32++$Mu2)",
28419 tc_b9db8205, TypeCVI_VM_TMP_LD>, Enc_f8c1c4, Requires<[UseHVXV62]>, PredRel {
28420 let Inst{10-5} = 0b000110;
28421 let Inst{31-21} = 0b00101011100;
28422 let isPredicated = 1;
28423 let hasNewValue = 1;
28424 let opNewValue = 0;
28425 let addrMode = PostInc;
28426 let accessSize = HVXVectorAccess;
28427 let isCVLoad = 1;
28428 let isCVI = 1;
28429 let mayLoad = 1;
28430 let isRestrictNoSlot1Store = 1;
28431 let BaseOpcode = "V6_vL32b_tmp_ppu";
28432 let DecoderNamespace = "EXT_mmvec";
28433 let Constraints = "$Rx32 = $Rx32in";
28434 }
28435 def V6_vS32Ub_ai : HInst<
28436 (outs),
28437 (ins IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
28438 "vmemu($Rt32+#$Ii) = $Vs32",
28439 tc_f21e8abb, TypeCVI_VM_STU>, Enc_c9e3bc, Requires<[UseHVXV60]>, NewValueRel {
28440 let Inst{7-5} = 0b111;
28441 let Inst{12-11} = 0b00;
28442 let Inst{31-21} = 0b00101000001;
28443 let addrMode = BaseImmOffset;
28444 let accessSize = HVXVectorAccess;
28445 let isCVI = 1;
28446 let mayStore = 1;
28447 let BaseOpcode = "V6_vS32Ub_ai";
28448 let isPredicable = 1;
28449 let DecoderNamespace = "EXT_mmvec";
28450 }
28451 def V6_vS32Ub_npred_ai : HInst<
28452 (outs),
28453 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
28454 "if (!$Pv4) vmemu($Rt32+#$Ii) = $Vs32",
28455 tc_131f1c81, TypeCVI_VM_STU>, Enc_27b757, Requires<[UseHVXV60]>, NewValueRel {
28456 let Inst{7-5} = 0b111;
28457 let Inst{31-21} = 0b00101000101;
28458 let isPredicated = 1;
28459 let isPredicatedFalse = 1;
28460 let addrMode = BaseImmOffset;
28461 let accessSize = HVXVectorAccess;
28462 let isCVI = 1;
28463 let mayStore = 1;
28464 let BaseOpcode = "V6_vS32Ub_ai";
28465 let DecoderNamespace = "EXT_mmvec";
28466 }
28467 def V6_vS32Ub_npred_pi : HInst<
28468 (outs IntRegs:$Rx32),
28469 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
28470 "if (!$Pv4) vmemu($Rx32++#$Ii) = $Vs32",
28471 tc_c7039829, TypeCVI_VM_STU>, Enc_865390, Requires<[UseHVXV60]>, NewValueRel {
28472 let Inst{7-5} = 0b111;
28473 let Inst{13-13} = 0b0;
28474 let Inst{31-21} = 0b00101001101;
28475 let isPredicated = 1;
28476 let isPredicatedFalse = 1;
28477 let addrMode = PostInc;
28478 let accessSize = HVXVectorAccess;
28479 let isCVI = 1;
28480 let mayStore = 1;
28481 let BaseOpcode = "V6_vS32Ub_pi";
28482 let DecoderNamespace = "EXT_mmvec";
28483 let Constraints = "$Rx32 = $Rx32in";
28484 }
28485 def V6_vS32Ub_npred_ppu : HInst<
28486 (outs IntRegs:$Rx32),
28487 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
28488 "if (!$Pv4) vmemu($Rx32++$Mu2) = $Vs32",
28489 tc_c7039829, TypeCVI_VM_STU>, Enc_1ef990, Requires<[UseHVXV60]>, NewValueRel {
28490 let Inst{10-5} = 0b000111;
28491 let Inst{31-21} = 0b00101011101;
28492 let isPredicated = 1;
28493 let isPredicatedFalse = 1;
28494 let addrMode = PostInc;
28495 let accessSize = HVXVectorAccess;
28496 let isCVI = 1;
28497 let mayStore = 1;
28498 let BaseOpcode = "V6_vS32Ub_ppu";
28499 let DecoderNamespace = "EXT_mmvec";
28500 let Constraints = "$Rx32 = $Rx32in";
28501 }
28502 def V6_vS32Ub_pi : HInst<
28503 (outs IntRegs:$Rx32),
28504 (ins IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
28505 "vmemu($Rx32++#$Ii) = $Vs32",
28506 tc_e2d2e9e5, TypeCVI_VM_STU>, Enc_b62ef7, Requires<[UseHVXV60]>, NewValueRel {
28507 let Inst{7-5} = 0b111;
28508 let Inst{13-11} = 0b000;
28509 let Inst{31-21} = 0b00101001001;
28510 let addrMode = PostInc;
28511 let accessSize = HVXVectorAccess;
28512 let isCVI = 1;
28513 let mayStore = 1;
28514 let BaseOpcode = "V6_vS32Ub_pi";
28515 let isPredicable = 1;
28516 let DecoderNamespace = "EXT_mmvec";
28517 let Constraints = "$Rx32 = $Rx32in";
28518 }
28519 def V6_vS32Ub_ppu : HInst<
28520 (outs IntRegs:$Rx32),
28521 (ins IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
28522 "vmemu($Rx32++$Mu2) = $Vs32",
28523 tc_e2d2e9e5, TypeCVI_VM_STU>, Enc_d15d19, Requires<[UseHVXV60]>, NewValueRel {
28524 let Inst{12-5} = 0b00000111;
28525 let Inst{31-21} = 0b00101011001;
28526 let addrMode = PostInc;
28527 let accessSize = HVXVectorAccess;
28528 let isCVI = 1;
28529 let mayStore = 1;
28530 let BaseOpcode = "V6_vS32Ub_ppu";
28531 let isPredicable = 1;
28532 let DecoderNamespace = "EXT_mmvec";
28533 let Constraints = "$Rx32 = $Rx32in";
28534 }
28535 def V6_vS32Ub_pred_ai : HInst<
28536 (outs),
28537 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
28538 "if ($Pv4) vmemu($Rt32+#$Ii) = $Vs32",
28539 tc_131f1c81, TypeCVI_VM_STU>, Enc_27b757, Requires<[UseHVXV60]>, NewValueRel {
28540 let Inst{7-5} = 0b110;
28541 let Inst{31-21} = 0b00101000101;
28542 let isPredicated = 1;
28543 let addrMode = BaseImmOffset;
28544 let accessSize = HVXVectorAccess;
28545 let isCVI = 1;
28546 let mayStore = 1;
28547 let BaseOpcode = "V6_vS32Ub_ai";
28548 let DecoderNamespace = "EXT_mmvec";
28549 }
28550 def V6_vS32Ub_pred_pi : HInst<
28551 (outs IntRegs:$Rx32),
28552 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
28553 "if ($Pv4) vmemu($Rx32++#$Ii) = $Vs32",
28554 tc_c7039829, TypeCVI_VM_STU>, Enc_865390, Requires<[UseHVXV60]>, NewValueRel {
28555 let Inst{7-5} = 0b110;
28556 let Inst{13-13} = 0b0;
28557 let Inst{31-21} = 0b00101001101;
28558 let isPredicated = 1;
28559 let addrMode = PostInc;
28560 let accessSize = HVXVectorAccess;
28561 let isCVI = 1;
28562 let mayStore = 1;
28563 let BaseOpcode = "V6_vS32Ub_pi";
28564 let DecoderNamespace = "EXT_mmvec";
28565 let Constraints = "$Rx32 = $Rx32in";
28566 }
28567 def V6_vS32Ub_pred_ppu : HInst<
28568 (outs IntRegs:$Rx32),
28569 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
28570 "if ($Pv4) vmemu($Rx32++$Mu2) = $Vs32",
28571 tc_c7039829, TypeCVI_VM_STU>, Enc_1ef990, Requires<[UseHVXV60]>, NewValueRel {
28572 let Inst{10-5} = 0b000110;
28573 let Inst{31-21} = 0b00101011101;
28574 let isPredicated = 1;
28575 let addrMode = PostInc;
28576 let accessSize = HVXVectorAccess;
28577 let isCVI = 1;
28578 let mayStore = 1;
28579 let BaseOpcode = "V6_vS32Ub_ppu";
28580 let DecoderNamespace = "EXT_mmvec";
28581 let Constraints = "$Rx32 = $Rx32in";
28582 }
28583 def V6_vS32b_ai : HInst<
28584 (outs),
28585 (ins IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
28586 "vmem($Rt32+#$Ii) = $Vs32",
28587 tc_c5dba46e, TypeCVI_VM_ST>, Enc_c9e3bc, Requires<[UseHVXV60]>, NewValueRel {
28588 let Inst{7-5} = 0b000;
28589 let Inst{12-11} = 0b00;
28590 let Inst{31-21} = 0b00101000001;
28591 let addrMode = BaseImmOffset;
28592 let accessSize = HVXVectorAccess;
28593 let isCVI = 1;
28594 let mayStore = 1;
28595 let BaseOpcode = "V6_vS32b_ai";
28596 let isNVStorable = 1;
28597 let isPredicable = 1;
28598 let DecoderNamespace = "EXT_mmvec";
28599 }
28600 def V6_vS32b_new_ai : HInst<
28601 (outs),
28602 (ins IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Os8),
28603 "vmem($Rt32+#$Ii) = $Os8.new",
28604 tc_ab23f776, TypeCVI_VM_NEW_ST>, Enc_f77fbc, Requires<[UseHVXV60]>, NewValueRel {
28605 let Inst{7-3} = 0b00100;
28606 let Inst{12-11} = 0b00;
28607 let Inst{31-21} = 0b00101000001;
28608 let addrMode = BaseImmOffset;
28609 let accessSize = HVXVectorAccess;
28610 let isNVStore = 1;
28611 let isCVI = 1;
28612 let CVINew = 1;
28613 let isNewValue = 1;
28614 let mayStore = 1;
28615 let BaseOpcode = "V6_vS32b_ai";
28616 let isPredicable = 1;
28617 let DecoderNamespace = "EXT_mmvec";
28618 let opNewValue = 2;
28619 }
28620 def V6_vS32b_new_npred_ai : HInst<
28621 (outs),
28622 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Os8),
28623 "if (!$Pv4) vmem($Rt32+#$Ii) = $Os8.new",
28624 tc_7177e272, TypeCVI_VM_NEW_ST>, Enc_f7430e, Requires<[UseHVXV60]>, NewValueRel {
28625 let Inst{7-3} = 0b01101;
28626 let Inst{31-21} = 0b00101000101;
28627 let isPredicated = 1;
28628 let isPredicatedFalse = 1;
28629 let addrMode = BaseImmOffset;
28630 let accessSize = HVXVectorAccess;
28631 let isNVStore = 1;
28632 let isCVI = 1;
28633 let CVINew = 1;
28634 let isNewValue = 1;
28635 let mayStore = 1;
28636 let BaseOpcode = "V6_vS32b_ai";
28637 let DecoderNamespace = "EXT_mmvec";
28638 let opNewValue = 3;
28639 }
28640 def V6_vS32b_new_npred_pi : HInst<
28641 (outs IntRegs:$Rx32),
28642 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Os8),
28643 "if (!$Pv4) vmem($Rx32++#$Ii) = $Os8.new",
28644 tc_e99d4c2e, TypeCVI_VM_NEW_ST>, Enc_784502, Requires<[UseHVXV60]>, NewValueRel {
28645 let Inst{7-3} = 0b01101;
28646 let Inst{13-13} = 0b0;
28647 let Inst{31-21} = 0b00101001101;
28648 let isPredicated = 1;
28649 let isPredicatedFalse = 1;
28650 let addrMode = PostInc;
28651 let accessSize = HVXVectorAccess;
28652 let isNVStore = 1;
28653 let isCVI = 1;
28654 let CVINew = 1;
28655 let isNewValue = 1;
28656 let mayStore = 1;
28657 let BaseOpcode = "V6_vS32b_pi";
28658 let DecoderNamespace = "EXT_mmvec";
28659 let opNewValue = 4;
28660 let Constraints = "$Rx32 = $Rx32in";
28661 }
28662 def V6_vS32b_new_npred_ppu : HInst<
28663 (outs IntRegs:$Rx32),
28664 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Os8),
28665 "if (!$Pv4) vmem($Rx32++$Mu2) = $Os8.new",
28666 tc_e99d4c2e, TypeCVI_VM_NEW_ST>, Enc_372c9d, Requires<[UseHVXV60]>, NewValueRel {
28667 let Inst{10-3} = 0b00001101;
28668 let Inst{31-21} = 0b00101011101;
28669 let isPredicated = 1;
28670 let isPredicatedFalse = 1;
28671 let addrMode = PostInc;
28672 let accessSize = HVXVectorAccess;
28673 let isNVStore = 1;
28674 let isCVI = 1;
28675 let CVINew = 1;
28676 let isNewValue = 1;
28677 let mayStore = 1;
28678 let BaseOpcode = "V6_vS32b_ppu";
28679 let DecoderNamespace = "EXT_mmvec";
28680 let opNewValue = 4;
28681 let Constraints = "$Rx32 = $Rx32in";
28682 }
28683 def V6_vS32b_new_pi : HInst<
28684 (outs IntRegs:$Rx32),
28685 (ins IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Os8),
28686 "vmem($Rx32++#$Ii) = $Os8.new",
28687 tc_6942b6e0, TypeCVI_VM_NEW_ST>, Enc_1aaec1, Requires<[UseHVXV60]>, NewValueRel {
28688 let Inst{7-3} = 0b00100;
28689 let Inst{13-11} = 0b000;
28690 let Inst{31-21} = 0b00101001001;
28691 let addrMode = PostInc;
28692 let accessSize = HVXVectorAccess;
28693 let isNVStore = 1;
28694 let isCVI = 1;
28695 let CVINew = 1;
28696 let isNewValue = 1;
28697 let mayStore = 1;
28698 let BaseOpcode = "V6_vS32b_pi";
28699 let isPredicable = 1;
28700 let DecoderNamespace = "EXT_mmvec";
28701 let opNewValue = 3;
28702 let Constraints = "$Rx32 = $Rx32in";
28703 }
28704 def V6_vS32b_new_ppu : HInst<
28705 (outs IntRegs:$Rx32),
28706 (ins IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Os8),
28707 "vmem($Rx32++$Mu2) = $Os8.new",
28708 tc_6942b6e0, TypeCVI_VM_NEW_ST>, Enc_cf1927, Requires<[UseHVXV60]>, NewValueRel {
28709 let Inst{12-3} = 0b0000000100;
28710 let Inst{31-21} = 0b00101011001;
28711 let addrMode = PostInc;
28712 let accessSize = HVXVectorAccess;
28713 let isNVStore = 1;
28714 let isCVI = 1;
28715 let CVINew = 1;
28716 let isNewValue = 1;
28717 let mayStore = 1;
28718 let BaseOpcode = "V6_vS32b_ppu";
28719 let isPredicable = 1;
28720 let DecoderNamespace = "EXT_mmvec";
28721 let opNewValue = 3;
28722 let Constraints = "$Rx32 = $Rx32in";
28723 }
28724 def V6_vS32b_new_pred_ai : HInst<
28725 (outs),
28726 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Os8),
28727 "if ($Pv4) vmem($Rt32+#$Ii) = $Os8.new",
28728 tc_7177e272, TypeCVI_VM_NEW_ST>, Enc_f7430e, Requires<[UseHVXV60]>, NewValueRel {
28729 let Inst{7-3} = 0b01000;
28730 let Inst{31-21} = 0b00101000101;
28731 let isPredicated = 1;
28732 let addrMode = BaseImmOffset;
28733 let accessSize = HVXVectorAccess;
28734 let isNVStore = 1;
28735 let isCVI = 1;
28736 let CVINew = 1;
28737 let isNewValue = 1;
28738 let mayStore = 1;
28739 let BaseOpcode = "V6_vS32b_ai";
28740 let DecoderNamespace = "EXT_mmvec";
28741 let opNewValue = 3;
28742 }
28743 def V6_vS32b_new_pred_pi : HInst<
28744 (outs IntRegs:$Rx32),
28745 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Os8),
28746 "if ($Pv4) vmem($Rx32++#$Ii) = $Os8.new",
28747 tc_e99d4c2e, TypeCVI_VM_NEW_ST>, Enc_784502, Requires<[UseHVXV60]>, NewValueRel {
28748 let Inst{7-3} = 0b01000;
28749 let Inst{13-13} = 0b0;
28750 let Inst{31-21} = 0b00101001101;
28751 let isPredicated = 1;
28752 let addrMode = PostInc;
28753 let accessSize = HVXVectorAccess;
28754 let isNVStore = 1;
28755 let isCVI = 1;
28756 let CVINew = 1;
28757 let isNewValue = 1;
28758 let mayStore = 1;
28759 let BaseOpcode = "V6_vS32b_pi";
28760 let DecoderNamespace = "EXT_mmvec";
28761 let opNewValue = 4;
28762 let Constraints = "$Rx32 = $Rx32in";
28763 }
28764 def V6_vS32b_new_pred_ppu : HInst<
28765 (outs IntRegs:$Rx32),
28766 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Os8),
28767 "if ($Pv4) vmem($Rx32++$Mu2) = $Os8.new",
28768 tc_e99d4c2e, TypeCVI_VM_NEW_ST>, Enc_372c9d, Requires<[UseHVXV60]>, NewValueRel {
28769 let Inst{10-3} = 0b00001000;
28770 let Inst{31-21} = 0b00101011101;
28771 let isPredicated = 1;
28772 let addrMode = PostInc;
28773 let accessSize = HVXVectorAccess;
28774 let isNVStore = 1;
28775 let isCVI = 1;
28776 let CVINew = 1;
28777 let isNewValue = 1;
28778 let mayStore = 1;
28779 let BaseOpcode = "V6_vS32b_ppu";
28780 let DecoderNamespace = "EXT_mmvec";
28781 let opNewValue = 4;
28782 let Constraints = "$Rx32 = $Rx32in";
28783 }
28784 def V6_vS32b_npred_ai : HInst<
28785 (outs),
28786 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
28787 "if (!$Pv4) vmem($Rt32+#$Ii) = $Vs32",
28788 tc_a02a10a8, TypeCVI_VM_ST>, Enc_27b757, Requires<[UseHVXV60]>, NewValueRel {
28789 let Inst{7-5} = 0b001;
28790 let Inst{31-21} = 0b00101000101;
28791 let isPredicated = 1;
28792 let isPredicatedFalse = 1;
28793 let addrMode = BaseImmOffset;
28794 let accessSize = HVXVectorAccess;
28795 let isCVI = 1;
28796 let mayStore = 1;
28797 let BaseOpcode = "V6_vS32b_ai";
28798 let isNVStorable = 1;
28799 let DecoderNamespace = "EXT_mmvec";
28800 }
28801 def V6_vS32b_npred_pi : HInst<
28802 (outs IntRegs:$Rx32),
28803 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
28804 "if (!$Pv4) vmem($Rx32++#$Ii) = $Vs32",
28805 tc_54a0dc47, TypeCVI_VM_ST>, Enc_865390, Requires<[UseHVXV60]>, NewValueRel {
28806 let Inst{7-5} = 0b001;
28807 let Inst{13-13} = 0b0;
28808 let Inst{31-21} = 0b00101001101;
28809 let isPredicated = 1;
28810 let isPredicatedFalse = 1;
28811 let addrMode = PostInc;
28812 let accessSize = HVXVectorAccess;
28813 let isCVI = 1;
28814 let mayStore = 1;
28815 let BaseOpcode = "V6_vS32b_pi";
28816 let isNVStorable = 1;
28817 let DecoderNamespace = "EXT_mmvec";
28818 let Constraints = "$Rx32 = $Rx32in";
28819 }
28820 def V6_vS32b_npred_ppu : HInst<
28821 (outs IntRegs:$Rx32),
28822 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
28823 "if (!$Pv4) vmem($Rx32++$Mu2) = $Vs32",
28824 tc_54a0dc47, TypeCVI_VM_ST>, Enc_1ef990, Requires<[UseHVXV60]>, NewValueRel {
28825 let Inst{10-5} = 0b000001;
28826 let Inst{31-21} = 0b00101011101;
28827 let isPredicated = 1;
28828 let isPredicatedFalse = 1;
28829 let addrMode = PostInc;
28830 let accessSize = HVXVectorAccess;
28831 let isCVI = 1;
28832 let mayStore = 1;
28833 let BaseOpcode = "V6_vS32b_ppu";
28834 let isNVStorable = 1;
28835 let DecoderNamespace = "EXT_mmvec";
28836 let Constraints = "$Rx32 = $Rx32in";
28837 }
28838 def V6_vS32b_nqpred_ai : HInst<
28839 (outs),
28840 (ins HvxQR:$Qv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
28841 "if (!$Qv4) vmem($Rt32+#$Ii) = $Vs32",
28842 tc_447d9895, TypeCVI_VM_ST>, Enc_2ea740, Requires<[UseHVXV60]> {
28843 let Inst{7-5} = 0b001;
28844 let Inst{31-21} = 0b00101000100;
28845 let addrMode = BaseImmOffset;
28846 let accessSize = HVXVectorAccess;
28847 let isCVI = 1;
28848 let mayStore = 1;
28849 let DecoderNamespace = "EXT_mmvec";
28850 }
28851 def V6_vS32b_nqpred_pi : HInst<
28852 (outs IntRegs:$Rx32),
28853 (ins HvxQR:$Qv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
28854 "if (!$Qv4) vmem($Rx32++#$Ii) = $Vs32",
28855 tc_191381c1, TypeCVI_VM_ST>, Enc_0b51ce, Requires<[UseHVXV60]> {
28856 let Inst{7-5} = 0b001;
28857 let Inst{13-13} = 0b0;
28858 let Inst{31-21} = 0b00101001100;
28859 let addrMode = PostInc;
28860 let accessSize = HVXVectorAccess;
28861 let isCVI = 1;
28862 let mayStore = 1;
28863 let DecoderNamespace = "EXT_mmvec";
28864 let Constraints = "$Rx32 = $Rx32in";
28865 }
28866 def V6_vS32b_nqpred_ppu : HInst<
28867 (outs IntRegs:$Rx32),
28868 (ins HvxQR:$Qv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
28869 "if (!$Qv4) vmem($Rx32++$Mu2) = $Vs32",
28870 tc_191381c1, TypeCVI_VM_ST>, Enc_4dff07, Requires<[UseHVXV60]> {
28871 let Inst{10-5} = 0b000001;
28872 let Inst{31-21} = 0b00101011100;
28873 let addrMode = PostInc;
28874 let accessSize = HVXVectorAccess;
28875 let isCVI = 1;
28876 let mayStore = 1;
28877 let DecoderNamespace = "EXT_mmvec";
28878 let Constraints = "$Rx32 = $Rx32in";
28879 }
28880 def V6_vS32b_nt_ai : HInst<
28881 (outs),
28882 (ins IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
28883 "vmem($Rt32+#$Ii):nt = $Vs32",
28884 tc_c5dba46e, TypeCVI_VM_ST>, Enc_c9e3bc, Requires<[UseHVXV60]>, NewValueRel {
28885 let Inst{7-5} = 0b000;
28886 let Inst{12-11} = 0b00;
28887 let Inst{31-21} = 0b00101000011;
28888 let addrMode = BaseImmOffset;
28889 let accessSize = HVXVectorAccess;
28890 let isCVI = 1;
28891 let isNonTemporal = 1;
28892 let mayStore = 1;
28893 let BaseOpcode = "V6_vS32b_ai";
28894 let isNVStorable = 1;
28895 let isPredicable = 1;
28896 let DecoderNamespace = "EXT_mmvec";
28897 }
28898 def V6_vS32b_nt_new_ai : HInst<
28899 (outs),
28900 (ins IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Os8),
28901 "vmem($Rt32+#$Ii):nt = $Os8.new",
28902 tc_ab23f776, TypeCVI_VM_NEW_ST>, Enc_f77fbc, Requires<[UseHVXV60]>, NewValueRel {
28903 let Inst{7-3} = 0b00100;
28904 let Inst{12-11} = 0b00;
28905 let Inst{31-21} = 0b00101000011;
28906 let addrMode = BaseImmOffset;
28907 let accessSize = HVXVectorAccess;
28908 let isNVStore = 1;
28909 let isCVI = 1;
28910 let CVINew = 1;
28911 let isNewValue = 1;
28912 let isNonTemporal = 1;
28913 let mayStore = 1;
28914 let BaseOpcode = "V6_vS32b_ai";
28915 let isPredicable = 1;
28916 let DecoderNamespace = "EXT_mmvec";
28917 let opNewValue = 2;
28918 }
28919 def V6_vS32b_nt_new_npred_ai : HInst<
28920 (outs),
28921 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Os8),
28922 "if (!$Pv4) vmem($Rt32+#$Ii):nt = $Os8.new",
28923 tc_7177e272, TypeCVI_VM_NEW_ST>, Enc_f7430e, Requires<[UseHVXV60]>, NewValueRel {
28924 let Inst{7-3} = 0b01111;
28925 let Inst{31-21} = 0b00101000111;
28926 let isPredicated = 1;
28927 let isPredicatedFalse = 1;
28928 let addrMode = BaseImmOffset;
28929 let accessSize = HVXVectorAccess;
28930 let isNVStore = 1;
28931 let isCVI = 1;
28932 let CVINew = 1;
28933 let isNewValue = 1;
28934 let isNonTemporal = 1;
28935 let mayStore = 1;
28936 let BaseOpcode = "V6_vS32b_ai";
28937 let DecoderNamespace = "EXT_mmvec";
28938 let opNewValue = 3;
28939 }
28940 def V6_vS32b_nt_new_npred_pi : HInst<
28941 (outs IntRegs:$Rx32),
28942 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Os8),
28943 "if (!$Pv4) vmem($Rx32++#$Ii):nt = $Os8.new",
28944 tc_e99d4c2e, TypeCVI_VM_NEW_ST>, Enc_784502, Requires<[UseHVXV60]>, NewValueRel {
28945 let Inst{7-3} = 0b01111;
28946 let Inst{13-13} = 0b0;
28947 let Inst{31-21} = 0b00101001111;
28948 let isPredicated = 1;
28949 let isPredicatedFalse = 1;
28950 let addrMode = PostInc;
28951 let accessSize = HVXVectorAccess;
28952 let isNVStore = 1;
28953 let isCVI = 1;
28954 let CVINew = 1;
28955 let isNewValue = 1;
28956 let isNonTemporal = 1;
28957 let mayStore = 1;
28958 let BaseOpcode = "V6_vS32b_pi";
28959 let DecoderNamespace = "EXT_mmvec";
28960 let opNewValue = 4;
28961 let Constraints = "$Rx32 = $Rx32in";
28962 }
28963 def V6_vS32b_nt_new_npred_ppu : HInst<
28964 (outs IntRegs:$Rx32),
28965 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Os8),
28966 "if (!$Pv4) vmem($Rx32++$Mu2):nt = $Os8.new",
28967 tc_e99d4c2e, TypeCVI_VM_NEW_ST>, Enc_372c9d, Requires<[UseHVXV60]>, NewValueRel {
28968 let Inst{10-3} = 0b00001111;
28969 let Inst{31-21} = 0b00101011111;
28970 let isPredicated = 1;
28971 let isPredicatedFalse = 1;
28972 let addrMode = PostInc;
28973 let accessSize = HVXVectorAccess;
28974 let isNVStore = 1;
28975 let isCVI = 1;
28976 let CVINew = 1;
28977 let isNewValue = 1;
28978 let isNonTemporal = 1;
28979 let mayStore = 1;
28980 let BaseOpcode = "V6_vS32b_ppu";
28981 let DecoderNamespace = "EXT_mmvec";
28982 let opNewValue = 4;
28983 let Constraints = "$Rx32 = $Rx32in";
28984 }
28985 def V6_vS32b_nt_new_pi : HInst<
28986 (outs IntRegs:$Rx32),
28987 (ins IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Os8),
28988 "vmem($Rx32++#$Ii):nt = $Os8.new",
28989 tc_6942b6e0, TypeCVI_VM_NEW_ST>, Enc_1aaec1, Requires<[UseHVXV60]>, NewValueRel {
28990 let Inst{7-3} = 0b00100;
28991 let Inst{13-11} = 0b000;
28992 let Inst{31-21} = 0b00101001011;
28993 let addrMode = PostInc;
28994 let accessSize = HVXVectorAccess;
28995 let isNVStore = 1;
28996 let isCVI = 1;
28997 let CVINew = 1;
28998 let isNewValue = 1;
28999 let isNonTemporal = 1;
29000 let mayStore = 1;
29001 let BaseOpcode = "V6_vS32b_pi";
29002 let isPredicable = 1;
29003 let DecoderNamespace = "EXT_mmvec";
29004 let opNewValue = 3;
29005 let Constraints = "$Rx32 = $Rx32in";
29006 }
29007 def V6_vS32b_nt_new_ppu : HInst<
29008 (outs IntRegs:$Rx32),
29009 (ins IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Os8),
29010 "vmem($Rx32++$Mu2):nt = $Os8.new",
29011 tc_6942b6e0, TypeCVI_VM_NEW_ST>, Enc_cf1927, Requires<[UseHVXV60]>, NewValueRel {
29012 let Inst{12-3} = 0b0000000100;
29013 let Inst{31-21} = 0b00101011011;
29014 let addrMode = PostInc;
29015 let accessSize = HVXVectorAccess;
29016 let isNVStore = 1;
29017 let isCVI = 1;
29018 let CVINew = 1;
29019 let isNewValue = 1;
29020 let isNonTemporal = 1;
29021 let mayStore = 1;
29022 let BaseOpcode = "V6_vS32b_ppu";
29023 let isPredicable = 1;
29024 let DecoderNamespace = "EXT_mmvec";
29025 let opNewValue = 3;
29026 let Constraints = "$Rx32 = $Rx32in";
29027 }
29028 def V6_vS32b_nt_new_pred_ai : HInst<
29029 (outs),
29030 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Os8),
29031 "if ($Pv4) vmem($Rt32+#$Ii):nt = $Os8.new",
29032 tc_7177e272, TypeCVI_VM_NEW_ST>, Enc_f7430e, Requires<[UseHVXV60]>, NewValueRel {
29033 let Inst{7-3} = 0b01010;
29034 let Inst{31-21} = 0b00101000111;
29035 let isPredicated = 1;
29036 let addrMode = BaseImmOffset;
29037 let accessSize = HVXVectorAccess;
29038 let isNVStore = 1;
29039 let isCVI = 1;
29040 let CVINew = 1;
29041 let isNewValue = 1;
29042 let isNonTemporal = 1;
29043 let mayStore = 1;
29044 let BaseOpcode = "V6_vS32b_ai";
29045 let DecoderNamespace = "EXT_mmvec";
29046 let opNewValue = 3;
29047 }
29048 def V6_vS32b_nt_new_pred_pi : HInst<
29049 (outs IntRegs:$Rx32),
29050 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Os8),
29051 "if ($Pv4) vmem($Rx32++#$Ii):nt = $Os8.new",
29052 tc_e99d4c2e, TypeCVI_VM_NEW_ST>, Enc_784502, Requires<[UseHVXV60]>, NewValueRel {
29053 let Inst{7-3} = 0b01010;
29054 let Inst{13-13} = 0b0;
29055 let Inst{31-21} = 0b00101001111;
29056 let isPredicated = 1;
29057 let addrMode = PostInc;
29058 let accessSize = HVXVectorAccess;
29059 let isNVStore = 1;
29060 let isCVI = 1;
29061 let CVINew = 1;
29062 let isNewValue = 1;
29063 let isNonTemporal = 1;
29064 let mayStore = 1;
29065 let BaseOpcode = "V6_vS32b_pi";
29066 let DecoderNamespace = "EXT_mmvec";
29067 let opNewValue = 4;
29068 let Constraints = "$Rx32 = $Rx32in";
29069 }
29070 def V6_vS32b_nt_new_pred_ppu : HInst<
29071 (outs IntRegs:$Rx32),
29072 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Os8),
29073 "if ($Pv4) vmem($Rx32++$Mu2):nt = $Os8.new",
29074 tc_e99d4c2e, TypeCVI_VM_NEW_ST>, Enc_372c9d, Requires<[UseHVXV60]>, NewValueRel {
29075 let Inst{10-3} = 0b00001010;
29076 let Inst{31-21} = 0b00101011111;
29077 let isPredicated = 1;
29078 let addrMode = PostInc;
29079 let accessSize = HVXVectorAccess;
29080 let isNVStore = 1;
29081 let isCVI = 1;
29082 let CVINew = 1;
29083 let isNewValue = 1;
29084 let isNonTemporal = 1;
29085 let mayStore = 1;
29086 let BaseOpcode = "V6_vS32b_ppu";
29087 let DecoderNamespace = "EXT_mmvec";
29088 let opNewValue = 4;
29089 let Constraints = "$Rx32 = $Rx32in";
29090 }
29091 def V6_vS32b_nt_npred_ai : HInst<
29092 (outs),
29093 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
29094 "if (!$Pv4) vmem($Rt32+#$Ii):nt = $Vs32",
29095 tc_a02a10a8, TypeCVI_VM_ST>, Enc_27b757, Requires<[UseHVXV60]>, NewValueRel {
29096 let Inst{7-5} = 0b001;
29097 let Inst{31-21} = 0b00101000111;
29098 let isPredicated = 1;
29099 let isPredicatedFalse = 1;
29100 let addrMode = BaseImmOffset;
29101 let accessSize = HVXVectorAccess;
29102 let isCVI = 1;
29103 let isNonTemporal = 1;
29104 let mayStore = 1;
29105 let BaseOpcode = "V6_vS32b_ai";
29106 let isNVStorable = 1;
29107 let DecoderNamespace = "EXT_mmvec";
29108 }
29109 def V6_vS32b_nt_npred_pi : HInst<
29110 (outs IntRegs:$Rx32),
29111 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
29112 "if (!$Pv4) vmem($Rx32++#$Ii):nt = $Vs32",
29113 tc_54a0dc47, TypeCVI_VM_ST>, Enc_865390, Requires<[UseHVXV60]>, NewValueRel {
29114 let Inst{7-5} = 0b001;
29115 let Inst{13-13} = 0b0;
29116 let Inst{31-21} = 0b00101001111;
29117 let isPredicated = 1;
29118 let isPredicatedFalse = 1;
29119 let addrMode = PostInc;
29120 let accessSize = HVXVectorAccess;
29121 let isCVI = 1;
29122 let isNonTemporal = 1;
29123 let mayStore = 1;
29124 let BaseOpcode = "V6_vS32b_pi";
29125 let isNVStorable = 1;
29126 let DecoderNamespace = "EXT_mmvec";
29127 let Constraints = "$Rx32 = $Rx32in";
29128 }
29129 def V6_vS32b_nt_npred_ppu : HInst<
29130 (outs IntRegs:$Rx32),
29131 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
29132 "if (!$Pv4) vmem($Rx32++$Mu2):nt = $Vs32",
29133 tc_54a0dc47, TypeCVI_VM_ST>, Enc_1ef990, Requires<[UseHVXV60]>, NewValueRel {
29134 let Inst{10-5} = 0b000001;
29135 let Inst{31-21} = 0b00101011111;
29136 let isPredicated = 1;
29137 let isPredicatedFalse = 1;
29138 let addrMode = PostInc;
29139 let accessSize = HVXVectorAccess;
29140 let isCVI = 1;
29141 let isNonTemporal = 1;
29142 let mayStore = 1;
29143 let BaseOpcode = "V6_vS32b_ppu";
29144 let isNVStorable = 1;
29145 let DecoderNamespace = "EXT_mmvec";
29146 let Constraints = "$Rx32 = $Rx32in";
29147 }
29148 def V6_vS32b_nt_nqpred_ai : HInst<
29149 (outs),
29150 (ins HvxQR:$Qv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
29151 "if (!$Qv4) vmem($Rt32+#$Ii):nt = $Vs32",
29152 tc_447d9895, TypeCVI_VM_ST>, Enc_2ea740, Requires<[UseHVXV60]> {
29153 let Inst{7-5} = 0b001;
29154 let Inst{31-21} = 0b00101000110;
29155 let addrMode = BaseImmOffset;
29156 let accessSize = HVXVectorAccess;
29157 let isCVI = 1;
29158 let isNonTemporal = 1;
29159 let mayStore = 1;
29160 let DecoderNamespace = "EXT_mmvec";
29161 }
29162 def V6_vS32b_nt_nqpred_pi : HInst<
29163 (outs IntRegs:$Rx32),
29164 (ins HvxQR:$Qv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
29165 "if (!$Qv4) vmem($Rx32++#$Ii):nt = $Vs32",
29166 tc_191381c1, TypeCVI_VM_ST>, Enc_0b51ce, Requires<[UseHVXV60]> {
29167 let Inst{7-5} = 0b001;
29168 let Inst{13-13} = 0b0;
29169 let Inst{31-21} = 0b00101001110;
29170 let addrMode = PostInc;
29171 let accessSize = HVXVectorAccess;
29172 let isCVI = 1;
29173 let isNonTemporal = 1;
29174 let mayStore = 1;
29175 let DecoderNamespace = "EXT_mmvec";
29176 let Constraints = "$Rx32 = $Rx32in";
29177 }
29178 def V6_vS32b_nt_nqpred_ppu : HInst<
29179 (outs IntRegs:$Rx32),
29180 (ins HvxQR:$Qv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
29181 "if (!$Qv4) vmem($Rx32++$Mu2):nt = $Vs32",
29182 tc_191381c1, TypeCVI_VM_ST>, Enc_4dff07, Requires<[UseHVXV60]> {
29183 let Inst{10-5} = 0b000001;
29184 let Inst{31-21} = 0b00101011110;
29185 let addrMode = PostInc;
29186 let accessSize = HVXVectorAccess;
29187 let isCVI = 1;
29188 let isNonTemporal = 1;
29189 let mayStore = 1;
29190 let DecoderNamespace = "EXT_mmvec";
29191 let Constraints = "$Rx32 = $Rx32in";
29192 }
29193 def V6_vS32b_nt_pi : HInst<
29194 (outs IntRegs:$Rx32),
29195 (ins IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
29196 "vmem($Rx32++#$Ii):nt = $Vs32",
29197 tc_3e2aaafc, TypeCVI_VM_ST>, Enc_b62ef7, Requires<[UseHVXV60]>, NewValueRel {
29198 let Inst{7-5} = 0b000;
29199 let Inst{13-11} = 0b000;
29200 let Inst{31-21} = 0b00101001011;
29201 let addrMode = PostInc;
29202 let accessSize = HVXVectorAccess;
29203 let isCVI = 1;
29204 let isNonTemporal = 1;
29205 let mayStore = 1;
29206 let BaseOpcode = "V6_vS32b_pi";
29207 let isNVStorable = 1;
29208 let isPredicable = 1;
29209 let DecoderNamespace = "EXT_mmvec";
29210 let Constraints = "$Rx32 = $Rx32in";
29211 }
29212 def V6_vS32b_nt_ppu : HInst<
29213 (outs IntRegs:$Rx32),
29214 (ins IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
29215 "vmem($Rx32++$Mu2):nt = $Vs32",
29216 tc_3e2aaafc, TypeCVI_VM_ST>, Enc_d15d19, Requires<[UseHVXV60]>, NewValueRel {
29217 let Inst{12-5} = 0b00000000;
29218 let Inst{31-21} = 0b00101011011;
29219 let addrMode = PostInc;
29220 let accessSize = HVXVectorAccess;
29221 let isCVI = 1;
29222 let isNonTemporal = 1;
29223 let mayStore = 1;
29224 let BaseOpcode = "V6_vS32b_ppu";
29225 let isNVStorable = 1;
29226 let isPredicable = 1;
29227 let DecoderNamespace = "EXT_mmvec";
29228 let Constraints = "$Rx32 = $Rx32in";
29229 }
29230 def V6_vS32b_nt_pred_ai : HInst<
29231 (outs),
29232 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
29233 "if ($Pv4) vmem($Rt32+#$Ii):nt = $Vs32",
29234 tc_a02a10a8, TypeCVI_VM_ST>, Enc_27b757, Requires<[UseHVXV60]>, NewValueRel {
29235 let Inst{7-5} = 0b000;
29236 let Inst{31-21} = 0b00101000111;
29237 let isPredicated = 1;
29238 let addrMode = BaseImmOffset;
29239 let accessSize = HVXVectorAccess;
29240 let isCVI = 1;
29241 let isNonTemporal = 1;
29242 let mayStore = 1;
29243 let BaseOpcode = "V6_vS32b_ai";
29244 let isNVStorable = 1;
29245 let DecoderNamespace = "EXT_mmvec";
29246 }
29247 def V6_vS32b_nt_pred_pi : HInst<
29248 (outs IntRegs:$Rx32),
29249 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
29250 "if ($Pv4) vmem($Rx32++#$Ii):nt = $Vs32",
29251 tc_54a0dc47, TypeCVI_VM_ST>, Enc_865390, Requires<[UseHVXV60]>, NewValueRel {
29252 let Inst{7-5} = 0b000;
29253 let Inst{13-13} = 0b0;
29254 let Inst{31-21} = 0b00101001111;
29255 let isPredicated = 1;
29256 let addrMode = PostInc;
29257 let accessSize = HVXVectorAccess;
29258 let isCVI = 1;
29259 let isNonTemporal = 1;
29260 let mayStore = 1;
29261 let BaseOpcode = "V6_vS32b_pi";
29262 let isNVStorable = 1;
29263 let DecoderNamespace = "EXT_mmvec";
29264 let Constraints = "$Rx32 = $Rx32in";
29265 }
29266 def V6_vS32b_nt_pred_ppu : HInst<
29267 (outs IntRegs:$Rx32),
29268 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
29269 "if ($Pv4) vmem($Rx32++$Mu2):nt = $Vs32",
29270 tc_54a0dc47, TypeCVI_VM_ST>, Enc_1ef990, Requires<[UseHVXV60]>, NewValueRel {
29271 let Inst{10-5} = 0b000000;
29272 let Inst{31-21} = 0b00101011111;
29273 let isPredicated = 1;
29274 let addrMode = PostInc;
29275 let accessSize = HVXVectorAccess;
29276 let isCVI = 1;
29277 let isNonTemporal = 1;
29278 let mayStore = 1;
29279 let BaseOpcode = "V6_vS32b_ppu";
29280 let isNVStorable = 1;
29281 let DecoderNamespace = "EXT_mmvec";
29282 let Constraints = "$Rx32 = $Rx32in";
29283 }
29284 def V6_vS32b_nt_qpred_ai : HInst<
29285 (outs),
29286 (ins HvxQR:$Qv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
29287 "if ($Qv4) vmem($Rt32+#$Ii):nt = $Vs32",
29288 tc_447d9895, TypeCVI_VM_ST>, Enc_2ea740, Requires<[UseHVXV60]> {
29289 let Inst{7-5} = 0b000;
29290 let Inst{31-21} = 0b00101000110;
29291 let addrMode = BaseImmOffset;
29292 let accessSize = HVXVectorAccess;
29293 let isCVI = 1;
29294 let isNonTemporal = 1;
29295 let mayStore = 1;
29296 let DecoderNamespace = "EXT_mmvec";
29297 }
29298 def V6_vS32b_nt_qpred_pi : HInst<
29299 (outs IntRegs:$Rx32),
29300 (ins HvxQR:$Qv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
29301 "if ($Qv4) vmem($Rx32++#$Ii):nt = $Vs32",
29302 tc_191381c1, TypeCVI_VM_ST>, Enc_0b51ce, Requires<[UseHVXV60]> {
29303 let Inst{7-5} = 0b000;
29304 let Inst{13-13} = 0b0;
29305 let Inst{31-21} = 0b00101001110;
29306 let addrMode = PostInc;
29307 let accessSize = HVXVectorAccess;
29308 let isCVI = 1;
29309 let isNonTemporal = 1;
29310 let mayStore = 1;
29311 let DecoderNamespace = "EXT_mmvec";
29312 let Constraints = "$Rx32 = $Rx32in";
29313 }
29314 def V6_vS32b_nt_qpred_ppu : HInst<
29315 (outs IntRegs:$Rx32),
29316 (ins HvxQR:$Qv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
29317 "if ($Qv4) vmem($Rx32++$Mu2):nt = $Vs32",
29318 tc_191381c1, TypeCVI_VM_ST>, Enc_4dff07, Requires<[UseHVXV60]> {
29319 let Inst{10-5} = 0b000000;
29320 let Inst{31-21} = 0b00101011110;
29321 let addrMode = PostInc;
29322 let accessSize = HVXVectorAccess;
29323 let isCVI = 1;
29324 let isNonTemporal = 1;
29325 let mayStore = 1;
29326 let DecoderNamespace = "EXT_mmvec";
29327 let Constraints = "$Rx32 = $Rx32in";
29328 }
29329 def V6_vS32b_pi : HInst<
29330 (outs IntRegs:$Rx32),
29331 (ins IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
29332 "vmem($Rx32++#$Ii) = $Vs32",
29333 tc_3e2aaafc, TypeCVI_VM_ST>, Enc_b62ef7, Requires<[UseHVXV60]>, NewValueRel {
29334 let Inst{7-5} = 0b000;
29335 let Inst{13-11} = 0b000;
29336 let Inst{31-21} = 0b00101001001;
29337 let addrMode = PostInc;
29338 let accessSize = HVXVectorAccess;
29339 let isCVI = 1;
29340 let mayStore = 1;
29341 let BaseOpcode = "V6_vS32b_pi";
29342 let isNVStorable = 1;
29343 let isPredicable = 1;
29344 let DecoderNamespace = "EXT_mmvec";
29345 let Constraints = "$Rx32 = $Rx32in";
29346 }
29347 def V6_vS32b_ppu : HInst<
29348 (outs IntRegs:$Rx32),
29349 (ins IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
29350 "vmem($Rx32++$Mu2) = $Vs32",
29351 tc_3e2aaafc, TypeCVI_VM_ST>, Enc_d15d19, Requires<[UseHVXV60]>, NewValueRel {
29352 let Inst{12-5} = 0b00000000;
29353 let Inst{31-21} = 0b00101011001;
29354 let addrMode = PostInc;
29355 let accessSize = HVXVectorAccess;
29356 let isCVI = 1;
29357 let mayStore = 1;
29358 let BaseOpcode = "V6_vS32b_ppu";
29359 let isNVStorable = 1;
29360 let isPredicable = 1;
29361 let DecoderNamespace = "EXT_mmvec";
29362 let Constraints = "$Rx32 = $Rx32in";
29363 }
29364 def V6_vS32b_pred_ai : HInst<
29365 (outs),
29366 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
29367 "if ($Pv4) vmem($Rt32+#$Ii) = $Vs32",
29368 tc_a02a10a8, TypeCVI_VM_ST>, Enc_27b757, Requires<[UseHVXV60]>, NewValueRel {
29369 let Inst{7-5} = 0b000;
29370 let Inst{31-21} = 0b00101000101;
29371 let isPredicated = 1;
29372 let addrMode = BaseImmOffset;
29373 let accessSize = HVXVectorAccess;
29374 let isCVI = 1;
29375 let mayStore = 1;
29376 let BaseOpcode = "V6_vS32b_ai";
29377 let isNVStorable = 1;
29378 let DecoderNamespace = "EXT_mmvec";
29379 }
29380 def V6_vS32b_pred_pi : HInst<
29381 (outs IntRegs:$Rx32),
29382 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
29383 "if ($Pv4) vmem($Rx32++#$Ii) = $Vs32",
29384 tc_54a0dc47, TypeCVI_VM_ST>, Enc_865390, Requires<[UseHVXV60]>, NewValueRel {
29385 let Inst{7-5} = 0b000;
29386 let Inst{13-13} = 0b0;
29387 let Inst{31-21} = 0b00101001101;
29388 let isPredicated = 1;
29389 let addrMode = PostInc;
29390 let accessSize = HVXVectorAccess;
29391 let isCVI = 1;
29392 let mayStore = 1;
29393 let BaseOpcode = "V6_vS32b_pi";
29394 let isNVStorable = 1;
29395 let DecoderNamespace = "EXT_mmvec";
29396 let Constraints = "$Rx32 = $Rx32in";
29397 }
29398 def V6_vS32b_pred_ppu : HInst<
29399 (outs IntRegs:$Rx32),
29400 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
29401 "if ($Pv4) vmem($Rx32++$Mu2) = $Vs32",
29402 tc_54a0dc47, TypeCVI_VM_ST>, Enc_1ef990, Requires<[UseHVXV60]>, NewValueRel {
29403 let Inst{10-5} = 0b000000;
29404 let Inst{31-21} = 0b00101011101;
29405 let isPredicated = 1;
29406 let addrMode = PostInc;
29407 let accessSize = HVXVectorAccess;
29408 let isCVI = 1;
29409 let mayStore = 1;
29410 let BaseOpcode = "V6_vS32b_ppu";
29411 let isNVStorable = 1;
29412 let DecoderNamespace = "EXT_mmvec";
29413 let Constraints = "$Rx32 = $Rx32in";
29414 }
29415 def V6_vS32b_qpred_ai : HInst<
29416 (outs),
29417 (ins HvxQR:$Qv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
29418 "if ($Qv4) vmem($Rt32+#$Ii) = $Vs32",
29419 tc_447d9895, TypeCVI_VM_ST>, Enc_2ea740, Requires<[UseHVXV60]> {
29420 let Inst{7-5} = 0b000;
29421 let Inst{31-21} = 0b00101000100;
29422 let addrMode = BaseImmOffset;
29423 let accessSize = HVXVectorAccess;
29424 let isCVI = 1;
29425 let mayStore = 1;
29426 let DecoderNamespace = "EXT_mmvec";
29427 }
29428 def V6_vS32b_qpred_pi : HInst<
29429 (outs IntRegs:$Rx32),
29430 (ins HvxQR:$Qv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
29431 "if ($Qv4) vmem($Rx32++#$Ii) = $Vs32",
29432 tc_191381c1, TypeCVI_VM_ST>, Enc_0b51ce, Requires<[UseHVXV60]> {
29433 let Inst{7-5} = 0b000;
29434 let Inst{13-13} = 0b0;
29435 let Inst{31-21} = 0b00101001100;
29436 let addrMode = PostInc;
29437 let accessSize = HVXVectorAccess;
29438 let isCVI = 1;
29439 let mayStore = 1;
29440 let DecoderNamespace = "EXT_mmvec";
29441 let Constraints = "$Rx32 = $Rx32in";
29442 }
29443 def V6_vS32b_qpred_ppu : HInst<
29444 (outs IntRegs:$Rx32),
29445 (ins HvxQR:$Qv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
29446 "if ($Qv4) vmem($Rx32++$Mu2) = $Vs32",
29447 tc_191381c1, TypeCVI_VM_ST>, Enc_4dff07, Requires<[UseHVXV60]> {
29448 let Inst{10-5} = 0b000000;
29449 let Inst{31-21} = 0b00101011100;
29450 let addrMode = PostInc;
29451 let accessSize = HVXVectorAccess;
29452 let isCVI = 1;
29453 let mayStore = 1;
29454 let DecoderNamespace = "EXT_mmvec";
29455 let Constraints = "$Rx32 = $Rx32in";
29456 }
29457 def V6_vS32b_srls_ai : HInst<
29458 (outs),
29459 (ins IntRegs:$Rt32, s4_0Imm:$Ii),
29460 "vmem($Rt32+#$Ii):scatter_release",
29461 tc_3ce09744, TypeCVI_SCATTER_NEW_RST>, Enc_ff3442, Requires<[UseHVXV65]> {
29462 let Inst{7-0} = 0b00101000;
29463 let Inst{12-11} = 0b00;
29464 let Inst{31-21} = 0b00101000001;
29465 let addrMode = BaseImmOffset;
29466 let accessSize = HVXVectorAccess;
29467 let isCVI = 1;
29468 let CVINew = 1;
29469 let mayStore = 1;
29470 let DecoderNamespace = "EXT_mmvec";
29471 }
29472 def V6_vS32b_srls_pi : HInst<
29473 (outs IntRegs:$Rx32),
29474 (ins IntRegs:$Rx32in, s3_0Imm:$Ii),
29475 "vmem($Rx32++#$Ii):scatter_release",
29476 tc_20a4bbec, TypeCVI_SCATTER_NEW_RST>, Enc_6c9ee0, Requires<[UseHVXV65]> {
29477 let Inst{7-0} = 0b00101000;
29478 let Inst{13-11} = 0b000;
29479 let Inst{31-21} = 0b00101001001;
29480 let addrMode = PostInc;
29481 let accessSize = HVXVectorAccess;
29482 let isCVI = 1;
29483 let CVINew = 1;
29484 let mayStore = 1;
29485 let DecoderNamespace = "EXT_mmvec";
29486 let Constraints = "$Rx32 = $Rx32in";
29487 }
29488 def V6_vS32b_srls_ppu : HInst<
29489 (outs IntRegs:$Rx32),
29490 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
29491 "vmem($Rx32++$Mu2):scatter_release",
29492 tc_20a4bbec, TypeCVI_SCATTER_NEW_RST>, Enc_44661f, Requires<[UseHVXV65]> {
29493 let Inst{12-0} = 0b0000000101000;
29494 let Inst{31-21} = 0b00101011001;
29495 let addrMode = PostInc;
29496 let accessSize = HVXVectorAccess;
29497 let isCVI = 1;
29498 let CVINew = 1;
29499 let mayStore = 1;
29500 let DecoderNamespace = "EXT_mmvec";
29501 let Constraints = "$Rx32 = $Rx32in";
29502 }
29503 def V6_vabsb : HInst<
29504 (outs HvxVR:$Vd32),
29505 (ins HvxVR:$Vu32),
29506 "$Vd32.b = vabs($Vu32.b)",
29507 tc_0ec46cf9, TypeCVI_VA>, Enc_e7581c, Requires<[UseHVXV65]> {
29508 let Inst{7-5} = 0b100;
29509 let Inst{13-13} = 0b0;
29510 let Inst{31-16} = 0b0001111000000001;
29511 let hasNewValue = 1;
29512 let opNewValue = 0;
29513 let isCVI = 1;
29514 let DecoderNamespace = "EXT_mmvec";
29515 }
29516 def V6_vabsb_alt : HInst<
29517 (outs HvxVR:$Vd32),
29518 (ins HvxVR:$Vu32),
29519 "$Vd32 = vabsb($Vu32)",
29520 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
29521 let hasNewValue = 1;
29522 let opNewValue = 0;
29523 let isCVI = 1;
29524 let isPseudo = 1;
29525 let isCodeGenOnly = 1;
29526 let DecoderNamespace = "EXT_mmvec";
29527 }
29528 def V6_vabsb_sat : HInst<
29529 (outs HvxVR:$Vd32),
29530 (ins HvxVR:$Vu32),
29531 "$Vd32.b = vabs($Vu32.b):sat",
29532 tc_0ec46cf9, TypeCVI_VA>, Enc_e7581c, Requires<[UseHVXV65]> {
29533 let Inst{7-5} = 0b101;
29534 let Inst{13-13} = 0b0;
29535 let Inst{31-16} = 0b0001111000000001;
29536 let hasNewValue = 1;
29537 let opNewValue = 0;
29538 let isCVI = 1;
29539 let DecoderNamespace = "EXT_mmvec";
29540 }
29541 def V6_vabsb_sat_alt : HInst<
29542 (outs HvxVR:$Vd32),
29543 (ins HvxVR:$Vu32),
29544 "$Vd32 = vabsb($Vu32):sat",
29545 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
29546 let hasNewValue = 1;
29547 let opNewValue = 0;
29548 let isCVI = 1;
29549 let isPseudo = 1;
29550 let isCodeGenOnly = 1;
29551 let DecoderNamespace = "EXT_mmvec";
29552 }
29553 def V6_vabsdiffh : HInst<
29554 (outs HvxVR:$Vd32),
29555 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29556 "$Vd32.uh = vabsdiff($Vu32.h,$Vv32.h)",
29557 tc_c127de3a, TypeCVI_VX>, Enc_45364e, Requires<[UseHVXV60]> {
29558 let Inst{7-5} = 0b001;
29559 let Inst{13-13} = 0b0;
29560 let Inst{31-21} = 0b00011100110;
29561 let hasNewValue = 1;
29562 let opNewValue = 0;
29563 let isCVI = 1;
29564 let DecoderNamespace = "EXT_mmvec";
29565 }
29566 def V6_vabsdiffh_alt : HInst<
29567 (outs HvxVR:$Vd32),
29568 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29569 "$Vd32 = vabsdiffh($Vu32,$Vv32)",
29570 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29571 let hasNewValue = 1;
29572 let opNewValue = 0;
29573 let isCVI = 1;
29574 let isPseudo = 1;
29575 let isCodeGenOnly = 1;
29576 let DecoderNamespace = "EXT_mmvec";
29577 }
29578 def V6_vabsdiffub : HInst<
29579 (outs HvxVR:$Vd32),
29580 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29581 "$Vd32.ub = vabsdiff($Vu32.ub,$Vv32.ub)",
29582 tc_c127de3a, TypeCVI_VX>, Enc_45364e, Requires<[UseHVXV60]> {
29583 let Inst{7-5} = 0b000;
29584 let Inst{13-13} = 0b0;
29585 let Inst{31-21} = 0b00011100110;
29586 let hasNewValue = 1;
29587 let opNewValue = 0;
29588 let isCVI = 1;
29589 let DecoderNamespace = "EXT_mmvec";
29590 }
29591 def V6_vabsdiffub_alt : HInst<
29592 (outs HvxVR:$Vd32),
29593 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29594 "$Vd32 = vabsdiffub($Vu32,$Vv32)",
29595 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29596 let hasNewValue = 1;
29597 let opNewValue = 0;
29598 let isCVI = 1;
29599 let isPseudo = 1;
29600 let isCodeGenOnly = 1;
29601 let DecoderNamespace = "EXT_mmvec";
29602 }
29603 def V6_vabsdiffuh : HInst<
29604 (outs HvxVR:$Vd32),
29605 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29606 "$Vd32.uh = vabsdiff($Vu32.uh,$Vv32.uh)",
29607 tc_c127de3a, TypeCVI_VX>, Enc_45364e, Requires<[UseHVXV60]> {
29608 let Inst{7-5} = 0b010;
29609 let Inst{13-13} = 0b0;
29610 let Inst{31-21} = 0b00011100110;
29611 let hasNewValue = 1;
29612 let opNewValue = 0;
29613 let isCVI = 1;
29614 let DecoderNamespace = "EXT_mmvec";
29615 }
29616 def V6_vabsdiffuh_alt : HInst<
29617 (outs HvxVR:$Vd32),
29618 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29619 "$Vd32 = vabsdiffuh($Vu32,$Vv32)",
29620 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29621 let hasNewValue = 1;
29622 let opNewValue = 0;
29623 let isCVI = 1;
29624 let isPseudo = 1;
29625 let isCodeGenOnly = 1;
29626 let DecoderNamespace = "EXT_mmvec";
29627 }
29628 def V6_vabsdiffw : HInst<
29629 (outs HvxVR:$Vd32),
29630 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29631 "$Vd32.uw = vabsdiff($Vu32.w,$Vv32.w)",
29632 tc_c127de3a, TypeCVI_VX>, Enc_45364e, Requires<[UseHVXV60]> {
29633 let Inst{7-5} = 0b011;
29634 let Inst{13-13} = 0b0;
29635 let Inst{31-21} = 0b00011100110;
29636 let hasNewValue = 1;
29637 let opNewValue = 0;
29638 let isCVI = 1;
29639 let DecoderNamespace = "EXT_mmvec";
29640 }
29641 def V6_vabsdiffw_alt : HInst<
29642 (outs HvxVR:$Vd32),
29643 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29644 "$Vd32 = vabsdiffw($Vu32,$Vv32)",
29645 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29646 let hasNewValue = 1;
29647 let opNewValue = 0;
29648 let isCVI = 1;
29649 let isPseudo = 1;
29650 let isCodeGenOnly = 1;
29651 let DecoderNamespace = "EXT_mmvec";
29652 }
29653 def V6_vabsh : HInst<
29654 (outs HvxVR:$Vd32),
29655 (ins HvxVR:$Vu32),
29656 "$Vd32.h = vabs($Vu32.h)",
29657 tc_0ec46cf9, TypeCVI_VA>, Enc_e7581c, Requires<[UseHVXV60]> {
29658 let Inst{7-5} = 0b000;
29659 let Inst{13-13} = 0b0;
29660 let Inst{31-16} = 0b0001111000000000;
29661 let hasNewValue = 1;
29662 let opNewValue = 0;
29663 let isCVI = 1;
29664 let DecoderNamespace = "EXT_mmvec";
29665 }
29666 def V6_vabsh_alt : HInst<
29667 (outs HvxVR:$Vd32),
29668 (ins HvxVR:$Vu32),
29669 "$Vd32 = vabsh($Vu32)",
29670 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29671 let hasNewValue = 1;
29672 let opNewValue = 0;
29673 let isCVI = 1;
29674 let isPseudo = 1;
29675 let isCodeGenOnly = 1;
29676 let DecoderNamespace = "EXT_mmvec";
29677 }
29678 def V6_vabsh_sat : HInst<
29679 (outs HvxVR:$Vd32),
29680 (ins HvxVR:$Vu32),
29681 "$Vd32.h = vabs($Vu32.h):sat",
29682 tc_0ec46cf9, TypeCVI_VA>, Enc_e7581c, Requires<[UseHVXV60]> {
29683 let Inst{7-5} = 0b001;
29684 let Inst{13-13} = 0b0;
29685 let Inst{31-16} = 0b0001111000000000;
29686 let hasNewValue = 1;
29687 let opNewValue = 0;
29688 let isCVI = 1;
29689 let DecoderNamespace = "EXT_mmvec";
29690 }
29691 def V6_vabsh_sat_alt : HInst<
29692 (outs HvxVR:$Vd32),
29693 (ins HvxVR:$Vu32),
29694 "$Vd32 = vabsh($Vu32):sat",
29695 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29696 let hasNewValue = 1;
29697 let opNewValue = 0;
29698 let isCVI = 1;
29699 let isPseudo = 1;
29700 let isCodeGenOnly = 1;
29701 let DecoderNamespace = "EXT_mmvec";
29702 }
29703 def V6_vabsub_alt : HInst<
29704 (outs HvxVR:$Vd32),
29705 (ins HvxVR:$Vu32),
29706 "$Vd32.ub = vabs($Vu32.b)",
29707 tc_0ec46cf9, TypeMAPPING>, Requires<[UseHVXV65]> {
29708 let hasNewValue = 1;
29709 let opNewValue = 0;
29710 let isCVI = 1;
29711 let isPseudo = 1;
29712 let isCodeGenOnly = 1;
29713 let DecoderNamespace = "EXT_mmvec";
29714 }
29715 def V6_vabsuh_alt : HInst<
29716 (outs HvxVR:$Vd32),
29717 (ins HvxVR:$Vu32),
29718 "$Vd32.uh = vabs($Vu32.h)",
29719 tc_0ec46cf9, TypeMAPPING>, Requires<[UseHVXV65]> {
29720 let hasNewValue = 1;
29721 let opNewValue = 0;
29722 let isCVI = 1;
29723 let isPseudo = 1;
29724 let isCodeGenOnly = 1;
29725 let DecoderNamespace = "EXT_mmvec";
29726 }
29727 def V6_vabsuw_alt : HInst<
29728 (outs HvxVR:$Vd32),
29729 (ins HvxVR:$Vu32),
29730 "$Vd32.uw = vabs($Vu32.w)",
29731 tc_0ec46cf9, TypeMAPPING>, Requires<[UseHVXV65]> {
29732 let hasNewValue = 1;
29733 let opNewValue = 0;
29734 let isCVI = 1;
29735 let isPseudo = 1;
29736 let isCodeGenOnly = 1;
29737 let DecoderNamespace = "EXT_mmvec";
29738 }
29739 def V6_vabsw : HInst<
29740 (outs HvxVR:$Vd32),
29741 (ins HvxVR:$Vu32),
29742 "$Vd32.w = vabs($Vu32.w)",
29743 tc_0ec46cf9, TypeCVI_VA>, Enc_e7581c, Requires<[UseHVXV60]> {
29744 let Inst{7-5} = 0b010;
29745 let Inst{13-13} = 0b0;
29746 let Inst{31-16} = 0b0001111000000000;
29747 let hasNewValue = 1;
29748 let opNewValue = 0;
29749 let isCVI = 1;
29750 let DecoderNamespace = "EXT_mmvec";
29751 }
29752 def V6_vabsw_alt : HInst<
29753 (outs HvxVR:$Vd32),
29754 (ins HvxVR:$Vu32),
29755 "$Vd32 = vabsw($Vu32)",
29756 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29757 let hasNewValue = 1;
29758 let opNewValue = 0;
29759 let isCVI = 1;
29760 let isPseudo = 1;
29761 let isCodeGenOnly = 1;
29762 let DecoderNamespace = "EXT_mmvec";
29763 }
29764 def V6_vabsw_sat : HInst<
29765 (outs HvxVR:$Vd32),
29766 (ins HvxVR:$Vu32),
29767 "$Vd32.w = vabs($Vu32.w):sat",
29768 tc_0ec46cf9, TypeCVI_VA>, Enc_e7581c, Requires<[UseHVXV60]> {
29769 let Inst{7-5} = 0b011;
29770 let Inst{13-13} = 0b0;
29771 let Inst{31-16} = 0b0001111000000000;
29772 let hasNewValue = 1;
29773 let opNewValue = 0;
29774 let isCVI = 1;
29775 let DecoderNamespace = "EXT_mmvec";
29776 }
29777 def V6_vabsw_sat_alt : HInst<
29778 (outs HvxVR:$Vd32),
29779 (ins HvxVR:$Vu32),
29780 "$Vd32 = vabsw($Vu32):sat",
29781 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29782 let hasNewValue = 1;
29783 let opNewValue = 0;
29784 let isCVI = 1;
29785 let isPseudo = 1;
29786 let isCodeGenOnly = 1;
29787 let DecoderNamespace = "EXT_mmvec";
29788 }
29789 def V6_vaddb : HInst<
29790 (outs HvxVR:$Vd32),
29791 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29792 "$Vd32.b = vadd($Vu32.b,$Vv32.b)",
29793 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
29794 let Inst{7-5} = 0b110;
29795 let Inst{13-13} = 0b0;
29796 let Inst{31-21} = 0b00011111101;
29797 let hasNewValue = 1;
29798 let opNewValue = 0;
29799 let isCVI = 1;
29800 let DecoderNamespace = "EXT_mmvec";
29801 }
29802 def V6_vaddb_alt : HInst<
29803 (outs HvxVR:$Vd32),
29804 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29805 "$Vd32 = vaddb($Vu32,$Vv32)",
29806 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29807 let hasNewValue = 1;
29808 let opNewValue = 0;
29809 let isCVI = 1;
29810 let isPseudo = 1;
29811 let isCodeGenOnly = 1;
29812 let DecoderNamespace = "EXT_mmvec";
29813 }
29814 def V6_vaddb_dv : HInst<
29815 (outs HvxWR:$Vdd32),
29816 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29817 "$Vdd32.b = vadd($Vuu32.b,$Vvv32.b)",
29818 tc_db5555f3, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
29819 let Inst{7-5} = 0b100;
29820 let Inst{13-13} = 0b0;
29821 let Inst{31-21} = 0b00011100011;
29822 let hasNewValue = 1;
29823 let opNewValue = 0;
29824 let isCVI = 1;
29825 let DecoderNamespace = "EXT_mmvec";
29826 }
29827 def V6_vaddb_dv_alt : HInst<
29828 (outs HvxWR:$Vdd32),
29829 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29830 "$Vdd32 = vaddb($Vuu32,$Vvv32)",
29831 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29832 let hasNewValue = 1;
29833 let opNewValue = 0;
29834 let isCVI = 1;
29835 let isPseudo = 1;
29836 let isCodeGenOnly = 1;
29837 let DecoderNamespace = "EXT_mmvec";
29838 }
29839 def V6_vaddbnq : HInst<
29840 (outs HvxVR:$Vx32),
29841 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
29842 "if (!$Qv4) $Vx32.b += $Vu32.b",
29843 tc_257f6f7c, TypeCVI_VA>, Enc_a90628, Requires<[UseHVXV60]> {
29844 let Inst{7-5} = 0b011;
29845 let Inst{13-13} = 0b1;
29846 let Inst{21-16} = 0b000001;
29847 let Inst{31-24} = 0b00011110;
29848 let hasNewValue = 1;
29849 let opNewValue = 0;
29850 let isAccumulator = 1;
29851 let isCVI = 1;
29852 let DecoderNamespace = "EXT_mmvec";
29853 let Constraints = "$Vx32 = $Vx32in";
29854 }
29855 def V6_vaddbnq_alt : HInst<
29856 (outs HvxVR:$Vx32),
29857 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
29858 "if (!$Qv4.b) $Vx32.b += $Vu32.b",
29859 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29860 let hasNewValue = 1;
29861 let opNewValue = 0;
29862 let isAccumulator = 1;
29863 let isCVI = 1;
29864 let isPseudo = 1;
29865 let isCodeGenOnly = 1;
29866 let DecoderNamespace = "EXT_mmvec";
29867 let Constraints = "$Vx32 = $Vx32in";
29868 }
29869 def V6_vaddbq : HInst<
29870 (outs HvxVR:$Vx32),
29871 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
29872 "if ($Qv4) $Vx32.b += $Vu32.b",
29873 tc_257f6f7c, TypeCVI_VA>, Enc_a90628, Requires<[UseHVXV60]> {
29874 let Inst{7-5} = 0b000;
29875 let Inst{13-13} = 0b1;
29876 let Inst{21-16} = 0b000001;
29877 let Inst{31-24} = 0b00011110;
29878 let hasNewValue = 1;
29879 let opNewValue = 0;
29880 let isAccumulator = 1;
29881 let isCVI = 1;
29882 let DecoderNamespace = "EXT_mmvec";
29883 let Constraints = "$Vx32 = $Vx32in";
29884 }
29885 def V6_vaddbq_alt : HInst<
29886 (outs HvxVR:$Vx32),
29887 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
29888 "if ($Qv4.b) $Vx32.b += $Vu32.b",
29889 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29890 let hasNewValue = 1;
29891 let opNewValue = 0;
29892 let isAccumulator = 1;
29893 let isCVI = 1;
29894 let isPseudo = 1;
29895 let isCodeGenOnly = 1;
29896 let DecoderNamespace = "EXT_mmvec";
29897 let Constraints = "$Vx32 = $Vx32in";
29898 }
29899 def V6_vaddbsat : HInst<
29900 (outs HvxVR:$Vd32),
29901 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29902 "$Vd32.b = vadd($Vu32.b,$Vv32.b):sat",
29903 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV62]> {
29904 let Inst{7-5} = 0b000;
29905 let Inst{13-13} = 0b0;
29906 let Inst{31-21} = 0b00011111000;
29907 let hasNewValue = 1;
29908 let opNewValue = 0;
29909 let isCVI = 1;
29910 let DecoderNamespace = "EXT_mmvec";
29911 }
29912 def V6_vaddbsat_alt : HInst<
29913 (outs HvxVR:$Vd32),
29914 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29915 "$Vd32 = vaddb($Vu32,$Vv32):sat",
29916 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
29917 let hasNewValue = 1;
29918 let opNewValue = 0;
29919 let isCVI = 1;
29920 let isPseudo = 1;
29921 let isCodeGenOnly = 1;
29922 let DecoderNamespace = "EXT_mmvec";
29923 }
29924 def V6_vaddbsat_dv : HInst<
29925 (outs HvxWR:$Vdd32),
29926 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29927 "$Vdd32.b = vadd($Vuu32.b,$Vvv32.b):sat",
29928 tc_db5555f3, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV62]> {
29929 let Inst{7-5} = 0b000;
29930 let Inst{13-13} = 0b0;
29931 let Inst{31-21} = 0b00011110101;
29932 let hasNewValue = 1;
29933 let opNewValue = 0;
29934 let isCVI = 1;
29935 let DecoderNamespace = "EXT_mmvec";
29936 }
29937 def V6_vaddbsat_dv_alt : HInst<
29938 (outs HvxWR:$Vdd32),
29939 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29940 "$Vdd32 = vaddb($Vuu32,$Vvv32):sat",
29941 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
29942 let hasNewValue = 1;
29943 let opNewValue = 0;
29944 let isCVI = 1;
29945 let isPseudo = 1;
29946 let isCodeGenOnly = 1;
29947 let DecoderNamespace = "EXT_mmvec";
29948 }
29949 def V6_vaddcarry : HInst<
29950 (outs HvxVR:$Vd32, HvxQR:$Qx4),
29951 (ins HvxVR:$Vu32, HvxVR:$Vv32, HvxQR:$Qx4in),
29952 "$Vd32.w = vadd($Vu32.w,$Vv32.w,$Qx4):carry",
29953 tc_7e6a3e89, TypeCVI_VA>, Enc_b43b67, Requires<[UseHVXV62]> {
29954 let Inst{7-7} = 0b0;
29955 let Inst{13-13} = 0b1;
29956 let Inst{31-21} = 0b00011100101;
29957 let hasNewValue = 1;
29958 let opNewValue = 0;
29959 let isCVI = 1;
29960 let DecoderNamespace = "EXT_mmvec";
29961 let Constraints = "$Qx4 = $Qx4in";
29962 }
29963 def V6_vaddcarryo : HInst<
29964 (outs HvxVR:$Vd32, HvxQR:$Qe4),
29965 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29966 "$Vd32.w,$Qe4 = vadd($Vu32.w,$Vv32.w):carry",
29967 tc_e35c1e93, TypeCVI_VA>, Enc_c1d806, Requires<[UseHVXV66]> {
29968 let Inst{7-7} = 0b0;
29969 let Inst{13-13} = 0b1;
29970 let Inst{31-21} = 0b00011101101;
29971 let hasNewValue = 1;
29972 let opNewValue = 0;
29973 let hasNewValue2 = 1;
29974 let opNewValue2 = 1;
29975 let isCVI = 1;
29976 let DecoderNamespace = "EXT_mmvec";
29977 }
29978 def V6_vaddcarrysat : HInst<
29979 (outs HvxVR:$Vd32),
29980 (ins HvxVR:$Vu32, HvxVR:$Vv32, HvxQR:$Qs4),
29981 "$Vd32.w = vadd($Vu32.w,$Vv32.w,$Qs4):carry:sat",
29982 tc_257f6f7c, TypeCVI_VA>, Enc_e0820b, Requires<[UseHVXV66]> {
29983 let Inst{7-7} = 0b0;
29984 let Inst{13-13} = 0b1;
29985 let Inst{31-21} = 0b00011101100;
29986 let hasNewValue = 1;
29987 let opNewValue = 0;
29988 let isCVI = 1;
29989 let DecoderNamespace = "EXT_mmvec";
29990 }
29991 def V6_vaddclbh : HInst<
29992 (outs HvxVR:$Vd32),
29993 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29994 "$Vd32.h = vadd(vclb($Vu32.h),$Vv32.h)",
29995 tc_05ca8cfd, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV62]> {
29996 let Inst{7-5} = 0b000;
29997 let Inst{13-13} = 0b1;
29998 let Inst{31-21} = 0b00011111000;
29999 let hasNewValue = 1;
30000 let opNewValue = 0;
30001 let isCVI = 1;
30002 let DecoderNamespace = "EXT_mmvec";
30003 }
30004 def V6_vaddclbw : HInst<
30005 (outs HvxVR:$Vd32),
30006 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30007 "$Vd32.w = vadd(vclb($Vu32.w),$Vv32.w)",
30008 tc_05ca8cfd, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV62]> {
30009 let Inst{7-5} = 0b001;
30010 let Inst{13-13} = 0b1;
30011 let Inst{31-21} = 0b00011111000;
30012 let hasNewValue = 1;
30013 let opNewValue = 0;
30014 let isCVI = 1;
30015 let DecoderNamespace = "EXT_mmvec";
30016 }
30017 def V6_vaddh : HInst<
30018 (outs HvxVR:$Vd32),
30019 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30020 "$Vd32.h = vadd($Vu32.h,$Vv32.h)",
30021 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
30022 let Inst{7-5} = 0b111;
30023 let Inst{13-13} = 0b0;
30024 let Inst{31-21} = 0b00011111101;
30025 let hasNewValue = 1;
30026 let opNewValue = 0;
30027 let isCVI = 1;
30028 let DecoderNamespace = "EXT_mmvec";
30029 }
30030 def V6_vaddh_alt : HInst<
30031 (outs HvxVR:$Vd32),
30032 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30033 "$Vd32 = vaddh($Vu32,$Vv32)",
30034 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30035 let hasNewValue = 1;
30036 let opNewValue = 0;
30037 let isCVI = 1;
30038 let isPseudo = 1;
30039 let isCodeGenOnly = 1;
30040 let DecoderNamespace = "EXT_mmvec";
30041 }
30042 def V6_vaddh_dv : HInst<
30043 (outs HvxWR:$Vdd32),
30044 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
30045 "$Vdd32.h = vadd($Vuu32.h,$Vvv32.h)",
30046 tc_db5555f3, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
30047 let Inst{7-5} = 0b101;
30048 let Inst{13-13} = 0b0;
30049 let Inst{31-21} = 0b00011100011;
30050 let hasNewValue = 1;
30051 let opNewValue = 0;
30052 let isCVI = 1;
30053 let DecoderNamespace = "EXT_mmvec";
30054 }
30055 def V6_vaddh_dv_alt : HInst<
30056 (outs HvxWR:$Vdd32),
30057 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
30058 "$Vdd32 = vaddh($Vuu32,$Vvv32)",
30059 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30060 let hasNewValue = 1;
30061 let opNewValue = 0;
30062 let isCVI = 1;
30063 let isPseudo = 1;
30064 let isCodeGenOnly = 1;
30065 let DecoderNamespace = "EXT_mmvec";
30066 }
30067 def V6_vaddhnq : HInst<
30068 (outs HvxVR:$Vx32),
30069 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
30070 "if (!$Qv4) $Vx32.h += $Vu32.h",
30071 tc_257f6f7c, TypeCVI_VA>, Enc_a90628, Requires<[UseHVXV60]> {
30072 let Inst{7-5} = 0b100;
30073 let Inst{13-13} = 0b1;
30074 let Inst{21-16} = 0b000001;
30075 let Inst{31-24} = 0b00011110;
30076 let hasNewValue = 1;
30077 let opNewValue = 0;
30078 let isAccumulator = 1;
30079 let isCVI = 1;
30080 let DecoderNamespace = "EXT_mmvec";
30081 let Constraints = "$Vx32 = $Vx32in";
30082 }
30083 def V6_vaddhnq_alt : HInst<
30084 (outs HvxVR:$Vx32),
30085 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
30086 "if (!$Qv4.h) $Vx32.h += $Vu32.h",
30087 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30088 let hasNewValue = 1;
30089 let opNewValue = 0;
30090 let isAccumulator = 1;
30091 let isCVI = 1;
30092 let isPseudo = 1;
30093 let isCodeGenOnly = 1;
30094 let DecoderNamespace = "EXT_mmvec";
30095 let Constraints = "$Vx32 = $Vx32in";
30096 }
30097 def V6_vaddhq : HInst<
30098 (outs HvxVR:$Vx32),
30099 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
30100 "if ($Qv4) $Vx32.h += $Vu32.h",
30101 tc_257f6f7c, TypeCVI_VA>, Enc_a90628, Requires<[UseHVXV60]> {
30102 let Inst{7-5} = 0b001;
30103 let Inst{13-13} = 0b1;
30104 let Inst{21-16} = 0b000001;
30105 let Inst{31-24} = 0b00011110;
30106 let hasNewValue = 1;
30107 let opNewValue = 0;
30108 let isAccumulator = 1;
30109 let isCVI = 1;
30110 let DecoderNamespace = "EXT_mmvec";
30111 let Constraints = "$Vx32 = $Vx32in";
30112 }
30113 def V6_vaddhq_alt : HInst<
30114 (outs HvxVR:$Vx32),
30115 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
30116 "if ($Qv4.h) $Vx32.h += $Vu32.h",
30117 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30118 let hasNewValue = 1;
30119 let opNewValue = 0;
30120 let isAccumulator = 1;
30121 let isCVI = 1;
30122 let isPseudo = 1;
30123 let isCodeGenOnly = 1;
30124 let DecoderNamespace = "EXT_mmvec";
30125 let Constraints = "$Vx32 = $Vx32in";
30126 }
30127 def V6_vaddhsat : HInst<
30128 (outs HvxVR:$Vd32),
30129 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30130 "$Vd32.h = vadd($Vu32.h,$Vv32.h):sat",
30131 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
30132 let Inst{7-5} = 0b011;
30133 let Inst{13-13} = 0b0;
30134 let Inst{31-21} = 0b00011100010;
30135 let hasNewValue = 1;
30136 let opNewValue = 0;
30137 let isCVI = 1;
30138 let DecoderNamespace = "EXT_mmvec";
30139 }
30140 def V6_vaddhsat_alt : HInst<
30141 (outs HvxVR:$Vd32),
30142 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30143 "$Vd32 = vaddh($Vu32,$Vv32):sat",
30144 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30145 let hasNewValue = 1;
30146 let opNewValue = 0;
30147 let isCVI = 1;
30148 let isPseudo = 1;
30149 let isCodeGenOnly = 1;
30150 let DecoderNamespace = "EXT_mmvec";
30151 }
30152 def V6_vaddhsat_dv : HInst<
30153 (outs HvxWR:$Vdd32),
30154 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
30155 "$Vdd32.h = vadd($Vuu32.h,$Vvv32.h):sat",
30156 tc_db5555f3, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
30157 let Inst{7-5} = 0b001;
30158 let Inst{13-13} = 0b0;
30159 let Inst{31-21} = 0b00011100100;
30160 let hasNewValue = 1;
30161 let opNewValue = 0;
30162 let isCVI = 1;
30163 let DecoderNamespace = "EXT_mmvec";
30164 }
30165 def V6_vaddhsat_dv_alt : HInst<
30166 (outs HvxWR:$Vdd32),
30167 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
30168 "$Vdd32 = vaddh($Vuu32,$Vvv32):sat",
30169 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30170 let hasNewValue = 1;
30171 let opNewValue = 0;
30172 let isCVI = 1;
30173 let isPseudo = 1;
30174 let isCodeGenOnly = 1;
30175 let DecoderNamespace = "EXT_mmvec";
30176 }
30177 def V6_vaddhw : HInst<
30178 (outs HvxWR:$Vdd32),
30179 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30180 "$Vdd32.w = vadd($Vu32.h,$Vv32.h)",
30181 tc_d8287c14, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
30182 let Inst{7-5} = 0b100;
30183 let Inst{13-13} = 0b0;
30184 let Inst{31-21} = 0b00011100101;
30185 let hasNewValue = 1;
30186 let opNewValue = 0;
30187 let isCVI = 1;
30188 let DecoderNamespace = "EXT_mmvec";
30189 }
30190 def V6_vaddhw_acc : HInst<
30191 (outs HvxWR:$Vxx32),
30192 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
30193 "$Vxx32.w += vadd($Vu32.h,$Vv32.h)",
30194 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_3fc427, Requires<[UseHVXV62]> {
30195 let Inst{7-5} = 0b010;
30196 let Inst{13-13} = 0b1;
30197 let Inst{31-21} = 0b00011100001;
30198 let hasNewValue = 1;
30199 let opNewValue = 0;
30200 let isAccumulator = 1;
30201 let isCVI = 1;
30202 let DecoderNamespace = "EXT_mmvec";
30203 let Constraints = "$Vxx32 = $Vxx32in";
30204 }
30205 def V6_vaddhw_acc_alt : HInst<
30206 (outs HvxWR:$Vxx32),
30207 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
30208 "$Vxx32 += vaddh($Vu32,$Vv32)",
30209 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
30210 let hasNewValue = 1;
30211 let opNewValue = 0;
30212 let isAccumulator = 1;
30213 let isCVI = 1;
30214 let isPseudo = 1;
30215 let isCodeGenOnly = 1;
30216 let DecoderNamespace = "EXT_mmvec";
30217 let Constraints = "$Vxx32 = $Vxx32in";
30218 }
30219 def V6_vaddhw_alt : HInst<
30220 (outs HvxWR:$Vdd32),
30221 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30222 "$Vdd32 = vaddh($Vu32,$Vv32)",
30223 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30224 let hasNewValue = 1;
30225 let opNewValue = 0;
30226 let isCVI = 1;
30227 let isPseudo = 1;
30228 let isCodeGenOnly = 1;
30229 let DecoderNamespace = "EXT_mmvec";
30230 }
30231 def V6_vaddubh : HInst<
30232 (outs HvxWR:$Vdd32),
30233 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30234 "$Vdd32.h = vadd($Vu32.ub,$Vv32.ub)",
30235 tc_d8287c14, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
30236 let Inst{7-5} = 0b010;
30237 let Inst{13-13} = 0b0;
30238 let Inst{31-21} = 0b00011100101;
30239 let hasNewValue = 1;
30240 let opNewValue = 0;
30241 let isCVI = 1;
30242 let DecoderNamespace = "EXT_mmvec";
30243 }
30244 def V6_vaddubh_acc : HInst<
30245 (outs HvxWR:$Vxx32),
30246 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
30247 "$Vxx32.h += vadd($Vu32.ub,$Vv32.ub)",
30248 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_3fc427, Requires<[UseHVXV62]> {
30249 let Inst{7-5} = 0b101;
30250 let Inst{13-13} = 0b1;
30251 let Inst{31-21} = 0b00011100010;
30252 let hasNewValue = 1;
30253 let opNewValue = 0;
30254 let isAccumulator = 1;
30255 let isCVI = 1;
30256 let DecoderNamespace = "EXT_mmvec";
30257 let Constraints = "$Vxx32 = $Vxx32in";
30258 }
30259 def V6_vaddubh_acc_alt : HInst<
30260 (outs HvxWR:$Vxx32),
30261 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
30262 "$Vxx32 += vaddub($Vu32,$Vv32)",
30263 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
30264 let hasNewValue = 1;
30265 let opNewValue = 0;
30266 let isAccumulator = 1;
30267 let isCVI = 1;
30268 let isPseudo = 1;
30269 let isCodeGenOnly = 1;
30270 let DecoderNamespace = "EXT_mmvec";
30271 let Constraints = "$Vxx32 = $Vxx32in";
30272 }
30273 def V6_vaddubh_alt : HInst<
30274 (outs HvxWR:$Vdd32),
30275 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30276 "$Vdd32 = vaddub($Vu32,$Vv32)",
30277 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30278 let hasNewValue = 1;
30279 let opNewValue = 0;
30280 let isCVI = 1;
30281 let isPseudo = 1;
30282 let isCodeGenOnly = 1;
30283 let DecoderNamespace = "EXT_mmvec";
30284 }
30285 def V6_vaddubsat : HInst<
30286 (outs HvxVR:$Vd32),
30287 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30288 "$Vd32.ub = vadd($Vu32.ub,$Vv32.ub):sat",
30289 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
30290 let Inst{7-5} = 0b001;
30291 let Inst{13-13} = 0b0;
30292 let Inst{31-21} = 0b00011100010;
30293 let hasNewValue = 1;
30294 let opNewValue = 0;
30295 let isCVI = 1;
30296 let DecoderNamespace = "EXT_mmvec";
30297 }
30298 def V6_vaddubsat_alt : HInst<
30299 (outs HvxVR:$Vd32),
30300 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30301 "$Vd32 = vaddub($Vu32,$Vv32):sat",
30302 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30303 let hasNewValue = 1;
30304 let opNewValue = 0;
30305 let isCVI = 1;
30306 let isPseudo = 1;
30307 let isCodeGenOnly = 1;
30308 let DecoderNamespace = "EXT_mmvec";
30309 }
30310 def V6_vaddubsat_dv : HInst<
30311 (outs HvxWR:$Vdd32),
30312 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
30313 "$Vdd32.ub = vadd($Vuu32.ub,$Vvv32.ub):sat",
30314 tc_db5555f3, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
30315 let Inst{7-5} = 0b111;
30316 let Inst{13-13} = 0b0;
30317 let Inst{31-21} = 0b00011100011;
30318 let hasNewValue = 1;
30319 let opNewValue = 0;
30320 let isCVI = 1;
30321 let DecoderNamespace = "EXT_mmvec";
30322 }
30323 def V6_vaddubsat_dv_alt : HInst<
30324 (outs HvxWR:$Vdd32),
30325 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
30326 "$Vdd32 = vaddub($Vuu32,$Vvv32):sat",
30327 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30328 let hasNewValue = 1;
30329 let opNewValue = 0;
30330 let isCVI = 1;
30331 let isPseudo = 1;
30332 let isCodeGenOnly = 1;
30333 let DecoderNamespace = "EXT_mmvec";
30334 }
30335 def V6_vaddububb_sat : HInst<
30336 (outs HvxVR:$Vd32),
30337 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30338 "$Vd32.ub = vadd($Vu32.ub,$Vv32.b):sat",
30339 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV62]> {
30340 let Inst{7-5} = 0b100;
30341 let Inst{13-13} = 0b0;
30342 let Inst{31-21} = 0b00011110101;
30343 let hasNewValue = 1;
30344 let opNewValue = 0;
30345 let isCVI = 1;
30346 let DecoderNamespace = "EXT_mmvec";
30347 }
30348 def V6_vadduhsat : HInst<
30349 (outs HvxVR:$Vd32),
30350 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30351 "$Vd32.uh = vadd($Vu32.uh,$Vv32.uh):sat",
30352 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
30353 let Inst{7-5} = 0b010;
30354 let Inst{13-13} = 0b0;
30355 let Inst{31-21} = 0b00011100010;
30356 let hasNewValue = 1;
30357 let opNewValue = 0;
30358 let isCVI = 1;
30359 let DecoderNamespace = "EXT_mmvec";
30360 }
30361 def V6_vadduhsat_alt : HInst<
30362 (outs HvxVR:$Vd32),
30363 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30364 "$Vd32 = vadduh($Vu32,$Vv32):sat",
30365 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30366 let hasNewValue = 1;
30367 let opNewValue = 0;
30368 let isCVI = 1;
30369 let isPseudo = 1;
30370 let isCodeGenOnly = 1;
30371 let DecoderNamespace = "EXT_mmvec";
30372 }
30373 def V6_vadduhsat_dv : HInst<
30374 (outs HvxWR:$Vdd32),
30375 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
30376 "$Vdd32.uh = vadd($Vuu32.uh,$Vvv32.uh):sat",
30377 tc_db5555f3, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
30378 let Inst{7-5} = 0b000;
30379 let Inst{13-13} = 0b0;
30380 let Inst{31-21} = 0b00011100100;
30381 let hasNewValue = 1;
30382 let opNewValue = 0;
30383 let isCVI = 1;
30384 let DecoderNamespace = "EXT_mmvec";
30385 }
30386 def V6_vadduhsat_dv_alt : HInst<
30387 (outs HvxWR:$Vdd32),
30388 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
30389 "$Vdd32 = vadduh($Vuu32,$Vvv32):sat",
30390 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30391 let hasNewValue = 1;
30392 let opNewValue = 0;
30393 let isCVI = 1;
30394 let isPseudo = 1;
30395 let isCodeGenOnly = 1;
30396 let DecoderNamespace = "EXT_mmvec";
30397 }
30398 def V6_vadduhw : HInst<
30399 (outs HvxWR:$Vdd32),
30400 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30401 "$Vdd32.w = vadd($Vu32.uh,$Vv32.uh)",
30402 tc_d8287c14, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
30403 let Inst{7-5} = 0b011;
30404 let Inst{13-13} = 0b0;
30405 let Inst{31-21} = 0b00011100101;
30406 let hasNewValue = 1;
30407 let opNewValue = 0;
30408 let isCVI = 1;
30409 let DecoderNamespace = "EXT_mmvec";
30410 }
30411 def V6_vadduhw_acc : HInst<
30412 (outs HvxWR:$Vxx32),
30413 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
30414 "$Vxx32.w += vadd($Vu32.uh,$Vv32.uh)",
30415 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_3fc427, Requires<[UseHVXV62]> {
30416 let Inst{7-5} = 0b100;
30417 let Inst{13-13} = 0b1;
30418 let Inst{31-21} = 0b00011100010;
30419 let hasNewValue = 1;
30420 let opNewValue = 0;
30421 let isAccumulator = 1;
30422 let isCVI = 1;
30423 let DecoderNamespace = "EXT_mmvec";
30424 let Constraints = "$Vxx32 = $Vxx32in";
30425 }
30426 def V6_vadduhw_acc_alt : HInst<
30427 (outs HvxWR:$Vxx32),
30428 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
30429 "$Vxx32 += vadduh($Vu32,$Vv32)",
30430 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
30431 let hasNewValue = 1;
30432 let opNewValue = 0;
30433 let isAccumulator = 1;
30434 let isCVI = 1;
30435 let isPseudo = 1;
30436 let isCodeGenOnly = 1;
30437 let DecoderNamespace = "EXT_mmvec";
30438 let Constraints = "$Vxx32 = $Vxx32in";
30439 }
30440 def V6_vadduhw_alt : HInst<
30441 (outs HvxWR:$Vdd32),
30442 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30443 "$Vdd32 = vadduh($Vu32,$Vv32)",
30444 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30445 let hasNewValue = 1;
30446 let opNewValue = 0;
30447 let isCVI = 1;
30448 let isPseudo = 1;
30449 let isCodeGenOnly = 1;
30450 let DecoderNamespace = "EXT_mmvec";
30451 }
30452 def V6_vadduwsat : HInst<
30453 (outs HvxVR:$Vd32),
30454 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30455 "$Vd32.uw = vadd($Vu32.uw,$Vv32.uw):sat",
30456 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV62]> {
30457 let Inst{7-5} = 0b001;
30458 let Inst{13-13} = 0b0;
30459 let Inst{31-21} = 0b00011111011;
30460 let hasNewValue = 1;
30461 let opNewValue = 0;
30462 let isCVI = 1;
30463 let DecoderNamespace = "EXT_mmvec";
30464 }
30465 def V6_vadduwsat_alt : HInst<
30466 (outs HvxVR:$Vd32),
30467 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30468 "$Vd32 = vadduw($Vu32,$Vv32):sat",
30469 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
30470 let hasNewValue = 1;
30471 let opNewValue = 0;
30472 let isCVI = 1;
30473 let isPseudo = 1;
30474 let isCodeGenOnly = 1;
30475 let DecoderNamespace = "EXT_mmvec";
30476 }
30477 def V6_vadduwsat_dv : HInst<
30478 (outs HvxWR:$Vdd32),
30479 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
30480 "$Vdd32.uw = vadd($Vuu32.uw,$Vvv32.uw):sat",
30481 tc_db5555f3, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV62]> {
30482 let Inst{7-5} = 0b010;
30483 let Inst{13-13} = 0b0;
30484 let Inst{31-21} = 0b00011110101;
30485 let hasNewValue = 1;
30486 let opNewValue = 0;
30487 let isCVI = 1;
30488 let DecoderNamespace = "EXT_mmvec";
30489 }
30490 def V6_vadduwsat_dv_alt : HInst<
30491 (outs HvxWR:$Vdd32),
30492 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
30493 "$Vdd32 = vadduw($Vuu32,$Vvv32):sat",
30494 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
30495 let hasNewValue = 1;
30496 let opNewValue = 0;
30497 let isCVI = 1;
30498 let isPseudo = 1;
30499 let isCodeGenOnly = 1;
30500 let DecoderNamespace = "EXT_mmvec";
30501 }
30502 def V6_vaddw : HInst<
30503 (outs HvxVR:$Vd32),
30504 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30505 "$Vd32.w = vadd($Vu32.w,$Vv32.w)",
30506 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
30507 let Inst{7-5} = 0b000;
30508 let Inst{13-13} = 0b0;
30509 let Inst{31-21} = 0b00011100010;
30510 let hasNewValue = 1;
30511 let opNewValue = 0;
30512 let isCVI = 1;
30513 let DecoderNamespace = "EXT_mmvec";
30514 }
30515 def V6_vaddw_alt : HInst<
30516 (outs HvxVR:$Vd32),
30517 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30518 "$Vd32 = vaddw($Vu32,$Vv32)",
30519 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30520 let hasNewValue = 1;
30521 let opNewValue = 0;
30522 let isCVI = 1;
30523 let isPseudo = 1;
30524 let isCodeGenOnly = 1;
30525 let DecoderNamespace = "EXT_mmvec";
30526 }
30527 def V6_vaddw_dv : HInst<
30528 (outs HvxWR:$Vdd32),
30529 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
30530 "$Vdd32.w = vadd($Vuu32.w,$Vvv32.w)",
30531 tc_db5555f3, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
30532 let Inst{7-5} = 0b110;
30533 let Inst{13-13} = 0b0;
30534 let Inst{31-21} = 0b00011100011;
30535 let hasNewValue = 1;
30536 let opNewValue = 0;
30537 let isCVI = 1;
30538 let DecoderNamespace = "EXT_mmvec";
30539 }
30540 def V6_vaddw_dv_alt : HInst<
30541 (outs HvxWR:$Vdd32),
30542 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
30543 "$Vdd32 = vaddw($Vuu32,$Vvv32)",
30544 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30545 let hasNewValue = 1;
30546 let opNewValue = 0;
30547 let isCVI = 1;
30548 let isPseudo = 1;
30549 let isCodeGenOnly = 1;
30550 let DecoderNamespace = "EXT_mmvec";
30551 }
30552 def V6_vaddwnq : HInst<
30553 (outs HvxVR:$Vx32),
30554 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
30555 "if (!$Qv4) $Vx32.w += $Vu32.w",
30556 tc_257f6f7c, TypeCVI_VA>, Enc_a90628, Requires<[UseHVXV60]> {
30557 let Inst{7-5} = 0b101;
30558 let Inst{13-13} = 0b1;
30559 let Inst{21-16} = 0b000001;
30560 let Inst{31-24} = 0b00011110;
30561 let hasNewValue = 1;
30562 let opNewValue = 0;
30563 let isAccumulator = 1;
30564 let isCVI = 1;
30565 let DecoderNamespace = "EXT_mmvec";
30566 let Constraints = "$Vx32 = $Vx32in";
30567 }
30568 def V6_vaddwnq_alt : HInst<
30569 (outs HvxVR:$Vx32),
30570 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
30571 "if (!$Qv4.w) $Vx32.w += $Vu32.w",
30572 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30573 let hasNewValue = 1;
30574 let opNewValue = 0;
30575 let isAccumulator = 1;
30576 let isCVI = 1;
30577 let isPseudo = 1;
30578 let isCodeGenOnly = 1;
30579 let DecoderNamespace = "EXT_mmvec";
30580 let Constraints = "$Vx32 = $Vx32in";
30581 }
30582 def V6_vaddwq : HInst<
30583 (outs HvxVR:$Vx32),
30584 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
30585 "if ($Qv4) $Vx32.w += $Vu32.w",
30586 tc_257f6f7c, TypeCVI_VA>, Enc_a90628, Requires<[UseHVXV60]> {
30587 let Inst{7-5} = 0b010;
30588 let Inst{13-13} = 0b1;
30589 let Inst{21-16} = 0b000001;
30590 let Inst{31-24} = 0b00011110;
30591 let hasNewValue = 1;
30592 let opNewValue = 0;
30593 let isAccumulator = 1;
30594 let isCVI = 1;
30595 let DecoderNamespace = "EXT_mmvec";
30596 let Constraints = "$Vx32 = $Vx32in";
30597 }
30598 def V6_vaddwq_alt : HInst<
30599 (outs HvxVR:$Vx32),
30600 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
30601 "if ($Qv4.w) $Vx32.w += $Vu32.w",
30602 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30603 let hasNewValue = 1;
30604 let opNewValue = 0;
30605 let isAccumulator = 1;
30606 let isCVI = 1;
30607 let isPseudo = 1;
30608 let isCodeGenOnly = 1;
30609 let DecoderNamespace = "EXT_mmvec";
30610 let Constraints = "$Vx32 = $Vx32in";
30611 }
30612 def V6_vaddwsat : HInst<
30613 (outs HvxVR:$Vd32),
30614 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30615 "$Vd32.w = vadd($Vu32.w,$Vv32.w):sat",
30616 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
30617 let Inst{7-5} = 0b100;
30618 let Inst{13-13} = 0b0;
30619 let Inst{31-21} = 0b00011100010;
30620 let hasNewValue = 1;
30621 let opNewValue = 0;
30622 let isCVI = 1;
30623 let DecoderNamespace = "EXT_mmvec";
30624 }
30625 def V6_vaddwsat_alt : HInst<
30626 (outs HvxVR:$Vd32),
30627 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30628 "$Vd32 = vaddw($Vu32,$Vv32):sat",
30629 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30630 let hasNewValue = 1;
30631 let opNewValue = 0;
30632 let isCVI = 1;
30633 let isPseudo = 1;
30634 let isCodeGenOnly = 1;
30635 let DecoderNamespace = "EXT_mmvec";
30636 }
30637 def V6_vaddwsat_dv : HInst<
30638 (outs HvxWR:$Vdd32),
30639 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
30640 "$Vdd32.w = vadd($Vuu32.w,$Vvv32.w):sat",
30641 tc_db5555f3, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
30642 let Inst{7-5} = 0b010;
30643 let Inst{13-13} = 0b0;
30644 let Inst{31-21} = 0b00011100100;
30645 let hasNewValue = 1;
30646 let opNewValue = 0;
30647 let isCVI = 1;
30648 let DecoderNamespace = "EXT_mmvec";
30649 }
30650 def V6_vaddwsat_dv_alt : HInst<
30651 (outs HvxWR:$Vdd32),
30652 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
30653 "$Vdd32 = vaddw($Vuu32,$Vvv32):sat",
30654 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30655 let hasNewValue = 1;
30656 let opNewValue = 0;
30657 let isCVI = 1;
30658 let isPseudo = 1;
30659 let isCodeGenOnly = 1;
30660 let DecoderNamespace = "EXT_mmvec";
30661 }
30662 def V6_valignb : HInst<
30663 (outs HvxVR:$Vd32),
30664 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30665 "$Vd32 = valign($Vu32,$Vv32,$Rt8)",
30666 tc_56e64202, TypeCVI_VP>, Enc_a30110, Requires<[UseHVXV60]> {
30667 let Inst{7-5} = 0b000;
30668 let Inst{13-13} = 0b0;
30669 let Inst{31-24} = 0b00011011;
30670 let hasNewValue = 1;
30671 let opNewValue = 0;
30672 let isCVI = 1;
30673 let DecoderNamespace = "EXT_mmvec";
30674 }
30675 def V6_valignbi : HInst<
30676 (outs HvxVR:$Vd32),
30677 (ins HvxVR:$Vu32, HvxVR:$Vv32, u3_0Imm:$Ii),
30678 "$Vd32 = valign($Vu32,$Vv32,#$Ii)",
30679 tc_56e64202, TypeCVI_VP>, Enc_0b2e5b, Requires<[UseHVXV60]> {
30680 let Inst{13-13} = 0b1;
30681 let Inst{31-21} = 0b00011110001;
30682 let hasNewValue = 1;
30683 let opNewValue = 0;
30684 let isCVI = 1;
30685 let DecoderNamespace = "EXT_mmvec";
30686 }
30687 def V6_vand : HInst<
30688 (outs HvxVR:$Vd32),
30689 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30690 "$Vd32 = vand($Vu32,$Vv32)",
30691 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
30692 let Inst{7-5} = 0b101;
30693 let Inst{13-13} = 0b0;
30694 let Inst{31-21} = 0b00011100001;
30695 let hasNewValue = 1;
30696 let opNewValue = 0;
30697 let isCVI = 1;
30698 let DecoderNamespace = "EXT_mmvec";
30699 }
30700 def V6_vandnqrt : HInst<
30701 (outs HvxVR:$Vd32),
30702 (ins HvxQR:$Qu4, IntRegs:$Rt32),
30703 "$Vd32 = vand(!$Qu4,$Rt32)",
30704 tc_ac4046bc, TypeCVI_VX_LATE>, Enc_7b7ba8, Requires<[UseHVXV62]> {
30705 let Inst{7-5} = 0b101;
30706 let Inst{13-10} = 0b0001;
30707 let Inst{31-21} = 0b00011001101;
30708 let hasNewValue = 1;
30709 let opNewValue = 0;
30710 let isCVI = 1;
30711 let DecoderNamespace = "EXT_mmvec";
30712 }
30713 def V6_vandnqrt_acc : HInst<
30714 (outs HvxVR:$Vx32),
30715 (ins HvxVR:$Vx32in, HvxQR:$Qu4, IntRegs:$Rt32),
30716 "$Vx32 |= vand(!$Qu4,$Rt32)",
30717 tc_2e8f5f6e, TypeCVI_VX_LATE>, Enc_895bd9, Requires<[UseHVXV62]> {
30718 let Inst{7-5} = 0b011;
30719 let Inst{13-10} = 0b1001;
30720 let Inst{31-21} = 0b00011001011;
30721 let hasNewValue = 1;
30722 let opNewValue = 0;
30723 let isAccumulator = 1;
30724 let isCVI = 1;
30725 let DecoderNamespace = "EXT_mmvec";
30726 let Constraints = "$Vx32 = $Vx32in";
30727 }
30728 def V6_vandnqrt_acc_alt : HInst<
30729 (outs HvxVR:$Vx32),
30730 (ins HvxVR:$Vx32in, HvxQR:$Qu4, IntRegs:$Rt32),
30731 "$Vx32.ub |= vand(!$Qu4.ub,$Rt32.ub)",
30732 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
30733 let hasNewValue = 1;
30734 let opNewValue = 0;
30735 let isAccumulator = 1;
30736 let isCVI = 1;
30737 let isPseudo = 1;
30738 let isCodeGenOnly = 1;
30739 let DecoderNamespace = "EXT_mmvec";
30740 let Constraints = "$Vx32 = $Vx32in";
30741 }
30742 def V6_vandnqrt_alt : HInst<
30743 (outs HvxVR:$Vd32),
30744 (ins HvxQR:$Qu4, IntRegs:$Rt32),
30745 "$Vd32.ub = vand(!$Qu4.ub,$Rt32.ub)",
30746 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
30747 let hasNewValue = 1;
30748 let opNewValue = 0;
30749 let isCVI = 1;
30750 let isPseudo = 1;
30751 let isCodeGenOnly = 1;
30752 let DecoderNamespace = "EXT_mmvec";
30753 }
30754 def V6_vandqrt : HInst<
30755 (outs HvxVR:$Vd32),
30756 (ins HvxQR:$Qu4, IntRegs:$Rt32),
30757 "$Vd32 = vand($Qu4,$Rt32)",
30758 tc_ac4046bc, TypeCVI_VX_LATE>, Enc_7b7ba8, Requires<[UseHVXV60]> {
30759 let Inst{7-5} = 0b101;
30760 let Inst{13-10} = 0b0000;
30761 let Inst{31-21} = 0b00011001101;
30762 let hasNewValue = 1;
30763 let opNewValue = 0;
30764 let isCVI = 1;
30765 let DecoderNamespace = "EXT_mmvec";
30766 }
30767 def V6_vandqrt_acc : HInst<
30768 (outs HvxVR:$Vx32),
30769 (ins HvxVR:$Vx32in, HvxQR:$Qu4, IntRegs:$Rt32),
30770 "$Vx32 |= vand($Qu4,$Rt32)",
30771 tc_2e8f5f6e, TypeCVI_VX_LATE>, Enc_895bd9, Requires<[UseHVXV60]> {
30772 let Inst{7-5} = 0b011;
30773 let Inst{13-10} = 0b1000;
30774 let Inst{31-21} = 0b00011001011;
30775 let hasNewValue = 1;
30776 let opNewValue = 0;
30777 let isAccumulator = 1;
30778 let isCVI = 1;
30779 let DecoderNamespace = "EXT_mmvec";
30780 let Constraints = "$Vx32 = $Vx32in";
30781 }
30782 def V6_vandqrt_acc_alt : HInst<
30783 (outs HvxVR:$Vx32),
30784 (ins HvxVR:$Vx32in, HvxQR:$Qu4, IntRegs:$Rt32),
30785 "$Vx32.ub |= vand($Qu4.ub,$Rt32.ub)",
30786 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30787 let hasNewValue = 1;
30788 let opNewValue = 0;
30789 let isAccumulator = 1;
30790 let isCVI = 1;
30791 let isPseudo = 1;
30792 let isCodeGenOnly = 1;
30793 let DecoderNamespace = "EXT_mmvec";
30794 let Constraints = "$Vx32 = $Vx32in";
30795 }
30796 def V6_vandqrt_alt : HInst<
30797 (outs HvxVR:$Vd32),
30798 (ins HvxQR:$Qu4, IntRegs:$Rt32),
30799 "$Vd32.ub = vand($Qu4.ub,$Rt32.ub)",
30800 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30801 let hasNewValue = 1;
30802 let opNewValue = 0;
30803 let isCVI = 1;
30804 let isPseudo = 1;
30805 let isCodeGenOnly = 1;
30806 let DecoderNamespace = "EXT_mmvec";
30807 }
30808 def V6_vandvnqv : HInst<
30809 (outs HvxVR:$Vd32),
30810 (ins HvxQR:$Qv4, HvxVR:$Vu32),
30811 "$Vd32 = vand(!$Qv4,$Vu32)",
30812 tc_56c4f9fe, TypeCVI_VA>, Enc_c4dc92, Requires<[UseHVXV62]> {
30813 let Inst{7-5} = 0b001;
30814 let Inst{13-13} = 0b1;
30815 let Inst{21-16} = 0b000011;
30816 let Inst{31-24} = 0b00011110;
30817 let hasNewValue = 1;
30818 let opNewValue = 0;
30819 let isCVI = 1;
30820 let DecoderNamespace = "EXT_mmvec";
30821 }
30822 def V6_vandvqv : HInst<
30823 (outs HvxVR:$Vd32),
30824 (ins HvxQR:$Qv4, HvxVR:$Vu32),
30825 "$Vd32 = vand($Qv4,$Vu32)",
30826 tc_56c4f9fe, TypeCVI_VA>, Enc_c4dc92, Requires<[UseHVXV62]> {
30827 let Inst{7-5} = 0b000;
30828 let Inst{13-13} = 0b1;
30829 let Inst{21-16} = 0b000011;
30830 let Inst{31-24} = 0b00011110;
30831 let hasNewValue = 1;
30832 let opNewValue = 0;
30833 let isCVI = 1;
30834 let DecoderNamespace = "EXT_mmvec";
30835 }
30836 def V6_vandvrt : HInst<
30837 (outs HvxQR:$Qd4),
30838 (ins HvxVR:$Vu32, IntRegs:$Rt32),
30839 "$Qd4 = vand($Vu32,$Rt32)",
30840 tc_ac4046bc, TypeCVI_VX_LATE>, Enc_0f8bab, Requires<[UseHVXV60]> {
30841 let Inst{7-2} = 0b010010;
30842 let Inst{13-13} = 0b0;
30843 let Inst{31-21} = 0b00011001101;
30844 let hasNewValue = 1;
30845 let opNewValue = 0;
30846 let isCVI = 1;
30847 let DecoderNamespace = "EXT_mmvec";
30848 }
30849 def V6_vandvrt_acc : HInst<
30850 (outs HvxQR:$Qx4),
30851 (ins HvxQR:$Qx4in, HvxVR:$Vu32, IntRegs:$Rt32),
30852 "$Qx4 |= vand($Vu32,$Rt32)",
30853 tc_2e8f5f6e, TypeCVI_VX_LATE>, Enc_adf111, Requires<[UseHVXV60]> {
30854 let Inst{7-2} = 0b100000;
30855 let Inst{13-13} = 0b1;
30856 let Inst{31-21} = 0b00011001011;
30857 let isAccumulator = 1;
30858 let isCVI = 1;
30859 let DecoderNamespace = "EXT_mmvec";
30860 let Constraints = "$Qx4 = $Qx4in";
30861 }
30862 def V6_vandvrt_acc_alt : HInst<
30863 (outs HvxQR:$Qx4),
30864 (ins HvxQR:$Qx4in, HvxVR:$Vu32, IntRegs:$Rt32),
30865 "$Qx4.ub |= vand($Vu32.ub,$Rt32.ub)",
30866 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30867 let isAccumulator = 1;
30868 let isCVI = 1;
30869 let isPseudo = 1;
30870 let isCodeGenOnly = 1;
30871 let DecoderNamespace = "EXT_mmvec";
30872 let Constraints = "$Qx4 = $Qx4in";
30873 }
30874 def V6_vandvrt_alt : HInst<
30875 (outs HvxQR:$Qd4),
30876 (ins HvxVR:$Vu32, IntRegs:$Rt32),
30877 "$Qd4.ub = vand($Vu32.ub,$Rt32.ub)",
30878 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30879 let hasNewValue = 1;
30880 let opNewValue = 0;
30881 let isCVI = 1;
30882 let isPseudo = 1;
30883 let isCodeGenOnly = 1;
30884 let DecoderNamespace = "EXT_mmvec";
30885 }
30886 def V6_vaslh : HInst<
30887 (outs HvxVR:$Vd32),
30888 (ins HvxVR:$Vu32, IntRegs:$Rt32),
30889 "$Vd32.h = vasl($Vu32.h,$Rt32)",
30890 tc_7417e785, TypeCVI_VS>, Enc_b087ac, Requires<[UseHVXV60]> {
30891 let Inst{7-5} = 0b000;
30892 let Inst{13-13} = 0b0;
30893 let Inst{31-21} = 0b00011001100;
30894 let hasNewValue = 1;
30895 let opNewValue = 0;
30896 let isCVI = 1;
30897 let DecoderNamespace = "EXT_mmvec";
30898 }
30899 def V6_vaslh_acc : HInst<
30900 (outs HvxVR:$Vx32),
30901 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
30902 "$Vx32.h += vasl($Vu32.h,$Rt32)",
30903 tc_309dbb4f, TypeCVI_VS>, Enc_5138b3, Requires<[UseHVXV65]> {
30904 let Inst{7-5} = 0b101;
30905 let Inst{13-13} = 0b1;
30906 let Inst{31-21} = 0b00011001101;
30907 let hasNewValue = 1;
30908 let opNewValue = 0;
30909 let isAccumulator = 1;
30910 let isCVI = 1;
30911 let DecoderNamespace = "EXT_mmvec";
30912 let Constraints = "$Vx32 = $Vx32in";
30913 }
30914 def V6_vaslh_acc_alt : HInst<
30915 (outs HvxVR:$Vx32),
30916 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
30917 "$Vx32 += vaslh($Vu32,$Rt32)",
30918 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
30919 let hasNewValue = 1;
30920 let opNewValue = 0;
30921 let isAccumulator = 1;
30922 let isCVI = 1;
30923 let isPseudo = 1;
30924 let isCodeGenOnly = 1;
30925 let DecoderNamespace = "EXT_mmvec";
30926 let Constraints = "$Vx32 = $Vx32in";
30927 }
30928 def V6_vaslh_alt : HInst<
30929 (outs HvxVR:$Vd32),
30930 (ins HvxVR:$Vu32, IntRegs:$Rt32),
30931 "$Vd32 = vaslh($Vu32,$Rt32)",
30932 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30933 let hasNewValue = 1;
30934 let opNewValue = 0;
30935 let isCVI = 1;
30936 let isPseudo = 1;
30937 let isCodeGenOnly = 1;
30938 let DecoderNamespace = "EXT_mmvec";
30939 }
30940 def V6_vaslhv : HInst<
30941 (outs HvxVR:$Vd32),
30942 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30943 "$Vd32.h = vasl($Vu32.h,$Vv32.h)",
30944 tc_05ca8cfd, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV60]> {
30945 let Inst{7-5} = 0b101;
30946 let Inst{13-13} = 0b0;
30947 let Inst{31-21} = 0b00011111101;
30948 let hasNewValue = 1;
30949 let opNewValue = 0;
30950 let isCVI = 1;
30951 let DecoderNamespace = "EXT_mmvec";
30952 }
30953 def V6_vaslhv_alt : HInst<
30954 (outs HvxVR:$Vd32),
30955 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30956 "$Vd32 = vaslh($Vu32,$Vv32)",
30957 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30958 let hasNewValue = 1;
30959 let opNewValue = 0;
30960 let isCVI = 1;
30961 let isPseudo = 1;
30962 let isCodeGenOnly = 1;
30963 let DecoderNamespace = "EXT_mmvec";
30964 }
30965 def V6_vaslw : HInst<
30966 (outs HvxVR:$Vd32),
30967 (ins HvxVR:$Vu32, IntRegs:$Rt32),
30968 "$Vd32.w = vasl($Vu32.w,$Rt32)",
30969 tc_7417e785, TypeCVI_VS>, Enc_b087ac, Requires<[UseHVXV60]> {
30970 let Inst{7-5} = 0b111;
30971 let Inst{13-13} = 0b0;
30972 let Inst{31-21} = 0b00011001011;
30973 let hasNewValue = 1;
30974 let opNewValue = 0;
30975 let isCVI = 1;
30976 let DecoderNamespace = "EXT_mmvec";
30977 }
30978 def V6_vaslw_acc : HInst<
30979 (outs HvxVR:$Vx32),
30980 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
30981 "$Vx32.w += vasl($Vu32.w,$Rt32)",
30982 tc_309dbb4f, TypeCVI_VS>, Enc_5138b3, Requires<[UseHVXV60]> {
30983 let Inst{7-5} = 0b010;
30984 let Inst{13-13} = 0b1;
30985 let Inst{31-21} = 0b00011001011;
30986 let hasNewValue = 1;
30987 let opNewValue = 0;
30988 let isAccumulator = 1;
30989 let isCVI = 1;
30990 let DecoderNamespace = "EXT_mmvec";
30991 let Constraints = "$Vx32 = $Vx32in";
30992 }
30993 def V6_vaslw_acc_alt : HInst<
30994 (outs HvxVR:$Vx32),
30995 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
30996 "$Vx32 += vaslw($Vu32,$Rt32)",
30997 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30998 let hasNewValue = 1;
30999 let opNewValue = 0;
31000 let isAccumulator = 1;
31001 let isCVI = 1;
31002 let isPseudo = 1;
31003 let isCodeGenOnly = 1;
31004 let DecoderNamespace = "EXT_mmvec";
31005 let Constraints = "$Vx32 = $Vx32in";
31006 }
31007 def V6_vaslw_alt : HInst<
31008 (outs HvxVR:$Vd32),
31009 (ins HvxVR:$Vu32, IntRegs:$Rt32),
31010 "$Vd32 = vaslw($Vu32,$Rt32)",
31011 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31012 let hasNewValue = 1;
31013 let opNewValue = 0;
31014 let isCVI = 1;
31015 let isPseudo = 1;
31016 let isCodeGenOnly = 1;
31017 let DecoderNamespace = "EXT_mmvec";
31018 }
31019 def V6_vaslwv : HInst<
31020 (outs HvxVR:$Vd32),
31021 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31022 "$Vd32.w = vasl($Vu32.w,$Vv32.w)",
31023 tc_05ca8cfd, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV60]> {
31024 let Inst{7-5} = 0b100;
31025 let Inst{13-13} = 0b0;
31026 let Inst{31-21} = 0b00011111101;
31027 let hasNewValue = 1;
31028 let opNewValue = 0;
31029 let isCVI = 1;
31030 let DecoderNamespace = "EXT_mmvec";
31031 }
31032 def V6_vaslwv_alt : HInst<
31033 (outs HvxVR:$Vd32),
31034 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31035 "$Vd32 = vaslw($Vu32,$Vv32)",
31036 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31037 let hasNewValue = 1;
31038 let opNewValue = 0;
31039 let isCVI = 1;
31040 let isPseudo = 1;
31041 let isCodeGenOnly = 1;
31042 let DecoderNamespace = "EXT_mmvec";
31043 }
31044 def V6_vasr_into : HInst<
31045 (outs HvxWR:$Vxx32),
31046 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
31047 "$Vxx32.w = vasrinto($Vu32.w,$Vv32.w)",
31048 tc_df80eeb0, TypeCVI_VP_VS>, Enc_3fc427, Requires<[UseHVXV66]> {
31049 let Inst{7-5} = 0b111;
31050 let Inst{13-13} = 0b1;
31051 let Inst{31-21} = 0b00011010101;
31052 let hasNewValue = 1;
31053 let opNewValue = 0;
31054 let isCVI = 1;
31055 let DecoderNamespace = "EXT_mmvec";
31056 let Constraints = "$Vxx32 = $Vxx32in";
31057 }
31058 def V6_vasr_into_alt : HInst<
31059 (outs HvxWR:$Vxx32),
31060 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
31061 "$Vxx32 = vasrinto($Vu32,$Vv32)",
31062 PSEUDO, TypeMAPPING>, Requires<[UseHVXV66]> {
31063 let hasNewValue = 1;
31064 let opNewValue = 0;
31065 let isCVI = 1;
31066 let isPseudo = 1;
31067 let isCodeGenOnly = 1;
31068 let DecoderNamespace = "EXT_mmvec";
31069 let Constraints = "$Vxx32 = $Vxx32in";
31070 }
31071 def V6_vasrh : HInst<
31072 (outs HvxVR:$Vd32),
31073 (ins HvxVR:$Vu32, IntRegs:$Rt32),
31074 "$Vd32.h = vasr($Vu32.h,$Rt32)",
31075 tc_7417e785, TypeCVI_VS>, Enc_b087ac, Requires<[UseHVXV60]> {
31076 let Inst{7-5} = 0b110;
31077 let Inst{13-13} = 0b0;
31078 let Inst{31-21} = 0b00011001011;
31079 let hasNewValue = 1;
31080 let opNewValue = 0;
31081 let isCVI = 1;
31082 let DecoderNamespace = "EXT_mmvec";
31083 }
31084 def V6_vasrh_acc : HInst<
31085 (outs HvxVR:$Vx32),
31086 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
31087 "$Vx32.h += vasr($Vu32.h,$Rt32)",
31088 tc_309dbb4f, TypeCVI_VS>, Enc_5138b3, Requires<[UseHVXV65]> {
31089 let Inst{7-5} = 0b111;
31090 let Inst{13-13} = 0b1;
31091 let Inst{31-21} = 0b00011001100;
31092 let hasNewValue = 1;
31093 let opNewValue = 0;
31094 let isAccumulator = 1;
31095 let isCVI = 1;
31096 let DecoderNamespace = "EXT_mmvec";
31097 let Constraints = "$Vx32 = $Vx32in";
31098 }
31099 def V6_vasrh_acc_alt : HInst<
31100 (outs HvxVR:$Vx32),
31101 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
31102 "$Vx32 += vasrh($Vu32,$Rt32)",
31103 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
31104 let hasNewValue = 1;
31105 let opNewValue = 0;
31106 let isAccumulator = 1;
31107 let isCVI = 1;
31108 let isPseudo = 1;
31109 let isCodeGenOnly = 1;
31110 let DecoderNamespace = "EXT_mmvec";
31111 let Constraints = "$Vx32 = $Vx32in";
31112 }
31113 def V6_vasrh_alt : HInst<
31114 (outs HvxVR:$Vd32),
31115 (ins HvxVR:$Vu32, IntRegs:$Rt32),
31116 "$Vd32 = vasrh($Vu32,$Rt32)",
31117 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31118 let hasNewValue = 1;
31119 let opNewValue = 0;
31120 let isCVI = 1;
31121 let isPseudo = 1;
31122 let isCodeGenOnly = 1;
31123 let DecoderNamespace = "EXT_mmvec";
31124 }
31125 def V6_vasrhbrndsat : HInst<
31126 (outs HvxVR:$Vd32),
31127 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
31128 "$Vd32.b = vasr($Vu32.h,$Vv32.h,$Rt8):rnd:sat",
31129 tc_16ff9ef8, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV60]> {
31130 let Inst{7-5} = 0b000;
31131 let Inst{13-13} = 0b1;
31132 let Inst{31-24} = 0b00011011;
31133 let hasNewValue = 1;
31134 let opNewValue = 0;
31135 let isCVI = 1;
31136 let DecoderNamespace = "EXT_mmvec";
31137 }
31138 def V6_vasrhbsat : HInst<
31139 (outs HvxVR:$Vd32),
31140 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
31141 "$Vd32.b = vasr($Vu32.h,$Vv32.h,$Rt8):sat",
31142 tc_16ff9ef8, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV62]> {
31143 let Inst{7-5} = 0b000;
31144 let Inst{13-13} = 0b0;
31145 let Inst{31-24} = 0b00011000;
31146 let hasNewValue = 1;
31147 let opNewValue = 0;
31148 let isCVI = 1;
31149 let DecoderNamespace = "EXT_mmvec";
31150 }
31151 def V6_vasrhubrndsat : HInst<
31152 (outs HvxVR:$Vd32),
31153 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
31154 "$Vd32.ub = vasr($Vu32.h,$Vv32.h,$Rt8):rnd:sat",
31155 tc_16ff9ef8, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV60]> {
31156 let Inst{7-5} = 0b111;
31157 let Inst{13-13} = 0b0;
31158 let Inst{31-24} = 0b00011011;
31159 let hasNewValue = 1;
31160 let opNewValue = 0;
31161 let isCVI = 1;
31162 let DecoderNamespace = "EXT_mmvec";
31163 }
31164 def V6_vasrhubsat : HInst<
31165 (outs HvxVR:$Vd32),
31166 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
31167 "$Vd32.ub = vasr($Vu32.h,$Vv32.h,$Rt8):sat",
31168 tc_16ff9ef8, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV60]> {
31169 let Inst{7-5} = 0b110;
31170 let Inst{13-13} = 0b0;
31171 let Inst{31-24} = 0b00011011;
31172 let hasNewValue = 1;
31173 let opNewValue = 0;
31174 let isCVI = 1;
31175 let DecoderNamespace = "EXT_mmvec";
31176 }
31177 def V6_vasrhv : HInst<
31178 (outs HvxVR:$Vd32),
31179 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31180 "$Vd32.h = vasr($Vu32.h,$Vv32.h)",
31181 tc_05ca8cfd, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV60]> {
31182 let Inst{7-5} = 0b011;
31183 let Inst{13-13} = 0b0;
31184 let Inst{31-21} = 0b00011111101;
31185 let hasNewValue = 1;
31186 let opNewValue = 0;
31187 let isCVI = 1;
31188 let DecoderNamespace = "EXT_mmvec";
31189 }
31190 def V6_vasrhv_alt : HInst<
31191 (outs HvxVR:$Vd32),
31192 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31193 "$Vd32 = vasrh($Vu32,$Vv32)",
31194 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31195 let hasNewValue = 1;
31196 let opNewValue = 0;
31197 let isCVI = 1;
31198 let isPseudo = 1;
31199 let isCodeGenOnly = 1;
31200 let DecoderNamespace = "EXT_mmvec";
31201 }
31202 def V6_vasruhubrndsat : HInst<
31203 (outs HvxVR:$Vd32),
31204 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
31205 "$Vd32.ub = vasr($Vu32.uh,$Vv32.uh,$Rt8):rnd:sat",
31206 tc_16ff9ef8, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV65]> {
31207 let Inst{7-5} = 0b111;
31208 let Inst{13-13} = 0b0;
31209 let Inst{31-24} = 0b00011000;
31210 let hasNewValue = 1;
31211 let opNewValue = 0;
31212 let isCVI = 1;
31213 let DecoderNamespace = "EXT_mmvec";
31214 }
31215 def V6_vasruhubsat : HInst<
31216 (outs HvxVR:$Vd32),
31217 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
31218 "$Vd32.ub = vasr($Vu32.uh,$Vv32.uh,$Rt8):sat",
31219 tc_16ff9ef8, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV65]> {
31220 let Inst{7-5} = 0b101;
31221 let Inst{13-13} = 0b1;
31222 let Inst{31-24} = 0b00011000;
31223 let hasNewValue = 1;
31224 let opNewValue = 0;
31225 let isCVI = 1;
31226 let DecoderNamespace = "EXT_mmvec";
31227 }
31228 def V6_vasruwuhrndsat : HInst<
31229 (outs HvxVR:$Vd32),
31230 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
31231 "$Vd32.uh = vasr($Vu32.uw,$Vv32.uw,$Rt8):rnd:sat",
31232 tc_16ff9ef8, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV62]> {
31233 let Inst{7-5} = 0b001;
31234 let Inst{13-13} = 0b0;
31235 let Inst{31-24} = 0b00011000;
31236 let hasNewValue = 1;
31237 let opNewValue = 0;
31238 let isCVI = 1;
31239 let DecoderNamespace = "EXT_mmvec";
31240 }
31241 def V6_vasruwuhsat : HInst<
31242 (outs HvxVR:$Vd32),
31243 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
31244 "$Vd32.uh = vasr($Vu32.uw,$Vv32.uw,$Rt8):sat",
31245 tc_16ff9ef8, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV65]> {
31246 let Inst{7-5} = 0b100;
31247 let Inst{13-13} = 0b1;
31248 let Inst{31-24} = 0b00011000;
31249 let hasNewValue = 1;
31250 let opNewValue = 0;
31251 let isCVI = 1;
31252 let DecoderNamespace = "EXT_mmvec";
31253 }
31254 def V6_vasrw : HInst<
31255 (outs HvxVR:$Vd32),
31256 (ins HvxVR:$Vu32, IntRegs:$Rt32),
31257 "$Vd32.w = vasr($Vu32.w,$Rt32)",
31258 tc_7417e785, TypeCVI_VS>, Enc_b087ac, Requires<[UseHVXV60]> {
31259 let Inst{7-5} = 0b101;
31260 let Inst{13-13} = 0b0;
31261 let Inst{31-21} = 0b00011001011;
31262 let hasNewValue = 1;
31263 let opNewValue = 0;
31264 let isCVI = 1;
31265 let DecoderNamespace = "EXT_mmvec";
31266 }
31267 def V6_vasrw_acc : HInst<
31268 (outs HvxVR:$Vx32),
31269 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
31270 "$Vx32.w += vasr($Vu32.w,$Rt32)",
31271 tc_309dbb4f, TypeCVI_VS>, Enc_5138b3, Requires<[UseHVXV60]> {
31272 let Inst{7-5} = 0b101;
31273 let Inst{13-13} = 0b1;
31274 let Inst{31-21} = 0b00011001011;
31275 let hasNewValue = 1;
31276 let opNewValue = 0;
31277 let isAccumulator = 1;
31278 let isCVI = 1;
31279 let DecoderNamespace = "EXT_mmvec";
31280 let Constraints = "$Vx32 = $Vx32in";
31281 }
31282 def V6_vasrw_acc_alt : HInst<
31283 (outs HvxVR:$Vx32),
31284 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
31285 "$Vx32 += vasrw($Vu32,$Rt32)",
31286 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31287 let hasNewValue = 1;
31288 let opNewValue = 0;
31289 let isAccumulator = 1;
31290 let isCVI = 1;
31291 let isPseudo = 1;
31292 let isCodeGenOnly = 1;
31293 let DecoderNamespace = "EXT_mmvec";
31294 let Constraints = "$Vx32 = $Vx32in";
31295 }
31296 def V6_vasrw_alt : HInst<
31297 (outs HvxVR:$Vd32),
31298 (ins HvxVR:$Vu32, IntRegs:$Rt32),
31299 "$Vd32 = vasrw($Vu32,$Rt32)",
31300 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31301 let hasNewValue = 1;
31302 let opNewValue = 0;
31303 let isCVI = 1;
31304 let isPseudo = 1;
31305 let isCodeGenOnly = 1;
31306 let DecoderNamespace = "EXT_mmvec";
31307 }
31308 def V6_vasrwh : HInst<
31309 (outs HvxVR:$Vd32),
31310 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
31311 "$Vd32.h = vasr($Vu32.w,$Vv32.w,$Rt8)",
31312 tc_16ff9ef8, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV60]> {
31313 let Inst{7-5} = 0b010;
31314 let Inst{13-13} = 0b0;
31315 let Inst{31-24} = 0b00011011;
31316 let hasNewValue = 1;
31317 let opNewValue = 0;
31318 let isCVI = 1;
31319 let DecoderNamespace = "EXT_mmvec";
31320 }
31321 def V6_vasrwhrndsat : HInst<
31322 (outs HvxVR:$Vd32),
31323 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
31324 "$Vd32.h = vasr($Vu32.w,$Vv32.w,$Rt8):rnd:sat",
31325 tc_16ff9ef8, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV60]> {
31326 let Inst{7-5} = 0b100;
31327 let Inst{13-13} = 0b0;
31328 let Inst{31-24} = 0b00011011;
31329 let hasNewValue = 1;
31330 let opNewValue = 0;
31331 let isCVI = 1;
31332 let DecoderNamespace = "EXT_mmvec";
31333 }
31334 def V6_vasrwhsat : HInst<
31335 (outs HvxVR:$Vd32),
31336 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
31337 "$Vd32.h = vasr($Vu32.w,$Vv32.w,$Rt8):sat",
31338 tc_16ff9ef8, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV60]> {
31339 let Inst{7-5} = 0b011;
31340 let Inst{13-13} = 0b0;
31341 let Inst{31-24} = 0b00011011;
31342 let hasNewValue = 1;
31343 let opNewValue = 0;
31344 let isCVI = 1;
31345 let DecoderNamespace = "EXT_mmvec";
31346 }
31347 def V6_vasrwuhrndsat : HInst<
31348 (outs HvxVR:$Vd32),
31349 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
31350 "$Vd32.uh = vasr($Vu32.w,$Vv32.w,$Rt8):rnd:sat",
31351 tc_16ff9ef8, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV62]> {
31352 let Inst{7-5} = 0b010;
31353 let Inst{13-13} = 0b0;
31354 let Inst{31-24} = 0b00011000;
31355 let hasNewValue = 1;
31356 let opNewValue = 0;
31357 let isCVI = 1;
31358 let DecoderNamespace = "EXT_mmvec";
31359 }
31360 def V6_vasrwuhsat : HInst<
31361 (outs HvxVR:$Vd32),
31362 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
31363 "$Vd32.uh = vasr($Vu32.w,$Vv32.w,$Rt8):sat",
31364 tc_16ff9ef8, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV60]> {
31365 let Inst{7-5} = 0b101;
31366 let Inst{13-13} = 0b0;
31367 let Inst{31-24} = 0b00011011;
31368 let hasNewValue = 1;
31369 let opNewValue = 0;
31370 let isCVI = 1;
31371 let DecoderNamespace = "EXT_mmvec";
31372 }
31373 def V6_vasrwv : HInst<
31374 (outs HvxVR:$Vd32),
31375 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31376 "$Vd32.w = vasr($Vu32.w,$Vv32.w)",
31377 tc_05ca8cfd, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV60]> {
31378 let Inst{7-5} = 0b000;
31379 let Inst{13-13} = 0b0;
31380 let Inst{31-21} = 0b00011111101;
31381 let hasNewValue = 1;
31382 let opNewValue = 0;
31383 let isCVI = 1;
31384 let DecoderNamespace = "EXT_mmvec";
31385 }
31386 def V6_vasrwv_alt : HInst<
31387 (outs HvxVR:$Vd32),
31388 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31389 "$Vd32 = vasrw($Vu32,$Vv32)",
31390 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31391 let hasNewValue = 1;
31392 let opNewValue = 0;
31393 let isCVI = 1;
31394 let isPseudo = 1;
31395 let isCodeGenOnly = 1;
31396 let DecoderNamespace = "EXT_mmvec";
31397 }
31398 def V6_vassign : HInst<
31399 (outs HvxVR:$Vd32),
31400 (ins HvxVR:$Vu32),
31401 "$Vd32 = $Vu32",
31402 tc_0ec46cf9, TypeCVI_VA>, Enc_e7581c, Requires<[UseHVXV60]> {
31403 let Inst{7-5} = 0b111;
31404 let Inst{13-13} = 0b1;
31405 let Inst{31-16} = 0b0001111000000011;
31406 let hasNewValue = 1;
31407 let opNewValue = 0;
31408 let isCVI = 1;
31409 let DecoderNamespace = "EXT_mmvec";
31410 }
31411 def V6_vassignp : HInst<
31412 (outs HvxWR:$Vdd32),
31413 (ins HvxWR:$Vuu32),
31414 "$Vdd32 = $Vuu32",
31415 CVI_VA, TypeCVI_VA_DV>, Requires<[UseHVXV60]> {
31416 let hasNewValue = 1;
31417 let opNewValue = 0;
31418 let isCVI = 1;
31419 let isPseudo = 1;
31420 let DecoderNamespace = "EXT_mmvec";
31421 }
31422 def V6_vavgb : HInst<
31423 (outs HvxVR:$Vd32),
31424 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31425 "$Vd32.b = vavg($Vu32.b,$Vv32.b)",
31426 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV65]> {
31427 let Inst{7-5} = 0b100;
31428 let Inst{13-13} = 0b1;
31429 let Inst{31-21} = 0b00011111000;
31430 let hasNewValue = 1;
31431 let opNewValue = 0;
31432 let isCVI = 1;
31433 let DecoderNamespace = "EXT_mmvec";
31434 }
31435 def V6_vavgb_alt : HInst<
31436 (outs HvxVR:$Vd32),
31437 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31438 "$Vd32 = vavgb($Vu32,$Vv32)",
31439 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
31440 let hasNewValue = 1;
31441 let opNewValue = 0;
31442 let isCVI = 1;
31443 let isPseudo = 1;
31444 let isCodeGenOnly = 1;
31445 let DecoderNamespace = "EXT_mmvec";
31446 }
31447 def V6_vavgbrnd : HInst<
31448 (outs HvxVR:$Vd32),
31449 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31450 "$Vd32.b = vavg($Vu32.b,$Vv32.b):rnd",
31451 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV65]> {
31452 let Inst{7-5} = 0b101;
31453 let Inst{13-13} = 0b1;
31454 let Inst{31-21} = 0b00011111000;
31455 let hasNewValue = 1;
31456 let opNewValue = 0;
31457 let isCVI = 1;
31458 let DecoderNamespace = "EXT_mmvec";
31459 }
31460 def V6_vavgbrnd_alt : HInst<
31461 (outs HvxVR:$Vd32),
31462 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31463 "$Vd32 = vavgb($Vu32,$Vv32):rnd",
31464 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
31465 let hasNewValue = 1;
31466 let opNewValue = 0;
31467 let isCVI = 1;
31468 let isPseudo = 1;
31469 let isCodeGenOnly = 1;
31470 let DecoderNamespace = "EXT_mmvec";
31471 }
31472 def V6_vavgh : HInst<
31473 (outs HvxVR:$Vd32),
31474 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31475 "$Vd32.h = vavg($Vu32.h,$Vv32.h)",
31476 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
31477 let Inst{7-5} = 0b110;
31478 let Inst{13-13} = 0b0;
31479 let Inst{31-21} = 0b00011100110;
31480 let hasNewValue = 1;
31481 let opNewValue = 0;
31482 let isCVI = 1;
31483 let DecoderNamespace = "EXT_mmvec";
31484 }
31485 def V6_vavgh_alt : HInst<
31486 (outs HvxVR:$Vd32),
31487 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31488 "$Vd32 = vavgh($Vu32,$Vv32)",
31489 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31490 let hasNewValue = 1;
31491 let opNewValue = 0;
31492 let isCVI = 1;
31493 let isPseudo = 1;
31494 let isCodeGenOnly = 1;
31495 let DecoderNamespace = "EXT_mmvec";
31496 }
31497 def V6_vavghrnd : HInst<
31498 (outs HvxVR:$Vd32),
31499 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31500 "$Vd32.h = vavg($Vu32.h,$Vv32.h):rnd",
31501 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
31502 let Inst{7-5} = 0b101;
31503 let Inst{13-13} = 0b0;
31504 let Inst{31-21} = 0b00011100111;
31505 let hasNewValue = 1;
31506 let opNewValue = 0;
31507 let isCVI = 1;
31508 let DecoderNamespace = "EXT_mmvec";
31509 }
31510 def V6_vavghrnd_alt : HInst<
31511 (outs HvxVR:$Vd32),
31512 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31513 "$Vd32 = vavgh($Vu32,$Vv32):rnd",
31514 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31515 let hasNewValue = 1;
31516 let opNewValue = 0;
31517 let isCVI = 1;
31518 let isPseudo = 1;
31519 let isCodeGenOnly = 1;
31520 let DecoderNamespace = "EXT_mmvec";
31521 }
31522 def V6_vavgub : HInst<
31523 (outs HvxVR:$Vd32),
31524 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31525 "$Vd32.ub = vavg($Vu32.ub,$Vv32.ub)",
31526 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
31527 let Inst{7-5} = 0b100;
31528 let Inst{13-13} = 0b0;
31529 let Inst{31-21} = 0b00011100110;
31530 let hasNewValue = 1;
31531 let opNewValue = 0;
31532 let isCVI = 1;
31533 let DecoderNamespace = "EXT_mmvec";
31534 }
31535 def V6_vavgub_alt : HInst<
31536 (outs HvxVR:$Vd32),
31537 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31538 "$Vd32 = vavgub($Vu32,$Vv32)",
31539 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31540 let hasNewValue = 1;
31541 let opNewValue = 0;
31542 let isCVI = 1;
31543 let isPseudo = 1;
31544 let isCodeGenOnly = 1;
31545 let DecoderNamespace = "EXT_mmvec";
31546 }
31547 def V6_vavgubrnd : HInst<
31548 (outs HvxVR:$Vd32),
31549 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31550 "$Vd32.ub = vavg($Vu32.ub,$Vv32.ub):rnd",
31551 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
31552 let Inst{7-5} = 0b011;
31553 let Inst{13-13} = 0b0;
31554 let Inst{31-21} = 0b00011100111;
31555 let hasNewValue = 1;
31556 let opNewValue = 0;
31557 let isCVI = 1;
31558 let DecoderNamespace = "EXT_mmvec";
31559 }
31560 def V6_vavgubrnd_alt : HInst<
31561 (outs HvxVR:$Vd32),
31562 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31563 "$Vd32 = vavgub($Vu32,$Vv32):rnd",
31564 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31565 let hasNewValue = 1;
31566 let opNewValue = 0;
31567 let isCVI = 1;
31568 let isPseudo = 1;
31569 let isCodeGenOnly = 1;
31570 let DecoderNamespace = "EXT_mmvec";
31571 }
31572 def V6_vavguh : HInst<
31573 (outs HvxVR:$Vd32),
31574 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31575 "$Vd32.uh = vavg($Vu32.uh,$Vv32.uh)",
31576 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
31577 let Inst{7-5} = 0b101;
31578 let Inst{13-13} = 0b0;
31579 let Inst{31-21} = 0b00011100110;
31580 let hasNewValue = 1;
31581 let opNewValue = 0;
31582 let isCVI = 1;
31583 let DecoderNamespace = "EXT_mmvec";
31584 }
31585 def V6_vavguh_alt : HInst<
31586 (outs HvxVR:$Vd32),
31587 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31588 "$Vd32 = vavguh($Vu32,$Vv32)",
31589 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31590 let hasNewValue = 1;
31591 let opNewValue = 0;
31592 let isCVI = 1;
31593 let isPseudo = 1;
31594 let isCodeGenOnly = 1;
31595 let DecoderNamespace = "EXT_mmvec";
31596 }
31597 def V6_vavguhrnd : HInst<
31598 (outs HvxVR:$Vd32),
31599 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31600 "$Vd32.uh = vavg($Vu32.uh,$Vv32.uh):rnd",
31601 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
31602 let Inst{7-5} = 0b100;
31603 let Inst{13-13} = 0b0;
31604 let Inst{31-21} = 0b00011100111;
31605 let hasNewValue = 1;
31606 let opNewValue = 0;
31607 let isCVI = 1;
31608 let DecoderNamespace = "EXT_mmvec";
31609 }
31610 def V6_vavguhrnd_alt : HInst<
31611 (outs HvxVR:$Vd32),
31612 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31613 "$Vd32 = vavguh($Vu32,$Vv32):rnd",
31614 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31615 let hasNewValue = 1;
31616 let opNewValue = 0;
31617 let isCVI = 1;
31618 let isPseudo = 1;
31619 let isCodeGenOnly = 1;
31620 let DecoderNamespace = "EXT_mmvec";
31621 }
31622 def V6_vavguw : HInst<
31623 (outs HvxVR:$Vd32),
31624 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31625 "$Vd32.uw = vavg($Vu32.uw,$Vv32.uw)",
31626 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV65]> {
31627 let Inst{7-5} = 0b010;
31628 let Inst{13-13} = 0b1;
31629 let Inst{31-21} = 0b00011111000;
31630 let hasNewValue = 1;
31631 let opNewValue = 0;
31632 let isCVI = 1;
31633 let DecoderNamespace = "EXT_mmvec";
31634 }
31635 def V6_vavguw_alt : HInst<
31636 (outs HvxVR:$Vd32),
31637 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31638 "$Vd32 = vavguw($Vu32,$Vv32)",
31639 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
31640 let hasNewValue = 1;
31641 let opNewValue = 0;
31642 let isCVI = 1;
31643 let isPseudo = 1;
31644 let isCodeGenOnly = 1;
31645 let DecoderNamespace = "EXT_mmvec";
31646 }
31647 def V6_vavguwrnd : HInst<
31648 (outs HvxVR:$Vd32),
31649 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31650 "$Vd32.uw = vavg($Vu32.uw,$Vv32.uw):rnd",
31651 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV65]> {
31652 let Inst{7-5} = 0b011;
31653 let Inst{13-13} = 0b1;
31654 let Inst{31-21} = 0b00011111000;
31655 let hasNewValue = 1;
31656 let opNewValue = 0;
31657 let isCVI = 1;
31658 let DecoderNamespace = "EXT_mmvec";
31659 }
31660 def V6_vavguwrnd_alt : HInst<
31661 (outs HvxVR:$Vd32),
31662 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31663 "$Vd32 = vavguw($Vu32,$Vv32):rnd",
31664 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
31665 let hasNewValue = 1;
31666 let opNewValue = 0;
31667 let isCVI = 1;
31668 let isPseudo = 1;
31669 let isCodeGenOnly = 1;
31670 let DecoderNamespace = "EXT_mmvec";
31671 }
31672 def V6_vavgw : HInst<
31673 (outs HvxVR:$Vd32),
31674 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31675 "$Vd32.w = vavg($Vu32.w,$Vv32.w)",
31676 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
31677 let Inst{7-5} = 0b111;
31678 let Inst{13-13} = 0b0;
31679 let Inst{31-21} = 0b00011100110;
31680 let hasNewValue = 1;
31681 let opNewValue = 0;
31682 let isCVI = 1;
31683 let DecoderNamespace = "EXT_mmvec";
31684 }
31685 def V6_vavgw_alt : HInst<
31686 (outs HvxVR:$Vd32),
31687 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31688 "$Vd32 = vavgw($Vu32,$Vv32)",
31689 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31690 let hasNewValue = 1;
31691 let opNewValue = 0;
31692 let isCVI = 1;
31693 let isPseudo = 1;
31694 let isCodeGenOnly = 1;
31695 let DecoderNamespace = "EXT_mmvec";
31696 }
31697 def V6_vavgwrnd : HInst<
31698 (outs HvxVR:$Vd32),
31699 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31700 "$Vd32.w = vavg($Vu32.w,$Vv32.w):rnd",
31701 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
31702 let Inst{7-5} = 0b110;
31703 let Inst{13-13} = 0b0;
31704 let Inst{31-21} = 0b00011100111;
31705 let hasNewValue = 1;
31706 let opNewValue = 0;
31707 let isCVI = 1;
31708 let DecoderNamespace = "EXT_mmvec";
31709 }
31710 def V6_vavgwrnd_alt : HInst<
31711 (outs HvxVR:$Vd32),
31712 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31713 "$Vd32 = vavgw($Vu32,$Vv32):rnd",
31714 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31715 let hasNewValue = 1;
31716 let opNewValue = 0;
31717 let isCVI = 1;
31718 let isPseudo = 1;
31719 let isCodeGenOnly = 1;
31720 let DecoderNamespace = "EXT_mmvec";
31721 }
31722 def V6_vccombine : HInst<
31723 (outs HvxWR:$Vdd32),
31724 (ins PredRegs:$Ps4, HvxVR:$Vu32, HvxVR:$Vv32),
31725 "if ($Ps4) $Vdd32 = vcombine($Vu32,$Vv32)",
31726 tc_af25efd9, TypeCVI_VA_DV>, Enc_8c2412, Requires<[UseHVXV60]> {
31727 let Inst{7-7} = 0b0;
31728 let Inst{13-13} = 0b0;
31729 let Inst{31-21} = 0b00011010011;
31730 let isPredicated = 1;
31731 let hasNewValue = 1;
31732 let opNewValue = 0;
31733 let isCVI = 1;
31734 let DecoderNamespace = "EXT_mmvec";
31735 }
31736 def V6_vcl0h : HInst<
31737 (outs HvxVR:$Vd32),
31738 (ins HvxVR:$Vu32),
31739 "$Vd32.uh = vcl0($Vu32.uh)",
31740 tc_51d0ecc3, TypeCVI_VS>, Enc_e7581c, Requires<[UseHVXV60]> {
31741 let Inst{7-5} = 0b111;
31742 let Inst{13-13} = 0b0;
31743 let Inst{31-16} = 0b0001111000000010;
31744 let hasNewValue = 1;
31745 let opNewValue = 0;
31746 let isCVI = 1;
31747 let DecoderNamespace = "EXT_mmvec";
31748 }
31749 def V6_vcl0h_alt : HInst<
31750 (outs HvxVR:$Vd32),
31751 (ins HvxVR:$Vu32),
31752 "$Vd32 = vcl0h($Vu32)",
31753 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31754 let hasNewValue = 1;
31755 let opNewValue = 0;
31756 let isCVI = 1;
31757 let isPseudo = 1;
31758 let isCodeGenOnly = 1;
31759 let DecoderNamespace = "EXT_mmvec";
31760 }
31761 def V6_vcl0w : HInst<
31762 (outs HvxVR:$Vd32),
31763 (ins HvxVR:$Vu32),
31764 "$Vd32.uw = vcl0($Vu32.uw)",
31765 tc_51d0ecc3, TypeCVI_VS>, Enc_e7581c, Requires<[UseHVXV60]> {
31766 let Inst{7-5} = 0b101;
31767 let Inst{13-13} = 0b0;
31768 let Inst{31-16} = 0b0001111000000010;
31769 let hasNewValue = 1;
31770 let opNewValue = 0;
31771 let isCVI = 1;
31772 let DecoderNamespace = "EXT_mmvec";
31773 }
31774 def V6_vcl0w_alt : HInst<
31775 (outs HvxVR:$Vd32),
31776 (ins HvxVR:$Vu32),
31777 "$Vd32 = vcl0w($Vu32)",
31778 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31779 let hasNewValue = 1;
31780 let opNewValue = 0;
31781 let isCVI = 1;
31782 let isPseudo = 1;
31783 let isCodeGenOnly = 1;
31784 let DecoderNamespace = "EXT_mmvec";
31785 }
31786 def V6_vcmov : HInst<
31787 (outs HvxVR:$Vd32),
31788 (ins PredRegs:$Ps4, HvxVR:$Vu32),
31789 "if ($Ps4) $Vd32 = $Vu32",
31790 tc_3aacf4a8, TypeCVI_VA>, Enc_770858, Requires<[UseHVXV60]> {
31791 let Inst{7-7} = 0b0;
31792 let Inst{13-13} = 0b0;
31793 let Inst{31-16} = 0b0001101000000000;
31794 let isPredicated = 1;
31795 let hasNewValue = 1;
31796 let opNewValue = 0;
31797 let isCVI = 1;
31798 let DecoderNamespace = "EXT_mmvec";
31799 }
31800 def V6_vcombine : HInst<
31801 (outs HvxWR:$Vdd32),
31802 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31803 "$Vdd32 = vcombine($Vu32,$Vv32)",
31804 tc_db5555f3, TypeCVI_VA_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
31805 let Inst{7-5} = 0b111;
31806 let Inst{13-13} = 0b0;
31807 let Inst{31-21} = 0b00011111010;
31808 let hasNewValue = 1;
31809 let opNewValue = 0;
31810 let isCVI = 1;
31811 let isRegSequence = 1;
31812 let DecoderNamespace = "EXT_mmvec";
31813 }
31814 def V6_vd0 : HInst<
31815 (outs HvxVR:$Vd32),
31816 (ins),
31817 "$Vd32 = #0",
31818 CVI_VA, TypeCVI_VA>, Requires<[UseHVXV60]> {
31819 let hasNewValue = 1;
31820 let opNewValue = 0;
31821 let isCVI = 1;
31822 let isPseudo = 1;
31823 let isCodeGenOnly = 1;
31824 let DecoderNamespace = "EXT_mmvec";
31825 }
31826 def V6_vdd0 : HInst<
31827 (outs HvxWR:$Vdd32),
31828 (ins),
31829 "$Vdd32 = #0",
31830 tc_718b5c53, TypeMAPPING>, Requires<[UseHVXV65]> {
31831 let hasNewValue = 1;
31832 let opNewValue = 0;
31833 let isCVI = 1;
31834 let isPseudo = 1;
31835 let isCodeGenOnly = 1;
31836 let DecoderNamespace = "EXT_mmvec";
31837 }
31838 def V6_vdeal : HInst<
31839 (outs HvxVR:$Vy32, HvxVR:$Vx32),
31840 (ins HvxVR:$Vy32in, HvxVR:$Vx32in, IntRegs:$Rt32),
31841 "vdeal($Vy32,$Vx32,$Rt32)",
31842 tc_561aaa58, TypeCVI_VP_VS>, Enc_989021, Requires<[UseHVXV60]> {
31843 let Inst{7-5} = 0b010;
31844 let Inst{13-13} = 0b1;
31845 let Inst{31-21} = 0b00011001111;
31846 let hasNewValue = 1;
31847 let opNewValue = 0;
31848 let hasNewValue2 = 1;
31849 let opNewValue2 = 1;
31850 let isCVI = 1;
31851 let DecoderNamespace = "EXT_mmvec";
31852 let Constraints = "$Vy32 = $Vy32in, $Vx32 = $Vx32in";
31853 }
31854 def V6_vdealb : HInst<
31855 (outs HvxVR:$Vd32),
31856 (ins HvxVR:$Vu32),
31857 "$Vd32.b = vdeal($Vu32.b)",
31858 tc_946013d8, TypeCVI_VP>, Enc_e7581c, Requires<[UseHVXV60]> {
31859 let Inst{7-5} = 0b111;
31860 let Inst{13-13} = 0b0;
31861 let Inst{31-16} = 0b0001111000000000;
31862 let hasNewValue = 1;
31863 let opNewValue = 0;
31864 let isCVI = 1;
31865 let DecoderNamespace = "EXT_mmvec";
31866 }
31867 def V6_vdealb4w : HInst<
31868 (outs HvxVR:$Vd32),
31869 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31870 "$Vd32.b = vdeale($Vu32.b,$Vv32.b)",
31871 tc_46d6c3e0, TypeCVI_VP>, Enc_45364e, Requires<[UseHVXV60]> {
31872 let Inst{7-5} = 0b111;
31873 let Inst{13-13} = 0b0;
31874 let Inst{31-21} = 0b00011111001;
31875 let hasNewValue = 1;
31876 let opNewValue = 0;
31877 let isCVI = 1;
31878 let DecoderNamespace = "EXT_mmvec";
31879 }
31880 def V6_vdealb4w_alt : HInst<
31881 (outs HvxVR:$Vd32),
31882 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31883 "$Vd32 = vdealb4w($Vu32,$Vv32)",
31884 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31885 let hasNewValue = 1;
31886 let opNewValue = 0;
31887 let isCVI = 1;
31888 let isPseudo = 1;
31889 let isCodeGenOnly = 1;
31890 let DecoderNamespace = "EXT_mmvec";
31891 }
31892 def V6_vdealb_alt : HInst<
31893 (outs HvxVR:$Vd32),
31894 (ins HvxVR:$Vu32),
31895 "$Vd32 = vdealb($Vu32)",
31896 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31897 let hasNewValue = 1;
31898 let opNewValue = 0;
31899 let isCVI = 1;
31900 let isPseudo = 1;
31901 let isCodeGenOnly = 1;
31902 let DecoderNamespace = "EXT_mmvec";
31903 }
31904 def V6_vdealh : HInst<
31905 (outs HvxVR:$Vd32),
31906 (ins HvxVR:$Vu32),
31907 "$Vd32.h = vdeal($Vu32.h)",
31908 tc_946013d8, TypeCVI_VP>, Enc_e7581c, Requires<[UseHVXV60]> {
31909 let Inst{7-5} = 0b110;
31910 let Inst{13-13} = 0b0;
31911 let Inst{31-16} = 0b0001111000000000;
31912 let hasNewValue = 1;
31913 let opNewValue = 0;
31914 let isCVI = 1;
31915 let DecoderNamespace = "EXT_mmvec";
31916 }
31917 def V6_vdealh_alt : HInst<
31918 (outs HvxVR:$Vd32),
31919 (ins HvxVR:$Vu32),
31920 "$Vd32 = vdealh($Vu32)",
31921 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31922 let hasNewValue = 1;
31923 let opNewValue = 0;
31924 let isCVI = 1;
31925 let isPseudo = 1;
31926 let isCodeGenOnly = 1;
31927 let DecoderNamespace = "EXT_mmvec";
31928 }
31929 def V6_vdealvdd : HInst<
31930 (outs HvxWR:$Vdd32),
31931 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
31932 "$Vdd32 = vdeal($Vu32,$Vv32,$Rt8)",
31933 tc_87adc037, TypeCVI_VP_VS>, Enc_24a7dc, Requires<[UseHVXV60]> {
31934 let Inst{7-5} = 0b100;
31935 let Inst{13-13} = 0b1;
31936 let Inst{31-24} = 0b00011011;
31937 let hasNewValue = 1;
31938 let opNewValue = 0;
31939 let isCVI = 1;
31940 let DecoderNamespace = "EXT_mmvec";
31941 }
31942 def V6_vdelta : HInst<
31943 (outs HvxVR:$Vd32),
31944 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31945 "$Vd32 = vdelta($Vu32,$Vv32)",
31946 tc_46d6c3e0, TypeCVI_VP>, Enc_45364e, Requires<[UseHVXV60]> {
31947 let Inst{7-5} = 0b001;
31948 let Inst{13-13} = 0b0;
31949 let Inst{31-21} = 0b00011111001;
31950 let hasNewValue = 1;
31951 let opNewValue = 0;
31952 let isCVI = 1;
31953 let DecoderNamespace = "EXT_mmvec";
31954 }
31955 def V6_vdmpybus : HInst<
31956 (outs HvxVR:$Vd32),
31957 (ins HvxVR:$Vu32, IntRegs:$Rt32),
31958 "$Vd32.h = vdmpy($Vu32.ub,$Rt32.b)",
31959 tc_649072c2, TypeCVI_VX>, Enc_b087ac, Requires<[UseHVXV60]> {
31960 let Inst{7-5} = 0b110;
31961 let Inst{13-13} = 0b0;
31962 let Inst{31-21} = 0b00011001000;
31963 let hasNewValue = 1;
31964 let opNewValue = 0;
31965 let isCVI = 1;
31966 let DecoderNamespace = "EXT_mmvec";
31967 }
31968 def V6_vdmpybus_acc : HInst<
31969 (outs HvxVR:$Vx32),
31970 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
31971 "$Vx32.h += vdmpy($Vu32.ub,$Rt32.b)",
31972 tc_b091f1c6, TypeCVI_VX>, Enc_5138b3, Requires<[UseHVXV60]> {
31973 let Inst{7-5} = 0b110;
31974 let Inst{13-13} = 0b1;
31975 let Inst{31-21} = 0b00011001000;
31976 let hasNewValue = 1;
31977 let opNewValue = 0;
31978 let isAccumulator = 1;
31979 let isCVI = 1;
31980 let DecoderNamespace = "EXT_mmvec";
31981 let Constraints = "$Vx32 = $Vx32in";
31982 }
31983 def V6_vdmpybus_acc_alt : HInst<
31984 (outs HvxVR:$Vx32),
31985 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
31986 "$Vx32 += vdmpybus($Vu32,$Rt32)",
31987 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31988 let hasNewValue = 1;
31989 let opNewValue = 0;
31990 let isAccumulator = 1;
31991 let isCVI = 1;
31992 let isPseudo = 1;
31993 let isCodeGenOnly = 1;
31994 let DecoderNamespace = "EXT_mmvec";
31995 let Constraints = "$Vx32 = $Vx32in";
31996 }
31997 def V6_vdmpybus_alt : HInst<
31998 (outs HvxVR:$Vd32),
31999 (ins HvxVR:$Vu32, IntRegs:$Rt32),
32000 "$Vd32 = vdmpybus($Vu32,$Rt32)",
32001 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32002 let hasNewValue = 1;
32003 let opNewValue = 0;
32004 let isCVI = 1;
32005 let isPseudo = 1;
32006 let isCodeGenOnly = 1;
32007 let DecoderNamespace = "EXT_mmvec";
32008 }
32009 def V6_vdmpybus_dv : HInst<
32010 (outs HvxWR:$Vdd32),
32011 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
32012 "$Vdd32.h = vdmpy($Vuu32.ub,$Rt32.b)",
32013 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_aad80c, Requires<[UseHVXV60]> {
32014 let Inst{7-5} = 0b111;
32015 let Inst{13-13} = 0b0;
32016 let Inst{31-21} = 0b00011001000;
32017 let hasNewValue = 1;
32018 let opNewValue = 0;
32019 let isCVI = 1;
32020 let DecoderNamespace = "EXT_mmvec";
32021 }
32022 def V6_vdmpybus_dv_acc : HInst<
32023 (outs HvxWR:$Vxx32),
32024 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
32025 "$Vxx32.h += vdmpy($Vuu32.ub,$Rt32.b)",
32026 tc_660769f1, TypeCVI_VX_DV>, Enc_d6990d, Requires<[UseHVXV60]> {
32027 let Inst{7-5} = 0b111;
32028 let Inst{13-13} = 0b1;
32029 let Inst{31-21} = 0b00011001000;
32030 let hasNewValue = 1;
32031 let opNewValue = 0;
32032 let isAccumulator = 1;
32033 let isCVI = 1;
32034 let DecoderNamespace = "EXT_mmvec";
32035 let Constraints = "$Vxx32 = $Vxx32in";
32036 }
32037 def V6_vdmpybus_dv_acc_alt : HInst<
32038 (outs HvxWR:$Vxx32),
32039 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
32040 "$Vxx32 += vdmpybus($Vuu32,$Rt32)",
32041 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32042 let hasNewValue = 1;
32043 let opNewValue = 0;
32044 let isAccumulator = 1;
32045 let isCVI = 1;
32046 let isPseudo = 1;
32047 let isCodeGenOnly = 1;
32048 let DecoderNamespace = "EXT_mmvec";
32049 let Constraints = "$Vxx32 = $Vxx32in";
32050 }
32051 def V6_vdmpybus_dv_alt : HInst<
32052 (outs HvxWR:$Vdd32),
32053 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
32054 "$Vdd32 = vdmpybus($Vuu32,$Rt32)",
32055 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32056 let hasNewValue = 1;
32057 let opNewValue = 0;
32058 let isCVI = 1;
32059 let isPseudo = 1;
32060 let isCodeGenOnly = 1;
32061 let DecoderNamespace = "EXT_mmvec";
32062 }
32063 def V6_vdmpyhb : HInst<
32064 (outs HvxVR:$Vd32),
32065 (ins HvxVR:$Vu32, IntRegs:$Rt32),
32066 "$Vd32.w = vdmpy($Vu32.h,$Rt32.b)",
32067 tc_649072c2, TypeCVI_VX>, Enc_b087ac, Requires<[UseHVXV60]> {
32068 let Inst{7-5} = 0b010;
32069 let Inst{13-13} = 0b0;
32070 let Inst{31-21} = 0b00011001000;
32071 let hasNewValue = 1;
32072 let opNewValue = 0;
32073 let isCVI = 1;
32074 let DecoderNamespace = "EXT_mmvec";
32075 }
32076 def V6_vdmpyhb_acc : HInst<
32077 (outs HvxVR:$Vx32),
32078 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
32079 "$Vx32.w += vdmpy($Vu32.h,$Rt32.b)",
32080 tc_b091f1c6, TypeCVI_VX>, Enc_5138b3, Requires<[UseHVXV60]> {
32081 let Inst{7-5} = 0b011;
32082 let Inst{13-13} = 0b1;
32083 let Inst{31-21} = 0b00011001000;
32084 let hasNewValue = 1;
32085 let opNewValue = 0;
32086 let isAccumulator = 1;
32087 let isCVI = 1;
32088 let DecoderNamespace = "EXT_mmvec";
32089 let Constraints = "$Vx32 = $Vx32in";
32090 }
32091 def V6_vdmpyhb_acc_alt : HInst<
32092 (outs HvxVR:$Vx32),
32093 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
32094 "$Vx32 += vdmpyhb($Vu32,$Rt32)",
32095 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32096 let hasNewValue = 1;
32097 let opNewValue = 0;
32098 let isAccumulator = 1;
32099 let isCVI = 1;
32100 let isPseudo = 1;
32101 let isCodeGenOnly = 1;
32102 let DecoderNamespace = "EXT_mmvec";
32103 let Constraints = "$Vx32 = $Vx32in";
32104 }
32105 def V6_vdmpyhb_alt : HInst<
32106 (outs HvxVR:$Vd32),
32107 (ins HvxVR:$Vu32, IntRegs:$Rt32),
32108 "$Vd32 = vdmpyhb($Vu32,$Rt32)",
32109 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32110 let hasNewValue = 1;
32111 let opNewValue = 0;
32112 let isCVI = 1;
32113 let isPseudo = 1;
32114 let isCodeGenOnly = 1;
32115 let DecoderNamespace = "EXT_mmvec";
32116 }
32117 def V6_vdmpyhb_dv : HInst<
32118 (outs HvxWR:$Vdd32),
32119 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
32120 "$Vdd32.w = vdmpy($Vuu32.h,$Rt32.b)",
32121 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_aad80c, Requires<[UseHVXV60]> {
32122 let Inst{7-5} = 0b100;
32123 let Inst{13-13} = 0b0;
32124 let Inst{31-21} = 0b00011001001;
32125 let hasNewValue = 1;
32126 let opNewValue = 0;
32127 let isCVI = 1;
32128 let DecoderNamespace = "EXT_mmvec";
32129 }
32130 def V6_vdmpyhb_dv_acc : HInst<
32131 (outs HvxWR:$Vxx32),
32132 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
32133 "$Vxx32.w += vdmpy($Vuu32.h,$Rt32.b)",
32134 tc_660769f1, TypeCVI_VX_DV>, Enc_d6990d, Requires<[UseHVXV60]> {
32135 let Inst{7-5} = 0b100;
32136 let Inst{13-13} = 0b1;
32137 let Inst{31-21} = 0b00011001001;
32138 let hasNewValue = 1;
32139 let opNewValue = 0;
32140 let isAccumulator = 1;
32141 let isCVI = 1;
32142 let DecoderNamespace = "EXT_mmvec";
32143 let Constraints = "$Vxx32 = $Vxx32in";
32144 }
32145 def V6_vdmpyhb_dv_acc_alt : HInst<
32146 (outs HvxWR:$Vxx32),
32147 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
32148 "$Vxx32 += vdmpyhb($Vuu32,$Rt32)",
32149 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32150 let hasNewValue = 1;
32151 let opNewValue = 0;
32152 let isAccumulator = 1;
32153 let isCVI = 1;
32154 let isPseudo = 1;
32155 let isCodeGenOnly = 1;
32156 let DecoderNamespace = "EXT_mmvec";
32157 let Constraints = "$Vxx32 = $Vxx32in";
32158 }
32159 def V6_vdmpyhb_dv_alt : HInst<
32160 (outs HvxWR:$Vdd32),
32161 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
32162 "$Vdd32 = vdmpyhb($Vuu32,$Rt32)",
32163 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32164 let hasNewValue = 1;
32165 let opNewValue = 0;
32166 let isCVI = 1;
32167 let isPseudo = 1;
32168 let isCodeGenOnly = 1;
32169 let DecoderNamespace = "EXT_mmvec";
32170 }
32171 def V6_vdmpyhisat : HInst<
32172 (outs HvxVR:$Vd32),
32173 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
32174 "$Vd32.w = vdmpy($Vuu32.h,$Rt32.h):sat",
32175 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_0e41fa, Requires<[UseHVXV60]> {
32176 let Inst{7-5} = 0b011;
32177 let Inst{13-13} = 0b0;
32178 let Inst{31-21} = 0b00011001001;
32179 let hasNewValue = 1;
32180 let opNewValue = 0;
32181 let isCVI = 1;
32182 let DecoderNamespace = "EXT_mmvec";
32183 }
32184 def V6_vdmpyhisat_acc : HInst<
32185 (outs HvxVR:$Vx32),
32186 (ins HvxVR:$Vx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
32187 "$Vx32.w += vdmpy($Vuu32.h,$Rt32.h):sat",
32188 tc_660769f1, TypeCVI_VX_DV>, Enc_cc857d, Requires<[UseHVXV60]> {
32189 let Inst{7-5} = 0b010;
32190 let Inst{13-13} = 0b1;
32191 let Inst{31-21} = 0b00011001001;
32192 let hasNewValue = 1;
32193 let opNewValue = 0;
32194 let isAccumulator = 1;
32195 let isCVI = 1;
32196 let DecoderNamespace = "EXT_mmvec";
32197 let Constraints = "$Vx32 = $Vx32in";
32198 }
32199 def V6_vdmpyhisat_acc_alt : HInst<
32200 (outs HvxVR:$Vx32),
32201 (ins HvxVR:$Vx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
32202 "$Vx32 += vdmpyh($Vuu32,$Rt32):sat",
32203 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32204 let hasNewValue = 1;
32205 let opNewValue = 0;
32206 let isAccumulator = 1;
32207 let isCVI = 1;
32208 let isPseudo = 1;
32209 let isCodeGenOnly = 1;
32210 let DecoderNamespace = "EXT_mmvec";
32211 let Constraints = "$Vx32 = $Vx32in";
32212 }
32213 def V6_vdmpyhisat_alt : HInst<
32214 (outs HvxVR:$Vd32),
32215 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
32216 "$Vd32 = vdmpyh($Vuu32,$Rt32):sat",
32217 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32218 let hasNewValue = 1;
32219 let opNewValue = 0;
32220 let isCVI = 1;
32221 let isPseudo = 1;
32222 let isCodeGenOnly = 1;
32223 let DecoderNamespace = "EXT_mmvec";
32224 }
32225 def V6_vdmpyhsat : HInst<
32226 (outs HvxVR:$Vd32),
32227 (ins HvxVR:$Vu32, IntRegs:$Rt32),
32228 "$Vd32.w = vdmpy($Vu32.h,$Rt32.h):sat",
32229 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_b087ac, Requires<[UseHVXV60]> {
32230 let Inst{7-5} = 0b010;
32231 let Inst{13-13} = 0b0;
32232 let Inst{31-21} = 0b00011001001;
32233 let hasNewValue = 1;
32234 let opNewValue = 0;
32235 let isCVI = 1;
32236 let DecoderNamespace = "EXT_mmvec";
32237 }
32238 def V6_vdmpyhsat_acc : HInst<
32239 (outs HvxVR:$Vx32),
32240 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
32241 "$Vx32.w += vdmpy($Vu32.h,$Rt32.h):sat",
32242 tc_660769f1, TypeCVI_VX_DV>, Enc_5138b3, Requires<[UseHVXV60]> {
32243 let Inst{7-5} = 0b011;
32244 let Inst{13-13} = 0b1;
32245 let Inst{31-21} = 0b00011001001;
32246 let hasNewValue = 1;
32247 let opNewValue = 0;
32248 let isAccumulator = 1;
32249 let isCVI = 1;
32250 let DecoderNamespace = "EXT_mmvec";
32251 let Constraints = "$Vx32 = $Vx32in";
32252 }
32253 def V6_vdmpyhsat_acc_alt : HInst<
32254 (outs HvxVR:$Vx32),
32255 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
32256 "$Vx32 += vdmpyh($Vu32,$Rt32):sat",
32257 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32258 let hasNewValue = 1;
32259 let opNewValue = 0;
32260 let isAccumulator = 1;
32261 let isCVI = 1;
32262 let isPseudo = 1;
32263 let isCodeGenOnly = 1;
32264 let DecoderNamespace = "EXT_mmvec";
32265 let Constraints = "$Vx32 = $Vx32in";
32266 }
32267 def V6_vdmpyhsat_alt : HInst<
32268 (outs HvxVR:$Vd32),
32269 (ins HvxVR:$Vu32, IntRegs:$Rt32),
32270 "$Vd32 = vdmpyh($Vu32,$Rt32):sat",
32271 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32272 let hasNewValue = 1;
32273 let opNewValue = 0;
32274 let isCVI = 1;
32275 let isPseudo = 1;
32276 let isCodeGenOnly = 1;
32277 let DecoderNamespace = "EXT_mmvec";
32278 }
32279 def V6_vdmpyhsuisat : HInst<
32280 (outs HvxVR:$Vd32),
32281 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
32282 "$Vd32.w = vdmpy($Vuu32.h,$Rt32.uh,#1):sat",
32283 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_0e41fa, Requires<[UseHVXV60]> {
32284 let Inst{7-5} = 0b001;
32285 let Inst{13-13} = 0b0;
32286 let Inst{31-21} = 0b00011001001;
32287 let hasNewValue = 1;
32288 let opNewValue = 0;
32289 let isCVI = 1;
32290 let DecoderNamespace = "EXT_mmvec";
32291 }
32292 def V6_vdmpyhsuisat_acc : HInst<
32293 (outs HvxVR:$Vx32),
32294 (ins HvxVR:$Vx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
32295 "$Vx32.w += vdmpy($Vuu32.h,$Rt32.uh,#1):sat",
32296 tc_660769f1, TypeCVI_VX_DV>, Enc_cc857d, Requires<[UseHVXV60]> {
32297 let Inst{7-5} = 0b001;
32298 let Inst{13-13} = 0b1;
32299 let Inst{31-21} = 0b00011001001;
32300 let hasNewValue = 1;
32301 let opNewValue = 0;
32302 let isAccumulator = 1;
32303 let isCVI = 1;
32304 let DecoderNamespace = "EXT_mmvec";
32305 let Constraints = "$Vx32 = $Vx32in";
32306 }
32307 def V6_vdmpyhsuisat_acc_alt : HInst<
32308 (outs HvxVR:$Vx32),
32309 (ins HvxVR:$Vx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
32310 "$Vx32 += vdmpyhsu($Vuu32,$Rt32,#1):sat",
32311 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32312 let hasNewValue = 1;
32313 let opNewValue = 0;
32314 let isAccumulator = 1;
32315 let isCVI = 1;
32316 let isPseudo = 1;
32317 let isCodeGenOnly = 1;
32318 let DecoderNamespace = "EXT_mmvec";
32319 let Constraints = "$Vx32 = $Vx32in";
32320 }
32321 def V6_vdmpyhsuisat_alt : HInst<
32322 (outs HvxVR:$Vd32),
32323 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
32324 "$Vd32 = vdmpyhsu($Vuu32,$Rt32,#1):sat",
32325 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32326 let hasNewValue = 1;
32327 let opNewValue = 0;
32328 let isCVI = 1;
32329 let isPseudo = 1;
32330 let isCodeGenOnly = 1;
32331 let DecoderNamespace = "EXT_mmvec";
32332 }
32333 def V6_vdmpyhsusat : HInst<
32334 (outs HvxVR:$Vd32),
32335 (ins HvxVR:$Vu32, IntRegs:$Rt32),
32336 "$Vd32.w = vdmpy($Vu32.h,$Rt32.uh):sat",
32337 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_b087ac, Requires<[UseHVXV60]> {
32338 let Inst{7-5} = 0b000;
32339 let Inst{13-13} = 0b0;
32340 let Inst{31-21} = 0b00011001001;
32341 let hasNewValue = 1;
32342 let opNewValue = 0;
32343 let isCVI = 1;
32344 let DecoderNamespace = "EXT_mmvec";
32345 }
32346 def V6_vdmpyhsusat_acc : HInst<
32347 (outs HvxVR:$Vx32),
32348 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
32349 "$Vx32.w += vdmpy($Vu32.h,$Rt32.uh):sat",
32350 tc_660769f1, TypeCVI_VX_DV>, Enc_5138b3, Requires<[UseHVXV60]> {
32351 let Inst{7-5} = 0b000;
32352 let Inst{13-13} = 0b1;
32353 let Inst{31-21} = 0b00011001001;
32354 let hasNewValue = 1;
32355 let opNewValue = 0;
32356 let isAccumulator = 1;
32357 let isCVI = 1;
32358 let DecoderNamespace = "EXT_mmvec";
32359 let Constraints = "$Vx32 = $Vx32in";
32360 }
32361 def V6_vdmpyhsusat_acc_alt : HInst<
32362 (outs HvxVR:$Vx32),
32363 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
32364 "$Vx32 += vdmpyhsu($Vu32,$Rt32):sat",
32365 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32366 let hasNewValue = 1;
32367 let opNewValue = 0;
32368 let isAccumulator = 1;
32369 let isCVI = 1;
32370 let isPseudo = 1;
32371 let isCodeGenOnly = 1;
32372 let DecoderNamespace = "EXT_mmvec";
32373 let Constraints = "$Vx32 = $Vx32in";
32374 }
32375 def V6_vdmpyhsusat_alt : HInst<
32376 (outs HvxVR:$Vd32),
32377 (ins HvxVR:$Vu32, IntRegs:$Rt32),
32378 "$Vd32 = vdmpyhsu($Vu32,$Rt32):sat",
32379 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32380 let hasNewValue = 1;
32381 let opNewValue = 0;
32382 let isCVI = 1;
32383 let isPseudo = 1;
32384 let isCodeGenOnly = 1;
32385 let DecoderNamespace = "EXT_mmvec";
32386 }
32387 def V6_vdmpyhvsat : HInst<
32388 (outs HvxVR:$Vd32),
32389 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32390 "$Vd32.w = vdmpy($Vu32.h,$Vv32.h):sat",
32391 tc_d8287c14, TypeCVI_VX_DV>, Enc_45364e, Requires<[UseHVXV60]> {
32392 let Inst{7-5} = 0b011;
32393 let Inst{13-13} = 0b0;
32394 let Inst{31-21} = 0b00011100000;
32395 let hasNewValue = 1;
32396 let opNewValue = 0;
32397 let isCVI = 1;
32398 let DecoderNamespace = "EXT_mmvec";
32399 }
32400 def V6_vdmpyhvsat_acc : HInst<
32401 (outs HvxVR:$Vx32),
32402 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
32403 "$Vx32.w += vdmpy($Vu32.h,$Vv32.h):sat",
32404 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_a7341a, Requires<[UseHVXV60]> {
32405 let Inst{7-5} = 0b011;
32406 let Inst{13-13} = 0b1;
32407 let Inst{31-21} = 0b00011100000;
32408 let hasNewValue = 1;
32409 let opNewValue = 0;
32410 let isAccumulator = 1;
32411 let isCVI = 1;
32412 let DecoderNamespace = "EXT_mmvec";
32413 let Constraints = "$Vx32 = $Vx32in";
32414 }
32415 def V6_vdmpyhvsat_acc_alt : HInst<
32416 (outs HvxVR:$Vx32),
32417 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
32418 "$Vx32 += vdmpyh($Vu32,$Vv32):sat",
32419 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32420 let hasNewValue = 1;
32421 let opNewValue = 0;
32422 let isAccumulator = 1;
32423 let isCVI = 1;
32424 let isPseudo = 1;
32425 let isCodeGenOnly = 1;
32426 let DecoderNamespace = "EXT_mmvec";
32427 let Constraints = "$Vx32 = $Vx32in";
32428 }
32429 def V6_vdmpyhvsat_alt : HInst<
32430 (outs HvxVR:$Vd32),
32431 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32432 "$Vd32 = vdmpyh($Vu32,$Vv32):sat",
32433 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32434 let hasNewValue = 1;
32435 let opNewValue = 0;
32436 let isCVI = 1;
32437 let isPseudo = 1;
32438 let isCodeGenOnly = 1;
32439 let DecoderNamespace = "EXT_mmvec";
32440 }
32441 def V6_vdsaduh : HInst<
32442 (outs HvxWR:$Vdd32),
32443 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
32444 "$Vdd32.uw = vdsad($Vuu32.uh,$Rt32.uh)",
32445 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_aad80c, Requires<[UseHVXV60]> {
32446 let Inst{7-5} = 0b101;
32447 let Inst{13-13} = 0b0;
32448 let Inst{31-21} = 0b00011001000;
32449 let hasNewValue = 1;
32450 let opNewValue = 0;
32451 let isCVI = 1;
32452 let DecoderNamespace = "EXT_mmvec";
32453 }
32454 def V6_vdsaduh_acc : HInst<
32455 (outs HvxWR:$Vxx32),
32456 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
32457 "$Vxx32.uw += vdsad($Vuu32.uh,$Rt32.uh)",
32458 tc_660769f1, TypeCVI_VX_DV>, Enc_d6990d, Requires<[UseHVXV60]> {
32459 let Inst{7-5} = 0b000;
32460 let Inst{13-13} = 0b1;
32461 let Inst{31-21} = 0b00011001011;
32462 let hasNewValue = 1;
32463 let opNewValue = 0;
32464 let isAccumulator = 1;
32465 let isCVI = 1;
32466 let DecoderNamespace = "EXT_mmvec";
32467 let Constraints = "$Vxx32 = $Vxx32in";
32468 }
32469 def V6_vdsaduh_acc_alt : HInst<
32470 (outs HvxWR:$Vxx32),
32471 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
32472 "$Vxx32 += vdsaduh($Vuu32,$Rt32)",
32473 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32474 let hasNewValue = 1;
32475 let opNewValue = 0;
32476 let isAccumulator = 1;
32477 let isCVI = 1;
32478 let isPseudo = 1;
32479 let isCodeGenOnly = 1;
32480 let DecoderNamespace = "EXT_mmvec";
32481 let Constraints = "$Vxx32 = $Vxx32in";
32482 }
32483 def V6_vdsaduh_alt : HInst<
32484 (outs HvxWR:$Vdd32),
32485 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
32486 "$Vdd32 = vdsaduh($Vuu32,$Rt32)",
32487 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32488 let hasNewValue = 1;
32489 let opNewValue = 0;
32490 let isCVI = 1;
32491 let isPseudo = 1;
32492 let isCodeGenOnly = 1;
32493 let DecoderNamespace = "EXT_mmvec";
32494 }
32495 def V6_veqb : HInst<
32496 (outs HvxQR:$Qd4),
32497 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32498 "$Qd4 = vcmp.eq($Vu32.b,$Vv32.b)",
32499 tc_56c4f9fe, TypeCVI_VA>, Enc_95441f, Requires<[UseHVXV60]> {
32500 let Inst{7-2} = 0b000000;
32501 let Inst{13-13} = 0b0;
32502 let Inst{31-21} = 0b00011111100;
32503 let hasNewValue = 1;
32504 let opNewValue = 0;
32505 let isCVI = 1;
32506 let DecoderNamespace = "EXT_mmvec";
32507 }
32508 def V6_veqb_and : HInst<
32509 (outs HvxQR:$Qx4),
32510 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32511 "$Qx4 &= vcmp.eq($Vu32.b,$Vv32.b)",
32512 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32513 let Inst{7-2} = 0b000000;
32514 let Inst{13-13} = 0b1;
32515 let Inst{31-21} = 0b00011100100;
32516 let isCVI = 1;
32517 let DecoderNamespace = "EXT_mmvec";
32518 let Constraints = "$Qx4 = $Qx4in";
32519 }
32520 def V6_veqb_or : HInst<
32521 (outs HvxQR:$Qx4),
32522 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32523 "$Qx4 |= vcmp.eq($Vu32.b,$Vv32.b)",
32524 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32525 let Inst{7-2} = 0b010000;
32526 let Inst{13-13} = 0b1;
32527 let Inst{31-21} = 0b00011100100;
32528 let isAccumulator = 1;
32529 let isCVI = 1;
32530 let DecoderNamespace = "EXT_mmvec";
32531 let Constraints = "$Qx4 = $Qx4in";
32532 }
32533 def V6_veqb_xor : HInst<
32534 (outs HvxQR:$Qx4),
32535 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32536 "$Qx4 ^= vcmp.eq($Vu32.b,$Vv32.b)",
32537 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32538 let Inst{7-2} = 0b100000;
32539 let Inst{13-13} = 0b1;
32540 let Inst{31-21} = 0b00011100100;
32541 let isCVI = 1;
32542 let DecoderNamespace = "EXT_mmvec";
32543 let Constraints = "$Qx4 = $Qx4in";
32544 }
32545 def V6_veqh : HInst<
32546 (outs HvxQR:$Qd4),
32547 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32548 "$Qd4 = vcmp.eq($Vu32.h,$Vv32.h)",
32549 tc_56c4f9fe, TypeCVI_VA>, Enc_95441f, Requires<[UseHVXV60]> {
32550 let Inst{7-2} = 0b000001;
32551 let Inst{13-13} = 0b0;
32552 let Inst{31-21} = 0b00011111100;
32553 let hasNewValue = 1;
32554 let opNewValue = 0;
32555 let isCVI = 1;
32556 let DecoderNamespace = "EXT_mmvec";
32557 }
32558 def V6_veqh_and : HInst<
32559 (outs HvxQR:$Qx4),
32560 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32561 "$Qx4 &= vcmp.eq($Vu32.h,$Vv32.h)",
32562 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32563 let Inst{7-2} = 0b000001;
32564 let Inst{13-13} = 0b1;
32565 let Inst{31-21} = 0b00011100100;
32566 let isCVI = 1;
32567 let DecoderNamespace = "EXT_mmvec";
32568 let Constraints = "$Qx4 = $Qx4in";
32569 }
32570 def V6_veqh_or : HInst<
32571 (outs HvxQR:$Qx4),
32572 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32573 "$Qx4 |= vcmp.eq($Vu32.h,$Vv32.h)",
32574 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32575 let Inst{7-2} = 0b010001;
32576 let Inst{13-13} = 0b1;
32577 let Inst{31-21} = 0b00011100100;
32578 let isAccumulator = 1;
32579 let isCVI = 1;
32580 let DecoderNamespace = "EXT_mmvec";
32581 let Constraints = "$Qx4 = $Qx4in";
32582 }
32583 def V6_veqh_xor : HInst<
32584 (outs HvxQR:$Qx4),
32585 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32586 "$Qx4 ^= vcmp.eq($Vu32.h,$Vv32.h)",
32587 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32588 let Inst{7-2} = 0b100001;
32589 let Inst{13-13} = 0b1;
32590 let Inst{31-21} = 0b00011100100;
32591 let isCVI = 1;
32592 let DecoderNamespace = "EXT_mmvec";
32593 let Constraints = "$Qx4 = $Qx4in";
32594 }
32595 def V6_veqw : HInst<
32596 (outs HvxQR:$Qd4),
32597 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32598 "$Qd4 = vcmp.eq($Vu32.w,$Vv32.w)",
32599 tc_56c4f9fe, TypeCVI_VA>, Enc_95441f, Requires<[UseHVXV60]> {
32600 let Inst{7-2} = 0b000010;
32601 let Inst{13-13} = 0b0;
32602 let Inst{31-21} = 0b00011111100;
32603 let hasNewValue = 1;
32604 let opNewValue = 0;
32605 let isCVI = 1;
32606 let DecoderNamespace = "EXT_mmvec";
32607 }
32608 def V6_veqw_and : HInst<
32609 (outs HvxQR:$Qx4),
32610 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32611 "$Qx4 &= vcmp.eq($Vu32.w,$Vv32.w)",
32612 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32613 let Inst{7-2} = 0b000010;
32614 let Inst{13-13} = 0b1;
32615 let Inst{31-21} = 0b00011100100;
32616 let isCVI = 1;
32617 let DecoderNamespace = "EXT_mmvec";
32618 let Constraints = "$Qx4 = $Qx4in";
32619 }
32620 def V6_veqw_or : HInst<
32621 (outs HvxQR:$Qx4),
32622 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32623 "$Qx4 |= vcmp.eq($Vu32.w,$Vv32.w)",
32624 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32625 let Inst{7-2} = 0b010010;
32626 let Inst{13-13} = 0b1;
32627 let Inst{31-21} = 0b00011100100;
32628 let isAccumulator = 1;
32629 let isCVI = 1;
32630 let DecoderNamespace = "EXT_mmvec";
32631 let Constraints = "$Qx4 = $Qx4in";
32632 }
32633 def V6_veqw_xor : HInst<
32634 (outs HvxQR:$Qx4),
32635 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32636 "$Qx4 ^= vcmp.eq($Vu32.w,$Vv32.w)",
32637 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32638 let Inst{7-2} = 0b100010;
32639 let Inst{13-13} = 0b1;
32640 let Inst{31-21} = 0b00011100100;
32641 let isCVI = 1;
32642 let DecoderNamespace = "EXT_mmvec";
32643 let Constraints = "$Qx4 = $Qx4in";
32644 }
32645 def V6_vgathermh : HInst<
32646 (outs),
32647 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32),
32648 "vtmp.h = vgather($Rt32,$Mu2,$Vv32.h).h",
32649 tc_e8797b98, TypeCVI_GATHER>, Enc_8b8927, Requires<[UseHVXV65]> {
32650 let Inst{12-5} = 0b00001000;
32651 let Inst{31-21} = 0b00101111000;
32652 let hasNewValue = 1;
32653 let opNewValue = 0;
32654 let accessSize = HalfWordAccess;
32655 let isCVLoad = 1;
32656 let isCVI = 1;
32657 let hasTmpDst = 1;
32658 let mayLoad = 1;
32659 let Defs = [VTMP];
32660 let DecoderNamespace = "EXT_mmvec";
32661 }
32662 def V6_vgathermhq : HInst<
32663 (outs),
32664 (ins HvxQR:$Qs4, IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32),
32665 "if ($Qs4) vtmp.h = vgather($Rt32,$Mu2,$Vv32.h).h",
32666 tc_05ac6f98, TypeCVI_GATHER>, Enc_158beb, Requires<[UseHVXV65]> {
32667 let Inst{12-7} = 0b001010;
32668 let Inst{31-21} = 0b00101111000;
32669 let hasNewValue = 1;
32670 let opNewValue = 0;
32671 let accessSize = HalfWordAccess;
32672 let isCVLoad = 1;
32673 let isCVI = 1;
32674 let hasTmpDst = 1;
32675 let mayLoad = 1;
32676 let Defs = [VTMP];
32677 let DecoderNamespace = "EXT_mmvec";
32678 }
32679 def V6_vgathermhw : HInst<
32680 (outs),
32681 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxWR:$Vvv32),
32682 "vtmp.h = vgather($Rt32,$Mu2,$Vvv32.w).h",
32683 tc_05058f6f, TypeCVI_GATHER_DV>, Enc_28dcbb, Requires<[UseHVXV65]> {
32684 let Inst{12-5} = 0b00010000;
32685 let Inst{31-21} = 0b00101111000;
32686 let hasNewValue = 1;
32687 let opNewValue = 0;
32688 let accessSize = HalfWordAccess;
32689 let isCVLoad = 1;
32690 let isCVI = 1;
32691 let hasTmpDst = 1;
32692 let mayLoad = 1;
32693 let Defs = [VTMP];
32694 let DecoderNamespace = "EXT_mmvec";
32695 }
32696 def V6_vgathermhwq : HInst<
32697 (outs),
32698 (ins HvxQR:$Qs4, IntRegs:$Rt32, ModRegs:$Mu2, HvxWR:$Vvv32),
32699 "if ($Qs4) vtmp.h = vgather($Rt32,$Mu2,$Vvv32.w).h",
32700 tc_fd7610da, TypeCVI_GATHER_DV>, Enc_4e4a80, Requires<[UseHVXV65]> {
32701 let Inst{12-7} = 0b001100;
32702 let Inst{31-21} = 0b00101111000;
32703 let hasNewValue = 1;
32704 let opNewValue = 0;
32705 let accessSize = HalfWordAccess;
32706 let isCVLoad = 1;
32707 let isCVI = 1;
32708 let hasTmpDst = 1;
32709 let mayLoad = 1;
32710 let Defs = [VTMP];
32711 let DecoderNamespace = "EXT_mmvec";
32712 }
32713 def V6_vgathermw : HInst<
32714 (outs),
32715 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32),
32716 "vtmp.w = vgather($Rt32,$Mu2,$Vv32.w).w",
32717 tc_e8797b98, TypeCVI_GATHER>, Enc_8b8927, Requires<[UseHVXV65]> {
32718 let Inst{12-5} = 0b00000000;
32719 let Inst{31-21} = 0b00101111000;
32720 let hasNewValue = 1;
32721 let opNewValue = 0;
32722 let accessSize = WordAccess;
32723 let isCVLoad = 1;
32724 let isCVI = 1;
32725 let hasTmpDst = 1;
32726 let mayLoad = 1;
32727 let Defs = [VTMP];
32728 let DecoderNamespace = "EXT_mmvec";
32729 }
32730 def V6_vgathermwq : HInst<
32731 (outs),
32732 (ins HvxQR:$Qs4, IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32),
32733 "if ($Qs4) vtmp.w = vgather($Rt32,$Mu2,$Vv32.w).w",
32734 tc_05ac6f98, TypeCVI_GATHER>, Enc_158beb, Requires<[UseHVXV65]> {
32735 let Inst{12-7} = 0b001000;
32736 let Inst{31-21} = 0b00101111000;
32737 let hasNewValue = 1;
32738 let opNewValue = 0;
32739 let accessSize = WordAccess;
32740 let isCVLoad = 1;
32741 let isCVI = 1;
32742 let hasTmpDst = 1;
32743 let mayLoad = 1;
32744 let Defs = [VTMP];
32745 let DecoderNamespace = "EXT_mmvec";
32746 }
32747 def V6_vgtb : HInst<
32748 (outs HvxQR:$Qd4),
32749 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32750 "$Qd4 = vcmp.gt($Vu32.b,$Vv32.b)",
32751 tc_56c4f9fe, TypeCVI_VA>, Enc_95441f, Requires<[UseHVXV60]> {
32752 let Inst{7-2} = 0b000100;
32753 let Inst{13-13} = 0b0;
32754 let Inst{31-21} = 0b00011111100;
32755 let hasNewValue = 1;
32756 let opNewValue = 0;
32757 let isCVI = 1;
32758 let DecoderNamespace = "EXT_mmvec";
32759 }
32760 def V6_vgtb_and : HInst<
32761 (outs HvxQR:$Qx4),
32762 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32763 "$Qx4 &= vcmp.gt($Vu32.b,$Vv32.b)",
32764 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32765 let Inst{7-2} = 0b000100;
32766 let Inst{13-13} = 0b1;
32767 let Inst{31-21} = 0b00011100100;
32768 let isCVI = 1;
32769 let DecoderNamespace = "EXT_mmvec";
32770 let Constraints = "$Qx4 = $Qx4in";
32771 }
32772 def V6_vgtb_or : HInst<
32773 (outs HvxQR:$Qx4),
32774 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32775 "$Qx4 |= vcmp.gt($Vu32.b,$Vv32.b)",
32776 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32777 let Inst{7-2} = 0b010100;
32778 let Inst{13-13} = 0b1;
32779 let Inst{31-21} = 0b00011100100;
32780 let isAccumulator = 1;
32781 let isCVI = 1;
32782 let DecoderNamespace = "EXT_mmvec";
32783 let Constraints = "$Qx4 = $Qx4in";
32784 }
32785 def V6_vgtb_xor : HInst<
32786 (outs HvxQR:$Qx4),
32787 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32788 "$Qx4 ^= vcmp.gt($Vu32.b,$Vv32.b)",
32789 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32790 let Inst{7-2} = 0b100100;
32791 let Inst{13-13} = 0b1;
32792 let Inst{31-21} = 0b00011100100;
32793 let isCVI = 1;
32794 let DecoderNamespace = "EXT_mmvec";
32795 let Constraints = "$Qx4 = $Qx4in";
32796 }
32797 def V6_vgth : HInst<
32798 (outs HvxQR:$Qd4),
32799 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32800 "$Qd4 = vcmp.gt($Vu32.h,$Vv32.h)",
32801 tc_56c4f9fe, TypeCVI_VA>, Enc_95441f, Requires<[UseHVXV60]> {
32802 let Inst{7-2} = 0b000101;
32803 let Inst{13-13} = 0b0;
32804 let Inst{31-21} = 0b00011111100;
32805 let hasNewValue = 1;
32806 let opNewValue = 0;
32807 let isCVI = 1;
32808 let DecoderNamespace = "EXT_mmvec";
32809 }
32810 def V6_vgth_and : HInst<
32811 (outs HvxQR:$Qx4),
32812 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32813 "$Qx4 &= vcmp.gt($Vu32.h,$Vv32.h)",
32814 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32815 let Inst{7-2} = 0b000101;
32816 let Inst{13-13} = 0b1;
32817 let Inst{31-21} = 0b00011100100;
32818 let isCVI = 1;
32819 let DecoderNamespace = "EXT_mmvec";
32820 let Constraints = "$Qx4 = $Qx4in";
32821 }
32822 def V6_vgth_or : HInst<
32823 (outs HvxQR:$Qx4),
32824 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32825 "$Qx4 |= vcmp.gt($Vu32.h,$Vv32.h)",
32826 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32827 let Inst{7-2} = 0b010101;
32828 let Inst{13-13} = 0b1;
32829 let Inst{31-21} = 0b00011100100;
32830 let isAccumulator = 1;
32831 let isCVI = 1;
32832 let DecoderNamespace = "EXT_mmvec";
32833 let Constraints = "$Qx4 = $Qx4in";
32834 }
32835 def V6_vgth_xor : HInst<
32836 (outs HvxQR:$Qx4),
32837 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32838 "$Qx4 ^= vcmp.gt($Vu32.h,$Vv32.h)",
32839 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32840 let Inst{7-2} = 0b100101;
32841 let Inst{13-13} = 0b1;
32842 let Inst{31-21} = 0b00011100100;
32843 let isCVI = 1;
32844 let DecoderNamespace = "EXT_mmvec";
32845 let Constraints = "$Qx4 = $Qx4in";
32846 }
32847 def V6_vgtub : HInst<
32848 (outs HvxQR:$Qd4),
32849 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32850 "$Qd4 = vcmp.gt($Vu32.ub,$Vv32.ub)",
32851 tc_56c4f9fe, TypeCVI_VA>, Enc_95441f, Requires<[UseHVXV60]> {
32852 let Inst{7-2} = 0b001000;
32853 let Inst{13-13} = 0b0;
32854 let Inst{31-21} = 0b00011111100;
32855 let hasNewValue = 1;
32856 let opNewValue = 0;
32857 let isCVI = 1;
32858 let DecoderNamespace = "EXT_mmvec";
32859 }
32860 def V6_vgtub_and : HInst<
32861 (outs HvxQR:$Qx4),
32862 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32863 "$Qx4 &= vcmp.gt($Vu32.ub,$Vv32.ub)",
32864 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32865 let Inst{7-2} = 0b001000;
32866 let Inst{13-13} = 0b1;
32867 let Inst{31-21} = 0b00011100100;
32868 let isCVI = 1;
32869 let DecoderNamespace = "EXT_mmvec";
32870 let Constraints = "$Qx4 = $Qx4in";
32871 }
32872 def V6_vgtub_or : HInst<
32873 (outs HvxQR:$Qx4),
32874 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32875 "$Qx4 |= vcmp.gt($Vu32.ub,$Vv32.ub)",
32876 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32877 let Inst{7-2} = 0b011000;
32878 let Inst{13-13} = 0b1;
32879 let Inst{31-21} = 0b00011100100;
32880 let isAccumulator = 1;
32881 let isCVI = 1;
32882 let DecoderNamespace = "EXT_mmvec";
32883 let Constraints = "$Qx4 = $Qx4in";
32884 }
32885 def V6_vgtub_xor : HInst<
32886 (outs HvxQR:$Qx4),
32887 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32888 "$Qx4 ^= vcmp.gt($Vu32.ub,$Vv32.ub)",
32889 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32890 let Inst{7-2} = 0b101000;
32891 let Inst{13-13} = 0b1;
32892 let Inst{31-21} = 0b00011100100;
32893 let isCVI = 1;
32894 let DecoderNamespace = "EXT_mmvec";
32895 let Constraints = "$Qx4 = $Qx4in";
32896 }
32897 def V6_vgtuh : HInst<
32898 (outs HvxQR:$Qd4),
32899 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32900 "$Qd4 = vcmp.gt($Vu32.uh,$Vv32.uh)",
32901 tc_56c4f9fe, TypeCVI_VA>, Enc_95441f, Requires<[UseHVXV60]> {
32902 let Inst{7-2} = 0b001001;
32903 let Inst{13-13} = 0b0;
32904 let Inst{31-21} = 0b00011111100;
32905 let hasNewValue = 1;
32906 let opNewValue = 0;
32907 let isCVI = 1;
32908 let DecoderNamespace = "EXT_mmvec";
32909 }
32910 def V6_vgtuh_and : HInst<
32911 (outs HvxQR:$Qx4),
32912 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32913 "$Qx4 &= vcmp.gt($Vu32.uh,$Vv32.uh)",
32914 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32915 let Inst{7-2} = 0b001001;
32916 let Inst{13-13} = 0b1;
32917 let Inst{31-21} = 0b00011100100;
32918 let isCVI = 1;
32919 let DecoderNamespace = "EXT_mmvec";
32920 let Constraints = "$Qx4 = $Qx4in";
32921 }
32922 def V6_vgtuh_or : HInst<
32923 (outs HvxQR:$Qx4),
32924 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32925 "$Qx4 |= vcmp.gt($Vu32.uh,$Vv32.uh)",
32926 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32927 let Inst{7-2} = 0b011001;
32928 let Inst{13-13} = 0b1;
32929 let Inst{31-21} = 0b00011100100;
32930 let isAccumulator = 1;
32931 let isCVI = 1;
32932 let DecoderNamespace = "EXT_mmvec";
32933 let Constraints = "$Qx4 = $Qx4in";
32934 }
32935 def V6_vgtuh_xor : HInst<
32936 (outs HvxQR:$Qx4),
32937 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32938 "$Qx4 ^= vcmp.gt($Vu32.uh,$Vv32.uh)",
32939 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32940 let Inst{7-2} = 0b101001;
32941 let Inst{13-13} = 0b1;
32942 let Inst{31-21} = 0b00011100100;
32943 let isCVI = 1;
32944 let DecoderNamespace = "EXT_mmvec";
32945 let Constraints = "$Qx4 = $Qx4in";
32946 }
32947 def V6_vgtuw : HInst<
32948 (outs HvxQR:$Qd4),
32949 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32950 "$Qd4 = vcmp.gt($Vu32.uw,$Vv32.uw)",
32951 tc_56c4f9fe, TypeCVI_VA>, Enc_95441f, Requires<[UseHVXV60]> {
32952 let Inst{7-2} = 0b001010;
32953 let Inst{13-13} = 0b0;
32954 let Inst{31-21} = 0b00011111100;
32955 let hasNewValue = 1;
32956 let opNewValue = 0;
32957 let isCVI = 1;
32958 let DecoderNamespace = "EXT_mmvec";
32959 }
32960 def V6_vgtuw_and : HInst<
32961 (outs HvxQR:$Qx4),
32962 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32963 "$Qx4 &= vcmp.gt($Vu32.uw,$Vv32.uw)",
32964 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32965 let Inst{7-2} = 0b001010;
32966 let Inst{13-13} = 0b1;
32967 let Inst{31-21} = 0b00011100100;
32968 let isCVI = 1;
32969 let DecoderNamespace = "EXT_mmvec";
32970 let Constraints = "$Qx4 = $Qx4in";
32971 }
32972 def V6_vgtuw_or : HInst<
32973 (outs HvxQR:$Qx4),
32974 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32975 "$Qx4 |= vcmp.gt($Vu32.uw,$Vv32.uw)",
32976 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32977 let Inst{7-2} = 0b011010;
32978 let Inst{13-13} = 0b1;
32979 let Inst{31-21} = 0b00011100100;
32980 let isAccumulator = 1;
32981 let isCVI = 1;
32982 let DecoderNamespace = "EXT_mmvec";
32983 let Constraints = "$Qx4 = $Qx4in";
32984 }
32985 def V6_vgtuw_xor : HInst<
32986 (outs HvxQR:$Qx4),
32987 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32988 "$Qx4 ^= vcmp.gt($Vu32.uw,$Vv32.uw)",
32989 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32990 let Inst{7-2} = 0b101010;
32991 let Inst{13-13} = 0b1;
32992 let Inst{31-21} = 0b00011100100;
32993 let isCVI = 1;
32994 let DecoderNamespace = "EXT_mmvec";
32995 let Constraints = "$Qx4 = $Qx4in";
32996 }
32997 def V6_vgtw : HInst<
32998 (outs HvxQR:$Qd4),
32999 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33000 "$Qd4 = vcmp.gt($Vu32.w,$Vv32.w)",
33001 tc_56c4f9fe, TypeCVI_VA>, Enc_95441f, Requires<[UseHVXV60]> {
33002 let Inst{7-2} = 0b000110;
33003 let Inst{13-13} = 0b0;
33004 let Inst{31-21} = 0b00011111100;
33005 let hasNewValue = 1;
33006 let opNewValue = 0;
33007 let isCVI = 1;
33008 let DecoderNamespace = "EXT_mmvec";
33009 }
33010 def V6_vgtw_and : HInst<
33011 (outs HvxQR:$Qx4),
33012 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
33013 "$Qx4 &= vcmp.gt($Vu32.w,$Vv32.w)",
33014 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
33015 let Inst{7-2} = 0b000110;
33016 let Inst{13-13} = 0b1;
33017 let Inst{31-21} = 0b00011100100;
33018 let isCVI = 1;
33019 let DecoderNamespace = "EXT_mmvec";
33020 let Constraints = "$Qx4 = $Qx4in";
33021 }
33022 def V6_vgtw_or : HInst<
33023 (outs HvxQR:$Qx4),
33024 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
33025 "$Qx4 |= vcmp.gt($Vu32.w,$Vv32.w)",
33026 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
33027 let Inst{7-2} = 0b010110;
33028 let Inst{13-13} = 0b1;
33029 let Inst{31-21} = 0b00011100100;
33030 let isAccumulator = 1;
33031 let isCVI = 1;
33032 let DecoderNamespace = "EXT_mmvec";
33033 let Constraints = "$Qx4 = $Qx4in";
33034 }
33035 def V6_vgtw_xor : HInst<
33036 (outs HvxQR:$Qx4),
33037 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
33038 "$Qx4 ^= vcmp.gt($Vu32.w,$Vv32.w)",
33039 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
33040 let Inst{7-2} = 0b100110;
33041 let Inst{13-13} = 0b1;
33042 let Inst{31-21} = 0b00011100100;
33043 let isCVI = 1;
33044 let DecoderNamespace = "EXT_mmvec";
33045 let Constraints = "$Qx4 = $Qx4in";
33046 }
33047 def V6_vhist : HInst<
33048 (outs),
33049 (ins),
33050 "vhist",
33051 tc_1381a97c, TypeCVI_HIST>, Enc_e3b0c4, Requires<[UseHVXV60]> {
33052 let Inst{13-0} = 0b10000010000000;
33053 let Inst{31-16} = 0b0001111000000000;
33054 let isCVI = 1;
33055 let DecoderNamespace = "EXT_mmvec";
33056 }
33057 def V6_vhistq : HInst<
33058 (outs),
33059 (ins HvxQR:$Qv4),
33060 "vhist($Qv4)",
33061 tc_e3f68a46, TypeCVI_HIST>, Enc_217147, Requires<[UseHVXV60]> {
33062 let Inst{13-0} = 0b10000010000000;
33063 let Inst{21-16} = 0b000010;
33064 let Inst{31-24} = 0b00011110;
33065 let isCVI = 1;
33066 let DecoderNamespace = "EXT_mmvec";
33067 }
33068 def V6_vinsertwr : HInst<
33069 (outs HvxVR:$Vx32),
33070 (ins HvxVR:$Vx32in, IntRegs:$Rt32),
33071 "$Vx32.w = vinsert($Rt32)",
33072 tc_ac4046bc, TypeCVI_VX_LATE>, Enc_569cfe, Requires<[UseHVXV60]> {
33073 let Inst{13-5} = 0b100000001;
33074 let Inst{31-21} = 0b00011001101;
33075 let hasNewValue = 1;
33076 let opNewValue = 0;
33077 let isCVI = 1;
33078 let DecoderNamespace = "EXT_mmvec";
33079 let Constraints = "$Vx32 = $Vx32in";
33080 }
33081 def V6_vlalignb : HInst<
33082 (outs HvxVR:$Vd32),
33083 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
33084 "$Vd32 = vlalign($Vu32,$Vv32,$Rt8)",
33085 tc_56e64202, TypeCVI_VP>, Enc_a30110, Requires<[UseHVXV60]> {
33086 let Inst{7-5} = 0b001;
33087 let Inst{13-13} = 0b0;
33088 let Inst{31-24} = 0b00011011;
33089 let hasNewValue = 1;
33090 let opNewValue = 0;
33091 let isCVI = 1;
33092 let DecoderNamespace = "EXT_mmvec";
33093 }
33094 def V6_vlalignbi : HInst<
33095 (outs HvxVR:$Vd32),
33096 (ins HvxVR:$Vu32, HvxVR:$Vv32, u3_0Imm:$Ii),
33097 "$Vd32 = vlalign($Vu32,$Vv32,#$Ii)",
33098 tc_56e64202, TypeCVI_VP>, Enc_0b2e5b, Requires<[UseHVXV60]> {
33099 let Inst{13-13} = 0b1;
33100 let Inst{31-21} = 0b00011110011;
33101 let hasNewValue = 1;
33102 let opNewValue = 0;
33103 let isCVI = 1;
33104 let DecoderNamespace = "EXT_mmvec";
33105 }
33106 def V6_vlsrb : HInst<
33107 (outs HvxVR:$Vd32),
33108 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33109 "$Vd32.ub = vlsr($Vu32.ub,$Rt32)",
33110 tc_7417e785, TypeCVI_VS>, Enc_b087ac, Requires<[UseHVXV62]> {
33111 let Inst{7-5} = 0b011;
33112 let Inst{13-13} = 0b0;
33113 let Inst{31-21} = 0b00011001100;
33114 let hasNewValue = 1;
33115 let opNewValue = 0;
33116 let isCVI = 1;
33117 let DecoderNamespace = "EXT_mmvec";
33118 }
33119 def V6_vlsrh : HInst<
33120 (outs HvxVR:$Vd32),
33121 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33122 "$Vd32.uh = vlsr($Vu32.uh,$Rt32)",
33123 tc_7417e785, TypeCVI_VS>, Enc_b087ac, Requires<[UseHVXV60]> {
33124 let Inst{7-5} = 0b010;
33125 let Inst{13-13} = 0b0;
33126 let Inst{31-21} = 0b00011001100;
33127 let hasNewValue = 1;
33128 let opNewValue = 0;
33129 let isCVI = 1;
33130 let DecoderNamespace = "EXT_mmvec";
33131 }
33132 def V6_vlsrh_alt : HInst<
33133 (outs HvxVR:$Vd32),
33134 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33135 "$Vd32 = vlsrh($Vu32,$Rt32)",
33136 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33137 let hasNewValue = 1;
33138 let opNewValue = 0;
33139 let isCVI = 1;
33140 let isPseudo = 1;
33141 let isCodeGenOnly = 1;
33142 let DecoderNamespace = "EXT_mmvec";
33143 }
33144 def V6_vlsrhv : HInst<
33145 (outs HvxVR:$Vd32),
33146 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33147 "$Vd32.h = vlsr($Vu32.h,$Vv32.h)",
33148 tc_05ca8cfd, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV60]> {
33149 let Inst{7-5} = 0b010;
33150 let Inst{13-13} = 0b0;
33151 let Inst{31-21} = 0b00011111101;
33152 let hasNewValue = 1;
33153 let opNewValue = 0;
33154 let isCVI = 1;
33155 let DecoderNamespace = "EXT_mmvec";
33156 }
33157 def V6_vlsrhv_alt : HInst<
33158 (outs HvxVR:$Vd32),
33159 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33160 "$Vd32 = vlsrh($Vu32,$Vv32)",
33161 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33162 let hasNewValue = 1;
33163 let opNewValue = 0;
33164 let isCVI = 1;
33165 let isPseudo = 1;
33166 let isCodeGenOnly = 1;
33167 let DecoderNamespace = "EXT_mmvec";
33168 }
33169 def V6_vlsrw : HInst<
33170 (outs HvxVR:$Vd32),
33171 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33172 "$Vd32.uw = vlsr($Vu32.uw,$Rt32)",
33173 tc_7417e785, TypeCVI_VS>, Enc_b087ac, Requires<[UseHVXV60]> {
33174 let Inst{7-5} = 0b001;
33175 let Inst{13-13} = 0b0;
33176 let Inst{31-21} = 0b00011001100;
33177 let hasNewValue = 1;
33178 let opNewValue = 0;
33179 let isCVI = 1;
33180 let DecoderNamespace = "EXT_mmvec";
33181 }
33182 def V6_vlsrw_alt : HInst<
33183 (outs HvxVR:$Vd32),
33184 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33185 "$Vd32 = vlsrw($Vu32,$Rt32)",
33186 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33187 let hasNewValue = 1;
33188 let opNewValue = 0;
33189 let isCVI = 1;
33190 let isPseudo = 1;
33191 let isCodeGenOnly = 1;
33192 let DecoderNamespace = "EXT_mmvec";
33193 }
33194 def V6_vlsrwv : HInst<
33195 (outs HvxVR:$Vd32),
33196 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33197 "$Vd32.w = vlsr($Vu32.w,$Vv32.w)",
33198 tc_05ca8cfd, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV60]> {
33199 let Inst{7-5} = 0b001;
33200 let Inst{13-13} = 0b0;
33201 let Inst{31-21} = 0b00011111101;
33202 let hasNewValue = 1;
33203 let opNewValue = 0;
33204 let isCVI = 1;
33205 let DecoderNamespace = "EXT_mmvec";
33206 }
33207 def V6_vlsrwv_alt : HInst<
33208 (outs HvxVR:$Vd32),
33209 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33210 "$Vd32 = vlsrw($Vu32,$Vv32)",
33211 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33212 let hasNewValue = 1;
33213 let opNewValue = 0;
33214 let isCVI = 1;
33215 let isPseudo = 1;
33216 let isCodeGenOnly = 1;
33217 let DecoderNamespace = "EXT_mmvec";
33218 }
33219 def V6_vlut4 : HInst<
33220 (outs HvxVR:$Vd32),
33221 (ins HvxVR:$Vu32, DoubleRegs:$Rtt32),
33222 "$Vd32.h = vlut4($Vu32.uh,$Rtt32.h)",
33223 tc_f1de44ef, TypeCVI_VX_DV>, Enc_263841, Requires<[UseHVXV65]> {
33224 let Inst{7-5} = 0b100;
33225 let Inst{13-13} = 0b0;
33226 let Inst{31-21} = 0b00011001011;
33227 let hasNewValue = 1;
33228 let opNewValue = 0;
33229 let isCVI = 1;
33230 let DecoderNamespace = "EXT_mmvec";
33231 }
33232 def V6_vlutvvb : HInst<
33233 (outs HvxVR:$Vd32),
33234 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
33235 "$Vd32.b = vlut32($Vu32.b,$Vv32.b,$Rt8)",
33236 tc_56e64202, TypeCVI_VP>, Enc_a30110, Requires<[UseHVXV60]> {
33237 let Inst{7-5} = 0b001;
33238 let Inst{13-13} = 0b1;
33239 let Inst{31-24} = 0b00011011;
33240 let hasNewValue = 1;
33241 let opNewValue = 0;
33242 let isCVI = 1;
33243 let DecoderNamespace = "EXT_mmvec";
33244 }
33245 def V6_vlutvvb_nm : HInst<
33246 (outs HvxVR:$Vd32),
33247 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
33248 "$Vd32.b = vlut32($Vu32.b,$Vv32.b,$Rt8):nomatch",
33249 tc_56e64202, TypeCVI_VP>, Enc_a30110, Requires<[UseHVXV62]> {
33250 let Inst{7-5} = 0b011;
33251 let Inst{13-13} = 0b0;
33252 let Inst{31-24} = 0b00011000;
33253 let hasNewValue = 1;
33254 let opNewValue = 0;
33255 let isCVI = 1;
33256 let DecoderNamespace = "EXT_mmvec";
33257 }
33258 def V6_vlutvvb_oracc : HInst<
33259 (outs HvxVR:$Vx32),
33260 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
33261 "$Vx32.b |= vlut32($Vu32.b,$Vv32.b,$Rt8)",
33262 tc_9d1dc972, TypeCVI_VP_VS>, Enc_245865, Requires<[UseHVXV60]> {
33263 let Inst{7-5} = 0b101;
33264 let Inst{13-13} = 0b1;
33265 let Inst{31-24} = 0b00011011;
33266 let hasNewValue = 1;
33267 let opNewValue = 0;
33268 let isAccumulator = 1;
33269 let isCVI = 1;
33270 let DecoderNamespace = "EXT_mmvec";
33271 let Constraints = "$Vx32 = $Vx32in";
33272 }
33273 def V6_vlutvvb_oracci : HInst<
33274 (outs HvxVR:$Vx32),
33275 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32, u3_0Imm:$Ii),
33276 "$Vx32.b |= vlut32($Vu32.b,$Vv32.b,#$Ii)",
33277 tc_9d1dc972, TypeCVI_VP_VS>, Enc_cd4705, Requires<[UseHVXV62]> {
33278 let Inst{13-13} = 0b1;
33279 let Inst{31-21} = 0b00011100110;
33280 let hasNewValue = 1;
33281 let opNewValue = 0;
33282 let isAccumulator = 1;
33283 let isCVI = 1;
33284 let DecoderNamespace = "EXT_mmvec";
33285 let Constraints = "$Vx32 = $Vx32in";
33286 }
33287 def V6_vlutvvbi : HInst<
33288 (outs HvxVR:$Vd32),
33289 (ins HvxVR:$Vu32, HvxVR:$Vv32, u3_0Imm:$Ii),
33290 "$Vd32.b = vlut32($Vu32.b,$Vv32.b,#$Ii)",
33291 tc_56e64202, TypeCVI_VP>, Enc_0b2e5b, Requires<[UseHVXV62]> {
33292 let Inst{13-13} = 0b0;
33293 let Inst{31-21} = 0b00011110001;
33294 let hasNewValue = 1;
33295 let opNewValue = 0;
33296 let isCVI = 1;
33297 let DecoderNamespace = "EXT_mmvec";
33298 }
33299 def V6_vlutvwh : HInst<
33300 (outs HvxWR:$Vdd32),
33301 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
33302 "$Vdd32.h = vlut16($Vu32.b,$Vv32.h,$Rt8)",
33303 tc_87adc037, TypeCVI_VP_VS>, Enc_24a7dc, Requires<[UseHVXV60]> {
33304 let Inst{7-5} = 0b110;
33305 let Inst{13-13} = 0b1;
33306 let Inst{31-24} = 0b00011011;
33307 let hasNewValue = 1;
33308 let opNewValue = 0;
33309 let isCVI = 1;
33310 let DecoderNamespace = "EXT_mmvec";
33311 }
33312 def V6_vlutvwh_nm : HInst<
33313 (outs HvxWR:$Vdd32),
33314 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
33315 "$Vdd32.h = vlut16($Vu32.b,$Vv32.h,$Rt8):nomatch",
33316 tc_87adc037, TypeCVI_VP_VS>, Enc_24a7dc, Requires<[UseHVXV62]> {
33317 let Inst{7-5} = 0b100;
33318 let Inst{13-13} = 0b0;
33319 let Inst{31-24} = 0b00011000;
33320 let hasNewValue = 1;
33321 let opNewValue = 0;
33322 let isCVI = 1;
33323 let DecoderNamespace = "EXT_mmvec";
33324 }
33325 def V6_vlutvwh_oracc : HInst<
33326 (outs HvxWR:$Vxx32),
33327 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
33328 "$Vxx32.h |= vlut16($Vu32.b,$Vv32.h,$Rt8)",
33329 tc_9d1dc972, TypeCVI_VP_VS>, Enc_7b523d, Requires<[UseHVXV60]> {
33330 let Inst{7-5} = 0b111;
33331 let Inst{13-13} = 0b1;
33332 let Inst{31-24} = 0b00011011;
33333 let hasNewValue = 1;
33334 let opNewValue = 0;
33335 let isAccumulator = 1;
33336 let isCVI = 1;
33337 let DecoderNamespace = "EXT_mmvec";
33338 let Constraints = "$Vxx32 = $Vxx32in";
33339 }
33340 def V6_vlutvwh_oracci : HInst<
33341 (outs HvxWR:$Vxx32),
33342 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32, u3_0Imm:$Ii),
33343 "$Vxx32.h |= vlut16($Vu32.b,$Vv32.h,#$Ii)",
33344 tc_9d1dc972, TypeCVI_VP_VS>, Enc_1178da, Requires<[UseHVXV62]> {
33345 let Inst{13-13} = 0b1;
33346 let Inst{31-21} = 0b00011100111;
33347 let hasNewValue = 1;
33348 let opNewValue = 0;
33349 let isAccumulator = 1;
33350 let isCVI = 1;
33351 let DecoderNamespace = "EXT_mmvec";
33352 let Constraints = "$Vxx32 = $Vxx32in";
33353 }
33354 def V6_vlutvwhi : HInst<
33355 (outs HvxWR:$Vdd32),
33356 (ins HvxVR:$Vu32, HvxVR:$Vv32, u3_0Imm:$Ii),
33357 "$Vdd32.h = vlut16($Vu32.b,$Vv32.h,#$Ii)",
33358 tc_87adc037, TypeCVI_VP_VS>, Enc_4b39e4, Requires<[UseHVXV62]> {
33359 let Inst{13-13} = 0b0;
33360 let Inst{31-21} = 0b00011110011;
33361 let hasNewValue = 1;
33362 let opNewValue = 0;
33363 let isCVI = 1;
33364 let DecoderNamespace = "EXT_mmvec";
33365 }
33366 def V6_vmaxb : HInst<
33367 (outs HvxVR:$Vd32),
33368 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33369 "$Vd32.b = vmax($Vu32.b,$Vv32.b)",
33370 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV62]> {
33371 let Inst{7-5} = 0b101;
33372 let Inst{13-13} = 0b0;
33373 let Inst{31-21} = 0b00011111001;
33374 let hasNewValue = 1;
33375 let opNewValue = 0;
33376 let isCVI = 1;
33377 let DecoderNamespace = "EXT_mmvec";
33378 }
33379 def V6_vmaxb_alt : HInst<
33380 (outs HvxVR:$Vd32),
33381 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33382 "$Vd32 = vmaxb($Vu32,$Vv32)",
33383 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
33384 let hasNewValue = 1;
33385 let opNewValue = 0;
33386 let isCVI = 1;
33387 let isPseudo = 1;
33388 let isCodeGenOnly = 1;
33389 let DecoderNamespace = "EXT_mmvec";
33390 }
33391 def V6_vmaxh : HInst<
33392 (outs HvxVR:$Vd32),
33393 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33394 "$Vd32.h = vmax($Vu32.h,$Vv32.h)",
33395 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
33396 let Inst{7-5} = 0b111;
33397 let Inst{13-13} = 0b0;
33398 let Inst{31-21} = 0b00011111000;
33399 let hasNewValue = 1;
33400 let opNewValue = 0;
33401 let isCVI = 1;
33402 let DecoderNamespace = "EXT_mmvec";
33403 }
33404 def V6_vmaxh_alt : HInst<
33405 (outs HvxVR:$Vd32),
33406 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33407 "$Vd32 = vmaxh($Vu32,$Vv32)",
33408 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33409 let hasNewValue = 1;
33410 let opNewValue = 0;
33411 let isCVI = 1;
33412 let isPseudo = 1;
33413 let isCodeGenOnly = 1;
33414 let DecoderNamespace = "EXT_mmvec";
33415 }
33416 def V6_vmaxub : HInst<
33417 (outs HvxVR:$Vd32),
33418 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33419 "$Vd32.ub = vmax($Vu32.ub,$Vv32.ub)",
33420 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
33421 let Inst{7-5} = 0b101;
33422 let Inst{13-13} = 0b0;
33423 let Inst{31-21} = 0b00011111000;
33424 let hasNewValue = 1;
33425 let opNewValue = 0;
33426 let isCVI = 1;
33427 let DecoderNamespace = "EXT_mmvec";
33428 }
33429 def V6_vmaxub_alt : HInst<
33430 (outs HvxVR:$Vd32),
33431 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33432 "$Vd32 = vmaxub($Vu32,$Vv32)",
33433 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33434 let hasNewValue = 1;
33435 let opNewValue = 0;
33436 let isCVI = 1;
33437 let isPseudo = 1;
33438 let isCodeGenOnly = 1;
33439 let DecoderNamespace = "EXT_mmvec";
33440 }
33441 def V6_vmaxuh : HInst<
33442 (outs HvxVR:$Vd32),
33443 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33444 "$Vd32.uh = vmax($Vu32.uh,$Vv32.uh)",
33445 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
33446 let Inst{7-5} = 0b110;
33447 let Inst{13-13} = 0b0;
33448 let Inst{31-21} = 0b00011111000;
33449 let hasNewValue = 1;
33450 let opNewValue = 0;
33451 let isCVI = 1;
33452 let DecoderNamespace = "EXT_mmvec";
33453 }
33454 def V6_vmaxuh_alt : HInst<
33455 (outs HvxVR:$Vd32),
33456 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33457 "$Vd32 = vmaxuh($Vu32,$Vv32)",
33458 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33459 let hasNewValue = 1;
33460 let opNewValue = 0;
33461 let isCVI = 1;
33462 let isPseudo = 1;
33463 let isCodeGenOnly = 1;
33464 let DecoderNamespace = "EXT_mmvec";
33465 }
33466 def V6_vmaxw : HInst<
33467 (outs HvxVR:$Vd32),
33468 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33469 "$Vd32.w = vmax($Vu32.w,$Vv32.w)",
33470 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
33471 let Inst{7-5} = 0b000;
33472 let Inst{13-13} = 0b0;
33473 let Inst{31-21} = 0b00011111001;
33474 let hasNewValue = 1;
33475 let opNewValue = 0;
33476 let isCVI = 1;
33477 let DecoderNamespace = "EXT_mmvec";
33478 }
33479 def V6_vmaxw_alt : HInst<
33480 (outs HvxVR:$Vd32),
33481 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33482 "$Vd32 = vmaxw($Vu32,$Vv32)",
33483 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33484 let hasNewValue = 1;
33485 let opNewValue = 0;
33486 let isCVI = 1;
33487 let isPseudo = 1;
33488 let isCodeGenOnly = 1;
33489 let DecoderNamespace = "EXT_mmvec";
33490 }
33491 def V6_vminb : HInst<
33492 (outs HvxVR:$Vd32),
33493 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33494 "$Vd32.b = vmin($Vu32.b,$Vv32.b)",
33495 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV62]> {
33496 let Inst{7-5} = 0b100;
33497 let Inst{13-13} = 0b0;
33498 let Inst{31-21} = 0b00011111001;
33499 let hasNewValue = 1;
33500 let opNewValue = 0;
33501 let isCVI = 1;
33502 let DecoderNamespace = "EXT_mmvec";
33503 }
33504 def V6_vminb_alt : HInst<
33505 (outs HvxVR:$Vd32),
33506 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33507 "$Vd32 = vminb($Vu32,$Vv32)",
33508 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
33509 let hasNewValue = 1;
33510 let opNewValue = 0;
33511 let isCVI = 1;
33512 let isPseudo = 1;
33513 let isCodeGenOnly = 1;
33514 let DecoderNamespace = "EXT_mmvec";
33515 }
33516 def V6_vminh : HInst<
33517 (outs HvxVR:$Vd32),
33518 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33519 "$Vd32.h = vmin($Vu32.h,$Vv32.h)",
33520 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
33521 let Inst{7-5} = 0b011;
33522 let Inst{13-13} = 0b0;
33523 let Inst{31-21} = 0b00011111000;
33524 let hasNewValue = 1;
33525 let opNewValue = 0;
33526 let isCVI = 1;
33527 let DecoderNamespace = "EXT_mmvec";
33528 }
33529 def V6_vminh_alt : HInst<
33530 (outs HvxVR:$Vd32),
33531 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33532 "$Vd32 = vminh($Vu32,$Vv32)",
33533 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33534 let hasNewValue = 1;
33535 let opNewValue = 0;
33536 let isCVI = 1;
33537 let isPseudo = 1;
33538 let isCodeGenOnly = 1;
33539 let DecoderNamespace = "EXT_mmvec";
33540 }
33541 def V6_vminub : HInst<
33542 (outs HvxVR:$Vd32),
33543 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33544 "$Vd32.ub = vmin($Vu32.ub,$Vv32.ub)",
33545 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
33546 let Inst{7-5} = 0b001;
33547 let Inst{13-13} = 0b0;
33548 let Inst{31-21} = 0b00011111000;
33549 let hasNewValue = 1;
33550 let opNewValue = 0;
33551 let isCVI = 1;
33552 let DecoderNamespace = "EXT_mmvec";
33553 }
33554 def V6_vminub_alt : HInst<
33555 (outs HvxVR:$Vd32),
33556 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33557 "$Vd32 = vminub($Vu32,$Vv32)",
33558 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33559 let hasNewValue = 1;
33560 let opNewValue = 0;
33561 let isCVI = 1;
33562 let isPseudo = 1;
33563 let isCodeGenOnly = 1;
33564 let DecoderNamespace = "EXT_mmvec";
33565 }
33566 def V6_vminuh : HInst<
33567 (outs HvxVR:$Vd32),
33568 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33569 "$Vd32.uh = vmin($Vu32.uh,$Vv32.uh)",
33570 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
33571 let Inst{7-5} = 0b010;
33572 let Inst{13-13} = 0b0;
33573 let Inst{31-21} = 0b00011111000;
33574 let hasNewValue = 1;
33575 let opNewValue = 0;
33576 let isCVI = 1;
33577 let DecoderNamespace = "EXT_mmvec";
33578 }
33579 def V6_vminuh_alt : HInst<
33580 (outs HvxVR:$Vd32),
33581 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33582 "$Vd32 = vminuh($Vu32,$Vv32)",
33583 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33584 let hasNewValue = 1;
33585 let opNewValue = 0;
33586 let isCVI = 1;
33587 let isPseudo = 1;
33588 let isCodeGenOnly = 1;
33589 let DecoderNamespace = "EXT_mmvec";
33590 }
33591 def V6_vminw : HInst<
33592 (outs HvxVR:$Vd32),
33593 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33594 "$Vd32.w = vmin($Vu32.w,$Vv32.w)",
33595 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
33596 let Inst{7-5} = 0b100;
33597 let Inst{13-13} = 0b0;
33598 let Inst{31-21} = 0b00011111000;
33599 let hasNewValue = 1;
33600 let opNewValue = 0;
33601 let isCVI = 1;
33602 let DecoderNamespace = "EXT_mmvec";
33603 }
33604 def V6_vminw_alt : HInst<
33605 (outs HvxVR:$Vd32),
33606 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33607 "$Vd32 = vminw($Vu32,$Vv32)",
33608 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33609 let hasNewValue = 1;
33610 let opNewValue = 0;
33611 let isCVI = 1;
33612 let isPseudo = 1;
33613 let isCodeGenOnly = 1;
33614 let DecoderNamespace = "EXT_mmvec";
33615 }
33616 def V6_vmpabus : HInst<
33617 (outs HvxWR:$Vdd32),
33618 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
33619 "$Vdd32.h = vmpa($Vuu32.ub,$Rt32.b)",
33620 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_aad80c, Requires<[UseHVXV60]> {
33621 let Inst{7-5} = 0b110;
33622 let Inst{13-13} = 0b0;
33623 let Inst{31-21} = 0b00011001001;
33624 let hasNewValue = 1;
33625 let opNewValue = 0;
33626 let isCVI = 1;
33627 let DecoderNamespace = "EXT_mmvec";
33628 }
33629 def V6_vmpabus_acc : HInst<
33630 (outs HvxWR:$Vxx32),
33631 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
33632 "$Vxx32.h += vmpa($Vuu32.ub,$Rt32.b)",
33633 tc_660769f1, TypeCVI_VX_DV>, Enc_d6990d, Requires<[UseHVXV60]> {
33634 let Inst{7-5} = 0b110;
33635 let Inst{13-13} = 0b1;
33636 let Inst{31-21} = 0b00011001001;
33637 let hasNewValue = 1;
33638 let opNewValue = 0;
33639 let isAccumulator = 1;
33640 let isCVI = 1;
33641 let DecoderNamespace = "EXT_mmvec";
33642 let Constraints = "$Vxx32 = $Vxx32in";
33643 }
33644 def V6_vmpabus_acc_alt : HInst<
33645 (outs HvxWR:$Vxx32),
33646 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
33647 "$Vxx32 += vmpabus($Vuu32,$Rt32)",
33648 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33649 let hasNewValue = 1;
33650 let opNewValue = 0;
33651 let isAccumulator = 1;
33652 let isCVI = 1;
33653 let isPseudo = 1;
33654 let isCodeGenOnly = 1;
33655 let DecoderNamespace = "EXT_mmvec";
33656 let Constraints = "$Vxx32 = $Vxx32in";
33657 }
33658 def V6_vmpabus_alt : HInst<
33659 (outs HvxWR:$Vdd32),
33660 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
33661 "$Vdd32 = vmpabus($Vuu32,$Rt32)",
33662 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33663 let hasNewValue = 1;
33664 let opNewValue = 0;
33665 let isCVI = 1;
33666 let isPseudo = 1;
33667 let isCodeGenOnly = 1;
33668 let DecoderNamespace = "EXT_mmvec";
33669 }
33670 def V6_vmpabusv : HInst<
33671 (outs HvxWR:$Vdd32),
33672 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
33673 "$Vdd32.h = vmpa($Vuu32.ub,$Vvv32.b)",
33674 tc_d8287c14, TypeCVI_VX_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
33675 let Inst{7-5} = 0b011;
33676 let Inst{13-13} = 0b0;
33677 let Inst{31-21} = 0b00011100001;
33678 let hasNewValue = 1;
33679 let opNewValue = 0;
33680 let isCVI = 1;
33681 let DecoderNamespace = "EXT_mmvec";
33682 }
33683 def V6_vmpabusv_alt : HInst<
33684 (outs HvxWR:$Vdd32),
33685 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
33686 "$Vdd32 = vmpabus($Vuu32,$Vvv32)",
33687 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33688 let hasNewValue = 1;
33689 let opNewValue = 0;
33690 let isCVI = 1;
33691 let isPseudo = 1;
33692 let isCodeGenOnly = 1;
33693 let DecoderNamespace = "EXT_mmvec";
33694 }
33695 def V6_vmpabuu : HInst<
33696 (outs HvxWR:$Vdd32),
33697 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
33698 "$Vdd32.h = vmpa($Vuu32.ub,$Rt32.ub)",
33699 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_aad80c, Requires<[UseHVXV65]> {
33700 let Inst{7-5} = 0b011;
33701 let Inst{13-13} = 0b0;
33702 let Inst{31-21} = 0b00011001011;
33703 let hasNewValue = 1;
33704 let opNewValue = 0;
33705 let isCVI = 1;
33706 let DecoderNamespace = "EXT_mmvec";
33707 }
33708 def V6_vmpabuu_acc : HInst<
33709 (outs HvxWR:$Vxx32),
33710 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
33711 "$Vxx32.h += vmpa($Vuu32.ub,$Rt32.ub)",
33712 tc_660769f1, TypeCVI_VX_DV>, Enc_d6990d, Requires<[UseHVXV65]> {
33713 let Inst{7-5} = 0b100;
33714 let Inst{13-13} = 0b1;
33715 let Inst{31-21} = 0b00011001101;
33716 let hasNewValue = 1;
33717 let opNewValue = 0;
33718 let isAccumulator = 1;
33719 let isCVI = 1;
33720 let DecoderNamespace = "EXT_mmvec";
33721 let Constraints = "$Vxx32 = $Vxx32in";
33722 }
33723 def V6_vmpabuu_acc_alt : HInst<
33724 (outs HvxWR:$Vxx32),
33725 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
33726 "$Vxx32 += vmpabuu($Vuu32,$Rt32)",
33727 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
33728 let hasNewValue = 1;
33729 let opNewValue = 0;
33730 let isAccumulator = 1;
33731 let isCVI = 1;
33732 let isPseudo = 1;
33733 let isCodeGenOnly = 1;
33734 let DecoderNamespace = "EXT_mmvec";
33735 let Constraints = "$Vxx32 = $Vxx32in";
33736 }
33737 def V6_vmpabuu_alt : HInst<
33738 (outs HvxWR:$Vdd32),
33739 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
33740 "$Vdd32 = vmpabuu($Vuu32,$Rt32)",
33741 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
33742 let hasNewValue = 1;
33743 let opNewValue = 0;
33744 let isCVI = 1;
33745 let isPseudo = 1;
33746 let isCodeGenOnly = 1;
33747 let DecoderNamespace = "EXT_mmvec";
33748 }
33749 def V6_vmpabuuv : HInst<
33750 (outs HvxWR:$Vdd32),
33751 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
33752 "$Vdd32.h = vmpa($Vuu32.ub,$Vvv32.ub)",
33753 tc_d8287c14, TypeCVI_VX_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
33754 let Inst{7-5} = 0b111;
33755 let Inst{13-13} = 0b0;
33756 let Inst{31-21} = 0b00011100111;
33757 let hasNewValue = 1;
33758 let opNewValue = 0;
33759 let isCVI = 1;
33760 let DecoderNamespace = "EXT_mmvec";
33761 }
33762 def V6_vmpabuuv_alt : HInst<
33763 (outs HvxWR:$Vdd32),
33764 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
33765 "$Vdd32 = vmpabuu($Vuu32,$Vvv32)",
33766 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33767 let hasNewValue = 1;
33768 let opNewValue = 0;
33769 let isCVI = 1;
33770 let isPseudo = 1;
33771 let isCodeGenOnly = 1;
33772 let DecoderNamespace = "EXT_mmvec";
33773 }
33774 def V6_vmpahb : HInst<
33775 (outs HvxWR:$Vdd32),
33776 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
33777 "$Vdd32.w = vmpa($Vuu32.h,$Rt32.b)",
33778 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_aad80c, Requires<[UseHVXV60]> {
33779 let Inst{7-5} = 0b111;
33780 let Inst{13-13} = 0b0;
33781 let Inst{31-21} = 0b00011001001;
33782 let hasNewValue = 1;
33783 let opNewValue = 0;
33784 let isCVI = 1;
33785 let DecoderNamespace = "EXT_mmvec";
33786 }
33787 def V6_vmpahb_acc : HInst<
33788 (outs HvxWR:$Vxx32),
33789 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
33790 "$Vxx32.w += vmpa($Vuu32.h,$Rt32.b)",
33791 tc_660769f1, TypeCVI_VX_DV>, Enc_d6990d, Requires<[UseHVXV60]> {
33792 let Inst{7-5} = 0b111;
33793 let Inst{13-13} = 0b1;
33794 let Inst{31-21} = 0b00011001001;
33795 let hasNewValue = 1;
33796 let opNewValue = 0;
33797 let isAccumulator = 1;
33798 let isCVI = 1;
33799 let DecoderNamespace = "EXT_mmvec";
33800 let Constraints = "$Vxx32 = $Vxx32in";
33801 }
33802 def V6_vmpahb_acc_alt : HInst<
33803 (outs HvxWR:$Vxx32),
33804 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
33805 "$Vxx32 += vmpahb($Vuu32,$Rt32)",
33806 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33807 let hasNewValue = 1;
33808 let opNewValue = 0;
33809 let isAccumulator = 1;
33810 let isCVI = 1;
33811 let isPseudo = 1;
33812 let isCodeGenOnly = 1;
33813 let DecoderNamespace = "EXT_mmvec";
33814 let Constraints = "$Vxx32 = $Vxx32in";
33815 }
33816 def V6_vmpahb_alt : HInst<
33817 (outs HvxWR:$Vdd32),
33818 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
33819 "$Vdd32 = vmpahb($Vuu32,$Rt32)",
33820 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33821 let hasNewValue = 1;
33822 let opNewValue = 0;
33823 let isCVI = 1;
33824 let isPseudo = 1;
33825 let isCodeGenOnly = 1;
33826 let DecoderNamespace = "EXT_mmvec";
33827 }
33828 def V6_vmpahhsat : HInst<
33829 (outs HvxVR:$Vx32),
33830 (ins HvxVR:$Vx32in, HvxVR:$Vu32, DoubleRegs:$Rtt32),
33831 "$Vx32.h = vmpa($Vx32in.h,$Vu32.h,$Rtt32.h):sat",
33832 tc_90bcc1db, TypeCVI_VX_DV>, Enc_310ba1, Requires<[UseHVXV65]> {
33833 let Inst{7-5} = 0b100;
33834 let Inst{13-13} = 0b1;
33835 let Inst{31-21} = 0b00011001100;
33836 let hasNewValue = 1;
33837 let opNewValue = 0;
33838 let isCVI = 1;
33839 let DecoderNamespace = "EXT_mmvec";
33840 let Constraints = "$Vx32 = $Vx32in";
33841 }
33842 def V6_vmpauhb : HInst<
33843 (outs HvxWR:$Vdd32),
33844 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
33845 "$Vdd32.w = vmpa($Vuu32.uh,$Rt32.b)",
33846 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_aad80c, Requires<[UseHVXV62]> {
33847 let Inst{7-5} = 0b101;
33848 let Inst{13-13} = 0b0;
33849 let Inst{31-21} = 0b00011001100;
33850 let hasNewValue = 1;
33851 let opNewValue = 0;
33852 let isCVI = 1;
33853 let DecoderNamespace = "EXT_mmvec";
33854 }
33855 def V6_vmpauhb_acc : HInst<
33856 (outs HvxWR:$Vxx32),
33857 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
33858 "$Vxx32.w += vmpa($Vuu32.uh,$Rt32.b)",
33859 tc_660769f1, TypeCVI_VX_DV>, Enc_d6990d, Requires<[UseHVXV62]> {
33860 let Inst{7-5} = 0b010;
33861 let Inst{13-13} = 0b1;
33862 let Inst{31-21} = 0b00011001100;
33863 let hasNewValue = 1;
33864 let opNewValue = 0;
33865 let isAccumulator = 1;
33866 let isCVI = 1;
33867 let DecoderNamespace = "EXT_mmvec";
33868 let Constraints = "$Vxx32 = $Vxx32in";
33869 }
33870 def V6_vmpauhb_acc_alt : HInst<
33871 (outs HvxWR:$Vxx32),
33872 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
33873 "$Vxx32 += vmpauhb($Vuu32,$Rt32)",
33874 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
33875 let hasNewValue = 1;
33876 let opNewValue = 0;
33877 let isAccumulator = 1;
33878 let isCVI = 1;
33879 let isPseudo = 1;
33880 let isCodeGenOnly = 1;
33881 let DecoderNamespace = "EXT_mmvec";
33882 let Constraints = "$Vxx32 = $Vxx32in";
33883 }
33884 def V6_vmpauhb_alt : HInst<
33885 (outs HvxWR:$Vdd32),
33886 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
33887 "$Vdd32 = vmpauhb($Vuu32,$Rt32)",
33888 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
33889 let hasNewValue = 1;
33890 let opNewValue = 0;
33891 let isCVI = 1;
33892 let isPseudo = 1;
33893 let isCodeGenOnly = 1;
33894 let DecoderNamespace = "EXT_mmvec";
33895 }
33896 def V6_vmpauhuhsat : HInst<
33897 (outs HvxVR:$Vx32),
33898 (ins HvxVR:$Vx32in, HvxVR:$Vu32, DoubleRegs:$Rtt32),
33899 "$Vx32.h = vmpa($Vx32in.h,$Vu32.uh,$Rtt32.uh):sat",
33900 tc_90bcc1db, TypeCVI_VX_DV>, Enc_310ba1, Requires<[UseHVXV65]> {
33901 let Inst{7-5} = 0b101;
33902 let Inst{13-13} = 0b1;
33903 let Inst{31-21} = 0b00011001100;
33904 let hasNewValue = 1;
33905 let opNewValue = 0;
33906 let isCVI = 1;
33907 let DecoderNamespace = "EXT_mmvec";
33908 let Constraints = "$Vx32 = $Vx32in";
33909 }
33910 def V6_vmpsuhuhsat : HInst<
33911 (outs HvxVR:$Vx32),
33912 (ins HvxVR:$Vx32in, HvxVR:$Vu32, DoubleRegs:$Rtt32),
33913 "$Vx32.h = vmps($Vx32in.h,$Vu32.uh,$Rtt32.uh):sat",
33914 tc_90bcc1db, TypeCVI_VX_DV>, Enc_310ba1, Requires<[UseHVXV65]> {
33915 let Inst{7-5} = 0b110;
33916 let Inst{13-13} = 0b1;
33917 let Inst{31-21} = 0b00011001100;
33918 let hasNewValue = 1;
33919 let opNewValue = 0;
33920 let isCVI = 1;
33921 let DecoderNamespace = "EXT_mmvec";
33922 let Constraints = "$Vx32 = $Vx32in";
33923 }
33924 def V6_vmpybus : HInst<
33925 (outs HvxWR:$Vdd32),
33926 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33927 "$Vdd32.h = vmpy($Vu32.ub,$Rt32.b)",
33928 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_01d3d0, Requires<[UseHVXV60]> {
33929 let Inst{7-5} = 0b101;
33930 let Inst{13-13} = 0b0;
33931 let Inst{31-21} = 0b00011001001;
33932 let hasNewValue = 1;
33933 let opNewValue = 0;
33934 let isCVI = 1;
33935 let DecoderNamespace = "EXT_mmvec";
33936 }
33937 def V6_vmpybus_acc : HInst<
33938 (outs HvxWR:$Vxx32),
33939 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, IntRegs:$Rt32),
33940 "$Vxx32.h += vmpy($Vu32.ub,$Rt32.b)",
33941 tc_660769f1, TypeCVI_VX_DV>, Enc_5e8512, Requires<[UseHVXV60]> {
33942 let Inst{7-5} = 0b101;
33943 let Inst{13-13} = 0b1;
33944 let Inst{31-21} = 0b00011001001;
33945 let hasNewValue = 1;
33946 let opNewValue = 0;
33947 let isAccumulator = 1;
33948 let isCVI = 1;
33949 let DecoderNamespace = "EXT_mmvec";
33950 let Constraints = "$Vxx32 = $Vxx32in";
33951 }
33952 def V6_vmpybus_acc_alt : HInst<
33953 (outs HvxWR:$Vxx32),
33954 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, IntRegs:$Rt32),
33955 "$Vxx32 += vmpybus($Vu32,$Rt32)",
33956 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33957 let hasNewValue = 1;
33958 let opNewValue = 0;
33959 let isAccumulator = 1;
33960 let isCVI = 1;
33961 let isPseudo = 1;
33962 let isCodeGenOnly = 1;
33963 let DecoderNamespace = "EXT_mmvec";
33964 let Constraints = "$Vxx32 = $Vxx32in";
33965 }
33966 def V6_vmpybus_alt : HInst<
33967 (outs HvxWR:$Vdd32),
33968 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33969 "$Vdd32 = vmpybus($Vu32,$Rt32)",
33970 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33971 let hasNewValue = 1;
33972 let opNewValue = 0;
33973 let isCVI = 1;
33974 let isPseudo = 1;
33975 let isCodeGenOnly = 1;
33976 let DecoderNamespace = "EXT_mmvec";
33977 }
33978 def V6_vmpybusv : HInst<
33979 (outs HvxWR:$Vdd32),
33980 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33981 "$Vdd32.h = vmpy($Vu32.ub,$Vv32.b)",
33982 tc_d8287c14, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
33983 let Inst{7-5} = 0b110;
33984 let Inst{13-13} = 0b0;
33985 let Inst{31-21} = 0b00011100000;
33986 let hasNewValue = 1;
33987 let opNewValue = 0;
33988 let isCVI = 1;
33989 let DecoderNamespace = "EXT_mmvec";
33990 }
33991 def V6_vmpybusv_acc : HInst<
33992 (outs HvxWR:$Vxx32),
33993 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33994 "$Vxx32.h += vmpy($Vu32.ub,$Vv32.b)",
33995 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_3fc427, Requires<[UseHVXV60]> {
33996 let Inst{7-5} = 0b110;
33997 let Inst{13-13} = 0b1;
33998 let Inst{31-21} = 0b00011100000;
33999 let hasNewValue = 1;
34000 let opNewValue = 0;
34001 let isAccumulator = 1;
34002 let isCVI = 1;
34003 let DecoderNamespace = "EXT_mmvec";
34004 let Constraints = "$Vxx32 = $Vxx32in";
34005 }
34006 def V6_vmpybusv_acc_alt : HInst<
34007 (outs HvxWR:$Vxx32),
34008 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34009 "$Vxx32 += vmpybus($Vu32,$Vv32)",
34010 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34011 let hasNewValue = 1;
34012 let opNewValue = 0;
34013 let isAccumulator = 1;
34014 let isCVI = 1;
34015 let isPseudo = 1;
34016 let isCodeGenOnly = 1;
34017 let DecoderNamespace = "EXT_mmvec";
34018 let Constraints = "$Vxx32 = $Vxx32in";
34019 }
34020 def V6_vmpybusv_alt : HInst<
34021 (outs HvxWR:$Vdd32),
34022 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34023 "$Vdd32 = vmpybus($Vu32,$Vv32)",
34024 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34025 let hasNewValue = 1;
34026 let opNewValue = 0;
34027 let isCVI = 1;
34028 let isPseudo = 1;
34029 let isCodeGenOnly = 1;
34030 let DecoderNamespace = "EXT_mmvec";
34031 }
34032 def V6_vmpybv : HInst<
34033 (outs HvxWR:$Vdd32),
34034 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34035 "$Vdd32.h = vmpy($Vu32.b,$Vv32.b)",
34036 tc_d8287c14, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
34037 let Inst{7-5} = 0b100;
34038 let Inst{13-13} = 0b0;
34039 let Inst{31-21} = 0b00011100000;
34040 let hasNewValue = 1;
34041 let opNewValue = 0;
34042 let isCVI = 1;
34043 let DecoderNamespace = "EXT_mmvec";
34044 }
34045 def V6_vmpybv_acc : HInst<
34046 (outs HvxWR:$Vxx32),
34047 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34048 "$Vxx32.h += vmpy($Vu32.b,$Vv32.b)",
34049 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_3fc427, Requires<[UseHVXV60]> {
34050 let Inst{7-5} = 0b100;
34051 let Inst{13-13} = 0b1;
34052 let Inst{31-21} = 0b00011100000;
34053 let hasNewValue = 1;
34054 let opNewValue = 0;
34055 let isAccumulator = 1;
34056 let isCVI = 1;
34057 let DecoderNamespace = "EXT_mmvec";
34058 let Constraints = "$Vxx32 = $Vxx32in";
34059 }
34060 def V6_vmpybv_acc_alt : HInst<
34061 (outs HvxWR:$Vxx32),
34062 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34063 "$Vxx32 += vmpyb($Vu32,$Vv32)",
34064 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34065 let hasNewValue = 1;
34066 let opNewValue = 0;
34067 let isAccumulator = 1;
34068 let isCVI = 1;
34069 let isPseudo = 1;
34070 let isCodeGenOnly = 1;
34071 let DecoderNamespace = "EXT_mmvec";
34072 let Constraints = "$Vxx32 = $Vxx32in";
34073 }
34074 def V6_vmpybv_alt : HInst<
34075 (outs HvxWR:$Vdd32),
34076 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34077 "$Vdd32 = vmpyb($Vu32,$Vv32)",
34078 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34079 let hasNewValue = 1;
34080 let opNewValue = 0;
34081 let isCVI = 1;
34082 let isPseudo = 1;
34083 let isCodeGenOnly = 1;
34084 let DecoderNamespace = "EXT_mmvec";
34085 }
34086 def V6_vmpyewuh : HInst<
34087 (outs HvxVR:$Vd32),
34088 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34089 "$Vd32.w = vmpye($Vu32.w,$Vv32.uh)",
34090 tc_d8287c14, TypeCVI_VX_DV>, Enc_45364e, Requires<[UseHVXV60]> {
34091 let Inst{7-5} = 0b101;
34092 let Inst{13-13} = 0b0;
34093 let Inst{31-21} = 0b00011111111;
34094 let hasNewValue = 1;
34095 let opNewValue = 0;
34096 let isCVI = 1;
34097 let DecoderNamespace = "EXT_mmvec";
34098 }
34099 def V6_vmpyewuh_64 : HInst<
34100 (outs HvxWR:$Vdd32),
34101 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34102 "$Vdd32 = vmpye($Vu32.w,$Vv32.uh)",
34103 tc_d8287c14, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV62]> {
34104 let Inst{7-5} = 0b110;
34105 let Inst{13-13} = 0b0;
34106 let Inst{31-21} = 0b00011110101;
34107 let hasNewValue = 1;
34108 let opNewValue = 0;
34109 let isCVI = 1;
34110 let DecoderNamespace = "EXT_mmvec";
34111 }
34112 def V6_vmpyewuh_alt : HInst<
34113 (outs HvxVR:$Vd32),
34114 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34115 "$Vd32 = vmpyewuh($Vu32,$Vv32)",
34116 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34117 let hasNewValue = 1;
34118 let opNewValue = 0;
34119 let isCVI = 1;
34120 let isPseudo = 1;
34121 let isCodeGenOnly = 1;
34122 let DecoderNamespace = "EXT_mmvec";
34123 }
34124 def V6_vmpyh : HInst<
34125 (outs HvxWR:$Vdd32),
34126 (ins HvxVR:$Vu32, IntRegs:$Rt32),
34127 "$Vdd32.w = vmpy($Vu32.h,$Rt32.h)",
34128 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_01d3d0, Requires<[UseHVXV60]> {
34129 let Inst{7-5} = 0b000;
34130 let Inst{13-13} = 0b0;
34131 let Inst{31-21} = 0b00011001010;
34132 let hasNewValue = 1;
34133 let opNewValue = 0;
34134 let isCVI = 1;
34135 let DecoderNamespace = "EXT_mmvec";
34136 }
34137 def V6_vmpyh_acc : HInst<
34138 (outs HvxWR:$Vxx32),
34139 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, IntRegs:$Rt32),
34140 "$Vxx32.w += vmpy($Vu32.h,$Rt32.h)",
34141 tc_660769f1, TypeCVI_VX_DV>, Enc_5e8512, Requires<[UseHVXV65]> {
34142 let Inst{7-5} = 0b110;
34143 let Inst{13-13} = 0b1;
34144 let Inst{31-21} = 0b00011001101;
34145 let hasNewValue = 1;
34146 let opNewValue = 0;
34147 let isAccumulator = 1;
34148 let isCVI = 1;
34149 let DecoderNamespace = "EXT_mmvec";
34150 let Constraints = "$Vxx32 = $Vxx32in";
34151 }
34152 def V6_vmpyh_acc_alt : HInst<
34153 (outs HvxWR:$Vxx32),
34154 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, IntRegs:$Rt32),
34155 "$Vxx32 += vmpyh($Vu32,$Rt32)",
34156 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
34157 let hasNewValue = 1;
34158 let opNewValue = 0;
34159 let isAccumulator = 1;
34160 let isCVI = 1;
34161 let isPseudo = 1;
34162 let isCodeGenOnly = 1;
34163 let DecoderNamespace = "EXT_mmvec";
34164 let Constraints = "$Vxx32 = $Vxx32in";
34165 }
34166 def V6_vmpyh_alt : HInst<
34167 (outs HvxWR:$Vdd32),
34168 (ins HvxVR:$Vu32, IntRegs:$Rt32),
34169 "$Vdd32 = vmpyh($Vu32,$Rt32)",
34170 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34171 let hasNewValue = 1;
34172 let opNewValue = 0;
34173 let isCVI = 1;
34174 let isPseudo = 1;
34175 let isCodeGenOnly = 1;
34176 let DecoderNamespace = "EXT_mmvec";
34177 }
34178 def V6_vmpyhsat_acc : HInst<
34179 (outs HvxWR:$Vxx32),
34180 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, IntRegs:$Rt32),
34181 "$Vxx32.w += vmpy($Vu32.h,$Rt32.h):sat",
34182 tc_660769f1, TypeCVI_VX_DV>, Enc_5e8512, Requires<[UseHVXV60]> {
34183 let Inst{7-5} = 0b000;
34184 let Inst{13-13} = 0b1;
34185 let Inst{31-21} = 0b00011001010;
34186 let hasNewValue = 1;
34187 let opNewValue = 0;
34188 let isAccumulator = 1;
34189 let isCVI = 1;
34190 let DecoderNamespace = "EXT_mmvec";
34191 let Constraints = "$Vxx32 = $Vxx32in";
34192 }
34193 def V6_vmpyhsat_acc_alt : HInst<
34194 (outs HvxWR:$Vxx32),
34195 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, IntRegs:$Rt32),
34196 "$Vxx32 += vmpyh($Vu32,$Rt32):sat",
34197 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34198 let hasNewValue = 1;
34199 let opNewValue = 0;
34200 let isAccumulator = 1;
34201 let isCVI = 1;
34202 let isPseudo = 1;
34203 let isCodeGenOnly = 1;
34204 let DecoderNamespace = "EXT_mmvec";
34205 let Constraints = "$Vxx32 = $Vxx32in";
34206 }
34207 def V6_vmpyhsrs : HInst<
34208 (outs HvxVR:$Vd32),
34209 (ins HvxVR:$Vu32, IntRegs:$Rt32),
34210 "$Vd32.h = vmpy($Vu32.h,$Rt32.h):<<1:rnd:sat",
34211 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_b087ac, Requires<[UseHVXV60]> {
34212 let Inst{7-5} = 0b010;
34213 let Inst{13-13} = 0b0;
34214 let Inst{31-21} = 0b00011001010;
34215 let hasNewValue = 1;
34216 let opNewValue = 0;
34217 let isCVI = 1;
34218 let DecoderNamespace = "EXT_mmvec";
34219 }
34220 def V6_vmpyhsrs_alt : HInst<
34221 (outs HvxVR:$Vd32),
34222 (ins HvxVR:$Vu32, IntRegs:$Rt32),
34223 "$Vd32 = vmpyh($Vu32,$Rt32):<<1:rnd:sat",
34224 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34225 let hasNewValue = 1;
34226 let opNewValue = 0;
34227 let isCVI = 1;
34228 let isPseudo = 1;
34229 let isCodeGenOnly = 1;
34230 let DecoderNamespace = "EXT_mmvec";
34231 }
34232 def V6_vmpyhss : HInst<
34233 (outs HvxVR:$Vd32),
34234 (ins HvxVR:$Vu32, IntRegs:$Rt32),
34235 "$Vd32.h = vmpy($Vu32.h,$Rt32.h):<<1:sat",
34236 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_b087ac, Requires<[UseHVXV60]> {
34237 let Inst{7-5} = 0b001;
34238 let Inst{13-13} = 0b0;
34239 let Inst{31-21} = 0b00011001010;
34240 let hasNewValue = 1;
34241 let opNewValue = 0;
34242 let isCVI = 1;
34243 let DecoderNamespace = "EXT_mmvec";
34244 }
34245 def V6_vmpyhss_alt : HInst<
34246 (outs HvxVR:$Vd32),
34247 (ins HvxVR:$Vu32, IntRegs:$Rt32),
34248 "$Vd32 = vmpyh($Vu32,$Rt32):<<1:sat",
34249 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34250 let hasNewValue = 1;
34251 let opNewValue = 0;
34252 let isCVI = 1;
34253 let isPseudo = 1;
34254 let isCodeGenOnly = 1;
34255 let DecoderNamespace = "EXT_mmvec";
34256 }
34257 def V6_vmpyhus : HInst<
34258 (outs HvxWR:$Vdd32),
34259 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34260 "$Vdd32.w = vmpy($Vu32.h,$Vv32.uh)",
34261 tc_d8287c14, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
34262 let Inst{7-5} = 0b010;
34263 let Inst{13-13} = 0b0;
34264 let Inst{31-21} = 0b00011100001;
34265 let hasNewValue = 1;
34266 let opNewValue = 0;
34267 let isCVI = 1;
34268 let DecoderNamespace = "EXT_mmvec";
34269 }
34270 def V6_vmpyhus_acc : HInst<
34271 (outs HvxWR:$Vxx32),
34272 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34273 "$Vxx32.w += vmpy($Vu32.h,$Vv32.uh)",
34274 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_3fc427, Requires<[UseHVXV60]> {
34275 let Inst{7-5} = 0b001;
34276 let Inst{13-13} = 0b1;
34277 let Inst{31-21} = 0b00011100001;
34278 let hasNewValue = 1;
34279 let opNewValue = 0;
34280 let isAccumulator = 1;
34281 let isCVI = 1;
34282 let DecoderNamespace = "EXT_mmvec";
34283 let Constraints = "$Vxx32 = $Vxx32in";
34284 }
34285 def V6_vmpyhus_acc_alt : HInst<
34286 (outs HvxWR:$Vxx32),
34287 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34288 "$Vxx32 += vmpyhus($Vu32,$Vv32)",
34289 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34290 let hasNewValue = 1;
34291 let opNewValue = 0;
34292 let isAccumulator = 1;
34293 let isCVI = 1;
34294 let isPseudo = 1;
34295 let isCodeGenOnly = 1;
34296 let DecoderNamespace = "EXT_mmvec";
34297 let Constraints = "$Vxx32 = $Vxx32in";
34298 }
34299 def V6_vmpyhus_alt : HInst<
34300 (outs HvxWR:$Vdd32),
34301 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34302 "$Vdd32 = vmpyhus($Vu32,$Vv32)",
34303 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34304 let hasNewValue = 1;
34305 let opNewValue = 0;
34306 let isCVI = 1;
34307 let isPseudo = 1;
34308 let isCodeGenOnly = 1;
34309 let DecoderNamespace = "EXT_mmvec";
34310 }
34311 def V6_vmpyhv : HInst<
34312 (outs HvxWR:$Vdd32),
34313 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34314 "$Vdd32.w = vmpy($Vu32.h,$Vv32.h)",
34315 tc_d8287c14, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
34316 let Inst{7-5} = 0b111;
34317 let Inst{13-13} = 0b0;
34318 let Inst{31-21} = 0b00011100000;
34319 let hasNewValue = 1;
34320 let opNewValue = 0;
34321 let isCVI = 1;
34322 let DecoderNamespace = "EXT_mmvec";
34323 }
34324 def V6_vmpyhv_acc : HInst<
34325 (outs HvxWR:$Vxx32),
34326 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34327 "$Vxx32.w += vmpy($Vu32.h,$Vv32.h)",
34328 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_3fc427, Requires<[UseHVXV60]> {
34329 let Inst{7-5} = 0b111;
34330 let Inst{13-13} = 0b1;
34331 let Inst{31-21} = 0b00011100000;
34332 let hasNewValue = 1;
34333 let opNewValue = 0;
34334 let isAccumulator = 1;
34335 let isCVI = 1;
34336 let DecoderNamespace = "EXT_mmvec";
34337 let Constraints = "$Vxx32 = $Vxx32in";
34338 }
34339 def V6_vmpyhv_acc_alt : HInst<
34340 (outs HvxWR:$Vxx32),
34341 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34342 "$Vxx32 += vmpyh($Vu32,$Vv32)",
34343 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34344 let hasNewValue = 1;
34345 let opNewValue = 0;
34346 let isAccumulator = 1;
34347 let isCVI = 1;
34348 let isPseudo = 1;
34349 let isCodeGenOnly = 1;
34350 let DecoderNamespace = "EXT_mmvec";
34351 let Constraints = "$Vxx32 = $Vxx32in";
34352 }
34353 def V6_vmpyhv_alt : HInst<
34354 (outs HvxWR:$Vdd32),
34355 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34356 "$Vdd32 = vmpyh($Vu32,$Vv32)",
34357 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34358 let hasNewValue = 1;
34359 let opNewValue = 0;
34360 let isCVI = 1;
34361 let isPseudo = 1;
34362 let isCodeGenOnly = 1;
34363 let DecoderNamespace = "EXT_mmvec";
34364 }
34365 def V6_vmpyhvsrs : HInst<
34366 (outs HvxVR:$Vd32),
34367 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34368 "$Vd32.h = vmpy($Vu32.h,$Vv32.h):<<1:rnd:sat",
34369 tc_d8287c14, TypeCVI_VX_DV>, Enc_45364e, Requires<[UseHVXV60]> {
34370 let Inst{7-5} = 0b001;
34371 let Inst{13-13} = 0b0;
34372 let Inst{31-21} = 0b00011100001;
34373 let hasNewValue = 1;
34374 let opNewValue = 0;
34375 let isCVI = 1;
34376 let DecoderNamespace = "EXT_mmvec";
34377 }
34378 def V6_vmpyhvsrs_alt : HInst<
34379 (outs HvxVR:$Vd32),
34380 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34381 "$Vd32 = vmpyh($Vu32,$Vv32):<<1:rnd:sat",
34382 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34383 let hasNewValue = 1;
34384 let opNewValue = 0;
34385 let isCVI = 1;
34386 let isPseudo = 1;
34387 let isCodeGenOnly = 1;
34388 let DecoderNamespace = "EXT_mmvec";
34389 }
34390 def V6_vmpyieoh : HInst<
34391 (outs HvxVR:$Vd32),
34392 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34393 "$Vd32.w = vmpyieo($Vu32.h,$Vv32.h)",
34394 tc_c127de3a, TypeCVI_VX>, Enc_45364e, Requires<[UseHVXV60]> {
34395 let Inst{7-5} = 0b000;
34396 let Inst{13-13} = 0b0;
34397 let Inst{31-21} = 0b00011111011;
34398 let hasNewValue = 1;
34399 let opNewValue = 0;
34400 let isCVI = 1;
34401 let DecoderNamespace = "EXT_mmvec";
34402 }
34403 def V6_vmpyiewh_acc : HInst<
34404 (outs HvxVR:$Vx32),
34405 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34406 "$Vx32.w += vmpyie($Vu32.w,$Vv32.h)",
34407 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_a7341a, Requires<[UseHVXV60]> {
34408 let Inst{7-5} = 0b000;
34409 let Inst{13-13} = 0b1;
34410 let Inst{31-21} = 0b00011100010;
34411 let hasNewValue = 1;
34412 let opNewValue = 0;
34413 let isAccumulator = 1;
34414 let isCVI = 1;
34415 let DecoderNamespace = "EXT_mmvec";
34416 let Constraints = "$Vx32 = $Vx32in";
34417 }
34418 def V6_vmpyiewh_acc_alt : HInst<
34419 (outs HvxVR:$Vx32),
34420 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34421 "$Vx32 += vmpyiewh($Vu32,$Vv32)",
34422 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34423 let hasNewValue = 1;
34424 let opNewValue = 0;
34425 let isAccumulator = 1;
34426 let isCVI = 1;
34427 let isPseudo = 1;
34428 let isCodeGenOnly = 1;
34429 let DecoderNamespace = "EXT_mmvec";
34430 let Constraints = "$Vx32 = $Vx32in";
34431 }
34432 def V6_vmpyiewuh : HInst<
34433 (outs HvxVR:$Vd32),
34434 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34435 "$Vd32.w = vmpyie($Vu32.w,$Vv32.uh)",
34436 tc_d8287c14, TypeCVI_VX_DV>, Enc_45364e, Requires<[UseHVXV60]> {
34437 let Inst{7-5} = 0b000;
34438 let Inst{13-13} = 0b0;
34439 let Inst{31-21} = 0b00011111110;
34440 let hasNewValue = 1;
34441 let opNewValue = 0;
34442 let isCVI = 1;
34443 let DecoderNamespace = "EXT_mmvec";
34444 }
34445 def V6_vmpyiewuh_acc : HInst<
34446 (outs HvxVR:$Vx32),
34447 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34448 "$Vx32.w += vmpyie($Vu32.w,$Vv32.uh)",
34449 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_a7341a, Requires<[UseHVXV60]> {
34450 let Inst{7-5} = 0b101;
34451 let Inst{13-13} = 0b1;
34452 let Inst{31-21} = 0b00011100001;
34453 let hasNewValue = 1;
34454 let opNewValue = 0;
34455 let isAccumulator = 1;
34456 let isCVI = 1;
34457 let DecoderNamespace = "EXT_mmvec";
34458 let Constraints = "$Vx32 = $Vx32in";
34459 }
34460 def V6_vmpyiewuh_acc_alt : HInst<
34461 (outs HvxVR:$Vx32),
34462 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34463 "$Vx32 += vmpyiewuh($Vu32,$Vv32)",
34464 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34465 let hasNewValue = 1;
34466 let opNewValue = 0;
34467 let isAccumulator = 1;
34468 let isCVI = 1;
34469 let isPseudo = 1;
34470 let isCodeGenOnly = 1;
34471 let DecoderNamespace = "EXT_mmvec";
34472 let Constraints = "$Vx32 = $Vx32in";
34473 }
34474 def V6_vmpyiewuh_alt : HInst<
34475 (outs HvxVR:$Vd32),
34476 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34477 "$Vd32 = vmpyiewuh($Vu32,$Vv32)",
34478 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34479 let hasNewValue = 1;
34480 let opNewValue = 0;
34481 let isCVI = 1;
34482 let isPseudo = 1;
34483 let isCodeGenOnly = 1;
34484 let DecoderNamespace = "EXT_mmvec";
34485 }
34486 def V6_vmpyih : HInst<
34487 (outs HvxVR:$Vd32),
34488 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34489 "$Vd32.h = vmpyi($Vu32.h,$Vv32.h)",
34490 tc_d8287c14, TypeCVI_VX_DV>, Enc_45364e, Requires<[UseHVXV60]> {
34491 let Inst{7-5} = 0b100;
34492 let Inst{13-13} = 0b0;
34493 let Inst{31-21} = 0b00011100001;
34494 let hasNewValue = 1;
34495 let opNewValue = 0;
34496 let isCVI = 1;
34497 let DecoderNamespace = "EXT_mmvec";
34498 }
34499 def V6_vmpyih_acc : HInst<
34500 (outs HvxVR:$Vx32),
34501 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34502 "$Vx32.h += vmpyi($Vu32.h,$Vv32.h)",
34503 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_a7341a, Requires<[UseHVXV60]> {
34504 let Inst{7-5} = 0b100;
34505 let Inst{13-13} = 0b1;
34506 let Inst{31-21} = 0b00011100001;
34507 let hasNewValue = 1;
34508 let opNewValue = 0;
34509 let isAccumulator = 1;
34510 let isCVI = 1;
34511 let DecoderNamespace = "EXT_mmvec";
34512 let Constraints = "$Vx32 = $Vx32in";
34513 }
34514 def V6_vmpyih_acc_alt : HInst<
34515 (outs HvxVR:$Vx32),
34516 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34517 "$Vx32 += vmpyih($Vu32,$Vv32)",
34518 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34519 let hasNewValue = 1;
34520 let opNewValue = 0;
34521 let isAccumulator = 1;
34522 let isCVI = 1;
34523 let isPseudo = 1;
34524 let isCodeGenOnly = 1;
34525 let DecoderNamespace = "EXT_mmvec";
34526 let Constraints = "$Vx32 = $Vx32in";
34527 }
34528 def V6_vmpyih_alt : HInst<
34529 (outs HvxVR:$Vd32),
34530 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34531 "$Vd32 = vmpyih($Vu32,$Vv32)",
34532 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34533 let hasNewValue = 1;
34534 let opNewValue = 0;
34535 let isCVI = 1;
34536 let isPseudo = 1;
34537 let isCodeGenOnly = 1;
34538 let DecoderNamespace = "EXT_mmvec";
34539 }
34540 def V6_vmpyihb : HInst<
34541 (outs HvxVR:$Vd32),
34542 (ins HvxVR:$Vu32, IntRegs:$Rt32),
34543 "$Vd32.h = vmpyi($Vu32.h,$Rt32.b)",
34544 tc_649072c2, TypeCVI_VX>, Enc_b087ac, Requires<[UseHVXV60]> {
34545 let Inst{7-5} = 0b000;
34546 let Inst{13-13} = 0b0;
34547 let Inst{31-21} = 0b00011001011;
34548 let hasNewValue = 1;
34549 let opNewValue = 0;
34550 let isCVI = 1;
34551 let DecoderNamespace = "EXT_mmvec";
34552 }
34553 def V6_vmpyihb_acc : HInst<
34554 (outs HvxVR:$Vx32),
34555 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
34556 "$Vx32.h += vmpyi($Vu32.h,$Rt32.b)",
34557 tc_b091f1c6, TypeCVI_VX>, Enc_5138b3, Requires<[UseHVXV60]> {
34558 let Inst{7-5} = 0b001;
34559 let Inst{13-13} = 0b1;
34560 let Inst{31-21} = 0b00011001011;
34561 let hasNewValue = 1;
34562 let opNewValue = 0;
34563 let isAccumulator = 1;
34564 let isCVI = 1;
34565 let DecoderNamespace = "EXT_mmvec";
34566 let Constraints = "$Vx32 = $Vx32in";
34567 }
34568 def V6_vmpyihb_acc_alt : HInst<
34569 (outs HvxVR:$Vx32),
34570 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
34571 "$Vx32 += vmpyihb($Vu32,$Rt32)",
34572 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34573 let hasNewValue = 1;
34574 let opNewValue = 0;
34575 let isAccumulator = 1;
34576 let isCVI = 1;
34577 let isPseudo = 1;
34578 let isCodeGenOnly = 1;
34579 let DecoderNamespace = "EXT_mmvec";
34580 let Constraints = "$Vx32 = $Vx32in";
34581 }
34582 def V6_vmpyihb_alt : HInst<
34583 (outs HvxVR:$Vd32),
34584 (ins HvxVR:$Vu32, IntRegs:$Rt32),
34585 "$Vd32 = vmpyihb($Vu32,$Rt32)",
34586 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34587 let hasNewValue = 1;
34588 let opNewValue = 0;
34589 let isCVI = 1;
34590 let isPseudo = 1;
34591 let isCodeGenOnly = 1;
34592 let DecoderNamespace = "EXT_mmvec";
34593 }
34594 def V6_vmpyiowh : HInst<
34595 (outs HvxVR:$Vd32),
34596 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34597 "$Vd32.w = vmpyio($Vu32.w,$Vv32.h)",
34598 tc_d8287c14, TypeCVI_VX_DV>, Enc_45364e, Requires<[UseHVXV60]> {
34599 let Inst{7-5} = 0b001;
34600 let Inst{13-13} = 0b0;
34601 let Inst{31-21} = 0b00011111110;
34602 let hasNewValue = 1;
34603 let opNewValue = 0;
34604 let isCVI = 1;
34605 let DecoderNamespace = "EXT_mmvec";
34606 }
34607 def V6_vmpyiowh_alt : HInst<
34608 (outs HvxVR:$Vd32),
34609 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34610 "$Vd32 = vmpyiowh($Vu32,$Vv32)",
34611 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34612 let hasNewValue = 1;
34613 let opNewValue = 0;
34614 let isCVI = 1;
34615 let isPseudo = 1;
34616 let isCodeGenOnly = 1;
34617 let DecoderNamespace = "EXT_mmvec";
34618 }
34619 def V6_vmpyiwb : HInst<
34620 (outs HvxVR:$Vd32),
34621 (ins HvxVR:$Vu32, IntRegs:$Rt32),
34622 "$Vd32.w = vmpyi($Vu32.w,$Rt32.b)",
34623 tc_649072c2, TypeCVI_VX>, Enc_b087ac, Requires<[UseHVXV60]> {
34624 let Inst{7-5} = 0b000;
34625 let Inst{13-13} = 0b0;
34626 let Inst{31-21} = 0b00011001101;
34627 let hasNewValue = 1;
34628 let opNewValue = 0;
34629 let isCVI = 1;
34630 let DecoderNamespace = "EXT_mmvec";
34631 }
34632 def V6_vmpyiwb_acc : HInst<
34633 (outs HvxVR:$Vx32),
34634 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
34635 "$Vx32.w += vmpyi($Vu32.w,$Rt32.b)",
34636 tc_b091f1c6, TypeCVI_VX>, Enc_5138b3, Requires<[UseHVXV60]> {
34637 let Inst{7-5} = 0b010;
34638 let Inst{13-13} = 0b1;
34639 let Inst{31-21} = 0b00011001010;
34640 let hasNewValue = 1;
34641 let opNewValue = 0;
34642 let isAccumulator = 1;
34643 let isCVI = 1;
34644 let DecoderNamespace = "EXT_mmvec";
34645 let Constraints = "$Vx32 = $Vx32in";
34646 }
34647 def V6_vmpyiwb_acc_alt : HInst<
34648 (outs HvxVR:$Vx32),
34649 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
34650 "$Vx32 += vmpyiwb($Vu32,$Rt32)",
34651 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34652 let hasNewValue = 1;
34653 let opNewValue = 0;
34654 let isAccumulator = 1;
34655 let isCVI = 1;
34656 let isPseudo = 1;
34657 let isCodeGenOnly = 1;
34658 let DecoderNamespace = "EXT_mmvec";
34659 let Constraints = "$Vx32 = $Vx32in";
34660 }
34661 def V6_vmpyiwb_alt : HInst<
34662 (outs HvxVR:$Vd32),
34663 (ins HvxVR:$Vu32, IntRegs:$Rt32),
34664 "$Vd32 = vmpyiwb($Vu32,$Rt32)",
34665 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34666 let hasNewValue = 1;
34667 let opNewValue = 0;
34668 let isCVI = 1;
34669 let isPseudo = 1;
34670 let isCodeGenOnly = 1;
34671 let DecoderNamespace = "EXT_mmvec";
34672 }
34673 def V6_vmpyiwh : HInst<
34674 (outs HvxVR:$Vd32),
34675 (ins HvxVR:$Vu32, IntRegs:$Rt32),
34676 "$Vd32.w = vmpyi($Vu32.w,$Rt32.h)",
34677 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_b087ac, Requires<[UseHVXV60]> {
34678 let Inst{7-5} = 0b111;
34679 let Inst{13-13} = 0b0;
34680 let Inst{31-21} = 0b00011001100;
34681 let hasNewValue = 1;
34682 let opNewValue = 0;
34683 let isCVI = 1;
34684 let DecoderNamespace = "EXT_mmvec";
34685 }
34686 def V6_vmpyiwh_acc : HInst<
34687 (outs HvxVR:$Vx32),
34688 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
34689 "$Vx32.w += vmpyi($Vu32.w,$Rt32.h)",
34690 tc_660769f1, TypeCVI_VX_DV>, Enc_5138b3, Requires<[UseHVXV60]> {
34691 let Inst{7-5} = 0b011;
34692 let Inst{13-13} = 0b1;
34693 let Inst{31-21} = 0b00011001010;
34694 let hasNewValue = 1;
34695 let opNewValue = 0;
34696 let isAccumulator = 1;
34697 let isCVI = 1;
34698 let DecoderNamespace = "EXT_mmvec";
34699 let Constraints = "$Vx32 = $Vx32in";
34700 }
34701 def V6_vmpyiwh_acc_alt : HInst<
34702 (outs HvxVR:$Vx32),
34703 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
34704 "$Vx32 += vmpyiwh($Vu32,$Rt32)",
34705 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34706 let hasNewValue = 1;
34707 let opNewValue = 0;
34708 let isAccumulator = 1;
34709 let isCVI = 1;
34710 let isPseudo = 1;
34711 let isCodeGenOnly = 1;
34712 let DecoderNamespace = "EXT_mmvec";
34713 let Constraints = "$Vx32 = $Vx32in";
34714 }
34715 def V6_vmpyiwh_alt : HInst<
34716 (outs HvxVR:$Vd32),
34717 (ins HvxVR:$Vu32, IntRegs:$Rt32),
34718 "$Vd32 = vmpyiwh($Vu32,$Rt32)",
34719 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34720 let hasNewValue = 1;
34721 let opNewValue = 0;
34722 let isCVI = 1;
34723 let isPseudo = 1;
34724 let isCodeGenOnly = 1;
34725 let DecoderNamespace = "EXT_mmvec";
34726 }
34727 def V6_vmpyiwub : HInst<
34728 (outs HvxVR:$Vd32),
34729 (ins HvxVR:$Vu32, IntRegs:$Rt32),
34730 "$Vd32.w = vmpyi($Vu32.w,$Rt32.ub)",
34731 tc_649072c2, TypeCVI_VX>, Enc_b087ac, Requires<[UseHVXV62]> {
34732 let Inst{7-5} = 0b110;
34733 let Inst{13-13} = 0b0;
34734 let Inst{31-21} = 0b00011001100;
34735 let hasNewValue = 1;
34736 let opNewValue = 0;
34737 let isCVI = 1;
34738 let DecoderNamespace = "EXT_mmvec";
34739 }
34740 def V6_vmpyiwub_acc : HInst<
34741 (outs HvxVR:$Vx32),
34742 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
34743 "$Vx32.w += vmpyi($Vu32.w,$Rt32.ub)",
34744 tc_b091f1c6, TypeCVI_VX>, Enc_5138b3, Requires<[UseHVXV62]> {
34745 let Inst{7-5} = 0b001;
34746 let Inst{13-13} = 0b1;
34747 let Inst{31-21} = 0b00011001100;
34748 let hasNewValue = 1;
34749 let opNewValue = 0;
34750 let isAccumulator = 1;
34751 let isCVI = 1;
34752 let DecoderNamespace = "EXT_mmvec";
34753 let Constraints = "$Vx32 = $Vx32in";
34754 }
34755 def V6_vmpyiwub_acc_alt : HInst<
34756 (outs HvxVR:$Vx32),
34757 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
34758 "$Vx32 += vmpyiwub($Vu32,$Rt32)",
34759 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
34760 let hasNewValue = 1;
34761 let opNewValue = 0;
34762 let isAccumulator = 1;
34763 let isCVI = 1;
34764 let isPseudo = 1;
34765 let isCodeGenOnly = 1;
34766 let DecoderNamespace = "EXT_mmvec";
34767 let Constraints = "$Vx32 = $Vx32in";
34768 }
34769 def V6_vmpyiwub_alt : HInst<
34770 (outs HvxVR:$Vd32),
34771 (ins HvxVR:$Vu32, IntRegs:$Rt32),
34772 "$Vd32 = vmpyiwub($Vu32,$Rt32)",
34773 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
34774 let hasNewValue = 1;
34775 let opNewValue = 0;
34776 let isCVI = 1;
34777 let isPseudo = 1;
34778 let isCodeGenOnly = 1;
34779 let DecoderNamespace = "EXT_mmvec";
34780 }
34781 def V6_vmpyowh : HInst<
34782 (outs HvxVR:$Vd32),
34783 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34784 "$Vd32.w = vmpyo($Vu32.w,$Vv32.h):<<1:sat",
34785 tc_d8287c14, TypeCVI_VX_DV>, Enc_45364e, Requires<[UseHVXV60]> {
34786 let Inst{7-5} = 0b111;
34787 let Inst{13-13} = 0b0;
34788 let Inst{31-21} = 0b00011111111;
34789 let hasNewValue = 1;
34790 let opNewValue = 0;
34791 let isCVI = 1;
34792 let DecoderNamespace = "EXT_mmvec";
34793 }
34794 def V6_vmpyowh_64_acc : HInst<
34795 (outs HvxWR:$Vxx32),
34796 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34797 "$Vxx32 += vmpyo($Vu32.w,$Vv32.h)",
34798 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_3fc427, Requires<[UseHVXV62]> {
34799 let Inst{7-5} = 0b011;
34800 let Inst{13-13} = 0b1;
34801 let Inst{31-21} = 0b00011100001;
34802 let hasNewValue = 1;
34803 let opNewValue = 0;
34804 let isAccumulator = 1;
34805 let isCVI = 1;
34806 let DecoderNamespace = "EXT_mmvec";
34807 let Constraints = "$Vxx32 = $Vxx32in";
34808 }
34809 def V6_vmpyowh_alt : HInst<
34810 (outs HvxVR:$Vd32),
34811 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34812 "$Vd32 = vmpyowh($Vu32,$Vv32):<<1:sat",
34813 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34814 let hasNewValue = 1;
34815 let opNewValue = 0;
34816 let isCVI = 1;
34817 let isPseudo = 1;
34818 let isCodeGenOnly = 1;
34819 let DecoderNamespace = "EXT_mmvec";
34820 }
34821 def V6_vmpyowh_rnd : HInst<
34822 (outs HvxVR:$Vd32),
34823 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34824 "$Vd32.w = vmpyo($Vu32.w,$Vv32.h):<<1:rnd:sat",
34825 tc_d8287c14, TypeCVI_VX_DV>, Enc_45364e, Requires<[UseHVXV60]> {
34826 let Inst{7-5} = 0b000;
34827 let Inst{13-13} = 0b0;
34828 let Inst{31-21} = 0b00011111010;
34829 let hasNewValue = 1;
34830 let opNewValue = 0;
34831 let isCVI = 1;
34832 let DecoderNamespace = "EXT_mmvec";
34833 }
34834 def V6_vmpyowh_rnd_alt : HInst<
34835 (outs HvxVR:$Vd32),
34836 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34837 "$Vd32 = vmpyowh($Vu32,$Vv32):<<1:rnd:sat",
34838 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34839 let hasNewValue = 1;
34840 let opNewValue = 0;
34841 let isCVI = 1;
34842 let isPseudo = 1;
34843 let isCodeGenOnly = 1;
34844 let DecoderNamespace = "EXT_mmvec";
34845 }
34846 def V6_vmpyowh_rnd_sacc : HInst<
34847 (outs HvxVR:$Vx32),
34848 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34849 "$Vx32.w += vmpyo($Vu32.w,$Vv32.h):<<1:rnd:sat:shift",
34850 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_a7341a, Requires<[UseHVXV60]> {
34851 let Inst{7-5} = 0b111;
34852 let Inst{13-13} = 0b1;
34853 let Inst{31-21} = 0b00011100001;
34854 let hasNewValue = 1;
34855 let opNewValue = 0;
34856 let isAccumulator = 1;
34857 let isCVI = 1;
34858 let DecoderNamespace = "EXT_mmvec";
34859 let Constraints = "$Vx32 = $Vx32in";
34860 }
34861 def V6_vmpyowh_rnd_sacc_alt : HInst<
34862 (outs HvxVR:$Vx32),
34863 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34864 "$Vx32 += vmpyowh($Vu32,$Vv32):<<1:rnd:sat:shift",
34865 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34866 let hasNewValue = 1;
34867 let opNewValue = 0;
34868 let isAccumulator = 1;
34869 let isCVI = 1;
34870 let isPseudo = 1;
34871 let DecoderNamespace = "EXT_mmvec";
34872 let Constraints = "$Vx32 = $Vx32in";
34873 }
34874 def V6_vmpyowh_sacc : HInst<
34875 (outs HvxVR:$Vx32),
34876 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34877 "$Vx32.w += vmpyo($Vu32.w,$Vv32.h):<<1:sat:shift",
34878 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_a7341a, Requires<[UseHVXV60]> {
34879 let Inst{7-5} = 0b110;
34880 let Inst{13-13} = 0b1;
34881 let Inst{31-21} = 0b00011100001;
34882 let hasNewValue = 1;
34883 let opNewValue = 0;
34884 let isAccumulator = 1;
34885 let isCVI = 1;
34886 let DecoderNamespace = "EXT_mmvec";
34887 let Constraints = "$Vx32 = $Vx32in";
34888 }
34889 def V6_vmpyowh_sacc_alt : HInst<
34890 (outs HvxVR:$Vx32),
34891 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34892 "$Vx32 += vmpyowh($Vu32,$Vv32):<<1:sat:shift",
34893 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34894 let hasNewValue = 1;
34895 let opNewValue = 0;
34896 let isAccumulator = 1;
34897 let isCVI = 1;
34898 let isPseudo = 1;
34899 let DecoderNamespace = "EXT_mmvec";
34900 let Constraints = "$Vx32 = $Vx32in";
34901 }
34902 def V6_vmpyub : HInst<
34903 (outs HvxWR:$Vdd32),
34904 (ins HvxVR:$Vu32, IntRegs:$Rt32),
34905 "$Vdd32.uh = vmpy($Vu32.ub,$Rt32.ub)",
34906 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_01d3d0, Requires<[UseHVXV60]> {
34907 let Inst{7-5} = 0b000;
34908 let Inst{13-13} = 0b0;
34909 let Inst{31-21} = 0b00011001110;
34910 let hasNewValue = 1;
34911 let opNewValue = 0;
34912 let isCVI = 1;
34913 let DecoderNamespace = "EXT_mmvec";
34914 }
34915 def V6_vmpyub_acc : HInst<
34916 (outs HvxWR:$Vxx32),
34917 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, IntRegs:$Rt32),
34918 "$Vxx32.uh += vmpy($Vu32.ub,$Rt32.ub)",
34919 tc_660769f1, TypeCVI_VX_DV>, Enc_5e8512, Requires<[UseHVXV60]> {
34920 let Inst{7-5} = 0b000;
34921 let Inst{13-13} = 0b1;
34922 let Inst{31-21} = 0b00011001100;
34923 let hasNewValue = 1;
34924 let opNewValue = 0;
34925 let isAccumulator = 1;
34926 let isCVI = 1;
34927 let DecoderNamespace = "EXT_mmvec";
34928 let Constraints = "$Vxx32 = $Vxx32in";
34929 }
34930 def V6_vmpyub_acc_alt : HInst<
34931 (outs HvxWR:$Vxx32),
34932 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, IntRegs:$Rt32),
34933 "$Vxx32 += vmpyub($Vu32,$Rt32)",
34934 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34935 let hasNewValue = 1;
34936 let opNewValue = 0;
34937 let isAccumulator = 1;
34938 let isCVI = 1;
34939 let isPseudo = 1;
34940 let isCodeGenOnly = 1;
34941 let DecoderNamespace = "EXT_mmvec";
34942 let Constraints = "$Vxx32 = $Vxx32in";
34943 }
34944 def V6_vmpyub_alt : HInst<
34945 (outs HvxWR:$Vdd32),
34946 (ins HvxVR:$Vu32, IntRegs:$Rt32),
34947 "$Vdd32 = vmpyub($Vu32,$Rt32)",
34948 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34949 let hasNewValue = 1;
34950 let opNewValue = 0;
34951 let isCVI = 1;
34952 let isPseudo = 1;
34953 let isCodeGenOnly = 1;
34954 let DecoderNamespace = "EXT_mmvec";
34955 }
34956 def V6_vmpyubv : HInst<
34957 (outs HvxWR:$Vdd32),
34958 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34959 "$Vdd32.uh = vmpy($Vu32.ub,$Vv32.ub)",
34960 tc_d8287c14, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
34961 let Inst{7-5} = 0b101;
34962 let Inst{13-13} = 0b0;
34963 let Inst{31-21} = 0b00011100000;
34964 let hasNewValue = 1;
34965 let opNewValue = 0;
34966 let isCVI = 1;
34967 let DecoderNamespace = "EXT_mmvec";
34968 }
34969 def V6_vmpyubv_acc : HInst<
34970 (outs HvxWR:$Vxx32),
34971 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34972 "$Vxx32.uh += vmpy($Vu32.ub,$Vv32.ub)",
34973 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_3fc427, Requires<[UseHVXV60]> {
34974 let Inst{7-5} = 0b101;
34975 let Inst{13-13} = 0b1;
34976 let Inst{31-21} = 0b00011100000;
34977 let hasNewValue = 1;
34978 let opNewValue = 0;
34979 let isAccumulator = 1;
34980 let isCVI = 1;
34981 let DecoderNamespace = "EXT_mmvec";
34982 let Constraints = "$Vxx32 = $Vxx32in";
34983 }
34984 def V6_vmpyubv_acc_alt : HInst<
34985 (outs HvxWR:$Vxx32),
34986 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34987 "$Vxx32 += vmpyub($Vu32,$Vv32)",
34988 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34989 let hasNewValue = 1;
34990 let opNewValue = 0;
34991 let isAccumulator = 1;
34992 let isCVI = 1;
34993 let isPseudo = 1;
34994 let isCodeGenOnly = 1;
34995 let DecoderNamespace = "EXT_mmvec";
34996 let Constraints = "$Vxx32 = $Vxx32in";
34997 }
34998 def V6_vmpyubv_alt : HInst<
34999 (outs HvxWR:$Vdd32),
35000 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35001 "$Vdd32 = vmpyub($Vu32,$Vv32)",
35002 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35003 let hasNewValue = 1;
35004 let opNewValue = 0;
35005 let isCVI = 1;
35006 let isPseudo = 1;
35007 let isCodeGenOnly = 1;
35008 let DecoderNamespace = "EXT_mmvec";
35009 }
35010 def V6_vmpyuh : HInst<
35011 (outs HvxWR:$Vdd32),
35012 (ins HvxVR:$Vu32, IntRegs:$Rt32),
35013 "$Vdd32.uw = vmpy($Vu32.uh,$Rt32.uh)",
35014 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_01d3d0, Requires<[UseHVXV60]> {
35015 let Inst{7-5} = 0b011;
35016 let Inst{13-13} = 0b0;
35017 let Inst{31-21} = 0b00011001010;
35018 let hasNewValue = 1;
35019 let opNewValue = 0;
35020 let isCVI = 1;
35021 let DecoderNamespace = "EXT_mmvec";
35022 }
35023 def V6_vmpyuh_acc : HInst<
35024 (outs HvxWR:$Vxx32),
35025 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, IntRegs:$Rt32),
35026 "$Vxx32.uw += vmpy($Vu32.uh,$Rt32.uh)",
35027 tc_660769f1, TypeCVI_VX_DV>, Enc_5e8512, Requires<[UseHVXV60]> {
35028 let Inst{7-5} = 0b001;
35029 let Inst{13-13} = 0b1;
35030 let Inst{31-21} = 0b00011001010;
35031 let hasNewValue = 1;
35032 let opNewValue = 0;
35033 let isAccumulator = 1;
35034 let isCVI = 1;
35035 let DecoderNamespace = "EXT_mmvec";
35036 let Constraints = "$Vxx32 = $Vxx32in";
35037 }
35038 def V6_vmpyuh_acc_alt : HInst<
35039 (outs HvxWR:$Vxx32),
35040 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, IntRegs:$Rt32),
35041 "$Vxx32 += vmpyuh($Vu32,$Rt32)",
35042 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35043 let hasNewValue = 1;
35044 let opNewValue = 0;
35045 let isAccumulator = 1;
35046 let isCVI = 1;
35047 let isPseudo = 1;
35048 let isCodeGenOnly = 1;
35049 let DecoderNamespace = "EXT_mmvec";
35050 let Constraints = "$Vxx32 = $Vxx32in";
35051 }
35052 def V6_vmpyuh_alt : HInst<
35053 (outs HvxWR:$Vdd32),
35054 (ins HvxVR:$Vu32, IntRegs:$Rt32),
35055 "$Vdd32 = vmpyuh($Vu32,$Rt32)",
35056 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35057 let hasNewValue = 1;
35058 let opNewValue = 0;
35059 let isCVI = 1;
35060 let isPseudo = 1;
35061 let isCodeGenOnly = 1;
35062 let DecoderNamespace = "EXT_mmvec";
35063 }
35064 def V6_vmpyuhe : HInst<
35065 (outs HvxVR:$Vd32),
35066 (ins HvxVR:$Vu32, IntRegs:$Rt32),
35067 "$Vd32.uw = vmpye($Vu32.uh,$Rt32.uh)",
35068 tc_649072c2, TypeCVI_VX>, Enc_b087ac, Requires<[UseHVXV65]> {
35069 let Inst{7-5} = 0b010;
35070 let Inst{13-13} = 0b0;
35071 let Inst{31-21} = 0b00011001011;
35072 let hasNewValue = 1;
35073 let opNewValue = 0;
35074 let isCVI = 1;
35075 let DecoderNamespace = "EXT_mmvec";
35076 }
35077 def V6_vmpyuhe_acc : HInst<
35078 (outs HvxVR:$Vx32),
35079 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
35080 "$Vx32.uw += vmpye($Vu32.uh,$Rt32.uh)",
35081 tc_b091f1c6, TypeCVI_VX>, Enc_5138b3, Requires<[UseHVXV65]> {
35082 let Inst{7-5} = 0b011;
35083 let Inst{13-13} = 0b1;
35084 let Inst{31-21} = 0b00011001100;
35085 let hasNewValue = 1;
35086 let opNewValue = 0;
35087 let isAccumulator = 1;
35088 let isCVI = 1;
35089 let DecoderNamespace = "EXT_mmvec";
35090 let Constraints = "$Vx32 = $Vx32in";
35091 }
35092 def V6_vmpyuhv : HInst<
35093 (outs HvxWR:$Vdd32),
35094 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35095 "$Vdd32.uw = vmpy($Vu32.uh,$Vv32.uh)",
35096 tc_d8287c14, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
35097 let Inst{7-5} = 0b000;
35098 let Inst{13-13} = 0b0;
35099 let Inst{31-21} = 0b00011100001;
35100 let hasNewValue = 1;
35101 let opNewValue = 0;
35102 let isCVI = 1;
35103 let DecoderNamespace = "EXT_mmvec";
35104 }
35105 def V6_vmpyuhv_acc : HInst<
35106 (outs HvxWR:$Vxx32),
35107 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
35108 "$Vxx32.uw += vmpy($Vu32.uh,$Vv32.uh)",
35109 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_3fc427, Requires<[UseHVXV60]> {
35110 let Inst{7-5} = 0b000;
35111 let Inst{13-13} = 0b1;
35112 let Inst{31-21} = 0b00011100001;
35113 let hasNewValue = 1;
35114 let opNewValue = 0;
35115 let isAccumulator = 1;
35116 let isCVI = 1;
35117 let DecoderNamespace = "EXT_mmvec";
35118 let Constraints = "$Vxx32 = $Vxx32in";
35119 }
35120 def V6_vmpyuhv_acc_alt : HInst<
35121 (outs HvxWR:$Vxx32),
35122 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
35123 "$Vxx32 += vmpyuh($Vu32,$Vv32)",
35124 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35125 let hasNewValue = 1;
35126 let opNewValue = 0;
35127 let isAccumulator = 1;
35128 let isCVI = 1;
35129 let isPseudo = 1;
35130 let isCodeGenOnly = 1;
35131 let DecoderNamespace = "EXT_mmvec";
35132 let Constraints = "$Vxx32 = $Vxx32in";
35133 }
35134 def V6_vmpyuhv_alt : HInst<
35135 (outs HvxWR:$Vdd32),
35136 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35137 "$Vdd32 = vmpyuh($Vu32,$Vv32)",
35138 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35139 let hasNewValue = 1;
35140 let opNewValue = 0;
35141 let isCVI = 1;
35142 let isPseudo = 1;
35143 let isCodeGenOnly = 1;
35144 let DecoderNamespace = "EXT_mmvec";
35145 }
35146 def V6_vmux : HInst<
35147 (outs HvxVR:$Vd32),
35148 (ins HvxQR:$Qt4, HvxVR:$Vu32, HvxVR:$Vv32),
35149 "$Vd32 = vmux($Qt4,$Vu32,$Vv32)",
35150 tc_257f6f7c, TypeCVI_VA>, Enc_31db33, Requires<[UseHVXV60]> {
35151 let Inst{7-7} = 0b0;
35152 let Inst{13-13} = 0b1;
35153 let Inst{31-21} = 0b00011110111;
35154 let hasNewValue = 1;
35155 let opNewValue = 0;
35156 let isCVI = 1;
35157 let DecoderNamespace = "EXT_mmvec";
35158 }
35159 def V6_vnavgb : HInst<
35160 (outs HvxVR:$Vd32),
35161 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35162 "$Vd32.b = vnavg($Vu32.b,$Vv32.b)",
35163 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV65]> {
35164 let Inst{7-5} = 0b110;
35165 let Inst{13-13} = 0b1;
35166 let Inst{31-21} = 0b00011111000;
35167 let hasNewValue = 1;
35168 let opNewValue = 0;
35169 let isCVI = 1;
35170 let DecoderNamespace = "EXT_mmvec";
35171 }
35172 def V6_vnavgb_alt : HInst<
35173 (outs HvxVR:$Vd32),
35174 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35175 "$Vd32 = vnavgb($Vu32,$Vv32)",
35176 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
35177 let hasNewValue = 1;
35178 let opNewValue = 0;
35179 let isCVI = 1;
35180 let isPseudo = 1;
35181 let isCodeGenOnly = 1;
35182 let DecoderNamespace = "EXT_mmvec";
35183 }
35184 def V6_vnavgh : HInst<
35185 (outs HvxVR:$Vd32),
35186 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35187 "$Vd32.h = vnavg($Vu32.h,$Vv32.h)",
35188 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
35189 let Inst{7-5} = 0b001;
35190 let Inst{13-13} = 0b0;
35191 let Inst{31-21} = 0b00011100111;
35192 let hasNewValue = 1;
35193 let opNewValue = 0;
35194 let isCVI = 1;
35195 let DecoderNamespace = "EXT_mmvec";
35196 }
35197 def V6_vnavgh_alt : HInst<
35198 (outs HvxVR:$Vd32),
35199 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35200 "$Vd32 = vnavgh($Vu32,$Vv32)",
35201 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35202 let hasNewValue = 1;
35203 let opNewValue = 0;
35204 let isCVI = 1;
35205 let isPseudo = 1;
35206 let isCodeGenOnly = 1;
35207 let DecoderNamespace = "EXT_mmvec";
35208 }
35209 def V6_vnavgub : HInst<
35210 (outs HvxVR:$Vd32),
35211 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35212 "$Vd32.b = vnavg($Vu32.ub,$Vv32.ub)",
35213 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
35214 let Inst{7-5} = 0b000;
35215 let Inst{13-13} = 0b0;
35216 let Inst{31-21} = 0b00011100111;
35217 let hasNewValue = 1;
35218 let opNewValue = 0;
35219 let isCVI = 1;
35220 let DecoderNamespace = "EXT_mmvec";
35221 }
35222 def V6_vnavgub_alt : HInst<
35223 (outs HvxVR:$Vd32),
35224 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35225 "$Vd32 = vnavgub($Vu32,$Vv32)",
35226 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35227 let hasNewValue = 1;
35228 let opNewValue = 0;
35229 let isCVI = 1;
35230 let isPseudo = 1;
35231 let isCodeGenOnly = 1;
35232 let DecoderNamespace = "EXT_mmvec";
35233 }
35234 def V6_vnavgw : HInst<
35235 (outs HvxVR:$Vd32),
35236 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35237 "$Vd32.w = vnavg($Vu32.w,$Vv32.w)",
35238 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
35239 let Inst{7-5} = 0b010;
35240 let Inst{13-13} = 0b0;
35241 let Inst{31-21} = 0b00011100111;
35242 let hasNewValue = 1;
35243 let opNewValue = 0;
35244 let isCVI = 1;
35245 let DecoderNamespace = "EXT_mmvec";
35246 }
35247 def V6_vnavgw_alt : HInst<
35248 (outs HvxVR:$Vd32),
35249 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35250 "$Vd32 = vnavgw($Vu32,$Vv32)",
35251 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35252 let hasNewValue = 1;
35253 let opNewValue = 0;
35254 let isCVI = 1;
35255 let isPseudo = 1;
35256 let isCodeGenOnly = 1;
35257 let DecoderNamespace = "EXT_mmvec";
35258 }
35259 def V6_vnccombine : HInst<
35260 (outs HvxWR:$Vdd32),
35261 (ins PredRegs:$Ps4, HvxVR:$Vu32, HvxVR:$Vv32),
35262 "if (!$Ps4) $Vdd32 = vcombine($Vu32,$Vv32)",
35263 tc_af25efd9, TypeCVI_VA_DV>, Enc_8c2412, Requires<[UseHVXV60]> {
35264 let Inst{7-7} = 0b0;
35265 let Inst{13-13} = 0b0;
35266 let Inst{31-21} = 0b00011010010;
35267 let isPredicated = 1;
35268 let isPredicatedFalse = 1;
35269 let hasNewValue = 1;
35270 let opNewValue = 0;
35271 let isCVI = 1;
35272 let DecoderNamespace = "EXT_mmvec";
35273 }
35274 def V6_vncmov : HInst<
35275 (outs HvxVR:$Vd32),
35276 (ins PredRegs:$Ps4, HvxVR:$Vu32),
35277 "if (!$Ps4) $Vd32 = $Vu32",
35278 tc_3aacf4a8, TypeCVI_VA>, Enc_770858, Requires<[UseHVXV60]> {
35279 let Inst{7-7} = 0b0;
35280 let Inst{13-13} = 0b0;
35281 let Inst{31-16} = 0b0001101000100000;
35282 let isPredicated = 1;
35283 let isPredicatedFalse = 1;
35284 let hasNewValue = 1;
35285 let opNewValue = 0;
35286 let isCVI = 1;
35287 let DecoderNamespace = "EXT_mmvec";
35288 }
35289 def V6_vnormamth : HInst<
35290 (outs HvxVR:$Vd32),
35291 (ins HvxVR:$Vu32),
35292 "$Vd32.h = vnormamt($Vu32.h)",
35293 tc_51d0ecc3, TypeCVI_VS>, Enc_e7581c, Requires<[UseHVXV60]> {
35294 let Inst{7-5} = 0b101;
35295 let Inst{13-13} = 0b0;
35296 let Inst{31-16} = 0b0001111000000011;
35297 let hasNewValue = 1;
35298 let opNewValue = 0;
35299 let isCVI = 1;
35300 let DecoderNamespace = "EXT_mmvec";
35301 }
35302 def V6_vnormamth_alt : HInst<
35303 (outs HvxVR:$Vd32),
35304 (ins HvxVR:$Vu32),
35305 "$Vd32 = vnormamth($Vu32)",
35306 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35307 let hasNewValue = 1;
35308 let opNewValue = 0;
35309 let isCVI = 1;
35310 let isPseudo = 1;
35311 let isCodeGenOnly = 1;
35312 let DecoderNamespace = "EXT_mmvec";
35313 }
35314 def V6_vnormamtw : HInst<
35315 (outs HvxVR:$Vd32),
35316 (ins HvxVR:$Vu32),
35317 "$Vd32.w = vnormamt($Vu32.w)",
35318 tc_51d0ecc3, TypeCVI_VS>, Enc_e7581c, Requires<[UseHVXV60]> {
35319 let Inst{7-5} = 0b100;
35320 let Inst{13-13} = 0b0;
35321 let Inst{31-16} = 0b0001111000000011;
35322 let hasNewValue = 1;
35323 let opNewValue = 0;
35324 let isCVI = 1;
35325 let DecoderNamespace = "EXT_mmvec";
35326 }
35327 def V6_vnormamtw_alt : HInst<
35328 (outs HvxVR:$Vd32),
35329 (ins HvxVR:$Vu32),
35330 "$Vd32 = vnormamtw($Vu32)",
35331 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35332 let hasNewValue = 1;
35333 let opNewValue = 0;
35334 let isCVI = 1;
35335 let isPseudo = 1;
35336 let isCodeGenOnly = 1;
35337 let DecoderNamespace = "EXT_mmvec";
35338 }
35339 def V6_vnot : HInst<
35340 (outs HvxVR:$Vd32),
35341 (ins HvxVR:$Vu32),
35342 "$Vd32 = vnot($Vu32)",
35343 tc_0ec46cf9, TypeCVI_VA>, Enc_e7581c, Requires<[UseHVXV60]> {
35344 let Inst{7-5} = 0b100;
35345 let Inst{13-13} = 0b0;
35346 let Inst{31-16} = 0b0001111000000000;
35347 let hasNewValue = 1;
35348 let opNewValue = 0;
35349 let isCVI = 1;
35350 let DecoderNamespace = "EXT_mmvec";
35351 }
35352 def V6_vor : HInst<
35353 (outs HvxVR:$Vd32),
35354 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35355 "$Vd32 = vor($Vu32,$Vv32)",
35356 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
35357 let Inst{7-5} = 0b110;
35358 let Inst{13-13} = 0b0;
35359 let Inst{31-21} = 0b00011100001;
35360 let hasNewValue = 1;
35361 let opNewValue = 0;
35362 let isCVI = 1;
35363 let DecoderNamespace = "EXT_mmvec";
35364 }
35365 def V6_vpackeb : HInst<
35366 (outs HvxVR:$Vd32),
35367 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35368 "$Vd32.b = vpacke($Vu32.h,$Vv32.h)",
35369 tc_46d6c3e0, TypeCVI_VP>, Enc_45364e, Requires<[UseHVXV60]> {
35370 let Inst{7-5} = 0b010;
35371 let Inst{13-13} = 0b0;
35372 let Inst{31-21} = 0b00011111110;
35373 let hasNewValue = 1;
35374 let opNewValue = 0;
35375 let isCVI = 1;
35376 let DecoderNamespace = "EXT_mmvec";
35377 }
35378 def V6_vpackeb_alt : HInst<
35379 (outs HvxVR:$Vd32),
35380 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35381 "$Vd32 = vpackeb($Vu32,$Vv32)",
35382 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35383 let hasNewValue = 1;
35384 let opNewValue = 0;
35385 let isCVI = 1;
35386 let isPseudo = 1;
35387 let isCodeGenOnly = 1;
35388 let DecoderNamespace = "EXT_mmvec";
35389 }
35390 def V6_vpackeh : HInst<
35391 (outs HvxVR:$Vd32),
35392 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35393 "$Vd32.h = vpacke($Vu32.w,$Vv32.w)",
35394 tc_46d6c3e0, TypeCVI_VP>, Enc_45364e, Requires<[UseHVXV60]> {
35395 let Inst{7-5} = 0b011;
35396 let Inst{13-13} = 0b0;
35397 let Inst{31-21} = 0b00011111110;
35398 let hasNewValue = 1;
35399 let opNewValue = 0;
35400 let isCVI = 1;
35401 let DecoderNamespace = "EXT_mmvec";
35402 }
35403 def V6_vpackeh_alt : HInst<
35404 (outs HvxVR:$Vd32),
35405 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35406 "$Vd32 = vpackeh($Vu32,$Vv32)",
35407 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35408 let hasNewValue = 1;
35409 let opNewValue = 0;
35410 let isCVI = 1;
35411 let isPseudo = 1;
35412 let isCodeGenOnly = 1;
35413 let DecoderNamespace = "EXT_mmvec";
35414 }
35415 def V6_vpackhb_sat : HInst<
35416 (outs HvxVR:$Vd32),
35417 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35418 "$Vd32.b = vpack($Vu32.h,$Vv32.h):sat",
35419 tc_46d6c3e0, TypeCVI_VP>, Enc_45364e, Requires<[UseHVXV60]> {
35420 let Inst{7-5} = 0b110;
35421 let Inst{13-13} = 0b0;
35422 let Inst{31-21} = 0b00011111110;
35423 let hasNewValue = 1;
35424 let opNewValue = 0;
35425 let isCVI = 1;
35426 let DecoderNamespace = "EXT_mmvec";
35427 }
35428 def V6_vpackhb_sat_alt : HInst<
35429 (outs HvxVR:$Vd32),
35430 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35431 "$Vd32 = vpackhb($Vu32,$Vv32):sat",
35432 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35433 let hasNewValue = 1;
35434 let opNewValue = 0;
35435 let isCVI = 1;
35436 let isPseudo = 1;
35437 let isCodeGenOnly = 1;
35438 let DecoderNamespace = "EXT_mmvec";
35439 }
35440 def V6_vpackhub_sat : HInst<
35441 (outs HvxVR:$Vd32),
35442 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35443 "$Vd32.ub = vpack($Vu32.h,$Vv32.h):sat",
35444 tc_46d6c3e0, TypeCVI_VP>, Enc_45364e, Requires<[UseHVXV60]> {
35445 let Inst{7-5} = 0b101;
35446 let Inst{13-13} = 0b0;
35447 let Inst{31-21} = 0b00011111110;
35448 let hasNewValue = 1;
35449 let opNewValue = 0;
35450 let isCVI = 1;
35451 let DecoderNamespace = "EXT_mmvec";
35452 }
35453 def V6_vpackhub_sat_alt : HInst<
35454 (outs HvxVR:$Vd32),
35455 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35456 "$Vd32 = vpackhub($Vu32,$Vv32):sat",
35457 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35458 let hasNewValue = 1;
35459 let opNewValue = 0;
35460 let isCVI = 1;
35461 let isPseudo = 1;
35462 let isCodeGenOnly = 1;
35463 let DecoderNamespace = "EXT_mmvec";
35464 }
35465 def V6_vpackob : HInst<
35466 (outs HvxVR:$Vd32),
35467 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35468 "$Vd32.b = vpacko($Vu32.h,$Vv32.h)",
35469 tc_46d6c3e0, TypeCVI_VP>, Enc_45364e, Requires<[UseHVXV60]> {
35470 let Inst{7-5} = 0b001;
35471 let Inst{13-13} = 0b0;
35472 let Inst{31-21} = 0b00011111111;
35473 let hasNewValue = 1;
35474 let opNewValue = 0;
35475 let isCVI = 1;
35476 let DecoderNamespace = "EXT_mmvec";
35477 }
35478 def V6_vpackob_alt : HInst<
35479 (outs HvxVR:$Vd32),
35480 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35481 "$Vd32 = vpackob($Vu32,$Vv32)",
35482 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35483 let hasNewValue = 1;
35484 let opNewValue = 0;
35485 let isCVI = 1;
35486 let isPseudo = 1;
35487 let isCodeGenOnly = 1;
35488 let DecoderNamespace = "EXT_mmvec";
35489 }
35490 def V6_vpackoh : HInst<
35491 (outs HvxVR:$Vd32),
35492 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35493 "$Vd32.h = vpacko($Vu32.w,$Vv32.w)",
35494 tc_46d6c3e0, TypeCVI_VP>, Enc_45364e, Requires<[UseHVXV60]> {
35495 let Inst{7-5} = 0b010;
35496 let Inst{13-13} = 0b0;
35497 let Inst{31-21} = 0b00011111111;
35498 let hasNewValue = 1;
35499 let opNewValue = 0;
35500 let isCVI = 1;
35501 let DecoderNamespace = "EXT_mmvec";
35502 }
35503 def V6_vpackoh_alt : HInst<
35504 (outs HvxVR:$Vd32),
35505 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35506 "$Vd32 = vpackoh($Vu32,$Vv32)",
35507 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35508 let hasNewValue = 1;
35509 let opNewValue = 0;
35510 let isCVI = 1;
35511 let isPseudo = 1;
35512 let isCodeGenOnly = 1;
35513 let DecoderNamespace = "EXT_mmvec";
35514 }
35515 def V6_vpackwh_sat : HInst<
35516 (outs HvxVR:$Vd32),
35517 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35518 "$Vd32.h = vpack($Vu32.w,$Vv32.w):sat",
35519 tc_46d6c3e0, TypeCVI_VP>, Enc_45364e, Requires<[UseHVXV60]> {
35520 let Inst{7-5} = 0b000;
35521 let Inst{13-13} = 0b0;
35522 let Inst{31-21} = 0b00011111111;
35523 let hasNewValue = 1;
35524 let opNewValue = 0;
35525 let isCVI = 1;
35526 let DecoderNamespace = "EXT_mmvec";
35527 }
35528 def V6_vpackwh_sat_alt : HInst<
35529 (outs HvxVR:$Vd32),
35530 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35531 "$Vd32 = vpackwh($Vu32,$Vv32):sat",
35532 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35533 let hasNewValue = 1;
35534 let opNewValue = 0;
35535 let isCVI = 1;
35536 let isPseudo = 1;
35537 let isCodeGenOnly = 1;
35538 let DecoderNamespace = "EXT_mmvec";
35539 }
35540 def V6_vpackwuh_sat : HInst<
35541 (outs HvxVR:$Vd32),
35542 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35543 "$Vd32.uh = vpack($Vu32.w,$Vv32.w):sat",
35544 tc_46d6c3e0, TypeCVI_VP>, Enc_45364e, Requires<[UseHVXV60]> {
35545 let Inst{7-5} = 0b111;
35546 let Inst{13-13} = 0b0;
35547 let Inst{31-21} = 0b00011111110;
35548 let hasNewValue = 1;
35549 let opNewValue = 0;
35550 let isCVI = 1;
35551 let DecoderNamespace = "EXT_mmvec";
35552 }
35553 def V6_vpackwuh_sat_alt : HInst<
35554 (outs HvxVR:$Vd32),
35555 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35556 "$Vd32 = vpackwuh($Vu32,$Vv32):sat",
35557 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35558 let hasNewValue = 1;
35559 let opNewValue = 0;
35560 let isCVI = 1;
35561 let isPseudo = 1;
35562 let isCodeGenOnly = 1;
35563 let DecoderNamespace = "EXT_mmvec";
35564 }
35565 def V6_vpopcounth : HInst<
35566 (outs HvxVR:$Vd32),
35567 (ins HvxVR:$Vu32),
35568 "$Vd32.h = vpopcount($Vu32.h)",
35569 tc_51d0ecc3, TypeCVI_VS>, Enc_e7581c, Requires<[UseHVXV60]> {
35570 let Inst{7-5} = 0b110;
35571 let Inst{13-13} = 0b0;
35572 let Inst{31-16} = 0b0001111000000010;
35573 let hasNewValue = 1;
35574 let opNewValue = 0;
35575 let isCVI = 1;
35576 let DecoderNamespace = "EXT_mmvec";
35577 }
35578 def V6_vpopcounth_alt : HInst<
35579 (outs HvxVR:$Vd32),
35580 (ins HvxVR:$Vu32),
35581 "$Vd32 = vpopcounth($Vu32)",
35582 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35583 let hasNewValue = 1;
35584 let opNewValue = 0;
35585 let isCVI = 1;
35586 let isPseudo = 1;
35587 let isCodeGenOnly = 1;
35588 let DecoderNamespace = "EXT_mmvec";
35589 }
35590 def V6_vprefixqb : HInst<
35591 (outs HvxVR:$Vd32),
35592 (ins HvxQR:$Qv4),
35593 "$Vd32.b = prefixsum($Qv4)",
35594 tc_51d0ecc3, TypeCVI_VS>, Enc_6f83e7, Requires<[UseHVXV65]> {
35595 let Inst{13-5} = 0b100000010;
35596 let Inst{21-16} = 0b000011;
35597 let Inst{31-24} = 0b00011110;
35598 let hasNewValue = 1;
35599 let opNewValue = 0;
35600 let isCVI = 1;
35601 let DecoderNamespace = "EXT_mmvec";
35602 }
35603 def V6_vprefixqh : HInst<
35604 (outs HvxVR:$Vd32),
35605 (ins HvxQR:$Qv4),
35606 "$Vd32.h = prefixsum($Qv4)",
35607 tc_51d0ecc3, TypeCVI_VS>, Enc_6f83e7, Requires<[UseHVXV65]> {
35608 let Inst{13-5} = 0b100001010;
35609 let Inst{21-16} = 0b000011;
35610 let Inst{31-24} = 0b00011110;
35611 let hasNewValue = 1;
35612 let opNewValue = 0;
35613 let isCVI = 1;
35614 let DecoderNamespace = "EXT_mmvec";
35615 }
35616 def V6_vprefixqw : HInst<
35617 (outs HvxVR:$Vd32),
35618 (ins HvxQR:$Qv4),
35619 "$Vd32.w = prefixsum($Qv4)",
35620 tc_51d0ecc3, TypeCVI_VS>, Enc_6f83e7, Requires<[UseHVXV65]> {
35621 let Inst{13-5} = 0b100010010;
35622 let Inst{21-16} = 0b000011;
35623 let Inst{31-24} = 0b00011110;
35624 let hasNewValue = 1;
35625 let opNewValue = 0;
35626 let isCVI = 1;
35627 let DecoderNamespace = "EXT_mmvec";
35628 }
35629 def V6_vrdelta : HInst<
35630 (outs HvxVR:$Vd32),
35631 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35632 "$Vd32 = vrdelta($Vu32,$Vv32)",
35633 tc_46d6c3e0, TypeCVI_VP>, Enc_45364e, Requires<[UseHVXV60]> {
35634 let Inst{7-5} = 0b011;
35635 let Inst{13-13} = 0b0;
35636 let Inst{31-21} = 0b00011111001;
35637 let hasNewValue = 1;
35638 let opNewValue = 0;
35639 let isCVI = 1;
35640 let DecoderNamespace = "EXT_mmvec";
35641 }
35642 def V6_vrmpybub_rtt : HInst<
35643 (outs HvxWR:$Vdd32),
35644 (ins HvxVR:$Vu32, DoubleRegs:$Rtt32),
35645 "$Vdd32.w = vrmpy($Vu32.b,$Rtt32.ub)",
35646 tc_cd94bfe0, TypeCVI_VS_VX>, Enc_cb785b, Requires<[UseHVXV65]> {
35647 let Inst{7-5} = 0b101;
35648 let Inst{13-13} = 0b0;
35649 let Inst{31-21} = 0b00011001110;
35650 let hasNewValue = 1;
35651 let opNewValue = 0;
35652 let isCVI = 1;
35653 let DecoderNamespace = "EXT_mmvec";
35654 }
35655 def V6_vrmpybub_rtt_acc : HInst<
35656 (outs HvxWR:$Vxx32),
35657 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, DoubleRegs:$Rtt32),
35658 "$Vxx32.w += vrmpy($Vu32.b,$Rtt32.ub)",
35659 tc_15fdf750, TypeCVI_VS_VX>, Enc_ad9bef, Requires<[UseHVXV65]> {
35660 let Inst{7-5} = 0b000;
35661 let Inst{13-13} = 0b1;
35662 let Inst{31-21} = 0b00011001101;
35663 let hasNewValue = 1;
35664 let opNewValue = 0;
35665 let isAccumulator = 1;
35666 let isCVI = 1;
35667 let DecoderNamespace = "EXT_mmvec";
35668 let Constraints = "$Vxx32 = $Vxx32in";
35669 }
35670 def V6_vrmpybub_rtt_acc_alt : HInst<
35671 (outs HvxWR:$Vxx32),
35672 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, DoubleRegs:$Rtt32),
35673 "$Vxx32.w += vrmpy($Vu32.b,$Rtt32.ub)",
35674 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
35675 let hasNewValue = 1;
35676 let opNewValue = 0;
35677 let isAccumulator = 1;
35678 let isCVI = 1;
35679 let isPseudo = 1;
35680 let isCodeGenOnly = 1;
35681 let DecoderNamespace = "EXT_mmvec";
35682 let Constraints = "$Vxx32 = $Vxx32in";
35683 }
35684 def V6_vrmpybub_rtt_alt : HInst<
35685 (outs HvxWR:$Vdd32),
35686 (ins HvxVR:$Vu32, DoubleRegs:$Rtt32),
35687 "$Vdd32.w = vrmpy($Vu32.b,$Rtt32.ub)",
35688 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
35689 let hasNewValue = 1;
35690 let opNewValue = 0;
35691 let isCVI = 1;
35692 let isPseudo = 1;
35693 let isCodeGenOnly = 1;
35694 let DecoderNamespace = "EXT_mmvec";
35695 }
35696 def V6_vrmpybus : HInst<
35697 (outs HvxVR:$Vd32),
35698 (ins HvxVR:$Vu32, IntRegs:$Rt32),
35699 "$Vd32.w = vrmpy($Vu32.ub,$Rt32.b)",
35700 tc_649072c2, TypeCVI_VX>, Enc_b087ac, Requires<[UseHVXV60]> {
35701 let Inst{7-5} = 0b100;
35702 let Inst{13-13} = 0b0;
35703 let Inst{31-21} = 0b00011001000;
35704 let hasNewValue = 1;
35705 let opNewValue = 0;
35706 let isCVI = 1;
35707 let DecoderNamespace = "EXT_mmvec";
35708 }
35709 def V6_vrmpybus_acc : HInst<
35710 (outs HvxVR:$Vx32),
35711 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
35712 "$Vx32.w += vrmpy($Vu32.ub,$Rt32.b)",
35713 tc_b091f1c6, TypeCVI_VX>, Enc_5138b3, Requires<[UseHVXV60]> {
35714 let Inst{7-5} = 0b101;
35715 let Inst{13-13} = 0b1;
35716 let Inst{31-21} = 0b00011001000;
35717 let hasNewValue = 1;
35718 let opNewValue = 0;
35719 let isAccumulator = 1;
35720 let isCVI = 1;
35721 let DecoderNamespace = "EXT_mmvec";
35722 let Constraints = "$Vx32 = $Vx32in";
35723 }
35724 def V6_vrmpybus_acc_alt : HInst<
35725 (outs HvxVR:$Vx32),
35726 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
35727 "$Vx32 += vrmpybus($Vu32,$Rt32)",
35728 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35729 let hasNewValue = 1;
35730 let opNewValue = 0;
35731 let isAccumulator = 1;
35732 let isCVI = 1;
35733 let isPseudo = 1;
35734 let isCodeGenOnly = 1;
35735 let DecoderNamespace = "EXT_mmvec";
35736 let Constraints = "$Vx32 = $Vx32in";
35737 }
35738 def V6_vrmpybus_alt : HInst<
35739 (outs HvxVR:$Vd32),
35740 (ins HvxVR:$Vu32, IntRegs:$Rt32),
35741 "$Vd32 = vrmpybus($Vu32,$Rt32)",
35742 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35743 let hasNewValue = 1;
35744 let opNewValue = 0;
35745 let isCVI = 1;
35746 let isPseudo = 1;
35747 let isCodeGenOnly = 1;
35748 let DecoderNamespace = "EXT_mmvec";
35749 }
35750 def V6_vrmpybusi : HInst<
35751 (outs HvxWR:$Vdd32),
35752 (ins HvxWR:$Vuu32, IntRegs:$Rt32, u1_0Imm:$Ii),
35753 "$Vdd32.w = vrmpy($Vuu32.ub,$Rt32.b,#$Ii)",
35754 tc_1ad8a370, TypeCVI_VX_DV>, Enc_2f2f04, Requires<[UseHVXV60]> {
35755 let Inst{7-6} = 0b10;
35756 let Inst{13-13} = 0b0;
35757 let Inst{31-21} = 0b00011001010;
35758 let hasNewValue = 1;
35759 let opNewValue = 0;
35760 let isCVI = 1;
35761 let DecoderNamespace = "EXT_mmvec";
35762 }
35763 def V6_vrmpybusi_acc : HInst<
35764 (outs HvxWR:$Vxx32),
35765 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32, u1_0Imm:$Ii),
35766 "$Vxx32.w += vrmpy($Vuu32.ub,$Rt32.b,#$Ii)",
35767 tc_e675c45a, TypeCVI_VX_DV>, Enc_d483b9, Requires<[UseHVXV60]> {
35768 let Inst{7-6} = 0b10;
35769 let Inst{13-13} = 0b1;
35770 let Inst{31-21} = 0b00011001010;
35771 let hasNewValue = 1;
35772 let opNewValue = 0;
35773 let isAccumulator = 1;
35774 let isCVI = 1;
35775 let DecoderNamespace = "EXT_mmvec";
35776 let Constraints = "$Vxx32 = $Vxx32in";
35777 }
35778 def V6_vrmpybusi_acc_alt : HInst<
35779 (outs HvxWR:$Vxx32),
35780 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32, u1_0Imm:$Ii),
35781 "$Vxx32 += vrmpybus($Vuu32,$Rt32,#$Ii)",
35782 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35783 let hasNewValue = 1;
35784 let opNewValue = 0;
35785 let isAccumulator = 1;
35786 let isCVI = 1;
35787 let isPseudo = 1;
35788 let isCodeGenOnly = 1;
35789 let DecoderNamespace = "EXT_mmvec";
35790 let Constraints = "$Vxx32 = $Vxx32in";
35791 }
35792 def V6_vrmpybusi_alt : HInst<
35793 (outs HvxWR:$Vdd32),
35794 (ins HvxWR:$Vuu32, IntRegs:$Rt32, u1_0Imm:$Ii),
35795 "$Vdd32 = vrmpybus($Vuu32,$Rt32,#$Ii)",
35796 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35797 let hasNewValue = 1;
35798 let opNewValue = 0;
35799 let isCVI = 1;
35800 let isPseudo = 1;
35801 let isCodeGenOnly = 1;
35802 let DecoderNamespace = "EXT_mmvec";
35803 }
35804 def V6_vrmpybusv : HInst<
35805 (outs HvxVR:$Vd32),
35806 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35807 "$Vd32.w = vrmpy($Vu32.ub,$Vv32.b)",
35808 tc_c127de3a, TypeCVI_VX>, Enc_45364e, Requires<[UseHVXV60]> {
35809 let Inst{7-5} = 0b010;
35810 let Inst{13-13} = 0b0;
35811 let Inst{31-21} = 0b00011100000;
35812 let hasNewValue = 1;
35813 let opNewValue = 0;
35814 let isCVI = 1;
35815 let DecoderNamespace = "EXT_mmvec";
35816 }
35817 def V6_vrmpybusv_acc : HInst<
35818 (outs HvxVR:$Vx32),
35819 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
35820 "$Vx32.w += vrmpy($Vu32.ub,$Vv32.b)",
35821 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_a7341a, Requires<[UseHVXV60]> {
35822 let Inst{7-5} = 0b010;
35823 let Inst{13-13} = 0b1;
35824 let Inst{31-21} = 0b00011100000;
35825 let hasNewValue = 1;
35826 let opNewValue = 0;
35827 let isAccumulator = 1;
35828 let isCVI = 1;
35829 let DecoderNamespace = "EXT_mmvec";
35830 let Constraints = "$Vx32 = $Vx32in";
35831 }
35832 def V6_vrmpybusv_acc_alt : HInst<
35833 (outs HvxVR:$Vx32),
35834 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
35835 "$Vx32 += vrmpybus($Vu32,$Vv32)",
35836 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35837 let hasNewValue = 1;
35838 let opNewValue = 0;
35839 let isAccumulator = 1;
35840 let isCVI = 1;
35841 let isPseudo = 1;
35842 let isCodeGenOnly = 1;
35843 let DecoderNamespace = "EXT_mmvec";
35844 let Constraints = "$Vx32 = $Vx32in";
35845 }
35846 def V6_vrmpybusv_alt : HInst<
35847 (outs HvxVR:$Vd32),
35848 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35849 "$Vd32 = vrmpybus($Vu32,$Vv32)",
35850 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35851 let hasNewValue = 1;
35852 let opNewValue = 0;
35853 let isCVI = 1;
35854 let isPseudo = 1;
35855 let isCodeGenOnly = 1;
35856 let DecoderNamespace = "EXT_mmvec";
35857 }
35858 def V6_vrmpybv : HInst<
35859 (outs HvxVR:$Vd32),
35860 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35861 "$Vd32.w = vrmpy($Vu32.b,$Vv32.b)",
35862 tc_c127de3a, TypeCVI_VX>, Enc_45364e, Requires<[UseHVXV60]> {
35863 let Inst{7-5} = 0b001;
35864 let Inst{13-13} = 0b0;
35865 let Inst{31-21} = 0b00011100000;
35866 let hasNewValue = 1;
35867 let opNewValue = 0;
35868 let isCVI = 1;
35869 let DecoderNamespace = "EXT_mmvec";
35870 }
35871 def V6_vrmpybv_acc : HInst<
35872 (outs HvxVR:$Vx32),
35873 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
35874 "$Vx32.w += vrmpy($Vu32.b,$Vv32.b)",
35875 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_a7341a, Requires<[UseHVXV60]> {
35876 let Inst{7-5} = 0b001;
35877 let Inst{13-13} = 0b1;
35878 let Inst{31-21} = 0b00011100000;
35879 let hasNewValue = 1;
35880 let opNewValue = 0;
35881 let isAccumulator = 1;
35882 let isCVI = 1;
35883 let DecoderNamespace = "EXT_mmvec";
35884 let Constraints = "$Vx32 = $Vx32in";
35885 }
35886 def V6_vrmpybv_acc_alt : HInst<
35887 (outs HvxVR:$Vx32),
35888 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
35889 "$Vx32 += vrmpyb($Vu32,$Vv32)",
35890 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35891 let hasNewValue = 1;
35892 let opNewValue = 0;
35893 let isAccumulator = 1;
35894 let isCVI = 1;
35895 let isPseudo = 1;
35896 let isCodeGenOnly = 1;
35897 let DecoderNamespace = "EXT_mmvec";
35898 let Constraints = "$Vx32 = $Vx32in";
35899 }
35900 def V6_vrmpybv_alt : HInst<
35901 (outs HvxVR:$Vd32),
35902 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35903 "$Vd32 = vrmpyb($Vu32,$Vv32)",
35904 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35905 let hasNewValue = 1;
35906 let opNewValue = 0;
35907 let isCVI = 1;
35908 let isPseudo = 1;
35909 let isCodeGenOnly = 1;
35910 let DecoderNamespace = "EXT_mmvec";
35911 }
35912 def V6_vrmpyub : HInst<
35913 (outs HvxVR:$Vd32),
35914 (ins HvxVR:$Vu32, IntRegs:$Rt32),
35915 "$Vd32.uw = vrmpy($Vu32.ub,$Rt32.ub)",
35916 tc_649072c2, TypeCVI_VX>, Enc_b087ac, Requires<[UseHVXV60]> {
35917 let Inst{7-5} = 0b011;
35918 let Inst{13-13} = 0b0;
35919 let Inst{31-21} = 0b00011001000;
35920 let hasNewValue = 1;
35921 let opNewValue = 0;
35922 let isCVI = 1;
35923 let DecoderNamespace = "EXT_mmvec";
35924 }
35925 def V6_vrmpyub_acc : HInst<
35926 (outs HvxVR:$Vx32),
35927 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
35928 "$Vx32.uw += vrmpy($Vu32.ub,$Rt32.ub)",
35929 tc_b091f1c6, TypeCVI_VX>, Enc_5138b3, Requires<[UseHVXV60]> {
35930 let Inst{7-5} = 0b100;
35931 let Inst{13-13} = 0b1;
35932 let Inst{31-21} = 0b00011001000;
35933 let hasNewValue = 1;
35934 let opNewValue = 0;
35935 let isAccumulator = 1;
35936 let isCVI = 1;
35937 let DecoderNamespace = "EXT_mmvec";
35938 let Constraints = "$Vx32 = $Vx32in";
35939 }
35940 def V6_vrmpyub_acc_alt : HInst<
35941 (outs HvxVR:$Vx32),
35942 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
35943 "$Vx32 += vrmpyub($Vu32,$Rt32)",
35944 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35945 let hasNewValue = 1;
35946 let opNewValue = 0;
35947 let isAccumulator = 1;
35948 let isCVI = 1;
35949 let isPseudo = 1;
35950 let isCodeGenOnly = 1;
35951 let DecoderNamespace = "EXT_mmvec";
35952 let Constraints = "$Vx32 = $Vx32in";
35953 }
35954 def V6_vrmpyub_alt : HInst<
35955 (outs HvxVR:$Vd32),
35956 (ins HvxVR:$Vu32, IntRegs:$Rt32),
35957 "$Vd32 = vrmpyub($Vu32,$Rt32)",
35958 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35959 let hasNewValue = 1;
35960 let opNewValue = 0;
35961 let isCVI = 1;
35962 let isPseudo = 1;
35963 let isCodeGenOnly = 1;
35964 let DecoderNamespace = "EXT_mmvec";
35965 }
35966 def V6_vrmpyub_rtt : HInst<
35967 (outs HvxWR:$Vdd32),
35968 (ins HvxVR:$Vu32, DoubleRegs:$Rtt32),
35969 "$Vdd32.uw = vrmpy($Vu32.ub,$Rtt32.ub)",
35970 tc_cd94bfe0, TypeCVI_VS_VX>, Enc_cb785b, Requires<[UseHVXV65]> {
35971 let Inst{7-5} = 0b100;
35972 let Inst{13-13} = 0b0;
35973 let Inst{31-21} = 0b00011001110;
35974 let hasNewValue = 1;
35975 let opNewValue = 0;
35976 let isCVI = 1;
35977 let DecoderNamespace = "EXT_mmvec";
35978 }
35979 def V6_vrmpyub_rtt_acc : HInst<
35980 (outs HvxWR:$Vxx32),
35981 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, DoubleRegs:$Rtt32),
35982 "$Vxx32.uw += vrmpy($Vu32.ub,$Rtt32.ub)",
35983 tc_15fdf750, TypeCVI_VS_VX>, Enc_ad9bef, Requires<[UseHVXV65]> {
35984 let Inst{7-5} = 0b111;
35985 let Inst{13-13} = 0b1;
35986 let Inst{31-21} = 0b00011001101;
35987 let hasNewValue = 1;
35988 let opNewValue = 0;
35989 let isAccumulator = 1;
35990 let isCVI = 1;
35991 let DecoderNamespace = "EXT_mmvec";
35992 let Constraints = "$Vxx32 = $Vxx32in";
35993 }
35994 def V6_vrmpyub_rtt_acc_alt : HInst<
35995 (outs HvxWR:$Vxx32),
35996 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, DoubleRegs:$Rtt32),
35997 "$Vxx32.uw += vrmpy($Vu32.ub,$Rtt32.ub)",
35998 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
35999 let hasNewValue = 1;
36000 let opNewValue = 0;
36001 let isAccumulator = 1;
36002 let isCVI = 1;
36003 let isPseudo = 1;
36004 let isCodeGenOnly = 1;
36005 let DecoderNamespace = "EXT_mmvec";
36006 let Constraints = "$Vxx32 = $Vxx32in";
36007 }
36008 def V6_vrmpyub_rtt_alt : HInst<
36009 (outs HvxWR:$Vdd32),
36010 (ins HvxVR:$Vu32, DoubleRegs:$Rtt32),
36011 "$Vdd32.uw = vrmpy($Vu32.ub,$Rtt32.ub)",
36012 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
36013 let hasNewValue = 1;
36014 let opNewValue = 0;
36015 let isCVI = 1;
36016 let isPseudo = 1;
36017 let isCodeGenOnly = 1;
36018 let DecoderNamespace = "EXT_mmvec";
36019 }
36020 def V6_vrmpyubi : HInst<
36021 (outs HvxWR:$Vdd32),
36022 (ins HvxWR:$Vuu32, IntRegs:$Rt32, u1_0Imm:$Ii),
36023 "$Vdd32.uw = vrmpy($Vuu32.ub,$Rt32.ub,#$Ii)",
36024 tc_1ad8a370, TypeCVI_VX_DV>, Enc_2f2f04, Requires<[UseHVXV60]> {
36025 let Inst{7-6} = 0b11;
36026 let Inst{13-13} = 0b0;
36027 let Inst{31-21} = 0b00011001101;
36028 let hasNewValue = 1;
36029 let opNewValue = 0;
36030 let isCVI = 1;
36031 let DecoderNamespace = "EXT_mmvec";
36032 }
36033 def V6_vrmpyubi_acc : HInst<
36034 (outs HvxWR:$Vxx32),
36035 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32, u1_0Imm:$Ii),
36036 "$Vxx32.uw += vrmpy($Vuu32.ub,$Rt32.ub,#$Ii)",
36037 tc_e675c45a, TypeCVI_VX_DV>, Enc_d483b9, Requires<[UseHVXV60]> {
36038 let Inst{7-6} = 0b11;
36039 let Inst{13-13} = 0b1;
36040 let Inst{31-21} = 0b00011001011;
36041 let hasNewValue = 1;
36042 let opNewValue = 0;
36043 let isAccumulator = 1;
36044 let isCVI = 1;
36045 let DecoderNamespace = "EXT_mmvec";
36046 let Constraints = "$Vxx32 = $Vxx32in";
36047 }
36048 def V6_vrmpyubi_acc_alt : HInst<
36049 (outs HvxWR:$Vxx32),
36050 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32, u1_0Imm:$Ii),
36051 "$Vxx32 += vrmpyub($Vuu32,$Rt32,#$Ii)",
36052 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36053 let hasNewValue = 1;
36054 let opNewValue = 0;
36055 let isAccumulator = 1;
36056 let isCVI = 1;
36057 let isPseudo = 1;
36058 let isCodeGenOnly = 1;
36059 let DecoderNamespace = "EXT_mmvec";
36060 let Constraints = "$Vxx32 = $Vxx32in";
36061 }
36062 def V6_vrmpyubi_alt : HInst<
36063 (outs HvxWR:$Vdd32),
36064 (ins HvxWR:$Vuu32, IntRegs:$Rt32, u1_0Imm:$Ii),
36065 "$Vdd32 = vrmpyub($Vuu32,$Rt32,#$Ii)",
36066 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36067 let hasNewValue = 1;
36068 let opNewValue = 0;
36069 let isCVI = 1;
36070 let isPseudo = 1;
36071 let isCodeGenOnly = 1;
36072 let DecoderNamespace = "EXT_mmvec";
36073 }
36074 def V6_vrmpyubv : HInst<
36075 (outs HvxVR:$Vd32),
36076 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36077 "$Vd32.uw = vrmpy($Vu32.ub,$Vv32.ub)",
36078 tc_c127de3a, TypeCVI_VX>, Enc_45364e, Requires<[UseHVXV60]> {
36079 let Inst{7-5} = 0b000;
36080 let Inst{13-13} = 0b0;
36081 let Inst{31-21} = 0b00011100000;
36082 let hasNewValue = 1;
36083 let opNewValue = 0;
36084 let isCVI = 1;
36085 let DecoderNamespace = "EXT_mmvec";
36086 }
36087 def V6_vrmpyubv_acc : HInst<
36088 (outs HvxVR:$Vx32),
36089 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
36090 "$Vx32.uw += vrmpy($Vu32.ub,$Vv32.ub)",
36091 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_a7341a, Requires<[UseHVXV60]> {
36092 let Inst{7-5} = 0b000;
36093 let Inst{13-13} = 0b1;
36094 let Inst{31-21} = 0b00011100000;
36095 let hasNewValue = 1;
36096 let opNewValue = 0;
36097 let isAccumulator = 1;
36098 let isCVI = 1;
36099 let DecoderNamespace = "EXT_mmvec";
36100 let Constraints = "$Vx32 = $Vx32in";
36101 }
36102 def V6_vrmpyubv_acc_alt : HInst<
36103 (outs HvxVR:$Vx32),
36104 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
36105 "$Vx32 += vrmpyub($Vu32,$Vv32)",
36106 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36107 let hasNewValue = 1;
36108 let opNewValue = 0;
36109 let isAccumulator = 1;
36110 let isCVI = 1;
36111 let isPseudo = 1;
36112 let isCodeGenOnly = 1;
36113 let DecoderNamespace = "EXT_mmvec";
36114 let Constraints = "$Vx32 = $Vx32in";
36115 }
36116 def V6_vrmpyubv_alt : HInst<
36117 (outs HvxVR:$Vd32),
36118 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36119 "$Vd32 = vrmpyub($Vu32,$Vv32)",
36120 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36121 let hasNewValue = 1;
36122 let opNewValue = 0;
36123 let isCVI = 1;
36124 let isPseudo = 1;
36125 let isCodeGenOnly = 1;
36126 let DecoderNamespace = "EXT_mmvec";
36127 }
36128 def V6_vrmpyzbb_rt : HInst<
36129 (outs HvxVQR:$Vdddd32),
36130 (ins HvxVR:$Vu32, IntRegsLow8:$Rt8),
36131 "$Vdddd32.w = vrmpyz($Vu32.b,$Rt8.b)",
36132 tc_61bf7c03, TypeCVI_4SLOT_MPY>, Enc_1bd127, Requires<[UseHVXV66,UseZReg]> {
36133 let Inst{7-5} = 0b000;
36134 let Inst{13-13} = 0b0;
36135 let Inst{31-19} = 0b0001100111101;
36136 let hasNewValue = 1;
36137 let opNewValue = 0;
36138 let isCVI = 1;
36139 let DecoderNamespace = "EXT_mmvec";
36140 }
36141 def V6_vrmpyzbb_rt_acc : HInst<
36142 (outs HvxVQR:$Vyyyy32),
36143 (ins HvxVQR:$Vyyyy32in, HvxVR:$Vu32, IntRegsLow8:$Rt8),
36144 "$Vyyyy32.w += vrmpyz($Vu32.b,$Rt8.b)",
36145 tc_933f2b39, TypeCVI_4SLOT_MPY>, Enc_d7bc34, Requires<[UseHVXV66,UseZReg]> {
36146 let Inst{7-5} = 0b010;
36147 let Inst{13-13} = 0b1;
36148 let Inst{31-19} = 0b0001100111000;
36149 let hasNewValue = 1;
36150 let opNewValue = 0;
36151 let isAccumulator = 1;
36152 let isCVI = 1;
36153 let DecoderNamespace = "EXT_mmvec";
36154 let Constraints = "$Vyyyy32 = $Vyyyy32in";
36155 }
36156 def V6_vrmpyzbb_rx : HInst<
36157 (outs HvxVQR:$Vdddd32, IntRegsLow8:$Rx8),
36158 (ins HvxVR:$Vu32, IntRegs:$Rx8in),
36159 "$Vdddd32.w = vrmpyz($Vu32.b,$Rx8.b++)",
36160 tc_26a377fe, TypeCVI_4SLOT_MPY>, Enc_3b7631, Requires<[UseHVXV66,UseZReg]> {
36161 let Inst{7-5} = 0b000;
36162 let Inst{13-13} = 0b0;
36163 let Inst{31-19} = 0b0001100111100;
36164 let hasNewValue = 1;
36165 let opNewValue = 0;
36166 let isCVI = 1;
36167 let DecoderNamespace = "EXT_mmvec";
36168 let Constraints = "$Rx8 = $Rx8in";
36169 }
36170 def V6_vrmpyzbb_rx_acc : HInst<
36171 (outs HvxVQR:$Vyyyy32, IntRegsLow8:$Rx8),
36172 (ins HvxVQR:$Vyyyy32in, HvxVR:$Vu32, IntRegs:$Rx8in),
36173 "$Vyyyy32.w += vrmpyz($Vu32.b,$Rx8.b++)",
36174 tc_2d4051cd, TypeCVI_4SLOT_MPY>, Enc_bddee3, Requires<[UseHVXV66,UseZReg]> {
36175 let Inst{7-5} = 0b010;
36176 let Inst{13-13} = 0b1;
36177 let Inst{31-19} = 0b0001100111001;
36178 let hasNewValue = 1;
36179 let opNewValue = 0;
36180 let isAccumulator = 1;
36181 let isCVI = 1;
36182 let DecoderNamespace = "EXT_mmvec";
36183 let Constraints = "$Vyyyy32 = $Vyyyy32in, $Rx8 = $Rx8in";
36184 }
36185 def V6_vrmpyzbub_rt : HInst<
36186 (outs HvxVQR:$Vdddd32),
36187 (ins HvxVR:$Vu32, IntRegsLow8:$Rt8),
36188 "$Vdddd32.w = vrmpyz($Vu32.b,$Rt8.ub)",
36189 tc_61bf7c03, TypeCVI_4SLOT_MPY>, Enc_1bd127, Requires<[UseHVXV66,UseZReg]> {
36190 let Inst{7-5} = 0b010;
36191 let Inst{13-13} = 0b0;
36192 let Inst{31-19} = 0b0001100111111;
36193 let hasNewValue = 1;
36194 let opNewValue = 0;
36195 let isCVI = 1;
36196 let DecoderNamespace = "EXT_mmvec";
36197 }
36198 def V6_vrmpyzbub_rt_acc : HInst<
36199 (outs HvxVQR:$Vyyyy32),
36200 (ins HvxVQR:$Vyyyy32in, HvxVR:$Vu32, IntRegsLow8:$Rt8),
36201 "$Vyyyy32.w += vrmpyz($Vu32.b,$Rt8.ub)",
36202 tc_933f2b39, TypeCVI_4SLOT_MPY>, Enc_d7bc34, Requires<[UseHVXV66,UseZReg]> {
36203 let Inst{7-5} = 0b001;
36204 let Inst{13-13} = 0b1;
36205 let Inst{31-19} = 0b0001100111010;
36206 let hasNewValue = 1;
36207 let opNewValue = 0;
36208 let isAccumulator = 1;
36209 let isCVI = 1;
36210 let DecoderNamespace = "EXT_mmvec";
36211 let Constraints = "$Vyyyy32 = $Vyyyy32in";
36212 }
36213 def V6_vrmpyzbub_rx : HInst<
36214 (outs HvxVQR:$Vdddd32, IntRegsLow8:$Rx8),
36215 (ins HvxVR:$Vu32, IntRegs:$Rx8in),
36216 "$Vdddd32.w = vrmpyz($Vu32.b,$Rx8.ub++)",
36217 tc_26a377fe, TypeCVI_4SLOT_MPY>, Enc_3b7631, Requires<[UseHVXV66,UseZReg]> {
36218 let Inst{7-5} = 0b010;
36219 let Inst{13-13} = 0b0;
36220 let Inst{31-19} = 0b0001100111110;
36221 let hasNewValue = 1;
36222 let opNewValue = 0;
36223 let isCVI = 1;
36224 let DecoderNamespace = "EXT_mmvec";
36225 let Constraints = "$Rx8 = $Rx8in";
36226 }
36227 def V6_vrmpyzbub_rx_acc : HInst<
36228 (outs HvxVQR:$Vyyyy32, IntRegsLow8:$Rx8),
36229 (ins HvxVQR:$Vyyyy32in, HvxVR:$Vu32, IntRegs:$Rx8in),
36230 "$Vyyyy32.w += vrmpyz($Vu32.b,$Rx8.ub++)",
36231 tc_2d4051cd, TypeCVI_4SLOT_MPY>, Enc_bddee3, Requires<[UseHVXV66,UseZReg]> {
36232 let Inst{7-5} = 0b001;
36233 let Inst{13-13} = 0b1;
36234 let Inst{31-19} = 0b0001100111011;
36235 let hasNewValue = 1;
36236 let opNewValue = 0;
36237 let isAccumulator = 1;
36238 let isCVI = 1;
36239 let DecoderNamespace = "EXT_mmvec";
36240 let Constraints = "$Vyyyy32 = $Vyyyy32in, $Rx8 = $Rx8in";
36241 }
36242 def V6_vrmpyzcb_rt : HInst<
36243 (outs HvxVQR:$Vdddd32),
36244 (ins HvxVR:$Vu32, IntRegsLow8:$Rt8),
36245 "$Vdddd32.w = vr16mpyz($Vu32.c,$Rt8.b)",
36246 tc_61bf7c03, TypeCVI_4SLOT_MPY>, Enc_1bd127, Requires<[UseHVXV66,UseZReg]> {
36247 let Inst{7-5} = 0b001;
36248 let Inst{13-13} = 0b0;
36249 let Inst{31-19} = 0b0001100111101;
36250 let hasNewValue = 1;
36251 let opNewValue = 0;
36252 let isCVI = 1;
36253 let DecoderNamespace = "EXT_mmvec";
36254 }
36255 def V6_vrmpyzcb_rt_acc : HInst<
36256 (outs HvxVQR:$Vyyyy32),
36257 (ins HvxVQR:$Vyyyy32in, HvxVR:$Vu32, IntRegsLow8:$Rt8),
36258 "$Vyyyy32.w += vr16mpyz($Vu32.c,$Rt8.b)",
36259 tc_933f2b39, TypeCVI_4SLOT_MPY>, Enc_d7bc34, Requires<[UseHVXV66,UseZReg]> {
36260 let Inst{7-5} = 0b011;
36261 let Inst{13-13} = 0b1;
36262 let Inst{31-19} = 0b0001100111000;
36263 let hasNewValue = 1;
36264 let opNewValue = 0;
36265 let isAccumulator = 1;
36266 let isCVI = 1;
36267 let DecoderNamespace = "EXT_mmvec";
36268 let Constraints = "$Vyyyy32 = $Vyyyy32in";
36269 }
36270 def V6_vrmpyzcb_rx : HInst<
36271 (outs HvxVQR:$Vdddd32, IntRegsLow8:$Rx8),
36272 (ins HvxVR:$Vu32, IntRegs:$Rx8in),
36273 "$Vdddd32.w = vr16mpyz($Vu32.c,$Rx8.b++)",
36274 tc_26a377fe, TypeCVI_4SLOT_MPY>, Enc_3b7631, Requires<[UseHVXV66,UseZReg]> {
36275 let Inst{7-5} = 0b001;
36276 let Inst{13-13} = 0b0;
36277 let Inst{31-19} = 0b0001100111100;
36278 let hasNewValue = 1;
36279 let opNewValue = 0;
36280 let isCVI = 1;
36281 let DecoderNamespace = "EXT_mmvec";
36282 let Constraints = "$Rx8 = $Rx8in";
36283 }
36284 def V6_vrmpyzcb_rx_acc : HInst<
36285 (outs HvxVQR:$Vyyyy32, IntRegsLow8:$Rx8),
36286 (ins HvxVQR:$Vyyyy32in, HvxVR:$Vu32, IntRegs:$Rx8in),
36287 "$Vyyyy32.w += vr16mpyz($Vu32.c,$Rx8.b++)",
36288 tc_2d4051cd, TypeCVI_4SLOT_MPY>, Enc_bddee3, Requires<[UseHVXV66,UseZReg]> {
36289 let Inst{7-5} = 0b011;
36290 let Inst{13-13} = 0b1;
36291 let Inst{31-19} = 0b0001100111001;
36292 let hasNewValue = 1;
36293 let opNewValue = 0;
36294 let isAccumulator = 1;
36295 let isCVI = 1;
36296 let DecoderNamespace = "EXT_mmvec";
36297 let Constraints = "$Vyyyy32 = $Vyyyy32in, $Rx8 = $Rx8in";
36298 }
36299 def V6_vrmpyzcbs_rt : HInst<
36300 (outs HvxVQR:$Vdddd32),
36301 (ins HvxVR:$Vu32, IntRegsLow8:$Rt8),
36302 "$Vdddd32.w = vr16mpyzs($Vu32.c,$Rt8.b)",
36303 tc_61bf7c03, TypeCVI_4SLOT_MPY>, Enc_1bd127, Requires<[UseHVXV66,UseZReg]> {
36304 let Inst{7-5} = 0b010;
36305 let Inst{13-13} = 0b0;
36306 let Inst{31-19} = 0b0001100111101;
36307 let hasNewValue = 1;
36308 let opNewValue = 0;
36309 let isCVI = 1;
36310 let DecoderNamespace = "EXT_mmvec";
36311 }
36312 def V6_vrmpyzcbs_rt_acc : HInst<
36313 (outs HvxVQR:$Vyyyy32),
36314 (ins HvxVQR:$Vyyyy32in, HvxVR:$Vu32, IntRegsLow8:$Rt8),
36315 "$Vyyyy32.w += vr16mpyzs($Vu32.c,$Rt8.b)",
36316 tc_933f2b39, TypeCVI_4SLOT_MPY>, Enc_d7bc34, Requires<[UseHVXV66,UseZReg]> {
36317 let Inst{7-5} = 0b001;
36318 let Inst{13-13} = 0b1;
36319 let Inst{31-19} = 0b0001100111000;
36320 let hasNewValue = 1;
36321 let opNewValue = 0;
36322 let isAccumulator = 1;
36323 let isCVI = 1;
36324 let DecoderNamespace = "EXT_mmvec";
36325 let Constraints = "$Vyyyy32 = $Vyyyy32in";
36326 }
36327 def V6_vrmpyzcbs_rx : HInst<
36328 (outs HvxVQR:$Vdddd32, IntRegsLow8:$Rx8),
36329 (ins HvxVR:$Vu32, IntRegs:$Rx8in),
36330 "$Vdddd32.w = vr16mpyzs($Vu32.c,$Rx8.b++)",
36331 tc_26a377fe, TypeCVI_4SLOT_MPY>, Enc_3b7631, Requires<[UseHVXV66,UseZReg]> {
36332 let Inst{7-5} = 0b010;
36333 let Inst{13-13} = 0b0;
36334 let Inst{31-19} = 0b0001100111100;
36335 let hasNewValue = 1;
36336 let opNewValue = 0;
36337 let isCVI = 1;
36338 let DecoderNamespace = "EXT_mmvec";
36339 let Constraints = "$Rx8 = $Rx8in";
36340 }
36341 def V6_vrmpyzcbs_rx_acc : HInst<
36342 (outs HvxVQR:$Vyyyy32, IntRegsLow8:$Rx8),
36343 (ins HvxVQR:$Vyyyy32in, HvxVR:$Vu32, IntRegs:$Rx8in),
36344 "$Vyyyy32.w += vr16mpyzs($Vu32.c,$Rx8.b++)",
36345 tc_2d4051cd, TypeCVI_4SLOT_MPY>, Enc_bddee3, Requires<[UseHVXV66,UseZReg]> {
36346 let Inst{7-5} = 0b001;
36347 let Inst{13-13} = 0b1;
36348 let Inst{31-19} = 0b0001100111001;
36349 let hasNewValue = 1;
36350 let opNewValue = 0;
36351 let isAccumulator = 1;
36352 let isCVI = 1;
36353 let DecoderNamespace = "EXT_mmvec";
36354 let Constraints = "$Vyyyy32 = $Vyyyy32in, $Rx8 = $Rx8in";
36355 }
36356 def V6_vrmpyznb_rt : HInst<
36357 (outs HvxVQR:$Vdddd32),
36358 (ins HvxVR:$Vu32, IntRegsLow8:$Rt8),
36359 "$Vdddd32.w = vr8mpyz($Vu32.n,$Rt8.b)",
36360 tc_61bf7c03, TypeCVI_4SLOT_MPY>, Enc_1bd127, Requires<[UseHVXV66,UseZReg]> {
36361 let Inst{7-5} = 0b000;
36362 let Inst{13-13} = 0b0;
36363 let Inst{31-19} = 0b0001100111111;
36364 let hasNewValue = 1;
36365 let opNewValue = 0;
36366 let isCVI = 1;
36367 let DecoderNamespace = "EXT_mmvec";
36368 }
36369 def V6_vrmpyznb_rt_acc : HInst<
36370 (outs HvxVQR:$Vyyyy32),
36371 (ins HvxVQR:$Vyyyy32in, HvxVR:$Vu32, IntRegsLow8:$Rt8),
36372 "$Vyyyy32.w += vr8mpyz($Vu32.n,$Rt8.b)",
36373 tc_933f2b39, TypeCVI_4SLOT_MPY>, Enc_d7bc34, Requires<[UseHVXV66,UseZReg]> {
36374 let Inst{7-5} = 0b010;
36375 let Inst{13-13} = 0b1;
36376 let Inst{31-19} = 0b0001100111010;
36377 let hasNewValue = 1;
36378 let opNewValue = 0;
36379 let isAccumulator = 1;
36380 let isCVI = 1;
36381 let DecoderNamespace = "EXT_mmvec";
36382 let Constraints = "$Vyyyy32 = $Vyyyy32in";
36383 }
36384 def V6_vrmpyznb_rx : HInst<
36385 (outs HvxVQR:$Vdddd32, IntRegsLow8:$Rx8),
36386 (ins HvxVR:$Vu32, IntRegs:$Rx8in),
36387 "$Vdddd32.w = vr8mpyz($Vu32.n,$Rx8.b++)",
36388 tc_26a377fe, TypeCVI_4SLOT_MPY>, Enc_3b7631, Requires<[UseHVXV66,UseZReg]> {
36389 let Inst{7-5} = 0b000;
36390 let Inst{13-13} = 0b0;
36391 let Inst{31-19} = 0b0001100111110;
36392 let hasNewValue = 1;
36393 let opNewValue = 0;
36394 let isCVI = 1;
36395 let DecoderNamespace = "EXT_mmvec";
36396 let Constraints = "$Rx8 = $Rx8in";
36397 }
36398 def V6_vrmpyznb_rx_acc : HInst<
36399 (outs HvxVQR:$Vyyyy32, IntRegsLow8:$Rx8),
36400 (ins HvxVQR:$Vyyyy32in, HvxVR:$Vu32, IntRegs:$Rx8in),
36401 "$Vyyyy32.w += vr8mpyz($Vu32.n,$Rx8.b++)",
36402 tc_2d4051cd, TypeCVI_4SLOT_MPY>, Enc_bddee3, Requires<[UseHVXV66,UseZReg]> {
36403 let Inst{7-5} = 0b010;
36404 let Inst{13-13} = 0b1;
36405 let Inst{31-19} = 0b0001100111011;
36406 let hasNewValue = 1;
36407 let opNewValue = 0;
36408 let isAccumulator = 1;
36409 let isCVI = 1;
36410 let DecoderNamespace = "EXT_mmvec";
36411 let Constraints = "$Vyyyy32 = $Vyyyy32in, $Rx8 = $Rx8in";
36412 }
36413 def V6_vror : HInst<
36414 (outs HvxVR:$Vd32),
36415 (ins HvxVR:$Vu32, IntRegs:$Rt32),
36416 "$Vd32 = vror($Vu32,$Rt32)",
36417 tc_6e7fa133, TypeCVI_VP>, Enc_b087ac, Requires<[UseHVXV60]> {
36418 let Inst{7-5} = 0b001;
36419 let Inst{13-13} = 0b0;
36420 let Inst{31-21} = 0b00011001011;
36421 let hasNewValue = 1;
36422 let opNewValue = 0;
36423 let isCVI = 1;
36424 let DecoderNamespace = "EXT_mmvec";
36425 }
36426 def V6_vrotr : HInst<
36427 (outs HvxVR:$Vd32),
36428 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36429 "$Vd32.uw = vrotr($Vu32.uw,$Vv32.uw)",
36430 tc_05ca8cfd, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV66]> {
36431 let Inst{7-5} = 0b111;
36432 let Inst{13-13} = 0b1;
36433 let Inst{31-21} = 0b00011010100;
36434 let hasNewValue = 1;
36435 let opNewValue = 0;
36436 let isCVI = 1;
36437 let DecoderNamespace = "EXT_mmvec";
36438 }
36439 def V6_vrotr_alt : HInst<
36440 (outs HvxVR:$Vd32),
36441 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36442 "$Vd32 = vrotr($Vu32,$Vv32)",
36443 PSEUDO, TypeMAPPING>, Requires<[UseHVXV66]> {
36444 let hasNewValue = 1;
36445 let opNewValue = 0;
36446 let isCVI = 1;
36447 let isPseudo = 1;
36448 let isCodeGenOnly = 1;
36449 let DecoderNamespace = "EXT_mmvec";
36450 }
36451 def V6_vroundhb : HInst<
36452 (outs HvxVR:$Vd32),
36453 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36454 "$Vd32.b = vround($Vu32.h,$Vv32.h):sat",
36455 tc_05ca8cfd, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV60]> {
36456 let Inst{7-5} = 0b110;
36457 let Inst{13-13} = 0b0;
36458 let Inst{31-21} = 0b00011111011;
36459 let hasNewValue = 1;
36460 let opNewValue = 0;
36461 let isCVI = 1;
36462 let DecoderNamespace = "EXT_mmvec";
36463 }
36464 def V6_vroundhb_alt : HInst<
36465 (outs HvxVR:$Vd32),
36466 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36467 "$Vd32 = vroundhb($Vu32,$Vv32):sat",
36468 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36469 let hasNewValue = 1;
36470 let opNewValue = 0;
36471 let isCVI = 1;
36472 let isPseudo = 1;
36473 let isCodeGenOnly = 1;
36474 let DecoderNamespace = "EXT_mmvec";
36475 }
36476 def V6_vroundhub : HInst<
36477 (outs HvxVR:$Vd32),
36478 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36479 "$Vd32.ub = vround($Vu32.h,$Vv32.h):sat",
36480 tc_05ca8cfd, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV60]> {
36481 let Inst{7-5} = 0b111;
36482 let Inst{13-13} = 0b0;
36483 let Inst{31-21} = 0b00011111011;
36484 let hasNewValue = 1;
36485 let opNewValue = 0;
36486 let isCVI = 1;
36487 let DecoderNamespace = "EXT_mmvec";
36488 }
36489 def V6_vroundhub_alt : HInst<
36490 (outs HvxVR:$Vd32),
36491 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36492 "$Vd32 = vroundhub($Vu32,$Vv32):sat",
36493 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36494 let hasNewValue = 1;
36495 let opNewValue = 0;
36496 let isCVI = 1;
36497 let isPseudo = 1;
36498 let isCodeGenOnly = 1;
36499 let DecoderNamespace = "EXT_mmvec";
36500 }
36501 def V6_vrounduhub : HInst<
36502 (outs HvxVR:$Vd32),
36503 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36504 "$Vd32.ub = vround($Vu32.uh,$Vv32.uh):sat",
36505 tc_05ca8cfd, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV62]> {
36506 let Inst{7-5} = 0b011;
36507 let Inst{13-13} = 0b0;
36508 let Inst{31-21} = 0b00011111111;
36509 let hasNewValue = 1;
36510 let opNewValue = 0;
36511 let isCVI = 1;
36512 let DecoderNamespace = "EXT_mmvec";
36513 }
36514 def V6_vrounduhub_alt : HInst<
36515 (outs HvxVR:$Vd32),
36516 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36517 "$Vd32 = vrounduhub($Vu32,$Vv32):sat",
36518 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
36519 let hasNewValue = 1;
36520 let opNewValue = 0;
36521 let isCVI = 1;
36522 let isPseudo = 1;
36523 let isCodeGenOnly = 1;
36524 let DecoderNamespace = "EXT_mmvec";
36525 }
36526 def V6_vrounduwuh : HInst<
36527 (outs HvxVR:$Vd32),
36528 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36529 "$Vd32.uh = vround($Vu32.uw,$Vv32.uw):sat",
36530 tc_05ca8cfd, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV62]> {
36531 let Inst{7-5} = 0b100;
36532 let Inst{13-13} = 0b0;
36533 let Inst{31-21} = 0b00011111111;
36534 let hasNewValue = 1;
36535 let opNewValue = 0;
36536 let isCVI = 1;
36537 let DecoderNamespace = "EXT_mmvec";
36538 }
36539 def V6_vrounduwuh_alt : HInst<
36540 (outs HvxVR:$Vd32),
36541 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36542 "$Vd32 = vrounduwuh($Vu32,$Vv32):sat",
36543 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
36544 let hasNewValue = 1;
36545 let opNewValue = 0;
36546 let isCVI = 1;
36547 let isPseudo = 1;
36548 let isCodeGenOnly = 1;
36549 let DecoderNamespace = "EXT_mmvec";
36550 }
36551 def V6_vroundwh : HInst<
36552 (outs HvxVR:$Vd32),
36553 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36554 "$Vd32.h = vround($Vu32.w,$Vv32.w):sat",
36555 tc_05ca8cfd, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV60]> {
36556 let Inst{7-5} = 0b100;
36557 let Inst{13-13} = 0b0;
36558 let Inst{31-21} = 0b00011111011;
36559 let hasNewValue = 1;
36560 let opNewValue = 0;
36561 let isCVI = 1;
36562 let DecoderNamespace = "EXT_mmvec";
36563 }
36564 def V6_vroundwh_alt : HInst<
36565 (outs HvxVR:$Vd32),
36566 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36567 "$Vd32 = vroundwh($Vu32,$Vv32):sat",
36568 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36569 let hasNewValue = 1;
36570 let opNewValue = 0;
36571 let isCVI = 1;
36572 let isPseudo = 1;
36573 let isCodeGenOnly = 1;
36574 let DecoderNamespace = "EXT_mmvec";
36575 }
36576 def V6_vroundwuh : HInst<
36577 (outs HvxVR:$Vd32),
36578 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36579 "$Vd32.uh = vround($Vu32.w,$Vv32.w):sat",
36580 tc_05ca8cfd, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV60]> {
36581 let Inst{7-5} = 0b101;
36582 let Inst{13-13} = 0b0;
36583 let Inst{31-21} = 0b00011111011;
36584 let hasNewValue = 1;
36585 let opNewValue = 0;
36586 let isCVI = 1;
36587 let DecoderNamespace = "EXT_mmvec";
36588 }
36589 def V6_vroundwuh_alt : HInst<
36590 (outs HvxVR:$Vd32),
36591 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36592 "$Vd32 = vroundwuh($Vu32,$Vv32):sat",
36593 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36594 let hasNewValue = 1;
36595 let opNewValue = 0;
36596 let isCVI = 1;
36597 let isPseudo = 1;
36598 let isCodeGenOnly = 1;
36599 let DecoderNamespace = "EXT_mmvec";
36600 }
36601 def V6_vrsadubi : HInst<
36602 (outs HvxWR:$Vdd32),
36603 (ins HvxWR:$Vuu32, IntRegs:$Rt32, u1_0Imm:$Ii),
36604 "$Vdd32.uw = vrsad($Vuu32.ub,$Rt32.ub,#$Ii)",
36605 tc_1ad8a370, TypeCVI_VX_DV>, Enc_2f2f04, Requires<[UseHVXV60]> {
36606 let Inst{7-6} = 0b11;
36607 let Inst{13-13} = 0b0;
36608 let Inst{31-21} = 0b00011001010;
36609 let hasNewValue = 1;
36610 let opNewValue = 0;
36611 let isCVI = 1;
36612 let DecoderNamespace = "EXT_mmvec";
36613 }
36614 def V6_vrsadubi_acc : HInst<
36615 (outs HvxWR:$Vxx32),
36616 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32, u1_0Imm:$Ii),
36617 "$Vxx32.uw += vrsad($Vuu32.ub,$Rt32.ub,#$Ii)",
36618 tc_e675c45a, TypeCVI_VX_DV>, Enc_d483b9, Requires<[UseHVXV60]> {
36619 let Inst{7-6} = 0b11;
36620 let Inst{13-13} = 0b1;
36621 let Inst{31-21} = 0b00011001010;
36622 let hasNewValue = 1;
36623 let opNewValue = 0;
36624 let isAccumulator = 1;
36625 let isCVI = 1;
36626 let DecoderNamespace = "EXT_mmvec";
36627 let Constraints = "$Vxx32 = $Vxx32in";
36628 }
36629 def V6_vrsadubi_acc_alt : HInst<
36630 (outs HvxWR:$Vxx32),
36631 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32, u1_0Imm:$Ii),
36632 "$Vxx32 += vrsadub($Vuu32,$Rt32,#$Ii)",
36633 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36634 let hasNewValue = 1;
36635 let opNewValue = 0;
36636 let isAccumulator = 1;
36637 let isCVI = 1;
36638 let isPseudo = 1;
36639 let isCodeGenOnly = 1;
36640 let DecoderNamespace = "EXT_mmvec";
36641 let Constraints = "$Vxx32 = $Vxx32in";
36642 }
36643 def V6_vrsadubi_alt : HInst<
36644 (outs HvxWR:$Vdd32),
36645 (ins HvxWR:$Vuu32, IntRegs:$Rt32, u1_0Imm:$Ii),
36646 "$Vdd32 = vrsadub($Vuu32,$Rt32,#$Ii)",
36647 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36648 let hasNewValue = 1;
36649 let opNewValue = 0;
36650 let isCVI = 1;
36651 let isPseudo = 1;
36652 let isCodeGenOnly = 1;
36653 let DecoderNamespace = "EXT_mmvec";
36654 }
36655 def V6_vsatdw : HInst<
36656 (outs HvxVR:$Vd32),
36657 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36658 "$Vd32.w = vsatdw($Vu32.w,$Vv32.w)",
36659 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV66]> {
36660 let Inst{7-5} = 0b111;
36661 let Inst{13-13} = 0b1;
36662 let Inst{31-21} = 0b00011101100;
36663 let hasNewValue = 1;
36664 let opNewValue = 0;
36665 let isCVI = 1;
36666 let DecoderNamespace = "EXT_mmvec";
36667 }
36668 def V6_vsathub : HInst<
36669 (outs HvxVR:$Vd32),
36670 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36671 "$Vd32.ub = vsat($Vu32.h,$Vv32.h)",
36672 tc_8772086c, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
36673 let Inst{7-5} = 0b010;
36674 let Inst{13-13} = 0b0;
36675 let Inst{31-21} = 0b00011111011;
36676 let hasNewValue = 1;
36677 let opNewValue = 0;
36678 let isCVI = 1;
36679 let DecoderNamespace = "EXT_mmvec";
36680 }
36681 def V6_vsathub_alt : HInst<
36682 (outs HvxVR:$Vd32),
36683 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36684 "$Vd32 = vsathub($Vu32,$Vv32)",
36685 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36686 let hasNewValue = 1;
36687 let opNewValue = 0;
36688 let isCVI = 1;
36689 let isPseudo = 1;
36690 let isCodeGenOnly = 1;
36691 let DecoderNamespace = "EXT_mmvec";
36692 }
36693 def V6_vsatuwuh : HInst<
36694 (outs HvxVR:$Vd32),
36695 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36696 "$Vd32.uh = vsat($Vu32.uw,$Vv32.uw)",
36697 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV62]> {
36698 let Inst{7-5} = 0b110;
36699 let Inst{13-13} = 0b0;
36700 let Inst{31-21} = 0b00011111001;
36701 let hasNewValue = 1;
36702 let opNewValue = 0;
36703 let isCVI = 1;
36704 let DecoderNamespace = "EXT_mmvec";
36705 }
36706 def V6_vsatuwuh_alt : HInst<
36707 (outs HvxVR:$Vd32),
36708 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36709 "$Vd32 = vsatuwuh($Vu32,$Vv32)",
36710 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
36711 let hasNewValue = 1;
36712 let opNewValue = 0;
36713 let isCVI = 1;
36714 let isPseudo = 1;
36715 let isCodeGenOnly = 1;
36716 let DecoderNamespace = "EXT_mmvec";
36717 }
36718 def V6_vsatwh : HInst<
36719 (outs HvxVR:$Vd32),
36720 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36721 "$Vd32.h = vsat($Vu32.w,$Vv32.w)",
36722 tc_8772086c, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
36723 let Inst{7-5} = 0b011;
36724 let Inst{13-13} = 0b0;
36725 let Inst{31-21} = 0b00011111011;
36726 let hasNewValue = 1;
36727 let opNewValue = 0;
36728 let isCVI = 1;
36729 let DecoderNamespace = "EXT_mmvec";
36730 }
36731 def V6_vsatwh_alt : HInst<
36732 (outs HvxVR:$Vd32),
36733 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36734 "$Vd32 = vsatwh($Vu32,$Vv32)",
36735 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36736 let hasNewValue = 1;
36737 let opNewValue = 0;
36738 let isCVI = 1;
36739 let isPseudo = 1;
36740 let isCodeGenOnly = 1;
36741 let DecoderNamespace = "EXT_mmvec";
36742 }
36743 def V6_vsb : HInst<
36744 (outs HvxWR:$Vdd32),
36745 (ins HvxVR:$Vu32),
36746 "$Vdd32.h = vsxt($Vu32.b)",
36747 tc_b4416217, TypeCVI_VA_DV>, Enc_dd766a, Requires<[UseHVXV60]> {
36748 let Inst{7-5} = 0b011;
36749 let Inst{13-13} = 0b0;
36750 let Inst{31-16} = 0b0001111000000010;
36751 let hasNewValue = 1;
36752 let opNewValue = 0;
36753 let isCVI = 1;
36754 let DecoderNamespace = "EXT_mmvec";
36755 }
36756 def V6_vsb_alt : HInst<
36757 (outs HvxWR:$Vdd32),
36758 (ins HvxVR:$Vu32),
36759 "$Vdd32 = vsxtb($Vu32)",
36760 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36761 let hasNewValue = 1;
36762 let opNewValue = 0;
36763 let isCVI = 1;
36764 let isPseudo = 1;
36765 let isCodeGenOnly = 1;
36766 let DecoderNamespace = "EXT_mmvec";
36767 }
36768 def V6_vscattermh : HInst<
36769 (outs),
36770 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32, HvxVR:$Vw32),
36771 "vscatter($Rt32,$Mu2,$Vv32.h).h = $Vw32",
36772 tc_9f363d21, TypeCVI_SCATTER>, Enc_16c48b, Requires<[UseHVXV65]> {
36773 let Inst{7-5} = 0b001;
36774 let Inst{31-21} = 0b00101111001;
36775 let accessSize = HalfWordAccess;
36776 let isCVI = 1;
36777 let mayStore = 1;
36778 let DecoderNamespace = "EXT_mmvec";
36779 }
36780 def V6_vscattermh_add : HInst<
36781 (outs),
36782 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32, HvxVR:$Vw32),
36783 "vscatter($Rt32,$Mu2,$Vv32.h).h += $Vw32",
36784 tc_9f363d21, TypeCVI_SCATTER>, Enc_16c48b, Requires<[UseHVXV65]> {
36785 let Inst{7-5} = 0b101;
36786 let Inst{31-21} = 0b00101111001;
36787 let accessSize = HalfWordAccess;
36788 let isAccumulator = 1;
36789 let isCVI = 1;
36790 let mayStore = 1;
36791 let DecoderNamespace = "EXT_mmvec";
36792 }
36793 def V6_vscattermh_add_alt : HInst<
36794 (outs),
36795 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32, HvxVR:$Vw32),
36796 "vscatter($Rt32,$Mu2,$Vv32.h) += $Vw32.h",
36797 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
36798 let isAccumulator = 1;
36799 let isCVI = 1;
36800 let isPseudo = 1;
36801 let isCodeGenOnly = 1;
36802 let DecoderNamespace = "EXT_mmvec";
36803 }
36804 def V6_vscattermh_alt : HInst<
36805 (outs),
36806 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32, HvxVR:$Vw32),
36807 "vscatter($Rt32,$Mu2,$Vv32.h) = $Vw32.h",
36808 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
36809 let isCVI = 1;
36810 let isPseudo = 1;
36811 let isCodeGenOnly = 1;
36812 let DecoderNamespace = "EXT_mmvec";
36813 }
36814 def V6_vscattermhq : HInst<
36815 (outs),
36816 (ins HvxQR:$Qs4, IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32, HvxVR:$Vw32),
36817 "if ($Qs4) vscatter($Rt32,$Mu2,$Vv32.h).h = $Vw32",
36818 tc_8e420e4d, TypeCVI_SCATTER>, Enc_9be1de, Requires<[UseHVXV65]> {
36819 let Inst{7-7} = 0b1;
36820 let Inst{31-21} = 0b00101111100;
36821 let accessSize = HalfWordAccess;
36822 let isCVI = 1;
36823 let mayStore = 1;
36824 let DecoderNamespace = "EXT_mmvec";
36825 }
36826 def V6_vscattermhq_alt : HInst<
36827 (outs),
36828 (ins HvxQR:$Qs4, IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32, HvxVR:$Vw32),
36829 "if ($Qs4) vscatter($Rt32,$Mu2,$Vv32.h) = $Vw32.h",
36830 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
36831 let isCVI = 1;
36832 let isPseudo = 1;
36833 let isCodeGenOnly = 1;
36834 let DecoderNamespace = "EXT_mmvec";
36835 }
36836 def V6_vscattermhw : HInst<
36837 (outs),
36838 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxWR:$Vvv32, HvxVR:$Vw32),
36839 "vscatter($Rt32,$Mu2,$Vvv32.w).h = $Vw32",
36840 tc_7273323b, TypeCVI_SCATTER_DV>, Enc_a641d0, Requires<[UseHVXV65]> {
36841 let Inst{7-5} = 0b010;
36842 let Inst{31-21} = 0b00101111001;
36843 let accessSize = HalfWordAccess;
36844 let isCVI = 1;
36845 let mayStore = 1;
36846 let DecoderNamespace = "EXT_mmvec";
36847 }
36848 def V6_vscattermhw_add : HInst<
36849 (outs),
36850 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxWR:$Vvv32, HvxVR:$Vw32),
36851 "vscatter($Rt32,$Mu2,$Vvv32.w).h += $Vw32",
36852 tc_7273323b, TypeCVI_SCATTER_DV>, Enc_a641d0, Requires<[UseHVXV65]> {
36853 let Inst{7-5} = 0b110;
36854 let Inst{31-21} = 0b00101111001;
36855 let accessSize = HalfWordAccess;
36856 let isAccumulator = 1;
36857 let isCVI = 1;
36858 let mayStore = 1;
36859 let DecoderNamespace = "EXT_mmvec";
36860 }
36861 def V6_vscattermhwq : HInst<
36862 (outs),
36863 (ins HvxQR:$Qs4, IntRegs:$Rt32, ModRegs:$Mu2, HvxWR:$Vvv32, HvxVR:$Vw32),
36864 "if ($Qs4) vscatter($Rt32,$Mu2,$Vvv32.w).h = $Vw32",
36865 tc_58d21193, TypeCVI_SCATTER_DV>, Enc_3d6d37, Requires<[UseHVXV65]> {
36866 let Inst{7-7} = 0b0;
36867 let Inst{31-21} = 0b00101111101;
36868 let accessSize = HalfWordAccess;
36869 let isCVI = 1;
36870 let mayStore = 1;
36871 let DecoderNamespace = "EXT_mmvec";
36872 }
36873 def V6_vscattermw : HInst<
36874 (outs),
36875 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32, HvxVR:$Vw32),
36876 "vscatter($Rt32,$Mu2,$Vv32.w).w = $Vw32",
36877 tc_9f363d21, TypeCVI_SCATTER>, Enc_16c48b, Requires<[UseHVXV65]> {
36878 let Inst{7-5} = 0b000;
36879 let Inst{31-21} = 0b00101111001;
36880 let accessSize = WordAccess;
36881 let isCVI = 1;
36882 let mayStore = 1;
36883 let DecoderNamespace = "EXT_mmvec";
36884 }
36885 def V6_vscattermw_add : HInst<
36886 (outs),
36887 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32, HvxVR:$Vw32),
36888 "vscatter($Rt32,$Mu2,$Vv32.w).w += $Vw32",
36889 tc_9f363d21, TypeCVI_SCATTER>, Enc_16c48b, Requires<[UseHVXV65]> {
36890 let Inst{7-5} = 0b100;
36891 let Inst{31-21} = 0b00101111001;
36892 let accessSize = WordAccess;
36893 let isAccumulator = 1;
36894 let isCVI = 1;
36895 let mayStore = 1;
36896 let DecoderNamespace = "EXT_mmvec";
36897 }
36898 def V6_vscattermw_add_alt : HInst<
36899 (outs),
36900 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32, HvxVR:$Vw32),
36901 "vscatter($Rt32,$Mu2,$Vv32.w) += $Vw32.w",
36902 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
36903 let isAccumulator = 1;
36904 let isCVI = 1;
36905 let isPseudo = 1;
36906 let isCodeGenOnly = 1;
36907 let DecoderNamespace = "EXT_mmvec";
36908 }
36909 def V6_vscattermw_alt : HInst<
36910 (outs),
36911 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32, HvxVR:$Vw32),
36912 "vscatter($Rt32,$Mu2,$Vv32.w) = $Vw32.w",
36913 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
36914 let isCVI = 1;
36915 let isPseudo = 1;
36916 let isCodeGenOnly = 1;
36917 let DecoderNamespace = "EXT_mmvec";
36918 }
36919 def V6_vscattermwh_add_alt : HInst<
36920 (outs),
36921 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxWR:$Vvv32, HvxVR:$Vw32),
36922 "vscatter($Rt32,$Mu2,$Vvv32.w) += $Vw32.h",
36923 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
36924 let isAccumulator = 1;
36925 let isCVI = 1;
36926 let isPseudo = 1;
36927 let isCodeGenOnly = 1;
36928 let DecoderNamespace = "EXT_mmvec";
36929 }
36930 def V6_vscattermwh_alt : HInst<
36931 (outs),
36932 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxWR:$Vvv32, HvxVR:$Vw32),
36933 "vscatter($Rt32,$Mu2,$Vvv32.w) = $Vw32.h",
36934 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
36935 let isCVI = 1;
36936 let isPseudo = 1;
36937 let isCodeGenOnly = 1;
36938 let DecoderNamespace = "EXT_mmvec";
36939 }
36940 def V6_vscattermwhq_alt : HInst<
36941 (outs),
36942 (ins HvxQR:$Qs4, IntRegs:$Rt32, ModRegs:$Mu2, HvxWR:$Vvv32, HvxVR:$Vw32),
36943 "if ($Qs4) vscatter($Rt32,$Mu2,$Vvv32.w) = $Vw32.h",
36944 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
36945 let isCVI = 1;
36946 let isPseudo = 1;
36947 let isCodeGenOnly = 1;
36948 let DecoderNamespace = "EXT_mmvec";
36949 }
36950 def V6_vscattermwq : HInst<
36951 (outs),
36952 (ins HvxQR:$Qs4, IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32, HvxVR:$Vw32),
36953 "if ($Qs4) vscatter($Rt32,$Mu2,$Vv32.w).w = $Vw32",
36954 tc_8e420e4d, TypeCVI_SCATTER>, Enc_9be1de, Requires<[UseHVXV65]> {
36955 let Inst{7-7} = 0b0;
36956 let Inst{31-21} = 0b00101111100;
36957 let accessSize = WordAccess;
36958 let isCVI = 1;
36959 let mayStore = 1;
36960 let DecoderNamespace = "EXT_mmvec";
36961 }
36962 def V6_vscattermwq_alt : HInst<
36963 (outs),
36964 (ins HvxQR:$Qs4, IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32, HvxVR:$Vw32),
36965 "if ($Qs4) vscatter($Rt32,$Mu2,$Vv32.w) = $Vw32.w",
36966 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
36967 let isCVI = 1;
36968 let isPseudo = 1;
36969 let isCodeGenOnly = 1;
36970 let DecoderNamespace = "EXT_mmvec";
36971 }
36972 def V6_vsh : HInst<
36973 (outs HvxWR:$Vdd32),
36974 (ins HvxVR:$Vu32),
36975 "$Vdd32.w = vsxt($Vu32.h)",
36976 tc_b4416217, TypeCVI_VA_DV>, Enc_dd766a, Requires<[UseHVXV60]> {
36977 let Inst{7-5} = 0b100;
36978 let Inst{13-13} = 0b0;
36979 let Inst{31-16} = 0b0001111000000010;
36980 let hasNewValue = 1;
36981 let opNewValue = 0;
36982 let isCVI = 1;
36983 let DecoderNamespace = "EXT_mmvec";
36984 }
36985 def V6_vsh_alt : HInst<
36986 (outs HvxWR:$Vdd32),
36987 (ins HvxVR:$Vu32),
36988 "$Vdd32 = vsxth($Vu32)",
36989 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36990 let hasNewValue = 1;
36991 let opNewValue = 0;
36992 let isCVI = 1;
36993 let isPseudo = 1;
36994 let isCodeGenOnly = 1;
36995 let DecoderNamespace = "EXT_mmvec";
36996 }
36997 def V6_vshufeh : HInst<
36998 (outs HvxVR:$Vd32),
36999 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37000 "$Vd32.h = vshuffe($Vu32.h,$Vv32.h)",
37001 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
37002 let Inst{7-5} = 0b011;
37003 let Inst{13-13} = 0b0;
37004 let Inst{31-21} = 0b00011111010;
37005 let hasNewValue = 1;
37006 let opNewValue = 0;
37007 let isCVI = 1;
37008 let DecoderNamespace = "EXT_mmvec";
37009 }
37010 def V6_vshufeh_alt : HInst<
37011 (outs HvxVR:$Vd32),
37012 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37013 "$Vd32 = vshuffeh($Vu32,$Vv32)",
37014 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37015 let hasNewValue = 1;
37016 let opNewValue = 0;
37017 let isCVI = 1;
37018 let isPseudo = 1;
37019 let isCodeGenOnly = 1;
37020 let DecoderNamespace = "EXT_mmvec";
37021 }
37022 def V6_vshuff : HInst<
37023 (outs HvxVR:$Vy32, HvxVR:$Vx32),
37024 (ins HvxVR:$Vy32in, HvxVR:$Vx32in, IntRegs:$Rt32),
37025 "vshuff($Vy32,$Vx32,$Rt32)",
37026 tc_561aaa58, TypeCVI_VP_VS>, Enc_989021, Requires<[UseHVXV60]> {
37027 let Inst{7-5} = 0b001;
37028 let Inst{13-13} = 0b1;
37029 let Inst{31-21} = 0b00011001111;
37030 let hasNewValue = 1;
37031 let opNewValue = 0;
37032 let hasNewValue2 = 1;
37033 let opNewValue2 = 1;
37034 let isCVI = 1;
37035 let DecoderNamespace = "EXT_mmvec";
37036 let Constraints = "$Vy32 = $Vy32in, $Vx32 = $Vx32in";
37037 }
37038 def V6_vshuffb : HInst<
37039 (outs HvxVR:$Vd32),
37040 (ins HvxVR:$Vu32),
37041 "$Vd32.b = vshuff($Vu32.b)",
37042 tc_946013d8, TypeCVI_VP>, Enc_e7581c, Requires<[UseHVXV60]> {
37043 let Inst{7-5} = 0b000;
37044 let Inst{13-13} = 0b0;
37045 let Inst{31-16} = 0b0001111000000010;
37046 let hasNewValue = 1;
37047 let opNewValue = 0;
37048 let isCVI = 1;
37049 let DecoderNamespace = "EXT_mmvec";
37050 }
37051 def V6_vshuffb_alt : HInst<
37052 (outs HvxVR:$Vd32),
37053 (ins HvxVR:$Vu32),
37054 "$Vd32 = vshuffb($Vu32)",
37055 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37056 let hasNewValue = 1;
37057 let opNewValue = 0;
37058 let isCVI = 1;
37059 let isPseudo = 1;
37060 let isCodeGenOnly = 1;
37061 let DecoderNamespace = "EXT_mmvec";
37062 }
37063 def V6_vshuffeb : HInst<
37064 (outs HvxVR:$Vd32),
37065 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37066 "$Vd32.b = vshuffe($Vu32.b,$Vv32.b)",
37067 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
37068 let Inst{7-5} = 0b001;
37069 let Inst{13-13} = 0b0;
37070 let Inst{31-21} = 0b00011111010;
37071 let hasNewValue = 1;
37072 let opNewValue = 0;
37073 let isCVI = 1;
37074 let DecoderNamespace = "EXT_mmvec";
37075 }
37076 def V6_vshuffeb_alt : HInst<
37077 (outs HvxVR:$Vd32),
37078 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37079 "$Vd32 = vshuffeb($Vu32,$Vv32)",
37080 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37081 let hasNewValue = 1;
37082 let opNewValue = 0;
37083 let isCVI = 1;
37084 let isPseudo = 1;
37085 let isCodeGenOnly = 1;
37086 let DecoderNamespace = "EXT_mmvec";
37087 }
37088 def V6_vshuffh : HInst<
37089 (outs HvxVR:$Vd32),
37090 (ins HvxVR:$Vu32),
37091 "$Vd32.h = vshuff($Vu32.h)",
37092 tc_946013d8, TypeCVI_VP>, Enc_e7581c, Requires<[UseHVXV60]> {
37093 let Inst{7-5} = 0b111;
37094 let Inst{13-13} = 0b0;
37095 let Inst{31-16} = 0b0001111000000001;
37096 let hasNewValue = 1;
37097 let opNewValue = 0;
37098 let isCVI = 1;
37099 let DecoderNamespace = "EXT_mmvec";
37100 }
37101 def V6_vshuffh_alt : HInst<
37102 (outs HvxVR:$Vd32),
37103 (ins HvxVR:$Vu32),
37104 "$Vd32 = vshuffh($Vu32)",
37105 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37106 let hasNewValue = 1;
37107 let opNewValue = 0;
37108 let isCVI = 1;
37109 let isPseudo = 1;
37110 let isCodeGenOnly = 1;
37111 let DecoderNamespace = "EXT_mmvec";
37112 }
37113 def V6_vshuffob : HInst<
37114 (outs HvxVR:$Vd32),
37115 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37116 "$Vd32.b = vshuffo($Vu32.b,$Vv32.b)",
37117 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
37118 let Inst{7-5} = 0b010;
37119 let Inst{13-13} = 0b0;
37120 let Inst{31-21} = 0b00011111010;
37121 let hasNewValue = 1;
37122 let opNewValue = 0;
37123 let isCVI = 1;
37124 let DecoderNamespace = "EXT_mmvec";
37125 }
37126 def V6_vshuffob_alt : HInst<
37127 (outs HvxVR:$Vd32),
37128 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37129 "$Vd32 = vshuffob($Vu32,$Vv32)",
37130 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37131 let hasNewValue = 1;
37132 let opNewValue = 0;
37133 let isCVI = 1;
37134 let isPseudo = 1;
37135 let isCodeGenOnly = 1;
37136 let DecoderNamespace = "EXT_mmvec";
37137 }
37138 def V6_vshuffvdd : HInst<
37139 (outs HvxWR:$Vdd32),
37140 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
37141 "$Vdd32 = vshuff($Vu32,$Vv32,$Rt8)",
37142 tc_87adc037, TypeCVI_VP_VS>, Enc_24a7dc, Requires<[UseHVXV60]> {
37143 let Inst{7-5} = 0b011;
37144 let Inst{13-13} = 0b1;
37145 let Inst{31-24} = 0b00011011;
37146 let hasNewValue = 1;
37147 let opNewValue = 0;
37148 let isCVI = 1;
37149 let DecoderNamespace = "EXT_mmvec";
37150 }
37151 def V6_vshufoeb : HInst<
37152 (outs HvxWR:$Vdd32),
37153 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37154 "$Vdd32.b = vshuffoe($Vu32.b,$Vv32.b)",
37155 tc_db5555f3, TypeCVI_VA_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
37156 let Inst{7-5} = 0b110;
37157 let Inst{13-13} = 0b0;
37158 let Inst{31-21} = 0b00011111010;
37159 let hasNewValue = 1;
37160 let opNewValue = 0;
37161 let isCVI = 1;
37162 let DecoderNamespace = "EXT_mmvec";
37163 }
37164 def V6_vshufoeb_alt : HInst<
37165 (outs HvxWR:$Vdd32),
37166 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37167 "$Vdd32 = vshuffoeb($Vu32,$Vv32)",
37168 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37169 let hasNewValue = 1;
37170 let opNewValue = 0;
37171 let isCVI = 1;
37172 let isPseudo = 1;
37173 let isCodeGenOnly = 1;
37174 let DecoderNamespace = "EXT_mmvec";
37175 }
37176 def V6_vshufoeh : HInst<
37177 (outs HvxWR:$Vdd32),
37178 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37179 "$Vdd32.h = vshuffoe($Vu32.h,$Vv32.h)",
37180 tc_db5555f3, TypeCVI_VA_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
37181 let Inst{7-5} = 0b101;
37182 let Inst{13-13} = 0b0;
37183 let Inst{31-21} = 0b00011111010;
37184 let hasNewValue = 1;
37185 let opNewValue = 0;
37186 let isCVI = 1;
37187 let DecoderNamespace = "EXT_mmvec";
37188 }
37189 def V6_vshufoeh_alt : HInst<
37190 (outs HvxWR:$Vdd32),
37191 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37192 "$Vdd32 = vshuffoeh($Vu32,$Vv32)",
37193 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37194 let hasNewValue = 1;
37195 let opNewValue = 0;
37196 let isCVI = 1;
37197 let isPseudo = 1;
37198 let isCodeGenOnly = 1;
37199 let DecoderNamespace = "EXT_mmvec";
37200 }
37201 def V6_vshufoh : HInst<
37202 (outs HvxVR:$Vd32),
37203 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37204 "$Vd32.h = vshuffo($Vu32.h,$Vv32.h)",
37205 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
37206 let Inst{7-5} = 0b100;
37207 let Inst{13-13} = 0b0;
37208 let Inst{31-21} = 0b00011111010;
37209 let hasNewValue = 1;
37210 let opNewValue = 0;
37211 let isCVI = 1;
37212 let DecoderNamespace = "EXT_mmvec";
37213 }
37214 def V6_vshufoh_alt : HInst<
37215 (outs HvxVR:$Vd32),
37216 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37217 "$Vd32 = vshuffoh($Vu32,$Vv32)",
37218 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37219 let hasNewValue = 1;
37220 let opNewValue = 0;
37221 let isCVI = 1;
37222 let isPseudo = 1;
37223 let isCodeGenOnly = 1;
37224 let DecoderNamespace = "EXT_mmvec";
37225 }
37226 def V6_vsubb : HInst<
37227 (outs HvxVR:$Vd32),
37228 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37229 "$Vd32.b = vsub($Vu32.b,$Vv32.b)",
37230 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
37231 let Inst{7-5} = 0b101;
37232 let Inst{13-13} = 0b0;
37233 let Inst{31-21} = 0b00011100010;
37234 let hasNewValue = 1;
37235 let opNewValue = 0;
37236 let isCVI = 1;
37237 let DecoderNamespace = "EXT_mmvec";
37238 }
37239 def V6_vsubb_alt : HInst<
37240 (outs HvxVR:$Vd32),
37241 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37242 "$Vd32 = vsubb($Vu32,$Vv32)",
37243 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37244 let hasNewValue = 1;
37245 let opNewValue = 0;
37246 let isCVI = 1;
37247 let isPseudo = 1;
37248 let isCodeGenOnly = 1;
37249 let DecoderNamespace = "EXT_mmvec";
37250 }
37251 def V6_vsubb_dv : HInst<
37252 (outs HvxWR:$Vdd32),
37253 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
37254 "$Vdd32.b = vsub($Vuu32.b,$Vvv32.b)",
37255 tc_db5555f3, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
37256 let Inst{7-5} = 0b011;
37257 let Inst{13-13} = 0b0;
37258 let Inst{31-21} = 0b00011100100;
37259 let hasNewValue = 1;
37260 let opNewValue = 0;
37261 let isCVI = 1;
37262 let DecoderNamespace = "EXT_mmvec";
37263 }
37264 def V6_vsubb_dv_alt : HInst<
37265 (outs HvxWR:$Vdd32),
37266 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
37267 "$Vdd32 = vsubb($Vuu32,$Vvv32)",
37268 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37269 let hasNewValue = 1;
37270 let opNewValue = 0;
37271 let isCVI = 1;
37272 let isPseudo = 1;
37273 let isCodeGenOnly = 1;
37274 let DecoderNamespace = "EXT_mmvec";
37275 }
37276 def V6_vsubbnq : HInst<
37277 (outs HvxVR:$Vx32),
37278 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
37279 "if (!$Qv4) $Vx32.b -= $Vu32.b",
37280 tc_257f6f7c, TypeCVI_VA>, Enc_a90628, Requires<[UseHVXV60]> {
37281 let Inst{7-5} = 0b001;
37282 let Inst{13-13} = 0b1;
37283 let Inst{21-16} = 0b000010;
37284 let Inst{31-24} = 0b00011110;
37285 let hasNewValue = 1;
37286 let opNewValue = 0;
37287 let isCVI = 1;
37288 let DecoderNamespace = "EXT_mmvec";
37289 let Constraints = "$Vx32 = $Vx32in";
37290 }
37291 def V6_vsubbnq_alt : HInst<
37292 (outs HvxVR:$Vx32),
37293 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
37294 "if (!$Qv4.b) $Vx32.b -= $Vu32.b",
37295 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37296 let hasNewValue = 1;
37297 let opNewValue = 0;
37298 let isCVI = 1;
37299 let isPseudo = 1;
37300 let isCodeGenOnly = 1;
37301 let DecoderNamespace = "EXT_mmvec";
37302 let Constraints = "$Vx32 = $Vx32in";
37303 }
37304 def V6_vsubbq : HInst<
37305 (outs HvxVR:$Vx32),
37306 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
37307 "if ($Qv4) $Vx32.b -= $Vu32.b",
37308 tc_257f6f7c, TypeCVI_VA>, Enc_a90628, Requires<[UseHVXV60]> {
37309 let Inst{7-5} = 0b110;
37310 let Inst{13-13} = 0b1;
37311 let Inst{21-16} = 0b000001;
37312 let Inst{31-24} = 0b00011110;
37313 let hasNewValue = 1;
37314 let opNewValue = 0;
37315 let isCVI = 1;
37316 let DecoderNamespace = "EXT_mmvec";
37317 let Constraints = "$Vx32 = $Vx32in";
37318 }
37319 def V6_vsubbq_alt : HInst<
37320 (outs HvxVR:$Vx32),
37321 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
37322 "if ($Qv4.b) $Vx32.b -= $Vu32.b",
37323 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37324 let hasNewValue = 1;
37325 let opNewValue = 0;
37326 let isCVI = 1;
37327 let isPseudo = 1;
37328 let isCodeGenOnly = 1;
37329 let DecoderNamespace = "EXT_mmvec";
37330 let Constraints = "$Vx32 = $Vx32in";
37331 }
37332 def V6_vsubbsat : HInst<
37333 (outs HvxVR:$Vd32),
37334 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37335 "$Vd32.b = vsub($Vu32.b,$Vv32.b):sat",
37336 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV62]> {
37337 let Inst{7-5} = 0b010;
37338 let Inst{13-13} = 0b0;
37339 let Inst{31-21} = 0b00011111001;
37340 let hasNewValue = 1;
37341 let opNewValue = 0;
37342 let isCVI = 1;
37343 let DecoderNamespace = "EXT_mmvec";
37344 }
37345 def V6_vsubbsat_alt : HInst<
37346 (outs HvxVR:$Vd32),
37347 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37348 "$Vd32 = vsubb($Vu32,$Vv32):sat",
37349 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
37350 let hasNewValue = 1;
37351 let opNewValue = 0;
37352 let isCVI = 1;
37353 let isPseudo = 1;
37354 let isCodeGenOnly = 1;
37355 let DecoderNamespace = "EXT_mmvec";
37356 }
37357 def V6_vsubbsat_dv : HInst<
37358 (outs HvxWR:$Vdd32),
37359 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
37360 "$Vdd32.b = vsub($Vuu32.b,$Vvv32.b):sat",
37361 tc_db5555f3, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV62]> {
37362 let Inst{7-5} = 0b001;
37363 let Inst{13-13} = 0b0;
37364 let Inst{31-21} = 0b00011110101;
37365 let hasNewValue = 1;
37366 let opNewValue = 0;
37367 let isCVI = 1;
37368 let DecoderNamespace = "EXT_mmvec";
37369 }
37370 def V6_vsubbsat_dv_alt : HInst<
37371 (outs HvxWR:$Vdd32),
37372 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
37373 "$Vdd32 = vsubb($Vuu32,$Vvv32):sat",
37374 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
37375 let hasNewValue = 1;
37376 let opNewValue = 0;
37377 let isCVI = 1;
37378 let isPseudo = 1;
37379 let isCodeGenOnly = 1;
37380 let DecoderNamespace = "EXT_mmvec";
37381 }
37382 def V6_vsubcarry : HInst<
37383 (outs HvxVR:$Vd32, HvxQR:$Qx4),
37384 (ins HvxVR:$Vu32, HvxVR:$Vv32, HvxQR:$Qx4in),
37385 "$Vd32.w = vsub($Vu32.w,$Vv32.w,$Qx4):carry",
37386 tc_7e6a3e89, TypeCVI_VA>, Enc_b43b67, Requires<[UseHVXV62]> {
37387 let Inst{7-7} = 0b1;
37388 let Inst{13-13} = 0b1;
37389 let Inst{31-21} = 0b00011100101;
37390 let hasNewValue = 1;
37391 let opNewValue = 0;
37392 let isCVI = 1;
37393 let DecoderNamespace = "EXT_mmvec";
37394 let Constraints = "$Qx4 = $Qx4in";
37395 }
37396 def V6_vsubcarryo : HInst<
37397 (outs HvxVR:$Vd32, HvxQR:$Qe4),
37398 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37399 "$Vd32.w,$Qe4 = vsub($Vu32.w,$Vv32.w):carry",
37400 tc_e35c1e93, TypeCVI_VA>, Enc_c1d806, Requires<[UseHVXV66]> {
37401 let Inst{7-7} = 0b1;
37402 let Inst{13-13} = 0b1;
37403 let Inst{31-21} = 0b00011101101;
37404 let hasNewValue = 1;
37405 let opNewValue = 0;
37406 let hasNewValue2 = 1;
37407 let opNewValue2 = 1;
37408 let isCVI = 1;
37409 let DecoderNamespace = "EXT_mmvec";
37410 }
37411 def V6_vsubh : HInst<
37412 (outs HvxVR:$Vd32),
37413 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37414 "$Vd32.h = vsub($Vu32.h,$Vv32.h)",
37415 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
37416 let Inst{7-5} = 0b110;
37417 let Inst{13-13} = 0b0;
37418 let Inst{31-21} = 0b00011100010;
37419 let hasNewValue = 1;
37420 let opNewValue = 0;
37421 let isCVI = 1;
37422 let DecoderNamespace = "EXT_mmvec";
37423 }
37424 def V6_vsubh_alt : HInst<
37425 (outs HvxVR:$Vd32),
37426 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37427 "$Vd32 = vsubh($Vu32,$Vv32)",
37428 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37429 let hasNewValue = 1;
37430 let opNewValue = 0;
37431 let isCVI = 1;
37432 let isPseudo = 1;
37433 let isCodeGenOnly = 1;
37434 let DecoderNamespace = "EXT_mmvec";
37435 }
37436 def V6_vsubh_dv : HInst<
37437 (outs HvxWR:$Vdd32),
37438 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
37439 "$Vdd32.h = vsub($Vuu32.h,$Vvv32.h)",
37440 tc_db5555f3, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
37441 let Inst{7-5} = 0b100;
37442 let Inst{13-13} = 0b0;
37443 let Inst{31-21} = 0b00011100100;
37444 let hasNewValue = 1;
37445 let opNewValue = 0;
37446 let isCVI = 1;
37447 let DecoderNamespace = "EXT_mmvec";
37448 }
37449 def V6_vsubh_dv_alt : HInst<
37450 (outs HvxWR:$Vdd32),
37451 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
37452 "$Vdd32 = vsubh($Vuu32,$Vvv32)",
37453 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37454 let hasNewValue = 1;
37455 let opNewValue = 0;
37456 let isCVI = 1;
37457 let isPseudo = 1;
37458 let isCodeGenOnly = 1;
37459 let DecoderNamespace = "EXT_mmvec";
37460 }
37461 def V6_vsubhnq : HInst<
37462 (outs HvxVR:$Vx32),
37463 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
37464 "if (!$Qv4) $Vx32.h -= $Vu32.h",
37465 tc_257f6f7c, TypeCVI_VA>, Enc_a90628, Requires<[UseHVXV60]> {
37466 let Inst{7-5} = 0b010;
37467 let Inst{13-13} = 0b1;
37468 let Inst{21-16} = 0b000010;
37469 let Inst{31-24} = 0b00011110;
37470 let hasNewValue = 1;
37471 let opNewValue = 0;
37472 let isCVI = 1;
37473 let DecoderNamespace = "EXT_mmvec";
37474 let Constraints = "$Vx32 = $Vx32in";
37475 }
37476 def V6_vsubhnq_alt : HInst<
37477 (outs HvxVR:$Vx32),
37478 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
37479 "if (!$Qv4.h) $Vx32.h -= $Vu32.h",
37480 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37481 let hasNewValue = 1;
37482 let opNewValue = 0;
37483 let isCVI = 1;
37484 let isPseudo = 1;
37485 let isCodeGenOnly = 1;
37486 let DecoderNamespace = "EXT_mmvec";
37487 let Constraints = "$Vx32 = $Vx32in";
37488 }
37489 def V6_vsubhq : HInst<
37490 (outs HvxVR:$Vx32),
37491 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
37492 "if ($Qv4) $Vx32.h -= $Vu32.h",
37493 tc_257f6f7c, TypeCVI_VA>, Enc_a90628, Requires<[UseHVXV60]> {
37494 let Inst{7-5} = 0b111;
37495 let Inst{13-13} = 0b1;
37496 let Inst{21-16} = 0b000001;
37497 let Inst{31-24} = 0b00011110;
37498 let hasNewValue = 1;
37499 let opNewValue = 0;
37500 let isCVI = 1;
37501 let DecoderNamespace = "EXT_mmvec";
37502 let Constraints = "$Vx32 = $Vx32in";
37503 }
37504 def V6_vsubhq_alt : HInst<
37505 (outs HvxVR:$Vx32),
37506 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
37507 "if ($Qv4.h) $Vx32.h -= $Vu32.h",
37508 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37509 let hasNewValue = 1;
37510 let opNewValue = 0;
37511 let isCVI = 1;
37512 let isPseudo = 1;
37513 let isCodeGenOnly = 1;
37514 let DecoderNamespace = "EXT_mmvec";
37515 let Constraints = "$Vx32 = $Vx32in";
37516 }
37517 def V6_vsubhsat : HInst<
37518 (outs HvxVR:$Vd32),
37519 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37520 "$Vd32.h = vsub($Vu32.h,$Vv32.h):sat",
37521 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
37522 let Inst{7-5} = 0b010;
37523 let Inst{13-13} = 0b0;
37524 let Inst{31-21} = 0b00011100011;
37525 let hasNewValue = 1;
37526 let opNewValue = 0;
37527 let isCVI = 1;
37528 let DecoderNamespace = "EXT_mmvec";
37529 }
37530 def V6_vsubhsat_alt : HInst<
37531 (outs HvxVR:$Vd32),
37532 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37533 "$Vd32 = vsubh($Vu32,$Vv32):sat",
37534 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37535 let hasNewValue = 1;
37536 let opNewValue = 0;
37537 let isCVI = 1;
37538 let isPseudo = 1;
37539 let isCodeGenOnly = 1;
37540 let DecoderNamespace = "EXT_mmvec";
37541 }
37542 def V6_vsubhsat_dv : HInst<
37543 (outs HvxWR:$Vdd32),
37544 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
37545 "$Vdd32.h = vsub($Vuu32.h,$Vvv32.h):sat",
37546 tc_db5555f3, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
37547 let Inst{7-5} = 0b000;
37548 let Inst{13-13} = 0b0;
37549 let Inst{31-21} = 0b00011100101;
37550 let hasNewValue = 1;
37551 let opNewValue = 0;
37552 let isCVI = 1;
37553 let DecoderNamespace = "EXT_mmvec";
37554 }
37555 def V6_vsubhsat_dv_alt : HInst<
37556 (outs HvxWR:$Vdd32),
37557 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
37558 "$Vdd32 = vsubh($Vuu32,$Vvv32):sat",
37559 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37560 let hasNewValue = 1;
37561 let opNewValue = 0;
37562 let isCVI = 1;
37563 let isPseudo = 1;
37564 let isCodeGenOnly = 1;
37565 let DecoderNamespace = "EXT_mmvec";
37566 }
37567 def V6_vsubhw : HInst<
37568 (outs HvxWR:$Vdd32),
37569 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37570 "$Vdd32.w = vsub($Vu32.h,$Vv32.h)",
37571 tc_d8287c14, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
37572 let Inst{7-5} = 0b111;
37573 let Inst{13-13} = 0b0;
37574 let Inst{31-21} = 0b00011100101;
37575 let hasNewValue = 1;
37576 let opNewValue = 0;
37577 let isCVI = 1;
37578 let DecoderNamespace = "EXT_mmvec";
37579 }
37580 def V6_vsubhw_alt : HInst<
37581 (outs HvxWR:$Vdd32),
37582 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37583 "$Vdd32 = vsubh($Vu32,$Vv32)",
37584 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37585 let hasNewValue = 1;
37586 let opNewValue = 0;
37587 let isCVI = 1;
37588 let isPseudo = 1;
37589 let isCodeGenOnly = 1;
37590 let DecoderNamespace = "EXT_mmvec";
37591 }
37592 def V6_vsububh : HInst<
37593 (outs HvxWR:$Vdd32),
37594 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37595 "$Vdd32.h = vsub($Vu32.ub,$Vv32.ub)",
37596 tc_d8287c14, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
37597 let Inst{7-5} = 0b101;
37598 let Inst{13-13} = 0b0;
37599 let Inst{31-21} = 0b00011100101;
37600 let hasNewValue = 1;
37601 let opNewValue = 0;
37602 let isCVI = 1;
37603 let DecoderNamespace = "EXT_mmvec";
37604 }
37605 def V6_vsububh_alt : HInst<
37606 (outs HvxWR:$Vdd32),
37607 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37608 "$Vdd32 = vsubub($Vu32,$Vv32)",
37609 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37610 let hasNewValue = 1;
37611 let opNewValue = 0;
37612 let isCVI = 1;
37613 let isPseudo = 1;
37614 let isCodeGenOnly = 1;
37615 let DecoderNamespace = "EXT_mmvec";
37616 }
37617 def V6_vsububsat : HInst<
37618 (outs HvxVR:$Vd32),
37619 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37620 "$Vd32.ub = vsub($Vu32.ub,$Vv32.ub):sat",
37621 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
37622 let Inst{7-5} = 0b000;
37623 let Inst{13-13} = 0b0;
37624 let Inst{31-21} = 0b00011100011;
37625 let hasNewValue = 1;
37626 let opNewValue = 0;
37627 let isCVI = 1;
37628 let DecoderNamespace = "EXT_mmvec";
37629 }
37630 def V6_vsububsat_alt : HInst<
37631 (outs HvxVR:$Vd32),
37632 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37633 "$Vd32 = vsubub($Vu32,$Vv32):sat",
37634 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37635 let hasNewValue = 1;
37636 let opNewValue = 0;
37637 let isCVI = 1;
37638 let isPseudo = 1;
37639 let isCodeGenOnly = 1;
37640 let DecoderNamespace = "EXT_mmvec";
37641 }
37642 def V6_vsububsat_dv : HInst<
37643 (outs HvxWR:$Vdd32),
37644 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
37645 "$Vdd32.ub = vsub($Vuu32.ub,$Vvv32.ub):sat",
37646 tc_db5555f3, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
37647 let Inst{7-5} = 0b110;
37648 let Inst{13-13} = 0b0;
37649 let Inst{31-21} = 0b00011100100;
37650 let hasNewValue = 1;
37651 let opNewValue = 0;
37652 let isCVI = 1;
37653 let DecoderNamespace = "EXT_mmvec";
37654 }
37655 def V6_vsububsat_dv_alt : HInst<
37656 (outs HvxWR:$Vdd32),
37657 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
37658 "$Vdd32 = vsubub($Vuu32,$Vvv32):sat",
37659 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37660 let hasNewValue = 1;
37661 let opNewValue = 0;
37662 let isCVI = 1;
37663 let isPseudo = 1;
37664 let isCodeGenOnly = 1;
37665 let DecoderNamespace = "EXT_mmvec";
37666 }
37667 def V6_vsubububb_sat : HInst<
37668 (outs HvxVR:$Vd32),
37669 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37670 "$Vd32.ub = vsub($Vu32.ub,$Vv32.b):sat",
37671 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV62]> {
37672 let Inst{7-5} = 0b101;
37673 let Inst{13-13} = 0b0;
37674 let Inst{31-21} = 0b00011110101;
37675 let hasNewValue = 1;
37676 let opNewValue = 0;
37677 let isCVI = 1;
37678 let DecoderNamespace = "EXT_mmvec";
37679 }
37680 def V6_vsubuhsat : HInst<
37681 (outs HvxVR:$Vd32),
37682 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37683 "$Vd32.uh = vsub($Vu32.uh,$Vv32.uh):sat",
37684 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
37685 let Inst{7-5} = 0b001;
37686 let Inst{13-13} = 0b0;
37687 let Inst{31-21} = 0b00011100011;
37688 let hasNewValue = 1;
37689 let opNewValue = 0;
37690 let isCVI = 1;
37691 let DecoderNamespace = "EXT_mmvec";
37692 }
37693 def V6_vsubuhsat_alt : HInst<
37694 (outs HvxVR:$Vd32),
37695 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37696 "$Vd32 = vsubuh($Vu32,$Vv32):sat",
37697 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37698 let hasNewValue = 1;
37699 let opNewValue = 0;
37700 let isCVI = 1;
37701 let isPseudo = 1;
37702 let isCodeGenOnly = 1;
37703 let DecoderNamespace = "EXT_mmvec";
37704 }
37705 def V6_vsubuhsat_dv : HInst<
37706 (outs HvxWR:$Vdd32),
37707 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
37708 "$Vdd32.uh = vsub($Vuu32.uh,$Vvv32.uh):sat",
37709 tc_db5555f3, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
37710 let Inst{7-5} = 0b111;
37711 let Inst{13-13} = 0b0;
37712 let Inst{31-21} = 0b00011100100;
37713 let hasNewValue = 1;
37714 let opNewValue = 0;
37715 let isCVI = 1;
37716 let DecoderNamespace = "EXT_mmvec";
37717 }
37718 def V6_vsubuhsat_dv_alt : HInst<
37719 (outs HvxWR:$Vdd32),
37720 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
37721 "$Vdd32 = vsubuh($Vuu32,$Vvv32):sat",
37722 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37723 let hasNewValue = 1;
37724 let opNewValue = 0;
37725 let isCVI = 1;
37726 let isPseudo = 1;
37727 let isCodeGenOnly = 1;
37728 let DecoderNamespace = "EXT_mmvec";
37729 }
37730 def V6_vsubuhw : HInst<
37731 (outs HvxWR:$Vdd32),
37732 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37733 "$Vdd32.w = vsub($Vu32.uh,$Vv32.uh)",
37734 tc_d8287c14, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
37735 let Inst{7-5} = 0b110;
37736 let Inst{13-13} = 0b0;
37737 let Inst{31-21} = 0b00011100101;
37738 let hasNewValue = 1;
37739 let opNewValue = 0;
37740 let isCVI = 1;
37741 let DecoderNamespace = "EXT_mmvec";
37742 }
37743 def V6_vsubuhw_alt : HInst<
37744 (outs HvxWR:$Vdd32),
37745 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37746 "$Vdd32 = vsubuh($Vu32,$Vv32)",
37747 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37748 let hasNewValue = 1;
37749 let opNewValue = 0;
37750 let isCVI = 1;
37751 let isPseudo = 1;
37752 let isCodeGenOnly = 1;
37753 let DecoderNamespace = "EXT_mmvec";
37754 }
37755 def V6_vsubuwsat : HInst<
37756 (outs HvxVR:$Vd32),
37757 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37758 "$Vd32.uw = vsub($Vu32.uw,$Vv32.uw):sat",
37759 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV62]> {
37760 let Inst{7-5} = 0b100;
37761 let Inst{13-13} = 0b0;
37762 let Inst{31-21} = 0b00011111110;
37763 let hasNewValue = 1;
37764 let opNewValue = 0;
37765 let isCVI = 1;
37766 let DecoderNamespace = "EXT_mmvec";
37767 }
37768 def V6_vsubuwsat_alt : HInst<
37769 (outs HvxVR:$Vd32),
37770 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37771 "$Vd32 = vsubuw($Vu32,$Vv32):sat",
37772 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
37773 let hasNewValue = 1;
37774 let opNewValue = 0;
37775 let isCVI = 1;
37776 let isPseudo = 1;
37777 let isCodeGenOnly = 1;
37778 let DecoderNamespace = "EXT_mmvec";
37779 }
37780 def V6_vsubuwsat_dv : HInst<
37781 (outs HvxWR:$Vdd32),
37782 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
37783 "$Vdd32.uw = vsub($Vuu32.uw,$Vvv32.uw):sat",
37784 tc_db5555f3, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV62]> {
37785 let Inst{7-5} = 0b011;
37786 let Inst{13-13} = 0b0;
37787 let Inst{31-21} = 0b00011110101;
37788 let hasNewValue = 1;
37789 let opNewValue = 0;
37790 let isCVI = 1;
37791 let DecoderNamespace = "EXT_mmvec";
37792 }
37793 def V6_vsubuwsat_dv_alt : HInst<
37794 (outs HvxWR:$Vdd32),
37795 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
37796 "$Vdd32 = vsubuw($Vuu32,$Vvv32):sat",
37797 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
37798 let hasNewValue = 1;
37799 let opNewValue = 0;
37800 let isCVI = 1;
37801 let isPseudo = 1;
37802 let isCodeGenOnly = 1;
37803 let DecoderNamespace = "EXT_mmvec";
37804 }
37805 def V6_vsubw : HInst<
37806 (outs HvxVR:$Vd32),
37807 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37808 "$Vd32.w = vsub($Vu32.w,$Vv32.w)",
37809 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
37810 let Inst{7-5} = 0b111;
37811 let Inst{13-13} = 0b0;
37812 let Inst{31-21} = 0b00011100010;
37813 let hasNewValue = 1;
37814 let opNewValue = 0;
37815 let isCVI = 1;
37816 let DecoderNamespace = "EXT_mmvec";
37817 }
37818 def V6_vsubw_alt : HInst<
37819 (outs HvxVR:$Vd32),
37820 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37821 "$Vd32 = vsubw($Vu32,$Vv32)",
37822 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37823 let hasNewValue = 1;
37824 let opNewValue = 0;
37825 let isCVI = 1;
37826 let isPseudo = 1;
37827 let isCodeGenOnly = 1;
37828 let DecoderNamespace = "EXT_mmvec";
37829 }
37830 def V6_vsubw_dv : HInst<
37831 (outs HvxWR:$Vdd32),
37832 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
37833 "$Vdd32.w = vsub($Vuu32.w,$Vvv32.w)",
37834 tc_db5555f3, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
37835 let Inst{7-5} = 0b101;
37836 let Inst{13-13} = 0b0;
37837 let Inst{31-21} = 0b00011100100;
37838 let hasNewValue = 1;
37839 let opNewValue = 0;
37840 let isCVI = 1;
37841 let DecoderNamespace = "EXT_mmvec";
37842 }
37843 def V6_vsubw_dv_alt : HInst<
37844 (outs HvxWR:$Vdd32),
37845 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
37846 "$Vdd32 = vsubw($Vuu32,$Vvv32)",
37847 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37848 let hasNewValue = 1;
37849 let opNewValue = 0;
37850 let isCVI = 1;
37851 let isPseudo = 1;
37852 let isCodeGenOnly = 1;
37853 let DecoderNamespace = "EXT_mmvec";
37854 }
37855 def V6_vsubwnq : HInst<
37856 (outs HvxVR:$Vx32),
37857 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
37858 "if (!$Qv4) $Vx32.w -= $Vu32.w",
37859 tc_257f6f7c, TypeCVI_VA>, Enc_a90628, Requires<[UseHVXV60]> {
37860 let Inst{7-5} = 0b011;
37861 let Inst{13-13} = 0b1;
37862 let Inst{21-16} = 0b000010;
37863 let Inst{31-24} = 0b00011110;
37864 let hasNewValue = 1;
37865 let opNewValue = 0;
37866 let isCVI = 1;
37867 let DecoderNamespace = "EXT_mmvec";
37868 let Constraints = "$Vx32 = $Vx32in";
37869 }
37870 def V6_vsubwnq_alt : HInst<
37871 (outs HvxVR:$Vx32),
37872 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
37873 "if (!$Qv4.w) $Vx32.w -= $Vu32.w",
37874 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37875 let hasNewValue = 1;
37876 let opNewValue = 0;
37877 let isCVI = 1;
37878 let isPseudo = 1;
37879 let isCodeGenOnly = 1;
37880 let DecoderNamespace = "EXT_mmvec";
37881 let Constraints = "$Vx32 = $Vx32in";
37882 }
37883 def V6_vsubwq : HInst<
37884 (outs HvxVR:$Vx32),
37885 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
37886 "if ($Qv4) $Vx32.w -= $Vu32.w",
37887 tc_257f6f7c, TypeCVI_VA>, Enc_a90628, Requires<[UseHVXV60]> {
37888 let Inst{7-5} = 0b000;
37889 let Inst{13-13} = 0b1;
37890 let Inst{21-16} = 0b000010;
37891 let Inst{31-24} = 0b00011110;
37892 let hasNewValue = 1;
37893 let opNewValue = 0;
37894 let isCVI = 1;
37895 let DecoderNamespace = "EXT_mmvec";
37896 let Constraints = "$Vx32 = $Vx32in";
37897 }
37898 def V6_vsubwq_alt : HInst<
37899 (outs HvxVR:$Vx32),
37900 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
37901 "if ($Qv4.w) $Vx32.w -= $Vu32.w",
37902 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37903 let hasNewValue = 1;
37904 let opNewValue = 0;
37905 let isCVI = 1;
37906 let isPseudo = 1;
37907 let isCodeGenOnly = 1;
37908 let DecoderNamespace = "EXT_mmvec";
37909 let Constraints = "$Vx32 = $Vx32in";
37910 }
37911 def V6_vsubwsat : HInst<
37912 (outs HvxVR:$Vd32),
37913 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37914 "$Vd32.w = vsub($Vu32.w,$Vv32.w):sat",
37915 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
37916 let Inst{7-5} = 0b011;
37917 let Inst{13-13} = 0b0;
37918 let Inst{31-21} = 0b00011100011;
37919 let hasNewValue = 1;
37920 let opNewValue = 0;
37921 let isCVI = 1;
37922 let DecoderNamespace = "EXT_mmvec";
37923 }
37924 def V6_vsubwsat_alt : HInst<
37925 (outs HvxVR:$Vd32),
37926 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37927 "$Vd32 = vsubw($Vu32,$Vv32):sat",
37928 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37929 let hasNewValue = 1;
37930 let opNewValue = 0;
37931 let isCVI = 1;
37932 let isPseudo = 1;
37933 let isCodeGenOnly = 1;
37934 let DecoderNamespace = "EXT_mmvec";
37935 }
37936 def V6_vsubwsat_dv : HInst<
37937 (outs HvxWR:$Vdd32),
37938 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
37939 "$Vdd32.w = vsub($Vuu32.w,$Vvv32.w):sat",
37940 tc_db5555f3, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
37941 let Inst{7-5} = 0b001;
37942 let Inst{13-13} = 0b0;
37943 let Inst{31-21} = 0b00011100101;
37944 let hasNewValue = 1;
37945 let opNewValue = 0;
37946 let isCVI = 1;
37947 let DecoderNamespace = "EXT_mmvec";
37948 }
37949 def V6_vsubwsat_dv_alt : HInst<
37950 (outs HvxWR:$Vdd32),
37951 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
37952 "$Vdd32 = vsubw($Vuu32,$Vvv32):sat",
37953 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37954 let hasNewValue = 1;
37955 let opNewValue = 0;
37956 let isCVI = 1;
37957 let isPseudo = 1;
37958 let isCodeGenOnly = 1;
37959 let DecoderNamespace = "EXT_mmvec";
37960 }
37961 def V6_vswap : HInst<
37962 (outs HvxWR:$Vdd32),
37963 (ins HvxQR:$Qt4, HvxVR:$Vu32, HvxVR:$Vv32),
37964 "$Vdd32 = vswap($Qt4,$Vu32,$Vv32)",
37965 tc_71646d06, TypeCVI_VA_DV>, Enc_3dac0b, Requires<[UseHVXV60]> {
37966 let Inst{7-7} = 0b0;
37967 let Inst{13-13} = 0b1;
37968 let Inst{31-21} = 0b00011110101;
37969 let hasNewValue = 1;
37970 let opNewValue = 0;
37971 let isCVI = 1;
37972 let DecoderNamespace = "EXT_mmvec";
37973 }
37974 def V6_vtmpyb : HInst<
37975 (outs HvxWR:$Vdd32),
37976 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
37977 "$Vdd32.h = vtmpy($Vuu32.b,$Rt32.b)",
37978 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_aad80c, Requires<[UseHVXV60]> {
37979 let Inst{7-5} = 0b000;
37980 let Inst{13-13} = 0b0;
37981 let Inst{31-21} = 0b00011001000;
37982 let hasNewValue = 1;
37983 let opNewValue = 0;
37984 let isCVI = 1;
37985 let DecoderNamespace = "EXT_mmvec";
37986 }
37987 def V6_vtmpyb_acc : HInst<
37988 (outs HvxWR:$Vxx32),
37989 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
37990 "$Vxx32.h += vtmpy($Vuu32.b,$Rt32.b)",
37991 tc_660769f1, TypeCVI_VX_DV>, Enc_d6990d, Requires<[UseHVXV60]> {
37992 let Inst{7-5} = 0b000;
37993 let Inst{13-13} = 0b1;
37994 let Inst{31-21} = 0b00011001000;
37995 let hasNewValue = 1;
37996 let opNewValue = 0;
37997 let isAccumulator = 1;
37998 let isCVI = 1;
37999 let DecoderNamespace = "EXT_mmvec";
38000 let Constraints = "$Vxx32 = $Vxx32in";
38001 }
38002 def V6_vtmpyb_acc_alt : HInst<
38003 (outs HvxWR:$Vxx32),
38004 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
38005 "$Vxx32 += vtmpyb($Vuu32,$Rt32)",
38006 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
38007 let hasNewValue = 1;
38008 let opNewValue = 0;
38009 let isAccumulator = 1;
38010 let isCVI = 1;
38011 let isPseudo = 1;
38012 let isCodeGenOnly = 1;
38013 let DecoderNamespace = "EXT_mmvec";
38014 let Constraints = "$Vxx32 = $Vxx32in";
38015 }
38016 def V6_vtmpyb_alt : HInst<
38017 (outs HvxWR:$Vdd32),
38018 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
38019 "$Vdd32 = vtmpyb($Vuu32,$Rt32)",
38020 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
38021 let hasNewValue = 1;
38022 let opNewValue = 0;
38023 let isCVI = 1;
38024 let isPseudo = 1;
38025 let isCodeGenOnly = 1;
38026 let DecoderNamespace = "EXT_mmvec";
38027 }
38028 def V6_vtmpybus : HInst<
38029 (outs HvxWR:$Vdd32),
38030 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
38031 "$Vdd32.h = vtmpy($Vuu32.ub,$Rt32.b)",
38032 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_aad80c, Requires<[UseHVXV60]> {
38033 let Inst{7-5} = 0b001;
38034 let Inst{13-13} = 0b0;
38035 let Inst{31-21} = 0b00011001000;
38036 let hasNewValue = 1;
38037 let opNewValue = 0;
38038 let isCVI = 1;
38039 let DecoderNamespace = "EXT_mmvec";
38040 }
38041 def V6_vtmpybus_acc : HInst<
38042 (outs HvxWR:$Vxx32),
38043 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
38044 "$Vxx32.h += vtmpy($Vuu32.ub,$Rt32.b)",
38045 tc_660769f1, TypeCVI_VX_DV>, Enc_d6990d, Requires<[UseHVXV60]> {
38046 let Inst{7-5} = 0b001;
38047 let Inst{13-13} = 0b1;
38048 let Inst{31-21} = 0b00011001000;
38049 let hasNewValue = 1;
38050 let opNewValue = 0;
38051 let isAccumulator = 1;
38052 let isCVI = 1;
38053 let DecoderNamespace = "EXT_mmvec";
38054 let Constraints = "$Vxx32 = $Vxx32in";
38055 }
38056 def V6_vtmpybus_acc_alt : HInst<
38057 (outs HvxWR:$Vxx32),
38058 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
38059 "$Vxx32 += vtmpybus($Vuu32,$Rt32)",
38060 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
38061 let hasNewValue = 1;
38062 let opNewValue = 0;
38063 let isAccumulator = 1;
38064 let isCVI = 1;
38065 let isPseudo = 1;
38066 let isCodeGenOnly = 1;
38067 let DecoderNamespace = "EXT_mmvec";
38068 let Constraints = "$Vxx32 = $Vxx32in";
38069 }
38070 def V6_vtmpybus_alt : HInst<
38071 (outs HvxWR:$Vdd32),
38072 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
38073 "$Vdd32 = vtmpybus($Vuu32,$Rt32)",
38074 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
38075 let hasNewValue = 1;
38076 let opNewValue = 0;
38077 let isCVI = 1;
38078 let isPseudo = 1;
38079 let isCodeGenOnly = 1;
38080 let DecoderNamespace = "EXT_mmvec";
38081 }
38082 def V6_vtmpyhb : HInst<
38083 (outs HvxWR:$Vdd32),
38084 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
38085 "$Vdd32.w = vtmpy($Vuu32.h,$Rt32.b)",
38086 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_aad80c, Requires<[UseHVXV60]> {
38087 let Inst{7-5} = 0b100;
38088 let Inst{13-13} = 0b0;
38089 let Inst{31-21} = 0b00011001101;
38090 let hasNewValue = 1;
38091 let opNewValue = 0;
38092 let isCVI = 1;
38093 let DecoderNamespace = "EXT_mmvec";
38094 }
38095 def V6_vtmpyhb_acc : HInst<
38096 (outs HvxWR:$Vxx32),
38097 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
38098 "$Vxx32.w += vtmpy($Vuu32.h,$Rt32.b)",
38099 tc_660769f1, TypeCVI_VX_DV>, Enc_d6990d, Requires<[UseHVXV60]> {
38100 let Inst{7-5} = 0b010;
38101 let Inst{13-13} = 0b1;
38102 let Inst{31-21} = 0b00011001000;
38103 let hasNewValue = 1;
38104 let opNewValue = 0;
38105 let isAccumulator = 1;
38106 let isCVI = 1;
38107 let DecoderNamespace = "EXT_mmvec";
38108 let Constraints = "$Vxx32 = $Vxx32in";
38109 }
38110 def V6_vtmpyhb_acc_alt : HInst<
38111 (outs HvxWR:$Vxx32),
38112 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
38113 "$Vxx32 += vtmpyhb($Vuu32,$Rt32)",
38114 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
38115 let hasNewValue = 1;
38116 let opNewValue = 0;
38117 let isAccumulator = 1;
38118 let isCVI = 1;
38119 let isPseudo = 1;
38120 let isCodeGenOnly = 1;
38121 let DecoderNamespace = "EXT_mmvec";
38122 let Constraints = "$Vxx32 = $Vxx32in";
38123 }
38124 def V6_vtmpyhb_alt : HInst<
38125 (outs HvxWR:$Vdd32),
38126 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
38127 "$Vdd32 = vtmpyhb($Vuu32,$Rt32)",
38128 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
38129 let hasNewValue = 1;
38130 let opNewValue = 0;
38131 let isCVI = 1;
38132 let isPseudo = 1;
38133 let isCodeGenOnly = 1;
38134 let DecoderNamespace = "EXT_mmvec";
38135 }
38136 def V6_vtran2x2_map : HInst<
38137 (outs HvxVR:$Vy32, HvxVR:$Vx32),
38138 (ins HvxVR:$Vy32in, HvxVR:$Vx32in, IntRegs:$Rt32),
38139 "vtrans2x2($Vy32,$Vx32,$Rt32)",
38140 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
38141 let hasNewValue = 1;
38142 let opNewValue = 0;
38143 let hasNewValue2 = 1;
38144 let opNewValue2 = 1;
38145 let isCVI = 1;
38146 let isPseudo = 1;
38147 let isCodeGenOnly = 1;
38148 let DecoderNamespace = "EXT_mmvec";
38149 let Constraints = "$Vy32 = $Vy32in, $Vx32 = $Vx32in";
38150 }
38151 def V6_vunpackb : HInst<
38152 (outs HvxWR:$Vdd32),
38153 (ins HvxVR:$Vu32),
38154 "$Vdd32.h = vunpack($Vu32.b)",
38155 tc_04da405a, TypeCVI_VP_VS>, Enc_dd766a, Requires<[UseHVXV60]> {
38156 let Inst{7-5} = 0b010;
38157 let Inst{13-13} = 0b0;
38158 let Inst{31-16} = 0b0001111000000001;
38159 let hasNewValue = 1;
38160 let opNewValue = 0;
38161 let isCVI = 1;
38162 let DecoderNamespace = "EXT_mmvec";
38163 }
38164 def V6_vunpackb_alt : HInst<
38165 (outs HvxWR:$Vdd32),
38166 (ins HvxVR:$Vu32),
38167 "$Vdd32 = vunpackb($Vu32)",
38168 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
38169 let hasNewValue = 1;
38170 let opNewValue = 0;
38171 let isCVI = 1;
38172 let isPseudo = 1;
38173 let isCodeGenOnly = 1;
38174 let DecoderNamespace = "EXT_mmvec";
38175 }
38176 def V6_vunpackh : HInst<
38177 (outs HvxWR:$Vdd32),
38178 (ins HvxVR:$Vu32),
38179 "$Vdd32.w = vunpack($Vu32.h)",
38180 tc_04da405a, TypeCVI_VP_VS>, Enc_dd766a, Requires<[UseHVXV60]> {
38181 let Inst{7-5} = 0b011;
38182 let Inst{13-13} = 0b0;
38183 let Inst{31-16} = 0b0001111000000001;
38184 let hasNewValue = 1;
38185 let opNewValue = 0;
38186 let isCVI = 1;
38187 let DecoderNamespace = "EXT_mmvec";
38188 }
38189 def V6_vunpackh_alt : HInst<
38190 (outs HvxWR:$Vdd32),
38191 (ins HvxVR:$Vu32),
38192 "$Vdd32 = vunpackh($Vu32)",
38193 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
38194 let hasNewValue = 1;
38195 let opNewValue = 0;
38196 let isCVI = 1;
38197 let isPseudo = 1;
38198 let isCodeGenOnly = 1;
38199 let DecoderNamespace = "EXT_mmvec";
38200 }
38201 def V6_vunpackob : HInst<
38202 (outs HvxWR:$Vxx32),
38203 (ins HvxWR:$Vxx32in, HvxVR:$Vu32),
38204 "$Vxx32.h |= vunpacko($Vu32.b)",
38205 tc_2c745bb8, TypeCVI_VP_VS>, Enc_500cb0, Requires<[UseHVXV60]> {
38206 let Inst{7-5} = 0b000;
38207 let Inst{13-13} = 0b1;
38208 let Inst{31-16} = 0b0001111000000000;
38209 let hasNewValue = 1;
38210 let opNewValue = 0;
38211 let isAccumulator = 1;
38212 let isCVI = 1;
38213 let DecoderNamespace = "EXT_mmvec";
38214 let Constraints = "$Vxx32 = $Vxx32in";
38215 }
38216 def V6_vunpackob_alt : HInst<
38217 (outs HvxWR:$Vxx32),
38218 (ins HvxWR:$Vxx32in, HvxVR:$Vu32),
38219 "$Vxx32 |= vunpackob($Vu32)",
38220 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
38221 let hasNewValue = 1;
38222 let opNewValue = 0;
38223 let isAccumulator = 1;
38224 let isCVI = 1;
38225 let isPseudo = 1;
38226 let DecoderNamespace = "EXT_mmvec";
38227 let Constraints = "$Vxx32 = $Vxx32in";
38228 }
38229 def V6_vunpackoh : HInst<
38230 (outs HvxWR:$Vxx32),
38231 (ins HvxWR:$Vxx32in, HvxVR:$Vu32),
38232 "$Vxx32.w |= vunpacko($Vu32.h)",
38233 tc_2c745bb8, TypeCVI_VP_VS>, Enc_500cb0, Requires<[UseHVXV60]> {
38234 let Inst{7-5} = 0b001;
38235 let Inst{13-13} = 0b1;
38236 let Inst{31-16} = 0b0001111000000000;
38237 let hasNewValue = 1;
38238 let opNewValue = 0;
38239 let isAccumulator = 1;
38240 let isCVI = 1;
38241 let DecoderNamespace = "EXT_mmvec";
38242 let Constraints = "$Vxx32 = $Vxx32in";
38243 }
38244 def V6_vunpackoh_alt : HInst<
38245 (outs HvxWR:$Vxx32),
38246 (ins HvxWR:$Vxx32in, HvxVR:$Vu32),
38247 "$Vxx32 |= vunpackoh($Vu32)",
38248 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
38249 let hasNewValue = 1;
38250 let opNewValue = 0;
38251 let isAccumulator = 1;
38252 let isCVI = 1;
38253 let isPseudo = 1;
38254 let isCodeGenOnly = 1;
38255 let DecoderNamespace = "EXT_mmvec";
38256 let Constraints = "$Vxx32 = $Vxx32in";
38257 }
38258 def V6_vunpackub : HInst<
38259 (outs HvxWR:$Vdd32),
38260 (ins HvxVR:$Vu32),
38261 "$Vdd32.uh = vunpack($Vu32.ub)",
38262 tc_04da405a, TypeCVI_VP_VS>, Enc_dd766a, Requires<[UseHVXV60]> {
38263 let Inst{7-5} = 0b000;
38264 let Inst{13-13} = 0b0;
38265 let Inst{31-16} = 0b0001111000000001;
38266 let hasNewValue = 1;
38267 let opNewValue = 0;
38268 let isCVI = 1;
38269 let DecoderNamespace = "EXT_mmvec";
38270 }
38271 def V6_vunpackub_alt : HInst<
38272 (outs HvxWR:$Vdd32),
38273 (ins HvxVR:$Vu32),
38274 "$Vdd32 = vunpackub($Vu32)",
38275 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
38276 let hasNewValue = 1;
38277 let opNewValue = 0;
38278 let isCVI = 1;
38279 let isPseudo = 1;
38280 let isCodeGenOnly = 1;
38281 let DecoderNamespace = "EXT_mmvec";
38282 }
38283 def V6_vunpackuh : HInst<
38284 (outs HvxWR:$Vdd32),
38285 (ins HvxVR:$Vu32),
38286 "$Vdd32.uw = vunpack($Vu32.uh)",
38287 tc_04da405a, TypeCVI_VP_VS>, Enc_dd766a, Requires<[UseHVXV60]> {
38288 let Inst{7-5} = 0b001;
38289 let Inst{13-13} = 0b0;
38290 let Inst{31-16} = 0b0001111000000001;
38291 let hasNewValue = 1;
38292 let opNewValue = 0;
38293 let isCVI = 1;
38294 let DecoderNamespace = "EXT_mmvec";
38295 }
38296 def V6_vunpackuh_alt : HInst<
38297 (outs HvxWR:$Vdd32),
38298 (ins HvxVR:$Vu32),
38299 "$Vdd32 = vunpackuh($Vu32)",
38300 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
38301 let hasNewValue = 1;
38302 let opNewValue = 0;
38303 let isCVI = 1;
38304 let isPseudo = 1;
38305 let isCodeGenOnly = 1;
38306 let DecoderNamespace = "EXT_mmvec";
38307 }
38308 def V6_vwhist128 : HInst<
38309 (outs),
38310 (ins),
38311 "vwhist128",
38312 tc_1381a97c, TypeCVI_HIST>, Enc_e3b0c4, Requires<[UseHVXV62]> {
38313 let Inst{13-0} = 0b10010010000000;
38314 let Inst{31-16} = 0b0001111000000000;
38315 let isCVI = 1;
38316 let DecoderNamespace = "EXT_mmvec";
38317 }
38318 def V6_vwhist128m : HInst<
38319 (outs),
38320 (ins u1_0Imm:$Ii),
38321 "vwhist128(#$Ii)",
38322 tc_b28e51aa, TypeCVI_HIST>, Enc_efaed8, Requires<[UseHVXV62]> {
38323 let Inst{7-0} = 0b10000000;
38324 let Inst{13-9} = 0b10011;
38325 let Inst{31-16} = 0b0001111000000000;
38326 let isCVI = 1;
38327 let DecoderNamespace = "EXT_mmvec";
38328 }
38329 def V6_vwhist128q : HInst<
38330 (outs),
38331 (ins HvxQR:$Qv4),
38332 "vwhist128($Qv4)",
38333 tc_e3f68a46, TypeCVI_HIST>, Enc_217147, Requires<[UseHVXV62]> {
38334 let Inst{13-0} = 0b10010010000000;
38335 let Inst{21-16} = 0b000010;
38336 let Inst{31-24} = 0b00011110;
38337 let isCVI = 1;
38338 let DecoderNamespace = "EXT_mmvec";
38339 }
38340 def V6_vwhist128qm : HInst<
38341 (outs),
38342 (ins HvxQR:$Qv4, u1_0Imm:$Ii),
38343 "vwhist128($Qv4,#$Ii)",
38344 tc_767c4e9d, TypeCVI_HIST>, Enc_802dc0, Requires<[UseHVXV62]> {
38345 let Inst{7-0} = 0b10000000;
38346 let Inst{13-9} = 0b10011;
38347 let Inst{21-16} = 0b000010;
38348 let Inst{31-24} = 0b00011110;
38349 let isCVI = 1;
38350 let DecoderNamespace = "EXT_mmvec";
38351 }
38352 def V6_vwhist256 : HInst<
38353 (outs),
38354 (ins),
38355 "vwhist256",
38356 tc_1381a97c, TypeCVI_HIST>, Enc_e3b0c4, Requires<[UseHVXV62]> {
38357 let Inst{13-0} = 0b10001010000000;
38358 let Inst{31-16} = 0b0001111000000000;
38359 let isCVI = 1;
38360 let DecoderNamespace = "EXT_mmvec";
38361 }
38362 def V6_vwhist256_sat : HInst<
38363 (outs),
38364 (ins),
38365 "vwhist256:sat",
38366 tc_1381a97c, TypeCVI_HIST>, Enc_e3b0c4, Requires<[UseHVXV62]> {
38367 let Inst{13-0} = 0b10001110000000;
38368 let Inst{31-16} = 0b0001111000000000;
38369 let isCVI = 1;
38370 let DecoderNamespace = "EXT_mmvec";
38371 }
38372 def V6_vwhist256q : HInst<
38373 (outs),
38374 (ins HvxQR:$Qv4),
38375 "vwhist256($Qv4)",
38376 tc_e3f68a46, TypeCVI_HIST>, Enc_217147, Requires<[UseHVXV62]> {
38377 let Inst{13-0} = 0b10001010000000;
38378 let Inst{21-16} = 0b000010;
38379 let Inst{31-24} = 0b00011110;
38380 let isCVI = 1;
38381 let DecoderNamespace = "EXT_mmvec";
38382 }
38383 def V6_vwhist256q_sat : HInst<
38384 (outs),
38385 (ins HvxQR:$Qv4),
38386 "vwhist256($Qv4):sat",
38387 tc_e3f68a46, TypeCVI_HIST>, Enc_217147, Requires<[UseHVXV62]> {
38388 let Inst{13-0} = 0b10001110000000;
38389 let Inst{21-16} = 0b000010;
38390 let Inst{31-24} = 0b00011110;
38391 let isCVI = 1;
38392 let DecoderNamespace = "EXT_mmvec";
38393 }
38394 def V6_vxor : HInst<
38395 (outs HvxVR:$Vd32),
38396 (ins HvxVR:$Vu32, HvxVR:$Vv32),
38397 "$Vd32 = vxor($Vu32,$Vv32)",
38398 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
38399 let Inst{7-5} = 0b111;
38400 let Inst{13-13} = 0b0;
38401 let Inst{31-21} = 0b00011100001;
38402 let hasNewValue = 1;
38403 let opNewValue = 0;
38404 let isCVI = 1;
38405 let DecoderNamespace = "EXT_mmvec";
38406 }
38407 def V6_vzb : HInst<
38408 (outs HvxWR:$Vdd32),
38409 (ins HvxVR:$Vu32),
38410 "$Vdd32.uh = vzxt($Vu32.ub)",
38411 tc_b4416217, TypeCVI_VA_DV>, Enc_dd766a, Requires<[UseHVXV60]> {
38412 let Inst{7-5} = 0b001;
38413 let Inst{13-13} = 0b0;
38414 let Inst{31-16} = 0b0001111000000010;
38415 let hasNewValue = 1;
38416 let opNewValue = 0;
38417 let isCVI = 1;
38418 let DecoderNamespace = "EXT_mmvec";
38419 }
38420 def V6_vzb_alt : HInst<
38421 (outs HvxWR:$Vdd32),
38422 (ins HvxVR:$Vu32),
38423 "$Vdd32 = vzxtb($Vu32)",
38424 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
38425 let hasNewValue = 1;
38426 let opNewValue = 0;
38427 let isCVI = 1;
38428 let isPseudo = 1;
38429 let isCodeGenOnly = 1;
38430 let DecoderNamespace = "EXT_mmvec";
38431 }
38432 def V6_vzh : HInst<
38433 (outs HvxWR:$Vdd32),
38434 (ins HvxVR:$Vu32),
38435 "$Vdd32.uw = vzxt($Vu32.uh)",
38436 tc_b4416217, TypeCVI_VA_DV>, Enc_dd766a, Requires<[UseHVXV60]> {
38437 let Inst{7-5} = 0b010;
38438 let Inst{13-13} = 0b0;
38439 let Inst{31-16} = 0b0001111000000010;
38440 let hasNewValue = 1;
38441 let opNewValue = 0;
38442 let isCVI = 1;
38443 let DecoderNamespace = "EXT_mmvec";
38444 }
38445 def V6_vzh_alt : HInst<
38446 (outs HvxWR:$Vdd32),
38447 (ins HvxVR:$Vu32),
38448 "$Vdd32 = vzxth($Vu32)",
38449 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
38450 let hasNewValue = 1;
38451 let opNewValue = 0;
38452 let isCVI = 1;
38453 let isPseudo = 1;
38454 let isCodeGenOnly = 1;
38455 let DecoderNamespace = "EXT_mmvec";
38456 }
38457 def V6_zLd_ai : HInst<
38458 (outs),
38459 (ins IntRegs:$Rt32, s4_0Imm:$Ii),
38460 "z = vmem($Rt32+#$Ii)",
38461 tc_e699ae41, TypeCVI_ZW>, Enc_ff3442, Requires<[UseHVXV66,UseZReg]> {
38462 let Inst{7-0} = 0b00000000;
38463 let Inst{12-11} = 0b00;
38464 let Inst{31-21} = 0b00101100000;
38465 let addrMode = BaseImmOffset;
38466 let isCVI = 1;
38467 let mayLoad = 1;
38468 let isRestrictNoSlot1Store = 1;
38469 let DecoderNamespace = "EXT_mmvec";
38470 }
38471 def V6_zLd_pi : HInst<
38472 (outs IntRegs:$Rx32),
38473 (ins IntRegs:$Rx32in, s3_0Imm:$Ii),
38474 "z = vmem($Rx32++#$Ii)",
38475 tc_a0dbea28, TypeCVI_ZW>, Enc_6c9ee0, Requires<[UseHVXV66,UseZReg]> {
38476 let Inst{7-0} = 0b00000000;
38477 let Inst{13-11} = 0b000;
38478 let Inst{31-21} = 0b00101101000;
38479 let addrMode = PostInc;
38480 let isCVI = 1;
38481 let mayLoad = 1;
38482 let isRestrictNoSlot1Store = 1;
38483 let DecoderNamespace = "EXT_mmvec";
38484 let Constraints = "$Rx32 = $Rx32in";
38485 }
38486 def V6_zLd_ppu : HInst<
38487 (outs IntRegs:$Rx32),
38488 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
38489 "z = vmem($Rx32++$Mu2)",
38490 tc_a0dbea28, TypeCVI_ZW>, Enc_44661f, Requires<[UseHVXV66,UseZReg]> {
38491 let Inst{12-0} = 0b0000000000001;
38492 let Inst{31-21} = 0b00101101000;
38493 let addrMode = PostInc;
38494 let isCVI = 1;
38495 let mayLoad = 1;
38496 let isRestrictNoSlot1Store = 1;
38497 let DecoderNamespace = "EXT_mmvec";
38498 let Constraints = "$Rx32 = $Rx32in";
38499 }
38500 def V6_zLd_pred_ai : HInst<
38501 (outs),
38502 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
38503 "if ($Pv4) z = vmem($Rt32+#$Ii)",
38504 tc_dd5b0695, TypeCVI_ZW>, Enc_ef601b, Requires<[UseHVXV66,UseZReg]> {
38505 let Inst{7-0} = 0b00000000;
38506 let Inst{31-21} = 0b00101100100;
38507 let isPredicated = 1;
38508 let addrMode = BaseImmOffset;
38509 let isCVI = 1;
38510 let mayLoad = 1;
38511 let isRestrictNoSlot1Store = 1;
38512 let DecoderNamespace = "EXT_mmvec";
38513 }
38514 def V6_zLd_pred_pi : HInst<
38515 (outs IntRegs:$Rx32),
38516 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
38517 "if ($Pv4) z = vmem($Rx32++#$Ii)",
38518 tc_3ad719fb, TypeCVI_ZW>, Enc_6baed4, Requires<[UseHVXV66,UseZReg]> {
38519 let Inst{7-0} = 0b00000000;
38520 let Inst{13-13} = 0b0;
38521 let Inst{31-21} = 0b00101101100;
38522 let isPredicated = 1;
38523 let addrMode = PostInc;
38524 let isCVI = 1;
38525 let mayLoad = 1;
38526 let isRestrictNoSlot1Store = 1;
38527 let DecoderNamespace = "EXT_mmvec";
38528 let Constraints = "$Rx32 = $Rx32in";
38529 }
38530 def V6_zLd_pred_ppu : HInst<
38531 (outs IntRegs:$Rx32),
38532 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
38533 "if ($Pv4) z = vmem($Rx32++$Mu2)",
38534 tc_3ad719fb, TypeCVI_ZW>, Enc_691712, Requires<[UseHVXV66,UseZReg]> {
38535 let Inst{10-0} = 0b00000000001;
38536 let Inst{31-21} = 0b00101101100;
38537 let isPredicated = 1;
38538 let addrMode = PostInc;
38539 let isCVI = 1;
38540 let mayLoad = 1;
38541 let isRestrictNoSlot1Store = 1;
38542 let DecoderNamespace = "EXT_mmvec";
38543 let Constraints = "$Rx32 = $Rx32in";
38544 }
38545 def V6_zextract : HInst<
38546 (outs HvxVR:$Vd32),
38547 (ins IntRegs:$Rt32),
38548 "$Vd32 = zextract($Rt32)",
38549 tc_5bf8afbb, TypeCVI_VP>, Enc_a5ed8a, Requires<[UseHVXV66,UseZReg]> {
38550 let Inst{13-5} = 0b000001001;
38551 let Inst{31-21} = 0b00011001101;
38552 let hasNewValue = 1;
38553 let opNewValue = 0;
38554 let isCVI = 1;
38555 let DecoderNamespace = "EXT_mmvec";
38556 }
38557 def V6_zld0 : HInst<
38558 (outs),
38559 (ins IntRegs:$Rt32),
38560 "z = vmem($Rt32)",
38561 PSEUDO, TypeMAPPING>, Requires<[UseHVXV66]> {
38562 let isCVI = 1;
38563 let isPseudo = 1;
38564 let isCodeGenOnly = 1;
38565 let DecoderNamespace = "EXT_mmvec";
38566 }
38567 def V6_zldp0 : HInst<
38568 (outs),
38569 (ins PredRegs:$Pv4, IntRegs:$Rt32),
38570 "if ($Pv4) z = vmem($Rt32)",
38571 PSEUDO, TypeMAPPING>, Requires<[UseHVXV66]> {
38572 let isCVI = 1;
38573 let isPseudo = 1;
38574 let isCodeGenOnly = 1;
38575 let DecoderNamespace = "EXT_mmvec";
38576 }
38577 def Y2_barrier : HInst<
38578 (outs),
38579 (ins),
38580 "barrier",
38581 tc_77f94a5e, TypeST>, Enc_e3b0c4 {
38582 let Inst{13-0} = 0b00000000000000;
38583 let Inst{31-16} = 0b1010100000000000;
38584 let isSoloAX = 1;
38585 let hasSideEffects = 1;
38586 }
38587 def Y2_break : HInst<
38588 (outs),
38589 (ins),
38590 "brkpt",
38591 tc_55255f2b, TypeCR>, Enc_e3b0c4 {
38592 let Inst{13-0} = 0b00000000000000;
38593 let Inst{31-16} = 0b0110110000100000;
38594 let isSolo = 1;
38595 }
38596 def Y2_dccleana : HInst<
38597 (outs),
38598 (ins IntRegs:$Rs32),
38599 "dccleana($Rs32)",
38600 tc_b1ae5f67, TypeST>, Enc_ecbcc8 {
38601 let Inst{13-0} = 0b00000000000000;
38602 let Inst{31-21} = 0b10100000000;
38603 let isRestrictSlot1AOK = 1;
38604 let hasSideEffects = 1;
38605 }
38606 def Y2_dccleaninva : HInst<
38607 (outs),
38608 (ins IntRegs:$Rs32),
38609 "dccleaninva($Rs32)",
38610 tc_b1ae5f67, TypeST>, Enc_ecbcc8 {
38611 let Inst{13-0} = 0b00000000000000;
38612 let Inst{31-21} = 0b10100000010;
38613 let isRestrictSlot1AOK = 1;
38614 let hasSideEffects = 1;
38615 }
38616 def Y2_dcfetch : HInst<
38617 (outs),
38618 (ins IntRegs:$Rs32),
38619 "dcfetch($Rs32)",
38620 tc_d45ba9cd, TypeMAPPING> {
38621 let hasSideEffects = 1;
38622 let isPseudo = 1;
38623 let isCodeGenOnly = 1;
38624 }
38625 def Y2_dcfetchbo : HInst<
38626 (outs),
38627 (ins IntRegs:$Rs32, u11_3Imm:$Ii),
38628 "dcfetch($Rs32+#$Ii)",
38629 tc_2237d952, TypeLD>, Enc_2d829e {
38630 let Inst{13-11} = 0b000;
38631 let Inst{31-21} = 0b10010100000;
38632 let addrMode = BaseImmOffset;
38633 let isRestrictNoSlot1Store = 1;
38634 let hasSideEffects = 1;
38635 }
38636 def Y2_dcinva : HInst<
38637 (outs),
38638 (ins IntRegs:$Rs32),
38639 "dcinva($Rs32)",
38640 tc_b1ae5f67, TypeST>, Enc_ecbcc8 {
38641 let Inst{13-0} = 0b00000000000000;
38642 let Inst{31-21} = 0b10100000001;
38643 let isRestrictSlot1AOK = 1;
38644 let hasSideEffects = 1;
38645 }
38646 def Y2_dczeroa : HInst<
38647 (outs),
38648 (ins IntRegs:$Rs32),
38649 "dczeroa($Rs32)",
38650 tc_b1ae5f67, TypeST>, Enc_ecbcc8 {
38651 let Inst{13-0} = 0b00000000000000;
38652 let Inst{31-21} = 0b10100000110;
38653 let isRestrictSlot1AOK = 1;
38654 let mayStore = 1;
38655 let hasSideEffects = 1;
38656 }
38657 def Y2_icinva : HInst<
38658 (outs),
38659 (ins IntRegs:$Rs32),
38660 "icinva($Rs32)",
38661 tc_0ba0d5da, TypeJ>, Enc_ecbcc8 {
38662 let Inst{13-0} = 0b00000000000000;
38663 let Inst{31-21} = 0b01010110110;
38664 let isSolo = 1;
38665 }
38666 def Y2_isync : HInst<
38667 (outs),
38668 (ins),
38669 "isync",
38670 tc_9b34f5e0, TypeJ>, Enc_e3b0c4 {
38671 let Inst{13-0} = 0b00000000000010;
38672 let Inst{31-16} = 0b0101011111000000;
38673 let isSolo = 1;
38674 }
38675 def Y2_syncht : HInst<
38676 (outs),
38677 (ins),
38678 "syncht",
38679 tc_77f94a5e, TypeST>, Enc_e3b0c4 {
38680 let Inst{13-0} = 0b00000000000000;
38681 let Inst{31-16} = 0b1010100001000000;
38682 let isSolo = 1;
38683 }
38684 def Y2_wait : HInst<
38685 (outs),
38686 (ins IntRegs:$Rs32),
38687 "wait($Rs32)",
38688 tc_d7718fbe, TypeCR>, Enc_ecbcc8 {
38689 let Inst{13-0} = 0b00000000000000;
38690 let Inst{31-21} = 0b01100100010;
38691 let isSolo = 1;
38692 }
38693 def Y4_l2fetch : HInst<
38694 (outs),
38695 (ins IntRegs:$Rs32, IntRegs:$Rt32),
38696 "l2fetch($Rs32,$Rt32)",
38697 tc_a3070909, TypeST>, Enc_ca3887 {
38698 let Inst{7-0} = 0b00000000;
38699 let Inst{13-13} = 0b0;
38700 let Inst{31-21} = 0b10100110000;
38701 let isSoloAX = 1;
38702 let mayStore = 1;
38703 let hasSideEffects = 1;
38704 }
38705 def Y4_trace : HInst<
38706 (outs),
38707 (ins IntRegs:$Rs32),
38708 "trace($Rs32)",
38709 tc_d7718fbe, TypeCR>, Enc_ecbcc8 {
38710 let Inst{13-0} = 0b00000000000000;
38711 let Inst{31-21} = 0b01100010010;
38712 let isSoloAX = 1;
38713 }
38714 def Y5_l2fetch : HInst<
38715 (outs),
38716 (ins IntRegs:$Rs32, DoubleRegs:$Rtt32),
38717 "l2fetch($Rs32,$Rtt32)",
38718 tc_a3070909, TypeST>, Enc_e6abcf {
38719 let Inst{7-0} = 0b00000000;
38720 let Inst{13-13} = 0b0;
38721 let Inst{31-21} = 0b10100110100;
38722 let isSoloAX = 1;
38723 let mayStore = 1;
38724 let hasSideEffects = 1;
38725 }
38726 def Y6_diag : HInst<
38727 (outs),
38728 (ins IntRegs:$Rs32),
38729 "diag($Rs32)",
38730 tc_2c3e17fc, TypeCR>, Enc_ecbcc8, Requires<[HasV67]> {
38731 let Inst{13-0} = 0b00000000100000;
38732 let Inst{31-21} = 0b01100010010;
38733 }
38734 def Y6_diag0 : HInst<
38735 (outs),
38736 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
38737 "diag0($Rss32,$Rtt32)",
38738 tc_28e55c6f, TypeCR>, Enc_b00112, Requires<[HasV67]> {
38739 let Inst{7-0} = 0b01000000;
38740 let Inst{13-13} = 0b0;
38741 let Inst{31-21} = 0b01100010010;
38742 }
38743 def Y6_diag1 : HInst<
38744 (outs),
38745 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
38746 "diag1($Rss32,$Rtt32)",
38747 tc_28e55c6f, TypeCR>, Enc_b00112, Requires<[HasV67]> {
38748 let Inst{7-0} = 0b01100000;
38749 let Inst{13-13} = 0b0;
38750 let Inst{31-21} = 0b01100010010;
38751 }
38752 def dep_A2_addsat : HInst<
38753 (outs IntRegs:$Rd32),
38754 (ins IntRegs:$Rs32, IntRegs:$Rt32),
38755 "$Rd32 = add($Rs32,$Rt32):sat:deprecated",
38756 tc_8a825db2, TypeALU64>, Enc_5ab2be {
38757 let Inst{7-5} = 0b000;
38758 let Inst{13-13} = 0b0;
38759 let Inst{31-21} = 0b11010101100;
38760 let hasNewValue = 1;
38761 let opNewValue = 0;
38762 let prefersSlot3 = 1;
38763 let Defs = [USR_OVF];
38764 }
38765 def dep_A2_subsat : HInst<
38766 (outs IntRegs:$Rd32),
38767 (ins IntRegs:$Rt32, IntRegs:$Rs32),
38768 "$Rd32 = sub($Rt32,$Rs32):sat:deprecated",
38769 tc_8a825db2, TypeALU64>, Enc_bd6011 {
38770 let Inst{7-5} = 0b100;
38771 let Inst{13-13} = 0b0;
38772 let Inst{31-21} = 0b11010101100;
38773 let hasNewValue = 1;
38774 let opNewValue = 0;
38775 let prefersSlot3 = 1;
38776 let Defs = [USR_OVF];
38777 }
38778 def dep_S2_packhl : HInst<
38779 (outs DoubleRegs:$Rdd32),
38780 (ins IntRegs:$Rs32, IntRegs:$Rt32),
38781 "$Rdd32 = packhl($Rs32,$Rt32):deprecated",
38782 tc_5da50c4b, TypeALU64>, Enc_be32a5 {
38783 let Inst{7-5} = 0b000;
38784 let Inst{13-13} = 0b0;
38785 let Inst{31-21} = 0b11010100000;
38786 }
38787 def dup_A2_add : HInst<
38788 (outs IntRegs:$Rd32),
38789 (ins IntRegs:$Rs32, IntRegs:$Rt32),
38790 "$Rd32 = add($Rs32,$Rt32)",
38791 tc_388f9897, TypeALU32_3op>, Requires<[HasV67]> {
38792 let hasNewValue = 1;
38793 let opNewValue = 0;
38794 let AsmVariantName = "NonParsable";
38795 let isPseudo = 1;
38796 }
38797 def dup_A2_addi : HInst<
38798 (outs IntRegs:$Rd32),
38799 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
38800 "$Rd32 = add($Rs32,#$Ii)",
38801 tc_388f9897, TypeALU32_ADDI>, Requires<[HasV67]> {
38802 let hasNewValue = 1;
38803 let opNewValue = 0;
38804 let AsmVariantName = "NonParsable";
38805 let isPseudo = 1;
38806 let isExtendable = 1;
38807 let opExtendable = 2;
38808 let isExtentSigned = 1;
38809 let opExtentBits = 16;
38810 let opExtentAlign = 0;
38811 }
38812 def dup_A2_andir : HInst<
38813 (outs IntRegs:$Rd32),
38814 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
38815 "$Rd32 = and($Rs32,#$Ii)",
38816 tc_388f9897, TypeALU32_2op>, Requires<[HasV67]> {
38817 let hasNewValue = 1;
38818 let opNewValue = 0;
38819 let AsmVariantName = "NonParsable";
38820 let isPseudo = 1;
38821 let isExtendable = 1;
38822 let opExtendable = 2;
38823 let isExtentSigned = 1;
38824 let opExtentBits = 10;
38825 let opExtentAlign = 0;
38826 }
38827 def dup_A2_combineii : HInst<
38828 (outs DoubleRegs:$Rdd32),
38829 (ins s32_0Imm:$Ii, s8_0Imm:$II),
38830 "$Rdd32 = combine(#$Ii,#$II)",
38831 tc_388f9897, TypeALU32_2op>, Requires<[HasV67]> {
38832 let AsmVariantName = "NonParsable";
38833 let isPseudo = 1;
38834 let isExtendable = 1;
38835 let opExtendable = 1;
38836 let isExtentSigned = 1;
38837 let opExtentBits = 8;
38838 let opExtentAlign = 0;
38839 }
38840 def dup_A2_sxtb : HInst<
38841 (outs IntRegs:$Rd32),
38842 (ins IntRegs:$Rs32),
38843 "$Rd32 = sxtb($Rs32)",
38844 tc_9124c04f, TypeALU32_2op>, Requires<[HasV67]> {
38845 let hasNewValue = 1;
38846 let opNewValue = 0;
38847 let AsmVariantName = "NonParsable";
38848 let isPseudo = 1;
38849 }
38850 def dup_A2_sxth : HInst<
38851 (outs IntRegs:$Rd32),
38852 (ins IntRegs:$Rs32),
38853 "$Rd32 = sxth($Rs32)",
38854 tc_9124c04f, TypeALU32_2op>, Requires<[HasV67]> {
38855 let hasNewValue = 1;
38856 let opNewValue = 0;
38857 let AsmVariantName = "NonParsable";
38858 let isPseudo = 1;
38859 }
38860 def dup_A2_tfr : HInst<
38861 (outs IntRegs:$Rd32),
38862 (ins IntRegs:$Rs32),
38863 "$Rd32 = $Rs32",
38864 tc_9124c04f, TypeALU32_2op>, Requires<[HasV67]> {
38865 let hasNewValue = 1;
38866 let opNewValue = 0;
38867 let AsmVariantName = "NonParsable";
38868 let isPseudo = 1;
38869 }
38870 def dup_A2_tfrsi : HInst<
38871 (outs IntRegs:$Rd32),
38872 (ins s32_0Imm:$Ii),
38873 "$Rd32 = #$Ii",
38874 tc_9124c04f, TypeALU32_2op>, Requires<[HasV67]> {
38875 let hasNewValue = 1;
38876 let opNewValue = 0;
38877 let AsmVariantName = "NonParsable";
38878 let isPseudo = 1;
38879 let isExtendable = 1;
38880 let opExtendable = 1;
38881 let isExtentSigned = 1;
38882 let opExtentBits = 16;
38883 let opExtentAlign = 0;
38884 }
38885 def dup_A2_zxtb : HInst<
38886 (outs IntRegs:$Rd32),
38887 (ins IntRegs:$Rs32),
38888 "$Rd32 = zxtb($Rs32)",
38889 PSEUDO, TypeMAPPING>, Requires<[HasV67]> {
38890 let hasNewValue = 1;
38891 let opNewValue = 0;
38892 let AsmVariantName = "NonParsable";
38893 let isPseudo = 1;
38894 }
38895 def dup_A2_zxth : HInst<
38896 (outs IntRegs:$Rd32),
38897 (ins IntRegs:$Rs32),
38898 "$Rd32 = zxth($Rs32)",
38899 tc_9124c04f, TypeALU32_2op>, Requires<[HasV67]> {
38900 let hasNewValue = 1;
38901 let opNewValue = 0;
38902 let AsmVariantName = "NonParsable";
38903 let isPseudo = 1;
38904 }
38905 def dup_A4_combineii : HInst<
38906 (outs DoubleRegs:$Rdd32),
38907 (ins s8_0Imm:$Ii, u32_0Imm:$II),
38908 "$Rdd32 = combine(#$Ii,#$II)",
38909 tc_388f9897, TypeALU32_2op>, Requires<[HasV67]> {
38910 let AsmVariantName = "NonParsable";
38911 let isPseudo = 1;
38912 let isExtendable = 1;
38913 let opExtendable = 2;
38914 let isExtentSigned = 0;
38915 let opExtentBits = 6;
38916 let opExtentAlign = 0;
38917 }
38918 def dup_A4_combineir : HInst<
38919 (outs DoubleRegs:$Rdd32),
38920 (ins s32_0Imm:$Ii, IntRegs:$Rs32),
38921 "$Rdd32 = combine(#$Ii,$Rs32)",
38922 tc_388f9897, TypeALU32_2op>, Requires<[HasV67]> {
38923 let AsmVariantName = "NonParsable";
38924 let isPseudo = 1;
38925 let isExtendable = 1;
38926 let opExtendable = 1;
38927 let isExtentSigned = 1;
38928 let opExtentBits = 8;
38929 let opExtentAlign = 0;
38930 }
38931 def dup_A4_combineri : HInst<
38932 (outs DoubleRegs:$Rdd32),
38933 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
38934 "$Rdd32 = combine($Rs32,#$Ii)",
38935 tc_388f9897, TypeALU32_2op>, Requires<[HasV67]> {
38936 let AsmVariantName = "NonParsable";
38937 let isPseudo = 1;
38938 let isExtendable = 1;
38939 let opExtendable = 2;
38940 let isExtentSigned = 1;
38941 let opExtentBits = 8;
38942 let opExtentAlign = 0;
38943 }
38944 def dup_C2_cmoveif : HInst<
38945 (outs IntRegs:$Rd32),
38946 (ins PredRegs:$Pu4, s32_0Imm:$Ii),
38947 "if (!$Pu4) $Rd32 = #$Ii",
38948 tc_388f9897, TypeALU32_2op>, Requires<[HasV67]> {
38949 let isPredicated = 1;
38950 let isPredicatedFalse = 1;
38951 let hasNewValue = 1;
38952 let opNewValue = 0;
38953 let AsmVariantName = "NonParsable";
38954 let isPseudo = 1;
38955 let isExtendable = 1;
38956 let opExtendable = 2;
38957 let isExtentSigned = 1;
38958 let opExtentBits = 12;
38959 let opExtentAlign = 0;
38960 }
38961 def dup_C2_cmoveit : HInst<
38962 (outs IntRegs:$Rd32),
38963 (ins PredRegs:$Pu4, s32_0Imm:$Ii),
38964 "if ($Pu4) $Rd32 = #$Ii",
38965 tc_388f9897, TypeALU32_2op>, Requires<[HasV67]> {
38966 let isPredicated = 1;
38967 let hasNewValue = 1;
38968 let opNewValue = 0;
38969 let AsmVariantName = "NonParsable";
38970 let isPseudo = 1;
38971 let isExtendable = 1;
38972 let opExtendable = 2;
38973 let isExtentSigned = 1;
38974 let opExtentBits = 12;
38975 let opExtentAlign = 0;
38976 }
38977 def dup_C2_cmovenewif : HInst<
38978 (outs IntRegs:$Rd32),
38979 (ins PredRegs:$Pu4, s32_0Imm:$Ii),
38980 "if (!$Pu4.new) $Rd32 = #$Ii",
38981 tc_4ac61d92, TypeALU32_2op>, Requires<[HasV67]> {
38982 let isPredicated = 1;
38983 let isPredicatedFalse = 1;
38984 let hasNewValue = 1;
38985 let opNewValue = 0;
38986 let AsmVariantName = "NonParsable";
38987 let isPredicatedNew = 1;
38988 let isPseudo = 1;
38989 let isExtendable = 1;
38990 let opExtendable = 2;
38991 let isExtentSigned = 1;
38992 let opExtentBits = 12;
38993 let opExtentAlign = 0;
38994 }
38995 def dup_C2_cmovenewit : HInst<
38996 (outs IntRegs:$Rd32),
38997 (ins PredRegs:$Pu4, s32_0Imm:$Ii),
38998 "if ($Pu4.new) $Rd32 = #$Ii",
38999 tc_4ac61d92, TypeALU32_2op>, Requires<[HasV67]> {
39000 let isPredicated = 1;
39001 let hasNewValue = 1;
39002 let opNewValue = 0;
39003 let AsmVariantName = "NonParsable";
39004 let isPredicatedNew = 1;
39005 let isPseudo = 1;
39006 let isExtendable = 1;
39007 let opExtendable = 2;
39008 let isExtentSigned = 1;
39009 let opExtentBits = 12;
39010 let opExtentAlign = 0;
39011 }
39012 def dup_C2_cmpeqi : HInst<
39013 (outs PredRegs:$Pd4),
39014 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
39015 "$Pd4 = cmp.eq($Rs32,#$Ii)",
39016 tc_388f9897, TypeALU32_2op>, Requires<[HasV67]> {
39017 let AsmVariantName = "NonParsable";
39018 let isPseudo = 1;
39019 let isExtendable = 1;
39020 let opExtendable = 2;
39021 let isExtentSigned = 1;
39022 let opExtentBits = 10;
39023 let opExtentAlign = 0;
39024 }
39025 def dup_L2_deallocframe : HInst<
39026 (outs DoubleRegs:$Rdd32),
39027 (ins IntRegs:$Rs32),
39028 "$Rdd32 = deallocframe($Rs32):raw",
39029 tc_aee6250c, TypeLD>, Requires<[HasV67]> {
39030 let accessSize = DoubleWordAccess;
39031 let AsmVariantName = "NonParsable";
39032 let mayLoad = 1;
39033 let Uses = [FRAMEKEY];
39034 let Defs = [R29];
39035 let isPseudo = 1;
39036 }
39037 def dup_L2_loadrb_io : HInst<
39038 (outs IntRegs:$Rd32),
39039 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
39040 "$Rd32 = memb($Rs32+#$Ii)",
39041 tc_eed07714, TypeLD>, Requires<[HasV67]> {
39042 let hasNewValue = 1;
39043 let opNewValue = 0;
39044 let addrMode = BaseImmOffset;
39045 let accessSize = ByteAccess;
39046 let AsmVariantName = "NonParsable";
39047 let mayLoad = 1;
39048 let isPseudo = 1;
39049 let isExtendable = 1;
39050 let opExtendable = 2;
39051 let isExtentSigned = 1;
39052 let opExtentBits = 11;
39053 let opExtentAlign = 0;
39054 }
39055 def dup_L2_loadrd_io : HInst<
39056 (outs DoubleRegs:$Rdd32),
39057 (ins IntRegs:$Rs32, s29_3Imm:$Ii),
39058 "$Rdd32 = memd($Rs32+#$Ii)",
39059 tc_eed07714, TypeLD>, Requires<[HasV67]> {
39060 let addrMode = BaseImmOffset;
39061 let accessSize = DoubleWordAccess;
39062 let AsmVariantName = "NonParsable";
39063 let mayLoad = 1;
39064 let isPseudo = 1;
39065 let isExtendable = 1;
39066 let opExtendable = 2;
39067 let isExtentSigned = 1;
39068 let opExtentBits = 14;
39069 let opExtentAlign = 3;
39070 }
39071 def dup_L2_loadrh_io : HInst<
39072 (outs IntRegs:$Rd32),
39073 (ins IntRegs:$Rs32, s31_1Imm:$Ii),
39074 "$Rd32 = memh($Rs32+#$Ii)",
39075 tc_eed07714, TypeLD>, Requires<[HasV67]> {
39076 let hasNewValue = 1;
39077 let opNewValue = 0;
39078 let addrMode = BaseImmOffset;
39079 let accessSize = HalfWordAccess;
39080 let AsmVariantName = "NonParsable";
39081 let mayLoad = 1;
39082 let isPseudo = 1;
39083 let isExtendable = 1;
39084 let opExtendable = 2;
39085 let isExtentSigned = 1;
39086 let opExtentBits = 12;
39087 let opExtentAlign = 1;
39088 }
39089 def dup_L2_loadri_io : HInst<
39090 (outs IntRegs:$Rd32),
39091 (ins IntRegs:$Rs32, s30_2Imm:$Ii),
39092 "$Rd32 = memw($Rs32+#$Ii)",
39093 tc_eed07714, TypeLD>, Requires<[HasV67]> {
39094 let hasNewValue = 1;
39095 let opNewValue = 0;
39096 let addrMode = BaseImmOffset;
39097 let accessSize = WordAccess;
39098 let AsmVariantName = "NonParsable";
39099 let mayLoad = 1;
39100 let isPseudo = 1;
39101 let isExtendable = 1;
39102 let opExtendable = 2;
39103 let isExtentSigned = 1;
39104 let opExtentBits = 13;
39105 let opExtentAlign = 2;
39106 }
39107 def dup_L2_loadrub_io : HInst<
39108 (outs IntRegs:$Rd32),
39109 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
39110 "$Rd32 = memub($Rs32+#$Ii)",
39111 tc_eed07714, TypeLD>, Requires<[HasV67]> {
39112 let hasNewValue = 1;
39113 let opNewValue = 0;
39114 let addrMode = BaseImmOffset;
39115 let accessSize = ByteAccess;
39116 let AsmVariantName = "NonParsable";
39117 let mayLoad = 1;
39118 let isPseudo = 1;
39119 let isExtendable = 1;
39120 let opExtendable = 2;
39121 let isExtentSigned = 1;
39122 let opExtentBits = 11;
39123 let opExtentAlign = 0;
39124 }
39125 def dup_L2_loadruh_io : HInst<
39126 (outs IntRegs:$Rd32),
39127 (ins IntRegs:$Rs32, s31_1Imm:$Ii),
39128 "$Rd32 = memuh($Rs32+#$Ii)",
39129 tc_eed07714, TypeLD>, Requires<[HasV67]> {
39130 let hasNewValue = 1;
39131 let opNewValue = 0;
39132 let addrMode = BaseImmOffset;
39133 let accessSize = HalfWordAccess;
39134 let AsmVariantName = "NonParsable";
39135 let mayLoad = 1;
39136 let isPseudo = 1;
39137 let isExtendable = 1;
39138 let opExtendable = 2;
39139 let isExtentSigned = 1;
39140 let opExtentBits = 12;
39141 let opExtentAlign = 1;
39142 }
39143 def dup_S2_allocframe : HInst<
39144 (outs IntRegs:$Rx32),
39145 (ins IntRegs:$Rx32in, u11_3Imm:$Ii),
39146 "allocframe($Rx32,#$Ii):raw",
39147 tc_74a42bda, TypeST>, Requires<[HasV67]> {
39148 let hasNewValue = 1;
39149 let opNewValue = 0;
39150 let addrMode = BaseImmOffset;
39151 let accessSize = DoubleWordAccess;
39152 let AsmVariantName = "NonParsable";
39153 let mayStore = 1;
39154 let Uses = [FRAMEKEY, FRAMELIMIT, R30, R31];
39155 let Defs = [R30];
39156 let isPseudo = 1;
39157 let Constraints = "$Rx32 = $Rx32in";
39158 }
39159 def dup_S2_storerb_io : HInst<
39160 (outs),
39161 (ins IntRegs:$Rs32, s32_0Imm:$Ii, IntRegs:$Rt32),
39162 "memb($Rs32+#$Ii) = $Rt32",
39163 tc_a9edeffa, TypeST>, Requires<[HasV67]> {
39164 let addrMode = BaseImmOffset;
39165 let accessSize = ByteAccess;
39166 let AsmVariantName = "NonParsable";
39167 let mayStore = 1;
39168 let isPseudo = 1;
39169 let isExtendable = 1;
39170 let opExtendable = 1;
39171 let isExtentSigned = 1;
39172 let opExtentBits = 11;
39173 let opExtentAlign = 0;
39174 }
39175 def dup_S2_storerd_io : HInst<
39176 (outs),
39177 (ins IntRegs:$Rs32, s29_3Imm:$Ii, DoubleRegs:$Rtt32),
39178 "memd($Rs32+#$Ii) = $Rtt32",
39179 tc_a9edeffa, TypeST>, Requires<[HasV67]> {
39180 let addrMode = BaseImmOffset;
39181 let accessSize = DoubleWordAccess;
39182 let AsmVariantName = "NonParsable";
39183 let mayStore = 1;
39184 let isPseudo = 1;
39185 let isExtendable = 1;
39186 let opExtendable = 1;
39187 let isExtentSigned = 1;
39188 let opExtentBits = 14;
39189 let opExtentAlign = 3;
39190 }
39191 def dup_S2_storerh_io : HInst<
39192 (outs),
39193 (ins IntRegs:$Rs32, s31_1Imm:$Ii, IntRegs:$Rt32),
39194 "memh($Rs32+#$Ii) = $Rt32",
39195 tc_a9edeffa, TypeST>, Requires<[HasV67]> {
39196 let addrMode = BaseImmOffset;
39197 let accessSize = HalfWordAccess;
39198 let AsmVariantName = "NonParsable";
39199 let mayStore = 1;
39200 let isPseudo = 1;
39201 let isExtendable = 1;
39202 let opExtendable = 1;
39203 let isExtentSigned = 1;
39204 let opExtentBits = 12;
39205 let opExtentAlign = 1;
39206 }
39207 def dup_S2_storeri_io : HInst<
39208 (outs),
39209 (ins IntRegs:$Rs32, s30_2Imm:$Ii, IntRegs:$Rt32),
39210 "memw($Rs32+#$Ii) = $Rt32",
39211 tc_a9edeffa, TypeST>, Requires<[HasV67]> {
39212 let addrMode = BaseImmOffset;
39213 let accessSize = WordAccess;
39214 let AsmVariantName = "NonParsable";
39215 let mayStore = 1;
39216 let isPseudo = 1;
39217 let isExtendable = 1;
39218 let opExtendable = 1;
39219 let isExtentSigned = 1;
39220 let opExtentBits = 13;
39221 let opExtentAlign = 2;
39222 }
39223 def dup_S4_storeirb_io : HInst<
39224 (outs),
39225 (ins IntRegs:$Rs32, u6_0Imm:$Ii, s32_0Imm:$II),
39226 "memb($Rs32+#$Ii) = #$II",
39227 tc_838c4d7a, TypeV4LDST>, Requires<[HasV67]> {
39228 let addrMode = BaseImmOffset;
39229 let accessSize = ByteAccess;
39230 let AsmVariantName = "NonParsable";
39231 let mayStore = 1;
39232 let isPseudo = 1;
39233 let isExtendable = 1;
39234 let opExtendable = 2;
39235 let isExtentSigned = 1;
39236 let opExtentBits = 8;
39237 let opExtentAlign = 0;
39238 }
39239 def dup_S4_storeiri_io : HInst<
39240 (outs),
39241 (ins IntRegs:$Rs32, u6_2Imm:$Ii, s32_0Imm:$II),
39242 "memw($Rs32+#$Ii) = #$II",
39243 tc_838c4d7a, TypeV4LDST>, Requires<[HasV67]> {
39244 let addrMode = BaseImmOffset;
39245 let accessSize = WordAccess;
39246 let AsmVariantName = "NonParsable";
39247 let mayStore = 1;
39248 let isPseudo = 1;
39249 let isExtendable = 1;
39250 let opExtendable = 2;
39251 let isExtentSigned = 1;
39252 let opExtentBits = 8;
39253 let opExtentAlign = 0;
39254 }